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 one of five 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 rather than 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 →