Scoring submissions are idempotent by default. POST /v1/jobs/{jobId}/applications/{applicationId}/scoring-jobs deduplicates on your tenant + jobId + applicationId. Submitting the same combination returns the existing scoring job.
Re-scoring
To create a new scoring job for an application, pass rescore: { enabled: true }.
Re-scoring is idempotent per criteria version. Submitting rescore.enabled: true multiple times without changing criteria returns the same re-score job.
To pin a specific criteria version:
{
"resume": { "type": "url", "url": "https://storage.example.com/resumes/abc123.pdf" },
"jobDescription": "We are looking for a Senior Backend Engineer with 5+ years experience...",
"rescore": {
"enabled": true,
"criteriaVersionId": "cmlz26ck2000awp61q9qcjcne"
}
}
What creates a new scoring job
| Change | New job? |
|---|
jobId changes | Yes |
applicationId changes | Yes |
rescore.enabled set to true | Yes |
rescore.criteriaVersionId changes while rescoring | Yes |
resume changes | No |
applicationData changes | No |
Retry strategy
- Retry network failures and
5xx errors with exponential backoff.
- For
429, wait for Retry-After before retrying.
If a scoring request fails because the resume URL is inaccessible, generate a new URL and retry. Since the job wasn’t created, the retry is safe.