Manage
Usage and request logs
What Paranine records about every request, where to see it, and what each timing means.
What's recorded
For every request made with your keys, Paranine records its metadata: the model, key and project, the status, how the request ended, its timings, token counts, cost, the client's user agent and any X-P9-Meta-* tags you sent.
The content of prompts and completions is never stored. Request records are kept for 12 months.
In the dashboard
- Request logs: every request, newest first. Search by request id or tag; filter by time, project, key, model, status, how the request ended and cost; open any row to see every field; export to CSV.
- Overview: requests, latency, time to first token, throughput and tokens by key, project and model, over 24 hours, 7 days or 30 days.
- Each key's page: that key's usage and spend over the last 30 days.
- Activity: who changed what in your organisation, such as sign-ins and keys created, changed or revoked.
Timings
A request's time splits into four parts:
Total = Upload + Paranine + Time to first token + Generation
| Part | What happens | Field |
|---|---|---|
| Upload | Your request body arrives | client_upload_ms |
| Paranine | Paranine checks the key, limits and balance and routes the request | gateway_processing_us (microseconds) |
| Time to first token | The model reads your prompt and starts its reply | ttft_ms |
| Generation | The model writes the rest of the reply | tpot_ms, per output token |
total_ms runs from your request arriving at Paranine to the last byte of the reply leaving it. Upload depends on your connection and the size of your prompt; it is not Paranine's time.
Your own stopwatch reads longer, because it also counts connecting and the network in both directions. Time to first token and generation speed exist for streaming requests only; for other requests they read null, not 0, and an average over a period with no requests is null too.
How a request ended
Each record carries a termination_reason: success, client_disconnect, proxy_guillotine (the five-minute limit) or upstream_stream_aborted, or the error code of a refused request. See Errors and retries.
A request refused before its key could be identified (a wrong key, an unknown model, a malformed body) is not in your logs: read the error response itself.
From code
Pull usage summaries, time series and the request log itself with the Account API.
Something unclear or wrong on this page? Tell us. Machine-readable copies: llms.txt.