What one record holds
These are the fields a usage record shows you, as the Activity list and the single request lookup return them:
Two things about that list are worth stating plainly.
Null is never zero. A token count that never reached us is null, and the screens
render it as
unknown rather than as 0. A real charge sitting beside two zeros is
the reading that files a billing bug, so a count that was never measured never
renders as a measurement.
The list is a fence, not a sample. Figures about our own performance and our own
supply are not in it and will not appear later by accident. Every customer facing
usage endpoint is checked against the same list, so what you can see is decided in
one place rather than by whichever endpoint you happen to call.
Your own key is on the record too. A request served on a provider key your
workspace brought is metered exactly like any other: it gets a usage record, and
whether it ran that way is on that record. How many of your requests ran on your
own key is counted apart from the ones we served on ours, never folded into them.
See Bring your own key for what changes, and what
does not, when a request runs on a credential you brought.
The outcome vocabulary
outcome answers “what became of this request”. The set is closed, and it grows only
when a feature ships that needs a new value. These are the values you may see today:
The last five are the outcomes where a charge exists and final counts never did. On
those rows the token figures read
unknown, and the charge is what was settled
against the hold rather than what was counted.
What is never recorded
We do not store your prompt and we do not store the model’s reply. Not for API requests, not for playground runs, not for a request that failed. The single request lookup carries the sentence that says so, in these words:No prompt and no response body was stored for this request; the figures here are everything that exists (we never store prompts).That is the whole reason the playground has no history and no share link: there is nothing stored to show you. See Data and privacy for the full data stance.
When figures appear
Your usage figures are available within 60 seconds of a request completing. Most of that budget covers a request whose settlement had to retry; an ordinary request appears faster than that. Sixty seconds is the promise, not the typical case. Summaries carry the time of the newest request inside the window as well as the time we read them, because “when we looked” is never the question. The question is how current the figures are, and a total summed from a request that started nine minutes ago is stale in a way the read time cannot express.Usage and money agree
Usage figures and your balance are the same money, read two ways. Charges on your usage records and theusage movements on your statement are matched against each
other by request id, with no tolerance for a difference, and we are told when they
disagree rather than waiting for you to find it.
One caveat is stated on the screens rather than hidden. A served request whose token
counts never reached us is settled against its hold, and the row cannot yet say for
how much. The totals name how many such requests fall in the window, so the cost
totals read as incomplete rather than as complete-and-low. Your statement carries the
real movements meanwhile.
The Usage and Activity screens, and the endpoints behind them, are shipped. The field
set, the outcome vocabulary and the retention window above are what a customer reads
today, not a preview of what is coming.
What you can see of other people’s requests
Totals, the day and hour buckets, and the breakdowns by model and by provider are facts about the workspace, and every member of the workspace sees them whole. Breakdowns by key and by member are scoped: an owner or admin sees every line, and everybody else sees only the keys they are accountable for or named on, plus their own row. What the workspace did is workspace knowledge. Who did it is not. An API key is a bearer credential, so a per member figure is accountability rather than proof of presence: whoever holds a key spends as the member that key is accountable to.How long records are kept
Usage records are kept for 90 days. The guaranteed minimum is 62 days, which is two full billing months.Ninety days is the window in force and it is a configured value, read by the purge job that enforces it and by the screens that print it, so what you read cannot drift from what is enforced. Sixty two days is the floor beneath it: support has to be able to quote a request from two full billing months back. When a record passes the window it is deleted. The money survives: the ledger movement for that request is never purged, so a balance older than its usage records can still be explained line by line. A lookup for a request that has aged out names the retention window rather than answering as though the request never existed, and a date filter that reaches past the window says so rather than returning an empty list.
Next
Monitor usage
Reading Usage and Activity, filtering, and looking up one request.
Credits and billing
How charges reach your balance and your statement.
Every response carries the same id on two headers:
x-uniblock-request-id,
which is ours, and x-request-id, which is the one the official OpenAI SDKs
surface on their error objects. Every error envelope repeats it as
request_id. Quote it when you ask us about a request. Without it we are
guessing at which of your requests you mean.