Get Completion Job
Return the job and its status. A 200 here does not mean that the completion succeeded: read GET /v1/completion-jobs/{job_id}/result.
bearerAuthorizationBearer <token>An API key: Authorization: Bearer sk-acs-..., or a key of the old platform, acs-bm-.... A User makes and revokes keys in the App.
job_id*string^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|[fF]{8}-[fF]{4}-[fF]{4}-[fF]{4}-[fF]{12})$uuidCompletionJob
application/json- response
id*string^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|[fF]{8}-[fF]{4}-[fF]{4}-[fF]{4}-[fF]{12})$uuidrequest_id*stringThe id to send when you report a problem with this job.
model*stringstatus*stringqueued and running until the job ends. Then succeeded when its completion answered 200, failed when it answered an error, or cancelled.
"queued""running""succeeded""failed""cancelled"cancel_requested*booleanWhether the job was cancelled.
created_at*stringAn ISO 8601 time in UTC, such as 2026-11-03T09:30:00.123+00:00.
started_at*|When the job started to run. null until it starts.
finished_at*|When the job ended. null until it ends.
expires_at*|When the result of the ended job expires: 30 days after it ended. null until it ends.
result_expired*booleanstatus_url*stringThe path of GET /v1/completion-jobs/{job_id} for this job.
result_url*stringThe path of GET /v1/completion-jobs/{job_id}/result for this job.
usage_pending*booleanWhether the job holds tokens of your budget: true while it runs.
curl -X GET 'https://api.v2.infra.acsresearch.org/v1/completion-jobs/497f6eca-6276-4993-bfeb-53cbbbba6f08' \ -H 'Authorization: Bearer <API_KEY>'{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "request_id": "string", "model": "string", "status": "queued", "cancel_requested": true, "created_at": "string", "started_at": "string", "finished_at": "string", "expires_at": "string", "result_expired": true, "status_url": "string", "result_url": "string", "usage_pending": true}Create Completion Job POST
Queue one completion to run on the server, also after your connection closes. The body is a body of POST /v1/completions that does not stream. The request is admitted first, as POST /v1/completions admits it: a model that the API does not serve answers 400 `model_not_found`, a value that admission refuses answers 400, and if the token budget cannot hold it, 429 `budget_exceeded`; nothing is queued. Send an `Idempotency-Key` so that a retry gets the same job: the same key with another request answers 409 `idempotency_conflict`.
Get Completion Job Result GET
Return the answer of an ended job, with the status that POST /v1/completions gave it: 200 and the Completion, or the error object with its own status, such as 429 `budget_exceeded` or 502. A cancelled job answers 409 `job_cancelled`, and a job that the server failed to run answers 500 `job_failed`. While the job is queued or running, 202 with the job and `Retry-After: 1`. 30 days after the job ended, 410 `job_result_expired`.