Documentation Index
Fetch the complete documentation index at: https://nova.dweet.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
Batch scoring now returns per-application intake rejections
Batch submissions can now accept valid applications while returning invalid resume inputs inrejectedApplications. These pre-queue rejections do not create scoring jobs and do not emit score.failed webhooks. Batch status responses include the same rejectedApplications list, and all-invalid batches return 422 VALIDATION_ERROR with per-application details.Learn more about batch scoringScoring intake now catches corrupted PDF resumes
Scoring requests with truncated or malformed PDF resumes now fail during intake withRESUME_CORRUPTED and HTTP 422. Nova doesn’t create a scoring job for these requests, so you get a concrete error while the submission is still actionable.Source download problems still return RESUME_FETCH_FAILED. That keeps corrupted file bytes separate from temporary URL, network, or storage issues.Learn more about supported resume formatsApplication and tenant deletion requests
You can now request application-level or tenant-level deletion through the Embed API. Deletion runs asynchronously, returns a deletion request ID, and exposes polling for completion.New endpoints:DELETE /v1/jobs/{jobId}/applications/{applicationId}DELETE /v1/tenants/{tenantExternalId}GET /v1/deletion-requests/{deletionRequestId}
Dedicated bucket for current criteria reads
GET /v1/jobs/{jobId}/criteria/versions/current now uses its own bucket, criteria_current_reads, with a limit of 60 req/s.This route was a high-volume first-party read path. Splitting it out keeps it from competing with other read_and_ops traffic and makes rate-limit debugging easier.What changed:criteria_current_readsis now a separate bucket in rate-limit headers andGET /v1/rate-limit-statusread_and_opsstill covers other read/write endpoints, but no longer includes the current criteria version route
Scoring responses and webhooks now include criteriaVersionId
Scoring job HTTP responses and score.completed / score.failed webhook payloads now include criteriaVersionId. Use this field to identify which criteria snapshot was used for scoring, and fetch it via GET /v1/jobs/{jobId}/criteria/versions/{criteriaVersionId}.This is an additive change. No existing fields were removed or renamed.Criteria version endpoints moved under /criteria/versions
Criteria version operations now use a nested URL structure:GET /v1/jobs/{jobId}/criteria/versions/currentGET /v1/jobs/{jobId}/criteria/versionsGET /v1/jobs/{jobId}/criteria/versions/{criteriaVersionId}
Bucket-based rate limiting
Rate limiting now uses a per-bucket, per-second model scoped by partner and environment. Every authenticated/v1/* request is classified into 1 of 5 buckets, each with its own limit:| Bucket | Limit | Endpoints |
|---|---|---|
criteria_ai | 2 req/s + 4 concurrent | Question sets, criteria generations |
scoring_intake_batch | 1 req/s | Scoring batches |
scoring_intake_single | 10 req/s | Single scoring jobs |
read_and_ops | 20 req/s | All other reads and operations |
rate_limit_status | 2 req/s | Rate limit status endpoint |
- All endpoints are now rate-limited, not just scoring endpoints
- New headers:
X-RateLimit-Bucketidentifies which bucket a request was classified into,X-RateLimit-Degradedsignals when rate limiting is operating in degraded mode GET /v1/rate-limit-statusnow returns per-bucket breakdown with in-flight concurrency status. No longer requiresX-Tenant-Id- Scoring batch size reduced from 100 to 25 applications per request
- Fail-open posture: if the rate limiting backend is temporarily unavailable, requests pass through instead of being blocked
Get Score by Application: look up scores without a scoring job ID
New endpointGET /v1/jobs/{jobId}/applications/{applicationId}/score retrieves the latest scoring result using just the job ID and application ID. No need to persist Nova’s scoringJobId.Use it when your integration doesn’t store scoring job IDs, after a rescore to get the latest result, or to build dashboards that show scores by application.Learn moreSimplified scoring status values
Scoring job and batchstatus values are now simplified to a 3-state model:pending: Not finished yetcompleted: Finished successfullyfailed: Finished with an error. For batches, this includes partial failures
- Scoring job
statusno longer returnsPROCESSING - Batch
statusno longer returnsIN_PROGRESSorPARTIAL_FAILURE batch.completedwebhook payloadstatusnow usescompletedorfailed
Criteria Library: store and reuse criteria across jobs
Build a library of reusable screening criteria at the tenant level. Save commonly-used criteria once, then add them to any job with a single API call.New endpoints:GET /v1/criteria-library- List library criteriaGET /v1/criteria-library/{criterionId}- Get a library criterionPOST /v1/criteria-library- Add a criterion to the libraryPATCH /v1/criteria-library/{criterionId}- Update a library criterionDELETE /v1/criteria-library/{criterionId}- Remove from library
- Tenant-scoped: Each of your customers has their own isolated library
- Reusable: Use library criteria as templates when building job-scoped criteria