Cancel a single job of a workflow run
POST/api/jobs/{job_id}/cancel
cancelWorkflowRunJob
Cancels one job without touching its siblings. A job that never started goes straight to `cancelled` (its transitive dependants are skipped, and the run finalizes if that left no live jobs); a running job transitions to `cancelling` — the executing runner tears it down and confirms. Requires write access on the job's repo. 409 when the job is already finished; cancelling an already-`cancelling` job is a no-op.
Authentication is not described for this operation in the spec — that does not mean it is public. Check tokens and scopes.
curl
curl -X POST 'https://neosource.dev/api/jobs/JOB_ID/cancel'fetch
fetch("https://neosource.dev/api/jobs/JOB_ID/cancel", {
method: "POST",
});Path parameters
job_idrequired
Responses
200Job cancelling/cancelled
application/json
403Forbidden — one of: forbidden, needs_scope
application/json
Standard errors
Bodies documented once for the whole API — see standard errors.
- 400Bad Request — one of: invalid_input
- 404Not Found — one of: not_found
- 409Conflict — one of: already_exists, conflict
- 429Rate limited — retry after the `Retry-After` header
- 500Internal server error
- 503Service temporarily unavailable / at capacity — retry after the `Retry-After` header
- 504Gateway timeout — the request exceeded the server's handling budget
Schemas
Referenced above. Listed here rather than expanded inline, so the same definition is not repeated at every level.
StepCacheReportDto
What a step's cache RESTORE got back. `null` on the step it belongs to means "this step said nothing about caching" — never "miss". Every step that predates the feature, and every step that is not a cache restore, reads null, so a reader that renders absence as a miss libels most of the platform's history.
bytesCompressed size of the restored entry, when the transport knew one.
matched_keyThe key that MATCHED — the primary key on an exact hit, the restore-key-matched entry's key on a partial one. `null` on a miss.
outcomerequired
WorkflowRunStepStatus
Lifecycle of one step inside a job. Written by the runner (it knows the boundaries exactly) via an idempotent full-snapshot upsert; never derived server-side from log parsing.
"queued""running""succeeded""failed""skipped"