Get a request
The receipt for one request: routing, attempts, usage, and cost. Use the X-Request-ID from any response. Reading a receipt never starts inference.
Path
- idstringrequired
A
req_…id from your team, from theX-Request-IDheader orerror.request_id. Any key of the team can read any of its requests. Unknown ids, and ids from other teams, return400 invalid_request.
Response
- endpointstringrequired
chat.completions,messages,responses,embeddings,evaluateorsuggest. - model_requestedstringrequired
The model you asked for, as sent: a team alias stays
org/fast. - selectionobjectoptional
Only when the alias chose its model through a routing profile:
profile,objective,quality_floor,task_class, themodelchosen, thereason(cheapest,highest_quality, orbaselinewhen no pool model qualified), thebaseline, andcandidates: each pool model with itsstatus(selected,eligible,below_floor,not_evaluated, or why it couldn't take the request, such aspolicy_denied),scoreand estimatedest_usd. - aliasobjectoptional
Only when the request named a team alias:
name, themodelit resolved to, and thedefaultsits preset filled (body fields such astemperature). - data_rulesobjectoptional
require_zdrandrequire_no_training: the data Directives the request ran under. - model_actualstring | nullrequired
The model that answered: a fallback model or an accepted mixed-model suggestion when one applied.
nullif none answered. - provider_actualstring | nullrequired
The provider that served it.
- routing_modestringrequired
explicitfor the model as requested;mixed_acceptedorpinnedfor mixed-model turns;profilewhen an alias's routing profile chose the model. - session_idstring | nullrequired
The
ib-sessionid the request was sent with. - end_userstring | nullrequired
The end user it was sent for (
ib-user,user,safety_identifierormetadata.user_id). See End users and tags. - tagsstring[]required
Its tags (
ib-tagsandib.tags); empty when none were sent. - transport_statestringrequired
admitted,dispatching,streaming,succeeded,failed,canceled, orunknown. - billing_statestringrequired
See request states.
- error_codestring | nullrequired
The error code the request ended with.
- attemptsarrayrequired
Each provider attempt in order, with its model, provider, state, upstream status, error, and timing (below).
operationisexecutefor the request itself orclassifyfor a mixed-model classifier call it carried. - usagearrayrequired
Token counts per generation, including reasoning and cached tokens, and the finish reason. Empty until usage is known.
- costobjectrequired
With
status: "final":upstream_cost,platform_feeandcustomer_chargeas USD decimal strings, and the fee rate inmarkup_bps. Otherwisestatusispendinguntil usage settles, orreleasedwhen nothing was billed. - mixed_modelarrayoptional
Present when the request produced or used a mixed-model suggestion: the suggestion id, task class, confidence, models and estimates.
- versionsobjectrequired
Directives, price plan, and catalog versions that applied.
Attempt timing
each entry of attempts- started_atstring | nullrequired
When the attempt was sent to the provider.
- first_byte_atstring | nullrequired
For a stream, when the first event arrived, before any byte reached you. For a non-streamed call, when the whole response arrived.
- ended_atstring | nullrequired
When the attempt finished. For a stream, when its last event was relayed, so a slow reader makes it later.
- streamedboolean | nullrequired
Whether the attempt streamed.
nulluntil something came back. - ttft_msinteger | nullrequired
Time to first token:
first_byte_at − started_at. Streamed attempts only;nullfor non-streamed calls, whose first byte is the whole answer. - duration_msinteger | nullrequired
ended_at − started_at.nullwhile the attempt runs. - output_tokens_per_secondnumber | nullrequired
Completion tokens (reasoning included) divided by generation time:
ended_at − first_byte_atfor a stream,ended_at − started_atfor a non-streamed call, which includes the wait for the first token.nulluntil usage is known, or when no completion tokens were reported.
Timestamps are ISO 8601 in UTC (2026-10-04T17:02:11.204Z), as on every endpoint. GET /v1/usage lists many requests at once.