hosting

GET /v1/sites/{siteId}/apm

Ranked transactions, ranked hotspots and the hourly timeline for a site.

모든 hosting 엔드포인트

인증

Bearer 토큰으로 API 키를 전송하세요. 키는 반드시 sites.view 권한을 가지고 있어야 하며, 권한이 없는 키는 404가 아닌 403으로 거부됩니다.

이 엔드포인트는 조직 ID를 받지 않습니다. 사용자의 키가 이미 속한 조직을 식별하며, 응답은 해당 조직으로 한정됩니다.

무료 체험하기

대괄호 안에 있는 모든 내용을 사용자 지정 값으로 바꾸고, 키 플레이스홀더는 대시보드의 키로 바꾸세요.

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

로그인하셨나요? 대시보드의 API 콘솔이 실제 조직 ID와 본인의 키를 자동으로 채우고 라이브 API를 대상으로 요청을 실행하므로 실제 응답을 확인할 수 있습니다. API 콘솔에서 이 엔드포인트를 여세요

상세 정보

Stored, aggregated PHP profiling: which **pages** cost the most server time, which **plugin, PHP function or SQL query** is eating it, and how the site's PHP execution time has moved hour by hour. ⭐ Read from rows, not from the machine. The sibling `…/performance/slow-requests` surface opens an SSH session to the worker box on every call; this one is a database query, which is why it can be rendered on a customer-facing tab without a §2.16 problem. ⛔ **An empty payload is a `200` WITH A REASON.** `enrolment_state` says which of four things happened — `unknown` (not collected yet), `enrolled` (collected, and the site was genuinely quiet), `refused` (the server would not start tracing), `unsupported` (hosting that cannot trace). A surface that cannot tell a quiet site from a feature that is switched off was the live state of the fleet on 2026-09-03: one of two boxes had zero sites enrolled and every screen said "nothing traced yet". Requires `sites.view` and the `request_profiling` entitlement, which is included on every product line. No visitor IP addresses appear in the response — the field does not exist at any layer beneath this one.

매개변수

이름유형필수설명
siteId (path)UuidSite ID (UUIDv7).
hours (query)integer아니요How far back to aggregate (1–2160, default 24). Clamped rather than refused: a junk value answers the question that was asked with the default period.
limit (query)integer아니요How many ranked rows per table (1–50, default 10).

응답

이름유형필수설명
tracingbooleanWhether the server is currently profiling this site.
enrolment_statestring<unknown, enrolled, refused, unsupported>Why there may be no data. `unknown` — not collected yet. `enrolled` — collected, and the site was genuinely quiet. `refused` — the server would not start profiling. `unsupported…
enrolment_detailstringThe server's own sentence when it refused; empty otherwise.
last_collected_atstringWhen we last harvested this site, or null if never.
window_hoursintegerThe period these aggregates cover.
p95_duration_msintegerThe 95th percentile of PHP time across EVERY request traced for this site in the window, in milliseconds. ⚠️ This is the customer's OWN traffic. It is a different quantity from…
p95_sample_countintegerHow many requests `p95_duration_ms` was computed over. Shipped WITH it, always: a p95 over 30 requests and one over 30,000 are indistinguishable on screen otherwise (§2.44).
transactionsSiteApmTransaction[]Pages ranked by total PHP time, heaviest first.
hotspotsSiteApmHotspot[]Plugins, functions and queries ranked by total PHP time.
timelineSiteApmTimelinePoint[]PHP execution time by hour, oldest first.

이 엔드포인트가 반환할 수 있는 오류

401 · 403 · 404 · 422 · 429