Skip to main content
GET
Get Job Status
Get the current status of an asynchronous job. Used to poll for results from Video and Research endpoints.

Authentication

Requires a Bearer token. See Authentication.

Path Parameters

string
required
The job ID returned by the async endpoint (e.g., job_xyz789).

Request Examples

Response

string
Job ID.
string
Job type (e.g., "video", "research").
string
Current status: "queued", "active", "completed", or "failed".
number
Progress percentage (0–100).
object | null
The job result. null until status is "completed". The shape depends on the job type — see Result schemas by type below. Any provider/model identifiers are always Theo-branded (engine / model), never raw upstream names.
string | null
Error message if status is "failed".
string | null
When the job was created.
string | null
When the job completed (or failed).

Example Response (Completed)

result is an object, not a bare URL. For a video job:

Example Response (In Progress)

The SDK’s theo.waitForJob(jobId, { intervalMs, maxWaitMs, signal, onProgress }) polls automatically with a configurable interval (default 2s), overall timeout (default 5 minutes), an optional AbortSignal, and an onProgress callback. The legacy positional form waitForJob(id, intervalMs, maxWaitMs) still works. See the Async Jobs guide.

Result schemas by type

The result object differs per job type. These mirror the SDK’s typed result interfaces (ResearchJobResult, VideoJobResult, ImageJobResult, DocumentJobResult) — poll with theo.waitForJob<VideoJobResult>(...) to get them typed. research
video
image
document

Endpoint

GET /api/v1/jobs/{id} Requires authentication via Bearer token. See Authentication.