When the batch was created — the "since when has this been waiting" clock for an in-flight batch.
The provider API the batch rides. Mirrors the core batch row's union, like state.
OptionallanesThe lanes of the requests the batch carries; empty when a batch of an older core cannot tell.
The provider running the batch. Mirrors the core batch row's union, like state.
OptionalproviderThe provider's own batch id; absent until the batch is submitted.
OptionalproviderWhen the provider started running the batch; absent while it has not.
OptionalproviderThe provider's status at the newest poll, as the adapter reports it: provider-raw for OpenAI, normalized
(in_progress, completed, …) for Anthropic and Mistral.
OptionalproviderWhen a poll first saw providerStatus.
OptionalrequestPer-request progress at the newest poll; absent for a provider that does not report it.
OptionalrequestWhen the poll that read requestCounts ran.
The batch's lifecycle state: intent (created, not yet submitted), submitted (waiting on the
provider), ended (provider finished, results not yet absorbed), or terminal
(reconciled/cancelled/failed).
When the batch row was last written. NOT a state-transition time: the poller refreshes it on every poll of an in-flight batch, so on a healthy job it is always recent — it freezing means polling stopped, not that the batch is waiting. Read wait duration off createdAt.
One provider batch created for a bulk-ingestion job, so a caller can tell a job waiting on a submitted provider batch (healthy — the designed cost/latency tradeoff of the batch lane, with turnaround up to 24 hours) from a job that is actually stuck, and see since when.