DraftFilterDeveloper API

Developer reference

Jobs

Score and rewrite requests create asynchronous jobs. Creation returns 202 with a job id and an initial state. Poll the typed job endpoint until the job reaches a terminal state.

Public job states:

text
queued
running
succeeded
failed
cancelled

Create responses are intentionally small:

json
{
  "jobId": "job_000224",
  "state": "queued"
}

A queued job response contains only the id and state:

json
{
  "jobId": "job_000225",
  "state": "queued"
}

A failed job response includes a public error summary:

json
{
  "jobId": "job_000226",
  "state": "failed",
  "error": {
    "code": "worker_failed",
    "message": "The job failed while processing.",
    "retryable": false
  }
}

List routes return metadata only, not item-level results or customer text:

json
{
  "items": [
    {
      "jobId": "job_000226",
      "state": "failed",
      "createdAt": "2026-06-30T00:00:00Z",
      "updatedAt": "2026-06-30T00:05:00Z",
      "completedAt": "2026-06-30T00:05:00Z",
      "itemCount": 1,
      "inputBytes": 96,
      "resultSummary": null,
      "errorSummary": {
        "code": "worker_failed",
        "message": "The job failed while processing.",
        "retryable": false
      }
    }
  ],
  "nextCursor": null
}

Use the matching typed endpoint for each job kind:

text
POST /v1/score-jobs
GET  /v1/score-jobs
GET  /v1/score-jobs/{jobId}
POST /v1/score-jobs/{jobId}/cancel

POST /v1/rewrite-jobs
GET  /v1/rewrite-jobs
GET  /v1/rewrite-jobs/{jobId}
POST /v1/rewrite-jobs/{jobId}/cancel

Typed routes do not return jobs from the other kind.