Logs
The requests you made in the last 30 days, with bodies and the webhooks they caused. Integrators only.
The api request detail object
One logged request with its bodies and what it caused.
Attributes
- idstring
Unique identifier of the request, prefixed with
req_. Every response carries it in theRequest-Idheader, and error bodies indetails.request_id. - objectstring
Names the type of this object. Always
api_request. - methodstring
HTTP method, uppercase.
- routestring or null
The operation's path template, for grouping (
/v2/quotes/:id). Null when no operation matched, for example an unknown path. - pathstring
The path as called, without the query string.
- status_codeinteger
HTTP status code the API answered with.
- duration_msinteger
Time the API took to answer, in milliseconds.
- credentialstring or null
How the call was authenticated: an API key, a signed-in dashboard session, or an app the user connected (OAuth, such as Claude or ChatGPT). Null when it was refused before authentication.
Possible valuesapi_keysessionoauth - api_keyobject or null
The key used, when one was.
- ipstring or null
IP address the request came from: the first address in
X-Forwarded-For, or the connecting address when that header is absent. Null when neither could be read. - user_agentstring or null
The
User-Agentheader sent. Null when there was none. - idempotency_keystring or null
The
Idempotency-Keyheader sent, if any. - error_codestring or null
The
codeof an error answer; null on success. - request_bytesinteger
Size of the request body in bytes, as received (chunked bodies included). 0 when there was none.
- response_bytesinteger
Size of the response body in bytes. 0 when there was none.
- created_attimestamp
When the request arrived.
- request_bodyvalueOptional
The body you sent, with credentials, secrets and buyer personal data removed. JSON when it parsed, text otherwise. Null when there was none, or it is no longer available.
- response_bodyvalueOptional
The body the API answered, redacted the same way. Null when there was none, or it is no longer available.
- bodies_truncatedboolean
True when a body was larger than 256 KB and only its start was kept (then as text).
- eventsarray of object
Webhook events this request caused, with their deliveries to your endpoints.
{
"id": "req_7Kq2Xb9LmN4pR8sT1vW3yZ5a",
"object": "api_request",
"method": "POST",
"route": "/v2/quotes",
"path": "/v2/quotes",
"status_code": 201,
"duration_ms": 184,
"credential": "api_key",
"api_key": {
"id": "key_bfP0GSqKoZFrD72H5Os0rc7HV9XP6eQJu",
"object": "api_key",
"name": "Production server"
},
"ip": "203.0.113.7",
"user_agent": "node-fetch/1.0",
"idempotency_key": "0f8c2d1e-5a6b-4c3d-9e8f-1a2b3c4d5e6f",
"error_code": null,
"request_bytes": 96,
"response_bytes": 512,
"created_at": "2026-10-21T14:02:11Z",
"request_body": {
"name": "Phone stand",
"file": {
"upload": "upl_3fZq9a[redacted]"
}
},
"response_body": {
"id": "qte_bfP0GSqKoZFrD72H5Os0rc7HV9XP6eQJu",
"object": "quote",
"status": "processing"
},
"bodies_truncated": false,
"events": []
}List your API requests
GET/
- Credentials
- A signed-in dashboard session only; API keys are refused.
- For
- Integrators
- Operation id
list_api_requests
Lists the requests you made to the API in the last 30 days, newest first: method, path, status, time taken and the key used. Filter by time, status class, method, operation, key or request id.
Integrators only, and only with a signed-in dashboard session (credential_not_allowed with an API key).
Query parameters
- created_aftertimestamp
Only requests made at or after this time.
- created_beforetimestamp
Only requests made before this time.
- status_classarray of string
Only these status classes (
2xx,4xx, ...). Repeat for several.Possible values2xx3xx4xx5xx - methodarray of string
Only these HTTP methods. Repeat for several.
Possible valuesGETPOSTPUTPATCHDELETE - routestring
Only this operation, by its path template (
/v2/quotes/:id). - api_keystring
Only requests made with this API key.
- request_idstring
Find one request by its
Request-Id. - limitinteger
How many results per page, from 1 to 100.
- cursorstring
Where to continue from: the
next_cursorof the previous page. Omit for the first page.
Returns200 OK
A page of requests.
Responses
- 200
A page of requests.
- 400
The request is invalid.
details.errorslists each problem (validation_failed), or anexpand[]path is unknown (invalid_expand). - 401
Credentials are missing (
missing_credentials), the API key is unknown or inactive (invalid_api_key), the session expired (invalid_session), or both a key and a session were sent (ambiguous_credentials). - 403
The credentials are valid but not allowed to do this: a scope is missing (
missing_scope), the endpoint is for another kind of account (actor_not_allowed) or another kind of credential (credential_not_allowed), the account may no longer use the API (account_blacklisted), or the account must change something first, in which casedetails.fix_urllinks to the dashboard page that fixes it. - 429
Too many requests (
rate_limited): the limit is 500 per minute per API key (or signed-in user). Wait for the number of seconds in theRetry-Afterheader, then retry;detailshaslimit,window_seconds,reset_atandretry_after_seconds.
Errors use the error object.
curl "https://public-api.dapi.digital/v2/api-requests" \
-H "x-api-key: $DAPI_API_KEY"{
"object": "list",
"data": [
{
"id": "req_7Kq2Xb9LmN4pR8sT1vW3yZ5a",
"object": "api_request",
"method": "POST",
"route": "/v2/quotes",
"path": "/v2/quotes",
"status_code": 201,
"duration_ms": 184,
"credential": "api_key",
"api_key": {
"id": "key_bfP0GSqKoZFrD72H5Os0rc7HV9XP6eQJu",
"object": "api_key",
"name": "Production server"
},
"ip": "203.0.113.7",
"user_agent": "node-fetch/1.0",
"idempotency_key": "0f8c2d1e-5a6b-4c3d-9e8f-1a2b3c4d5e6f",
"error_code": null,
"request_bytes": 96,
"response_bytes": 512,
"created_at": "2026-10-21T14:02:11Z"
}
],
"has_more": false,
"next_cursor": null
}Get an API request
GET/
- Credentials
- A signed-in dashboard session only; API keys are refused.
- For
- Integrators
- Operation id
get_api_request
Returns one logged request with the bodies sent and answered (credentials, secrets and buyer personal data removed), the webhook events it caused and every delivery attempt to your endpoints.
Integrators only, and only with a signed-in dashboard session (credential_not_allowed with an API key).
Path parameters
- idstringRequired
Unique identifier of the request, prefixed with
req_. Every response carries it in theRequest-Idheader, and error bodies indetails.request_id.
Returns200 OK
The request. Returns the api request detail object.
Responses
- 200
The request.
- 400
The request is invalid.
details.errorslists each problem (validation_failed), or anexpand[]path is unknown (invalid_expand). - 401
Credentials are missing (
missing_credentials), the API key is unknown or inactive (invalid_api_key), the session expired (invalid_session), or both a key and a session were sent (ambiguous_credentials). - 403
The credentials are valid but not allowed to do this: a scope is missing (
missing_scope), the endpoint is for another kind of account (actor_not_allowed) or another kind of credential (credential_not_allowed), the account may no longer use the API (account_blacklisted), or the account must change something first, in which casedetails.fix_urllinks to the dashboard page that fixes it. - 404
You have no logged request with this id (
api_request_not_found). Requests are kept for 30 days. - 429
Too many requests (
rate_limited): the limit is 500 per minute per API key (or signed-in user). Wait for the number of seconds in theRetry-Afterheader, then retry;detailshaslimit,window_seconds,reset_atandretry_after_seconds.
Errors use the error object.
curl "https://public-api.dapi.digital/v2/api-requests/req_7Kq2Xb9LmN4pR8sT1vW3yZ5a" \
-H "x-api-key: $DAPI_API_KEY"{
"id": "req_7Kq2Xb9LmN4pR8sT1vW3yZ5a",
"object": "api_request",
"method": "POST",
"route": "/v2/quotes",
"path": "/v2/quotes",
"status_code": 201,
"duration_ms": 184,
"credential": "api_key",
"api_key": {
"id": "key_bfP0GSqKoZFrD72H5Os0rc7HV9XP6eQJu",
"object": "api_key",
"name": "Production server"
},
"ip": "203.0.113.7",
"user_agent": "node-fetch/1.0",
"idempotency_key": "0f8c2d1e-5a6b-4c3d-9e8f-1a2b3c4d5e6f",
"error_code": null,
"request_bytes": 96,
"response_bytes": 512,
"created_at": "2026-10-21T14:02:11Z",
"request_body": {
"name": "Phone stand",
"file": {
"upload": "upl_3fZq9a[redacted]"
}
},
"response_body": {
"id": "qte_bfP0GSqKoZFrD72H5Os0rc7HV9XP6eQJu",
"object": "quote",
"status": "processing"
},
"bodies_truncated": false,
"events": []
}