Skip to main content
POST
/
v1
/
jobs
/
{jobId}
/
applications
/
{applicationId}
/
scoring-jobs
Submit scoring job
curl --request POST \
  --url https://embed.nova.dweet.com/v1/jobs/{jobId}/applications/{applicationId}/scoring-jobs \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --header 'X-Tenant-Id: <x-tenant-id>' \
  --data '
{
  "resumeUrl": "<string>",
  "jobDescription": "<string>"
}
'
{
  "scoringJob": {
    "id": "<string>",
    "criteriaVersionId": "<string>",
    "jobId": "<string>",
    "applicationId": "<string>",
    "status": "pending",
    "isRescore": true,
    "score": 123,
    "assessment": {
      "verdict": "<string>",
      "strengths": [
        "<string>"
      ],
      "concerns": [
        "<string>"
      ],
      "interviewFocus": [
        "<string>"
      ]
    },
    "errorCode": "UNAUTHORIZED",
    "errorMessage": "<string>",
    "queuedAt": "2023-11-07T05:31:56Z",
    "startedAt": "2023-11-07T05:31:56Z",
    "completedAt": "2023-11-07T05:31:56Z",
    "failedAt": "2023-11-07T05:31:56Z"
  }
}
Submit an application for scoring. This is an asynchronous operation. Nova loads the job’s active criteria automatically.

Request

{
  "resumeUrl": "https://storage.example.com/resumes/abc123.pdf",
  "jobDescription": "We are looking for a Senior Backend Engineer with 5+ years of experience in Node.js and TypeScript...",
  "candidateData": {
    "applicationAnswers": [
      { "question": "Are you eligible to work in the UK?", "answer": "Yes" }
    ]
  },
  "rescore": false
}
This endpoint is scoped by:
  • jobId (path)
  • applicationId (path)
FieldRequiredDescription
resumeUrlYesA public HTTPS URL to the resume file
jobDescriptionYesThe job posting description. Provides context for AI scoring alongside criteria
candidateDataNoOptional application context
rescoreNoWhen true, create a new scoring job for this application
criteriaVersionIdNoOnly supported when rescore: true. When set, re-score against a specific criteria version
See Supported Formats for supported resume formats and URL requirements.
The job description should match what was used for criteria generation. It is stored per-request and automatically cleaned up after 90 days. See Data Retention.

Response

The API returns 202 Accepted with a scoring job.
{
  "scoringJob": {
    "id": "cmlz26dl3001bwp61r8sjf2ka",
    "criteriaVersionId": "cmlz26ck2000awp61q9qcjcne",
    "jobId": "job-123",
    "applicationId": "app-456",
    "status": "pending",
    "isRescore": false,
    "score": null,
    "assessment": null,
    "errorCode": null,
    "errorMessage": null,
    "queuedAt": "2025-12-14T10:30:45Z",
    "startedAt": null,
    "completedAt": null,
    "failedAt": null
  }
}

Status values

StatusDescription
pendingNot finished yet. Job may be queued or currently scoring
completedFinished successfully
failedFinished with an error

Result delivery

Results are delivered via webhook. Use polling as a fallback.

Idempotency

Requests are idempotent by default. Re-submitting the same jobId and applicationId returns the existing job. See Idempotency for details on rescore and criteriaVersionId.

Batch scoring

To score multiple applications at once, use POST /v1/jobs/{jobId}/scoring-batches.

Authorizations

Authorization
string
header
required

Use Authorization: Bearer sk_test_* or Authorization: Bearer sk_live_*.

Headers

X-Tenant-Id
string
required

Your customer identifier. Tenants are auto-provisioned on first request.

Path Parameters

jobId
string
required

Your job identifier (external ID).

applicationId
string
required

Your application identifier (external ID).

Body

application/json
resumeUrl
string<uri>
required
jobDescription
string
required

The job posting description. Provides context for AI scoring alongside criteria.

Minimum string length: 1
candidateData
object
rescore
boolean
default:false

When true, create a new scoring job for this application instead of returning the existing one.

criteriaVersionId
string

Pin scoring to a specific criteria version. Only allowed when rescore is true.

Response

Accepted

scoringJob
object
required