Request logs
Every call your keys make is recorded and shown to you, on your own dashboard, with enough to work out what happened and nothing that should not be stored.
What a line holds
| Field | What it is |
|---|---|
| When | The moment the gateway saw it. |
| Request id | A stable identity for the call. Safe to send anybody, and the thing to quote in a support request. |
| Project | Which project the key belonged to. |
| Network and method | What was asked, and where. |
| Outcome | ANSWERED, or one of seven
refusals: malformed, unauthenticated, forbidden, rate limited, quota exceeded,
refused, unavailable. |
| Status and latency | What the caller got, and how long the gateway took end to end. |
What it can never hold
No request body. No response body. No headers. No API key, in any form. This is not a redaction step that could be forgotten — the usage record has never had fields for any of them, so there is nothing to strip and no way for a later change to start including one.
A request id identifies a call. A request body contains one. That is the whole distinction, and it is why quoting an id in a support request is safe and pasting a body is not.
Reading a refusal
The outcome tells you whose problem it is:
FORBIDDEN— usuallyOUT_OF_SCOPE: the key does not carry that network or that method. Look at the key, not the project.RATE_LIMITEDorQUOTA_EXCEEDED— a Beta limit. The refusal names which one and when it returns.REFUSED— the engine understood and declined. The response carrieddetail.engine_said, which says what to change.UNAVAILABLE— sources could not be reached. This one is about somebody else’s service, and backing off is the right response.
Retention
The log is bounded: the newest calls are kept and older ones are dropped. It is an operational record for working out what happened this week, not an archive and not a billing ledger. Nothing on this deployment is billed.
Where to find it
The usage page in your dashboard, under each project, alongside the counts of requests, answers, refusals and response bytes. An operator sees the same records through the operator console; the fields are identical, because it is the same record.