fastmon Docs
Analytics

Detail for one fetch or XHR host

Report an issue

Host (or endpoint) drill-down - the analogue of /error-types/detail (which keys on fingerprint). Keyed by host; method/path are optional refinements (omit for the whole host, give path for one endpoint).

Four ARRAY JOINs over one row per pageview (pageviews_final, or beacons FINAL for a realtime window, which folds the cumulative per-pvid state), sharing one scope filter (host [+ method] [+ path]): a summary, the per-endpoint list (group by method/path), the per-page breakdown (group by the beacon url) and the individual trace calls (fetch_xhr_outliers, with status + the page they ran on). No 037/L1 dependency - url lives on the same row as the Nested columns. Status distribution beyond these trace samples needs the Phase-2 per-endpoint status counters.

Authorization

bearerAuth
headerAuthorizationBearer <token>

API token generated from the fastmon dashboard (Account → API Token) or at organization level (fmo_…, one that outlives its creator). Send as Authorization: Bearer fm_... or paste the full token (including its prefix) into the Authorize dialog.

Path Parameters

org_id*Org Id
Formatuuid

Request Body

application/json
  1. body

Drill-down keyed by host (the fetch_xhr analogue of the error-fingerprint detail). method/path are optional refinements: omit them for a HOST-level view (all endpoints of that host), give path to scope to one endpoint. Answers "where do this host's calls run, and which fail (status + page)?".

time_range*

Time range for the query

filters?

Optional filters

host*Host

Target host ('' = same-origin) - the drill-down key

method?|

Optional HTTP-method refinement

path?|

Optional path refinement (one endpoint)

limit?Limit

Max rows per block (pages/endpoints/outliers)

Range1 <= value <= 100
Default20
order_by?

Sort for the pages block, a {field, direction} object (§11).

outliers?Outliers

Trace sample: 'slowest' (default) or 'failed' (only status >= 400)

Default"slowest"
Value in"slowest""failed"

Response Body

Successful Response

application/json
  1. response

Host (or endpoint) drill-down: overall stats + per-endpoint, per-page and the individual trace calls (slow/failed, with status + page).

meta*

Facts about the result

request*

The request as the server resolved it

host*Host

Echoed host

method?Method

Echoed method refinement (None = all)

path?Path

Echoed path refinement (None = all)

calls*Calls

Total calls in scope

error_count*Error Count

Total errored calls in scope

error_rate*Error Rate

error_count / calls

avg_ms*Avg Ms

sum_ms / calls

max_ms*Max Ms

Slowest single call in scope

impact_ms*Impact Ms

sum_ms - total wall time in scope

endpoints*array<>

Per (method, path) within the host, by impact

pages*array<>

Per page (url) in scope, by impact

outliers*array<>

Individual trace calls (slow/failed) in scope - status + page

POST
/organizations/{org_id}/analytics/fetch-xhr/detail
curl -X POST 'https://api.fastmon.eu/organizations/497f6eca-6276-4993-bfeb-53cbbbba6f08/analytics/fetch-xhr/detail' \  -H 'Content-Type: application/json' \  -d '{  "time_range": {    "from": "2019-08-24T14:15:22Z",    "to": "2019-08-24T14:15:22Z"  },  "host": "string"}'
{  "meta": {    "execution_time_ms": 0,    "total": 0,    "limit": 0,    "offset": 0,    "has_more": true,    "next_cursor": "string",    "sampling": {      "sampling_rate": 0,      "is_sampled": true,      "estimated_metrics": [        "string"      ]    },    "is_identity_mixed": true  },  "request": {    "time_range": {      "from": "2019-08-24T14:15:22Z",      "to": "2019-08-24T14:15:22Z"    },    "comparison_time_range": {      "from": "2019-08-24T14:15:22Z",      "to": "2019-08-24T14:15:22Z"    },    "granularity": "minute",    "identity": "stitch",    "window_seconds": 0,    "filters": {}  },  "host": "string",  "method": "string",  "path": "string",  "calls": 0,  "error_count": 0,  "error_rate": 0,  "avg_ms": 0,  "max_ms": 0,  "impact_ms": 0,  "endpoints": [    {      "method": "string",      "host": "string",      "path": "string",      "calls": 0,      "avg_ms": 0,      "max_ms": 0,      "error_count": 0,      "error_rate": 0,      "impact_ms": 0,      "errors_by_status_code": {        "property1": 0,        "property2": 0      },      "p75_ms": 0,      "p95_ms": 0,      "avg_offset_ms": 0,      "sync_calls": 0,      "aborts": 0,      "blocked": 0,      "avg_bytes": 0,      "max_bytes": 0    }  ],  "pages": [    {      "url": "string",      "calls": 0,      "avg_ms": 0,      "max_ms": 0,      "error_count": 0,      "error_rate": 0,      "impact_ms": 0,      "errors_by_status_code": {        "property1": 0,        "property2": 0      }    }  ],  "outliers": [    {      "method": "string",      "host": "string",      "path": "string",      "duration_ms": 0,      "status_code": 0,      "ttfb_ms": 0,      "page_url": "string",      "server_timing_phases": {        "property1": 0,        "property2": 0      }    }  ]}