Cancel job
/v20/jobs/{jobId}Cancels a scheduled job before it prints. The job must be in scheduled state — jobs that are already queued, processing, printed, or in any other state cannot be cancelled.
A successful cancel transitions the job to cancelled (a terminal state), removes the underlying schedule, and fires a job.cancelled webhook to your webhook_url.
Authentication
Requires HTTP Basic authentication with your API Credential ID and Token.
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
jobId | string (UUID) | Yes | The job ID returned from POST /v20/jobs |
Response
200 — Job cancelled
Returns the cancelled job in the same JSON:API envelope shape as GET /v20/jobs/{jobId}. The data.attributes.state is now "cancelled". Content-Type: application/vnd.api+json.
{
"data": {
"type": "jobs",
"id": "9af67ab2-ceb6-4dae-9ef3-fe145ae65cd1",
"attributes": {
"state": "cancelled",
"printAt": "2026-04-26T18:30:00.000Z",
"...": "..."
},
"relationships": { "...": "..." }
},
"included": [ "..." ]
}
404 — Job not found
{
"errors": [
{
"status": "404",
"title": "Not Found",
"detail": "Job not found"
}
]
}
422 — Job not cancellable
The job is in a state that doesn't allow cancellation (e.g. queued, processing, printed, cancelled).
{
"errors": [
{
"status": "422",
"title": "Unprocessable Entity",
"detail": "Only scheduled jobs can be cancelled (current state: queued)"
}
]
}
403 — Account not found or disabled
Same JSON:API error shape as the other v20 endpoints.
401 — Not authorized
Returned when the API credential is invalid, disabled, or missing.