Logs

View as Markdown

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 the Request-Id header, and error bodies in details.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.

    Range at least 0.
  • 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-Agent header sent. Null when there was none.

  • idempotency_keystring or null

    The Idempotency-Key header sent, if any.

  • error_codestring or null

    The code of 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.

    Range at least 0.
  • response_bytesinteger

    Size of the response body in bytes. 0 when there was none.

    Range at least 0.
  • 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.

The api request detail object
{
  ,
  ,
  ,
  ,
  ,
  ,
  ,
  ,
  ,
  ,
  ,
  ,
  ,
  ,
  ,
  ,
  ,
  ,
  ,
  
}

List your API requests

GET/v2/api-requests

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.

    Range 1 to 100. Defaults to 20.
  • cursorstring

    Where to continue from: the next_cursor of 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.errors lists each problem (validation_failed), or an expand[] 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 case details.fix_url links 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 the Retry-After header, then retry; details has limit, window_seconds, reset_at and retry_after_seconds.

Errors use the error object.

GET/v2/api-requests
curl "https://public-api.dapi.digital/v2/api-requests" \
  -H "x-api-key: $DAPI_API_KEY"
Response
{
  "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/v2/api-requests/{id}

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 the Request-Id header, and error bodies in details.request_id.

Returns200 OK

The request. Returns the api request detail object.

Responses

  • 200

    The request.

  • 400

    The request is invalid. details.errors lists each problem (validation_failed), or an expand[] 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 case details.fix_url links 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 the Retry-After header, then retry; details has limit, window_seconds, reset_at and retry_after_seconds.

Errors use the error object.

GET/v2/api-requests/{id}
curl "https://public-api.dapi.digital/v2/api-requests/req_7Kq2Xb9LmN4pR8sT1vW3yZ5a" \
  -H "x-api-key: $DAPI_API_KEY"
Response
{
  "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": []
}