Skip to main content
Rate limits protect the API from abuse while keeping throughput predictable.

What is rate limited

Rate limiting applies to scoring endpoints under /v1/jobs:
  • POST /v1/jobs/{jobId}/applications/{applicationId}/scoring-jobs
  • GET /v1/jobs/{jobId}/applications/{applicationId}/scoring-jobs/{scoringJobId}
  • POST /v1/jobs/{jobId}/scoring-batches
  • GET /v1/jobs/{jobId}/scoring-batches/{scoringBatchId}

Default limit

The default limit is 100 requests per 60 seconds per tenant (per environment).
If you need higher limits, contact us through the Embed Portal.

Rate limit headers

Responses from scoring endpoints include:
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 97
X-RateLimit-Reset: 1734187200
HeaderDescription
X-RateLimit-LimitMaximum requests allowed in the current window
X-RateLimit-RemainingRequests remaining in the current window
X-RateLimit-ResetUnix timestamp when the window resets

Checking your status

Use GET /v1/rate-limit-status to check your current window without consuming rate limit points.

Handling 429 responses

When you are rate limited:
  • HTTP status is 429
  • Retry-After header tells you how many seconds to wait
{
  "type": "https://embed.nova.dweet.com/errors/rate-limited",
  "code": "RATE_LIMITED",
  "status": 429,
  "message": "Rate limit exceeded. Please retry after the reset time.",
  "retryable": true,
  "traceId": "5c2f4f5b2c0a4ce0b6a31a1a18f8e9a1"
}
For high volume backfills, prefer POST /v1/jobs/{jobId}/scoring-batches and submit in smaller batches so you can recover cleanly if you hit 429.