Skip to main content
February 2026
ScoringWebhooks

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.
February 2026
Criteria

Criteria version endpoints moved under /criteria/versions

Criteria version operations now use a nested URL structure:
  • GET /v1/jobs/{jobId}/criteria/versions/current
  • GET /v1/jobs/{jobId}/criteria/versions
  • GET /v1/jobs/{jobId}/criteria/versions/{criteriaVersionId}
The version snapshot and current-version endpoints now return a consistent envelope shape:
{
  "version": {
    "id": "cmlz26ck2000awp61q9qcjcne",
    "version": 3,
    "status": "ACTIVE",
    "createdAt": "2026-02-17T12:00:00.000Z",
    "archivedAt": null
  },
  "criteria": [
    {
      "id": "crit_...",
      "text": "...",
      "importance": "MUST_HAVE",
      "order": 0
    }
  ]
}
Breaking change: legacy endpoints under /v1/jobs/{jobId}/criteria-versions* were removed.
February 2026
Rate LimitsScoring

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:
BucketLimitEndpoints
criteria_ai2 req/s + 4 concurrentQuestion sets, criteria generations
scoring_intake_batch1 req/sScoring batches
scoring_intake_single10 req/sSingle scoring jobs
read_and_ops20 req/sAll other reads and operations
rate_limit_status2 req/sRate limit status endpoint
Key changes:
  • All endpoints are now rate-limited, not just scoring endpoints
  • New headers: X-RateLimit-Bucket identifies which bucket a request was classified into, X-RateLimit-Degraded signals when rate limiting is operating in degraded mode
  • GET /v1/rate-limit-status now returns per-bucket breakdown with in-flight concurrency status. No longer requires X-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
Learn more about rate limits

Get Score by Application: look up scores without a scoring job ID

New endpoint GET /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 more
February 2026
ScoringWebhooks

Simplified scoring status values

Scoring job and batch status values are now simplified to a 3-state model:
  • pending: Not finished yet
  • completed: Finished successfully
  • failed: Finished with an error. For batches, this includes partial failures
Key changes:
  • Scoring job status no longer returns PROCESSING
  • Batch status no longer returns IN_PROGRESS or PARTIAL_FAILURE
  • batch.completed webhook payload status now uses completed or failed
Breaking change: if your integration previously handled status values like PROCESSING, IN_PROGRESS, or PARTIAL_FAILURE, update your logic to use pending|completed|failed.
December 2025
Criteria

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 criteria
  • GET /v1/criteria-library/{criterionId} - Get a library criterion
  • POST /v1/criteria-library - Add a criterion to the library
  • PATCH /v1/criteria-library/{criterionId} - Update a library criterion
  • DELETE /v1/criteria-library/{criterionId} - Remove from library
Key features:
  • Tenant-scoped: Each of your customers has their own isolated library
  • Reusable: Use library criteria as templates when building job-scoped criteria
Learn more