@nova-sdk/api
import { Nova } from "@nova-sdk/api";
const nova = new Nova({
apiKey: "sk_test_...",
tenantId: "acme-corp",
});
const volume = await nova.analytics.scoringVolume({ timeRange: "7d" });curl -X GET "https://embed.nova.dweet.com/v1/analytics/scoring-volume?timeRange=7d" \
-H "Authorization: Bearer sk_test_..."{
"period": {
"start": "2023-11-07T05:31:56Z",
"end": "2023-11-07T05:31:56Z"
},
"granularity": "minute",
"data": [
{
"timestamp": "2023-11-07T05:31:56Z",
"total": 123,
"completed": 123,
"failed": 123
}
]
}{
"type": "<string>",
"code": "UNAUTHORIZED",
"status": 123,
"message": "<string>",
"retryable": true,
"traceId": "<string>",
"details": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"type": "<string>",
"code": "UNAUTHORIZED",
"status": 123,
"message": "<string>",
"retryable": true,
"traceId": "<string>",
"details": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"type": "<string>",
"code": "UNAUTHORIZED",
"status": 123,
"message": "<string>",
"retryable": true,
"traceId": "<string>",
"details": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"type": "<string>",
"code": "UNAUTHORIZED",
"status": 123,
"message": "<string>",
"retryable": true,
"traceId": "<string>",
"details": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}Analytics
Get Scoring Volume
Time-series of scoring job submissions, completions, and failures
GET
/
v1
/
analytics
/
scoring-volume
@nova-sdk/api
import { Nova } from "@nova-sdk/api";
const nova = new Nova({
apiKey: "sk_test_...",
tenantId: "acme-corp",
});
const volume = await nova.analytics.scoringVolume({ timeRange: "7d" });curl -X GET "https://embed.nova.dweet.com/v1/analytics/scoring-volume?timeRange=7d" \
-H "Authorization: Bearer sk_test_..."{
"period": {
"start": "2023-11-07T05:31:56Z",
"end": "2023-11-07T05:31:56Z"
},
"granularity": "minute",
"data": [
{
"timestamp": "2023-11-07T05:31:56Z",
"total": 123,
"completed": 123,
"failed": 123
}
]
}{
"type": "<string>",
"code": "UNAUTHORIZED",
"status": 123,
"message": "<string>",
"retryable": true,
"traceId": "<string>",
"details": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"type": "<string>",
"code": "UNAUTHORIZED",
"status": 123,
"message": "<string>",
"retryable": true,
"traceId": "<string>",
"details": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"type": "<string>",
"code": "UNAUTHORIZED",
"status": 123,
"message": "<string>",
"retryable": true,
"traceId": "<string>",
"details": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"type": "<string>",
"code": "UNAUTHORIZED",
"status": 123,
"message": "<string>",
"retryable": true,
"traceId": "<string>",
"details": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}Returns a time-series of scoring volume broken down by total, completed, and failed jobs. Granularity adjusts automatically based on the time range.
This endpoint requires only a valid API key.
X-Tenant-Id isn’t required.
Query parameters
| Parameter | Required | Values | Description |
|---|---|---|---|
timeRange | Yes | 1h, 24h, 7d, 30d, 90d | Lookback window for the data |
Granularity
| Time range | Granularity |
|---|---|
1h | 1 minute |
24h | 1 hour |
7d | 1 day |
30d | 1 day |
90d | 1 day |
Example response
{
"period": {
"start": "2026-03-01T00:00:00.000Z",
"end": "2026-03-08T00:00:00.000Z"
},
"granularity": "day",
"data": [
{
"timestamp": "2026-03-07T00:00:00.000Z",
"total": 45,
"completed": 40,
"failed": 5
},
{
"timestamp": "2026-03-08T00:00:00.000Z",
"total": 55,
"completed": 55,
"failed": 0
}
]
}
Response fields
| Field | Type | Description |
|---|---|---|
period.start | string | ISO 8601 start of the period |
period.end | string | ISO 8601 end of the period |
granularity | string | Bucket size for each data point (minute, hour, or day) |
data[].timestamp | string | ISO 8601 timestamp for this bucket |
data[].total | integer | Completed + failed jobs in this bucket |
data[].completed | integer | Jobs that completed successfully |
data[].failed | integer | Jobs that failed |
Responses are cached for 60 seconds (
Cache-Control: private, max-age=60). This endpoint is rate-limited under the analytics bucket (20 req/s).Authorizations
Use Authorization: Bearer sk_test_* or Authorization: Bearer sk_live_*.
Query Parameters
Time range for the analytics query Time range for analytics queries.
Available options:
1h, 24h, 7d, 30d, 90d Was this page helpful?