Skip to content
REST API

Get a job

GET
/jobs/{jobId}

Returns a job started by a copilot message, a generation, a practice test or a file upload. Poll it until status is succeeded, failed or cancelled. While it is pending or running the response has a Retry-After header with the seconds to wait between polls. kind decides the shape of result. Practice test, grading and file jobs have no result: read the test, the attempt or the file.

Required scopes: copilot:use or generation:start or files:upload or files:view or tests:generate or tests:view or tests:attempt

Authorization

AuthorizationBearer <token>

In: header

Path Parameters

jobId*string

Job id, scoped to the key's user.

Match^([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|ffffffff-ffff-ffff-ffff-ffffffffffff)$
Formatuuid

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/jobs/497f6eca-6276-4993-bfeb-53cbbbba6f08"
{  "data": {    "id": "7d6c5b4a-3f2e-4d1c-8b0a-9f8e7d6c5b4a",    "kind": "note_generation",    "status": "succeeded",    "createdAt": "2026-01-15T09:30:00.000Z",    "finishedAt": "2026-01-15T09:31:10.000Z",    "result": {      "generationId": "7d6c5b4a-3f2e-4d1c-8b0a-9f8e7d6c5b4a",      "title": "Photosynthesis",      "sectionCount": 4,      "failedSections": [],      "stopped": false    },    "error": null  }}