Poll an analysis
Returns run status, readyForExport, enrichment progress, per-module statuses (deep runs), and report/share URLs. Accepts the run id or the report id; any personal starter or deep report the key’s account owns resolves, including ones created on the preuve.ai dashboard (their analysis id is the report id, clientRunId is null). Agency client reports are outside that fallback - read those with workspace agency - and so are legacy roast reports, which answer 404. That wider reach is specific to this route, because it returns status rather than payload: export and enrich answer 403 REPORT_NOT_FROM_AGENT_RUN for a dashboard report, and such a response carries exportable false with the reason. Does not return the report payload: use export, on an analysis this API started.
Authorizations
Your API key (prv_...), sent as-is. It is the only credential the API needs - see the Authentication guide.
Path Parameters
Run id (returned by create) or report id. What resolves differs per route: the poll also accepts any personal starter or deep report the account owns, including dashboard-created ones (the UUID in /app/results?id=...), while export and enrich serve analyses this API started. See each operation.
Response
Current run state.
Null until the report row is attached, which is why a run that failed before dispatch is retryable under the same clientRunId.
The caller-chosen id from create. Null when the analysis is a dashboard-created report resolved by its report id: no run row exists, so there is no clientRunId to replay.
The batch this run belongs to, or null for a standalone run.
Your request type. Reliable from creation, even while PROCESSING.
starter, deep core, none quick, deep_dive, null Derived from the report. Deep runs read "basic" until deep sections land.
basic, advanced, null PENDING, PROCESSING, COMPLETED, FAILED Free-text pipeline stage while PROCESSING.
Set on a FAILED run. Two internal markers are deliberately rewritten before they leave: an ambiguous dispatch reports TRIGGER_DISPATCH_FAILED and an ambiguous claim refund reports REPORT_CREATE_FAILED.
Present only on a batch item refused by the rolling daily cap; absent, not null, on every other run.
Present only while polling is still useful. Pace by this rather than by a fixed interval.
Present alongside pollAfterSeconds.
Whether GET /export will serve this analysis now. Always false for a report created on the preuve.ai dashboard, whatever state the report is in, because that export answers 403 REPORT_NOT_FROM_AGENT_RUN. Branch on exportable first.
Present, and false, only on a report created on the preuve.ai dashboard. Absent means the ordinary contract applies and readyForExport is the gate. When it is false, no amount of polling or enriching changes it.
Present alongside exportable, naming the refusal.
REPORT_NOT_FROM_AGENT_RUN Present alongside exportable. Relayable prose.
Progress of the core export sections. The four name arrays partition required, so a poller decides what to do next by reading them rather than by parsing status: anything in processing means keep polling, anything in failed means call enrich again, and missing with nothing processing means enrichment was never started for it.
Per-module statuses. Deep reports only; null on free runs.
Null until the report row exists.