hosting

GET /v1/sites/{siteId}/apm/traces/{traceId}

Show where one kept request's milliseconds went.

All hosting endpoints

All developer docs →

Authentication

Send an API key as a bearer token. The key must carry the sites.view permission; a key without it is refused with 403, not 404.

This endpoint takes no organisation id. Your key already identifies the organisation it belongs to, and the response is scoped to it.

Try it

Replace anything in angle brackets with your own values, and the key placeholder with a key from your dashboard.

curl -X GET https://api.zinndigital.com/v1/sites/{siteId}/apm/traces/{traceId} \
  -H "Authorization: Bearer zdk_live_…"

Signed in? The API console in your dashboard fills in your real organisation id and your own key, and runs the request against the live API so you can see the actual response. Open this endpoint in the API console

Details

The function-level breakdown for one stored request: which WordPress plugin, PHP extension, PHP function or SQL query consumed the time, heaviest first, with the call site relative to the site's own document root. ⭐ SQL literals arrive already redacted by the vendor (WHERE autoload IN ('xxx')) and are neither restored nor re-redacted here. That redaction is why a slow query can be shown to a customer at all. ⛔ A trace past retention answers 404 rather than 410: the customer's next action is identical, and a distinct code would be an oracle for which trace ids ever existed. Requires sites.view and the request_profiling entitlement. A trace belonging to another site answers 404, never another tenant's data.

Parameters

NameTypeRequiredWhat it is
siteId (path)UuidYesSite ID (UUIDv7).
traceId (path)stringYesOne of our own trace ids, from id on the list row. ⭐ A UUID, unlike the sibling live surface's vendor task id: this is a primary key we minted, so a non-UUID really is…

Response

NameTypeRequiredWhat it is
idstringYes—
transactionstringYes—
methodstringYes—
pathstringYesThe path as traced, before normalisation — so a developer can reproduce the exact request, which the grouped transaction label deliberately cannot express.
duration_msintegerYes—
throttled_msintegerYes—
io_throttled_msintegerYes—
hit_limitsbooleanYes—
has_errorbooleanYes—
error_textstringYes—
cache_miss_reasonsstring[]YesWhy this request bypassed the page cache; empty when it was cacheable.
started_atstringYes—
costsSiteApmTraceCost[]Yes—

Errors this endpoint can return

401 · 403 · 404 · 422 · 429