Request log
Every authenticated request on the account is recorded: method, route template, HTTP status, latency, the key that made it, the Request-Id the response carried and the client address. Never the body, headers or query string. Refused calls are recorded too (401 api_key_expired, 403 scope_required, 403 ip_not_allowed, 429), which is how a misconfigured key shows up before anyone emails support. The dashboard Logs page is a view over this endpoint.
curl -X GET https://api.primarycheck.com/v1/account/requests?status=4xx&path=/v1/verifications&limit=50 \ -H "Authorization: Bearer pc_live_…"
{ "data": [
{ "id": "areq_…", "object": "api_request", "requestId": "req_7c1e0b1f2a9d4e8f",
"method": "POST", "path": "/v1/verifications", "status": 400, "ms": 12,
"keyId": "key_3kd9…", "auth": "key", "ip": "203.0.113.9", "createdAt": "2026-11-05T14:05:09Z" } ],
"hasMore": true, "retention": { "maxPerAccount": 10000, "maxAgeDays": 30 } }Filters
| Parameter | Meaning |
|---|---|
keyId | One API key. Dashboard-session calls have keyId null and auth "session". |
status | A class — 2xx, 4xx, 5xx — or an exact code such as 429. |
method | GET, POST, PATCH or DELETE. |
path | A prefix of the route template, e.g. /v1/verifications matches /v1/verifications/{id} too. Templates, never raw URLs. |
from, to | YYYY-MM-DD (inclusive days) or ISO-8601 timestamps. |
limit, startingAfter | 1–200 per page; startingAfter is the id of the last row of the previous page. Newest first. |
How it is written
The write is off the request path: the API appends to an in-memory buffer and a background task inserts it in batches, so logging adds no latency to your call. Reading the log flushes that buffer first, which is why the call you just made is already there. Retention is a ring buffer: the newest 10,000 requests per account or 30 days, whichever is smaller. For longer retention, page through GET /v1/account/requests and keep your own copy; the SDKs auto-paginate (pc.requests.list(...).auto_paging_iter(), for await (const r of await pc.requests.list())).