@nova-sdk/api
import { Nova } from "@nova-sdk/api";
const nova = new Nova({
apiKey: "sk_test_...",
tenantId: "acme-corp",
});
const result = await nova.jobs.scoringBatches.getStatus({
jobId: "job_abc123",
scoringBatchId: "sb_abc123",
});curl -X GET "https://embed.nova.dweet.com/v1/jobs/job_abc123/scoring-batches/sb_abc123" \
-H "Authorization: Bearer sk_test_..." \
-H "X-Tenant-Id: acme-corp"{
"batch": {
"id": "<string>",
"jobId": "<string>",
"totalJobs": 123,
"completedJobs": 123,
"failedJobs": 123,
"createdAt": "2023-11-07T05:31:56Z",
"completedAt": "2023-11-07T05:31:56Z"
},
"scoringJobs": [
{
"id": "<string>",
"criteriaVersionId": "<string>",
"jobId": "<string>",
"applicationId": "<string>",
"isRescore": true,
"score": 123,
"assessment": {
"verdict": "<string>",
"strengths": [
"<string>"
],
"concerns": [
"<string>"
],
"interviewFocus": [
"<string>"
]
},
"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"
}
],
"rejectedApplications": [
{
"applicationId": "<string>",
"error": {
"message": "<string>",
"reason": "<string>"
}
}
]
}{
"type": "<string>",
"status": 123,
"message": "<string>",
"retryable": true,
"traceId": "<string>",
"details": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"type": "<string>",
"status": 123,
"message": "<string>",
"retryable": true,
"traceId": "<string>",
"details": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"type": "<string>",
"status": 123,
"message": "<string>",
"retryable": true,
"traceId": "<string>",
"details": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"type": "<string>",
"status": 123,
"message": "<string>",
"retryable": true,
"traceId": "<string>",
"details": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}API endpoints
Get Batch Status
Check the progress of a scoring batch and its individual jobs
GET
/
v1
/
jobs
/
{jobId}
/
scoring-batches
/
{scoringBatchId}
@nova-sdk/api
import { Nova } from "@nova-sdk/api";
const nova = new Nova({
apiKey: "sk_test_...",
tenantId: "acme-corp",
});
const result = await nova.jobs.scoringBatches.getStatus({
jobId: "job_abc123",
scoringBatchId: "sb_abc123",
});curl -X GET "https://embed.nova.dweet.com/v1/jobs/job_abc123/scoring-batches/sb_abc123" \
-H "Authorization: Bearer sk_test_..." \
-H "X-Tenant-Id: acme-corp"{
"batch": {
"id": "<string>",
"jobId": "<string>",
"totalJobs": 123,
"completedJobs": 123,
"failedJobs": 123,
"createdAt": "2023-11-07T05:31:56Z",
"completedAt": "2023-11-07T05:31:56Z"
},
"scoringJobs": [
{
"id": "<string>",
"criteriaVersionId": "<string>",
"jobId": "<string>",
"applicationId": "<string>",
"isRescore": true,
"score": 123,
"assessment": {
"verdict": "<string>",
"strengths": [
"<string>"
],
"concerns": [
"<string>"
],
"interviewFocus": [
"<string>"
]
},
"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"
}
],
"rejectedApplications": [
{
"applicationId": "<string>",
"error": {
"message": "<string>",
"reason": "<string>"
}
}
]
}{
"type": "<string>",
"status": 123,
"message": "<string>",
"retryable": true,
"traceId": "<string>",
"details": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"type": "<string>",
"status": 123,
"message": "<string>",
"retryable": true,
"traceId": "<string>",
"details": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"type": "<string>",
"status": 123,
"message": "<string>",
"retryable": true,
"traceId": "<string>",
"details": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"type": "<string>",
"status": 123,
"message": "<string>",
"retryable": true,
"traceId": "<string>",
"details": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}Get the current status of a scoring batch, the scoring jobs it contains, and any applications rejected during batch intake.
Batch status values
| Status | Meaning |
|---|---|
pending | Batch isn’t finished yet. Jobs may be queued or currently scoring |
completed | All jobs completed successfully |
failed | Batch finished and at least one job failed. Use failedJobs and completedJobs to determine partial vs total failure |
totalJobs, completedJobs, and failedJobs count accepted applications only. rejectedApplications were rejected before queueing, so they do not create scoring jobs and do not emit score.failed webhooks.
Example response
{
"batch": {
"id": "cmlz26em4002cwp61t7ukh3lb",
"jobId": "job-123",
"status": "pending",
"totalJobs": 2,
"completedJobs": 1,
"failedJobs": 0,
"createdAt": "2025-12-14T10:30:45Z",
"completedAt": null
},
"scoringJobs": [
{
"id": "cmlz26dl3001bwp61r8sjf2ka",
"criteriaVersionId": "cmlz26ck2000awp61q9qcjcne",
"jobId": "job-123",
"applicationId": "app-001",
"status": "completed",
"isRescore": false,
"score": 7,
"assessment": {
"verdict": "Strong candidate with solid backend experience.",
"strengths": [],
"concerns": [],
"interviewFocus": []
},
"errorCode": null,
"errorMessage": null,
"queuedAt": "2025-12-14T10:30:45Z",
"startedAt": "2025-12-14T10:30:50Z",
"completedAt": "2025-12-14T10:31:20Z",
"failedAt": null
}
],
"rejectedApplications": [
{
"applicationId": "app-bad",
"error": {
"code": "RESUME_CORRUPTED",
"message": "Resume file appears to be corrupted",
"reason": "missing_eof"
}
}
]
}
Authorizations
Use Authorization: Bearer sk_test_* or Authorization: Bearer sk_live_*.
Headers
Your customer identifier. Tenants are auto-provisioned on first request.
Path Parameters
Your job identifier (external ID).
Scoring batch ID.
Was this page helpful?
⌘I