ZenodeZenode
Reference

Job

Async AI job objects

The object that AI endpoints create and that you poll or stream. See Async AI jobs for the endpoints that operate on it.

JSON
1{
2 "job_id": "job_8f3a2b...",
3 "type": "discover",
4 "status": "running",
5 "progress": {
6 "message": "Reading datasheet — Electrical Characteristics",
7 "fraction": 0.4,
8 "updated_at": "2026-06-01T17:05:12Z"
9 },
10 "created_at": "2026-06-01T17:04:00Z",
11 "completed_at": null,
12 "stream_url": "https://api.zenode.ai/v1/jobs/job_8f3a2b.../stream",
13 "usage": {
14 "input_tokens": 18234,
15 "output_tokens": 2451,
16 "total_tokens": 20685
17 },
18 "result": null,
19 "error": null,
20 "request_id": "req_2c19..."
21}
FieldTypeNotes
job_idstringOpaque job identifier
typestringdiscover | deep_dive — determines the shape of result
statusstringqueued | running | completed | failed | cancelled
progressobject | nullCoarse progress — { message, fraction, updated_at }
created_atstringISO-8601
completed_atstring | nullISO-8601; set on a terminal status
stream_urlstringAbsolute URL of the SSE progress stream
usageobject | nullLLM tokens consumed — { input_tokens, output_tokens, total_tokens }
resultobject | nullTyped result once completed; null until then
errorError | nullPopulated when status is failed

The result shape depends on type: a DiscoverResult (summary + DiscoverPick[]) for discover, or a DeepDiveResult (answers of Answer) for deep_dive.

JobSummary

The compact list row returned by GET /v1/jobs — a Job without the heavy result (job_id, type, status, progress, created_at, completed_at, error). Fetch the job by id for the full payload.

Used by: Async AI jobs.