Skip to main content
GET
/
v1
/
score
/
{scoringJobId}
cURL
curl --request GET \
  --url https://embed.nova.dweet.com/v1/score/{scoringJobId} \
  --header 'Authorization: Bearer <token>' \
  --header 'X-Tenant-Id: <x-tenant-id>'
{
  "scoringJobId": "sj_abc123def456",
  "status": "completed",
  "jobId": "job-123",
  "applicationId": "app-456",
  "result": {
    "score": 7,
    "assessment": {
      "verdict": "Strong candidate with solid backend experience. Meets core requirements but lacks direct Kubernetes experience. Recommend proceeding to technical interview.",
      "strengths": [
        "6 years of backend engineering experience at high-growth startups",
        "Strong Go proficiency demonstrated through open-source contributions"
      ],
      "concerns": [
        "No direct Kubernetes experience; container orchestration exposure is limited"
      ],
      "interviewFocus": [
        "Probe depth of distributed systems knowledge",
        "Assess willingness and ability to learn Kubernetes quickly"
      ]
    }
  },
  "completedAt": "2025-01-15T10:30:45Z"
}
Retrieve score results using Nova’s scoring job ID. Use this if you missed the webhook or need to re-fetch results.

When to Use

Missed Webhook

Your webhook endpoint was down or returned an error

Polling Fallback

As a backup to webhook delivery

Status Check

Check if a job is still processing

Re-fetch Results

Need the score data again after processing

Response States

StatusDescription
queuedJob is waiting to be processed
processingJob is currently being scored
completedScoring finished successfully
failedScoring could not be completed

Understanding the Score

Score (1-10)

RangeMeaning
8-10Strong fit - meets most/all criteria
5-7Moderate fit - meets core criteria with some gaps
1-4Weak fit - missing key requirements

Assessment Fields

FieldDescription
verdict2-3 sentence summary with hiring recommendation
strengthsEvidence-backed positive observations from resume
concernsGaps or potential issues identified
interviewFocusSuggested topics to explore in interviews

Polling Pattern

If you need to poll for results:
async function pollForResult(scoringJobId, maxAttempts = 20) {
  for (let attempt = 0; attempt < maxAttempts; attempt++) {
    const response = await fetch(
      `https://embed.nova.dweet.com/v1/score/${scoringJobId}`,
      {
        headers: {
          'Authorization': `Bearer ${apiKey}`,
          'X-Tenant-Id': tenantId,
        },
      }
    );

    const data = await response.json();

    if (data.status === 'completed' || data.status === 'failed') {
      return data;
    }

    // Wait 3 seconds between polls
    await sleep(3000);
  }

  throw new Error('Polling timeout');
}
Prefer webhooks over polling. Polling uses your rate limit and adds latency.

Caching Results

Results are stored indefinitely. You can re-fetch them at any time.

Alternative

Don’t have the scoringJobId? Use Get Score by Application ID instead.

Authorizations

Authorization
string
header
required

API key authentication. Use your environment-specific API key (sk_test_* for sandbox, sk_live_* for production).

Headers

X-Tenant-Id
string
required

Your customer/tenant identifier. Used for data isolation and per-customer metrics. Tenants are created automatically on first request.

Path Parameters

scoringJobId
string
required

The scoring job ID returned from POST /v1/score

Response

Score result retrieved

scoringJobId
string
required
status
enum<string>
required
Available options:
queued,
processing,
completed,
failed
jobId
string
required
applicationId
string
required
result
object
error
object
queuedAt
string<date-time>
completedAt
string<date-time>
failedAt
string<date-time>