@nova-sdk/api
import { Nova } from "@nova-sdk/api";
const nova = new Nova({
apiKey: "sk_test_...",
tenantId: "acme-corp",
});
const status = await nova.rateLimitStatus();curl -X GET "https://embed.nova.dweet.com/v1/rate-limit-status" \
-H "Authorization: Bearer sk_test_..."{
"partnerId": "<string>",
"environment": "SANDBOX",
"generatedAt": "2023-11-07T05:31:56Z",
"degraded": true,
"buckets": {
"criteria_ai": {
"limit": 123,
"remaining": 123,
"resetAt": 123,
"resetInSeconds": 123
},
"criteria_ai_inflight": {
"limit": 123,
"active": 123,
"retryAfterSeconds": 123
},
"criteria_current_reads": {
"limit": 123,
"remaining": 123,
"resetAt": 123,
"resetInSeconds": 123
},
"scoring_intake_batch": {
"limit": 123,
"remaining": 123,
"resetAt": 123,
"resetInSeconds": 123
},
"scoring_intake_single": {
"limit": 123,
"remaining": 123,
"resetAt": 123,
"resetInSeconds": 123
},
"read_and_ops": {
"limit": 123,
"remaining": 123,
"resetAt": 123,
"resetInSeconds": 123
},
"rate_limit_status": {
"limit": 123,
"remaining": 123,
"resetAt": 123,
"resetInSeconds": 123
},
"analytics": {
"limit": 123,
"remaining": 123,
"resetAt": 123,
"resetInSeconds": 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>"
}
]
}Rate limits
Get Rate Limit Status
Check your current rate limit status across all buckets
GET
/
v1
/
rate-limit-status
@nova-sdk/api
import { Nova } from "@nova-sdk/api";
const nova = new Nova({
apiKey: "sk_test_...",
tenantId: "acme-corp",
});
const status = await nova.rateLimitStatus();curl -X GET "https://embed.nova.dweet.com/v1/rate-limit-status" \
-H "Authorization: Bearer sk_test_..."{
"partnerId": "<string>",
"environment": "SANDBOX",
"generatedAt": "2023-11-07T05:31:56Z",
"degraded": true,
"buckets": {
"criteria_ai": {
"limit": 123,
"remaining": 123,
"resetAt": 123,
"resetInSeconds": 123
},
"criteria_ai_inflight": {
"limit": 123,
"active": 123,
"retryAfterSeconds": 123
},
"criteria_current_reads": {
"limit": 123,
"remaining": 123,
"resetAt": 123,
"resetInSeconds": 123
},
"scoring_intake_batch": {
"limit": 123,
"remaining": 123,
"resetAt": 123,
"resetInSeconds": 123
},
"scoring_intake_single": {
"limit": 123,
"remaining": 123,
"resetAt": 123,
"resetInSeconds": 123
},
"read_and_ops": {
"limit": 123,
"remaining": 123,
"resetAt": 123,
"resetInSeconds": 123
},
"rate_limit_status": {
"limit": 123,
"remaining": 123,
"resetAt": 123,
"resetInSeconds": 123
},
"analytics": {
"limit": 123,
"remaining": 123,
"resetAt": 123,
"resetInSeconds": 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>"
}
]
}Use this endpoint to see your current rate limit status for all buckets. This doesn’t consume rate limit tokens from any bucket other than
rate_limit_status.
This endpoint requires only a valid API key. X-Tenant-Id isn’t required.
Response
The response includes per-bucket status for all RPS buckets plus in-flight concurrency status for thecriteria_ai bucket.
{
"partnerId": "partner_abc123",
"environment": "PRODUCTION",
"generatedAt": "2026-02-17T10:30:00.000Z",
"degraded": false,
"buckets": {
"criteria_ai": {
"limit": 2,
"remaining": 2,
"resetAt": 1739787001,
"resetInSeconds": 1
},
"criteria_ai_inflight": {
"limit": 4,
"active": 1,
"retryAfterSeconds": 0
},
"criteria_current_reads": {
"limit": 60,
"remaining": 57,
"resetAt": 1739787001,
"resetInSeconds": 1
},
"scoring_intake_batch": {
"limit": 1,
"remaining": 1,
"resetAt": 1739787001,
"resetInSeconds": 1
},
"scoring_intake_single": {
"limit": 10,
"remaining": 8,
"resetAt": 1739787001,
"resetInSeconds": 1
},
"read_and_ops": {
"limit": 20,
"remaining": 19,
"resetAt": 1739787001,
"resetInSeconds": 1
},
"rate_limit_status": {
"limit": 2,
"remaining": 1,
"resetAt": 1739787001,
"resetInSeconds": 1
},
"analytics": {
"limit": 20,
"remaining": 20,
"resetAt": 1739787001,
"resetInSeconds": 1
}
}
}
Response fields
| Field | Type | Description |
|---|---|---|
partnerId | string | Your partner identifier |
environment | string | SANDBOX or PRODUCTION, determined by your API key |
generatedAt | string | ISO 8601 timestamp when this status was generated |
degraded | boolean | true when Redis is unavailable and values are best-effort estimates |
RPS bucket fields
Each RPS bucket (criteria_ai, criteria_current_reads, scoring_intake_batch, scoring_intake_single, read_and_ops, rate_limit_status, analytics) has:
| Field | Type | Description |
|---|---|---|
limit | integer | Maximum requests per second |
remaining | integer | Requests remaining in the current 1-second window |
resetAt | integer | Unix timestamp when the window resets |
resetInSeconds | integer | Seconds until the window resets |
In-flight fields
Thecriteria_ai_inflight object tracks concurrent request capacity:
| Field | Type | Description |
|---|---|---|
limit | integer | Maximum concurrent in-flight requests (4) |
active | integer | Currently active in-flight requests |
retryAfterSeconds | integer | Seconds until a slot may become available (0 if slots are available) |
This endpoint is also rate-limited under the
rate_limit_status bucket (2 req/s). Rate limit headers are included on the response.Authorizations
Use Authorization: Bearer sk_test_* or Authorization: Bearer sk_live_*.
Response
Rate limit status
Your partner identifier
SANDBOX or PRODUCTION, determined by your API key
Available options:
SANDBOX, PRODUCTION ISO 8601 timestamp when this status was generated
True when Redis is unavailable and values are best-effort estimates
Show child attributes
Show child attributes
Was this page helpful?