| error | No | On failure: the same typed error envelope a synchronous call returns. details.cancelled true means YOU cancelled it with cancel_job, not a fault. | |
| stage | No | The real engine stage while running (e.g. brief, draft, judge). | |
| job_id | No | The job polled. | |
| result | No | On success: the FULL generate (or batch) body, always full-verbosity. At standard/full, a judge-ranked smart hook may also carry {shape, phone_test, say_it}; a judge-ranked research hook carries receipts {persona, shape, phone_test, say_it, pattern_source}. pattern_source is null when no measured opener was attributed, otherwise its nested provenance is the authoritative actual platform, source surface, transcript method, language, route, media, and origin-time record. Minimal keeps persona and shape, plus phone_test only when it is the warning value 'fail'. | |
| status | No | queued (waiting on a worker), running, recovery_required (a hook-research V2 job fenced on ambiguous vendor settlement; operator recovery owns it), succeeded (see `result`), failed (see `error`). Stop polling on the last two. | |
| elapsed_ms | No | Milliseconds since the job started running. | |
| eta_seconds | No | Estimated seconds remaining. | |
| progress_pct | No | 0-100 progress within the run. | |
| hook_instances | No | Immutable non-prose served-occurrence identities. Profile-bound queued/running work returns an empty list; a successful result returns one row per served hook. | |
| poll_after_seconds | No | How long to wait before polling again. | |
| resolved_creator_profile | No | Exact immutable creator-profile binding used by this occurrence. Null/absent for inline or unprofiled generation. | |