- authentication
- Secret API key as a bearer token
- billing
- Free.
Every response carries an X-Request-Id header and repeats the same id in its meta or error block. This reads that id back: the endpoint that was called, the status and typed error_code it answered with, the credits it spent and how long it took. It is what a script that caught a failure can call to find out what happened, and what to quote to support.
The row carries no lookup input. The endpoint is named by its route, never by the path it was called on, so this can never read back the address, number or identifier a call was about. Rows are kept for meta.retention_days and then deleted; an id older than that, or belonging to another account, answers 404 NOT_FOUND.
Parameters
| name | in | type | description |
|---|---|---|---|
| requestIdrequired | path | string | The id from the X-Request-Id header, e.g. req_01m1kgdm4xngzmbmff68g94w0c. |
Example request
curl https://spaw.co/api/v1/account/requests/{requestId} \
-H "Authorization: Bearer sk_live_…"This endpoint has no console on its page. It answers with records from your own account, often by an id only you have, rather than about a value you can type here. The dashboard lists the same rows.
Responses
200The request as it was recorded.
{
"success": true,
"data": {
"request_id": "req_01m1kgdm4xngzmbmff68g94w0c",
"route": "api.v1.email",
"method": "POST",
"status": 402,
"error_code": "INSUFFICIENT_CREDITS",
"credits_used": 0,
"duration_ms": 8,
"via": "api · Production",
"occurred_at": "2026-09-09T09:41:02+00:00"
},
"meta": {
"retention_days": 30,
"request_id": "req_01m22gaxhnj60f71ez5tjcdcvy"
}
}401The key is missing, malformed, or revoked.
{
"success": false,
"error": {
"code": "UNAUTHENTICATED",
"message": "Provide a valid API key as a bearer token.",
"request_id": "req_01m1kgdm4xngzmbmff68g94w0c"
}
}404No such record on this account.
{
"success": false,
"error": {
"code": "NOT_FOUND",
"message": "No record with that id on this account.",
"request_id": "req_01m1kgdm4xngzmbmff68g94w0c"
}
}429Over 5 requests per second for the key. Retry after the limit resets.
{
"success": false,
"error": {
"code": "RATE_LIMITED",
"message": "Too many requests. Retry after the limit resets.",
"request_id": "req_01m1kgdm4xngzmbmff68g94w0c"
}
}Error codes
Failures answer { success: false, error: { code, message, request_id } }. Each code has its own page.