Break errors down by signature
Get breakdown of error signatures from collected beacons.
Reads the structured errors Nested column. Each beacon stores up to 5
(type, count, sample_message, frame_hosts, frame_lines, frame_cols,
fingerprint, is_first_party) entries; we ARRAY JOIN and aggregate by
fingerprint, the canonical server-computed signature key.
Display projections (error_type, sample_message, frames) are aggregated
via any() since within a fingerprint group they're stable by
construction (the fingerprint hashes those exact inputs); using any()
rather than argMax/groupArray keeps the query cheap.
bearerAuthAuthorizationBearer <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.
org_id*Org Iduuidapplication/json- body
Request for error types breakdown.
time_range*Time range for the query
filters?Optional filters
error_type?array<string>|Restrict to specific error types (e.g. ['ResourceLoadError']).
exclude_error_type?array<string>|Drop these error types from the breakdown (e.g. ['ResourceLoadError'] to stop third-party resource-load noise from counting). Negative of error_type.
exclude_hosts?array<string>|Exclude error signatures whose stack frames touch any of these hosts (e.g. ['bat.bing.com'] to drop a noisy 3rd-party).
ownership?|Restrict to first_party or third_party error signatures. Matches per-signature errors.is_first_party (filter-then-rank: the Top-N reflects the chosen group). Unset = both, mixed is rejected. Signature-accurate, unlike the page-level filters.error_origin, which says whether the PAGEVIEW carried an own error.
group_variants?Group VariantsMerge the fingerprints of one fault into one row: the engines report the same throw site a few columns apart, and a second caller is a second stack. A row then counts all of them and lists them as variants. Off by default, because a client that compares rows across periods has to match them by their variants rather than by fingerprint.
falselimit?LimitMax error types to return
1 <= value <= 5010compare_to?|Also count each returned signature over an earlier window, as previous_period on its row. The window is the one /analytics/query derives for the same mode. Only previous_period is accepted, any other mode is a 422.
Successful Response
application/json- response
Response for error types breakdown.
meta*Facts about the result
request*The request as the server resolved it
data*array<>Error types with counts
error_count*Error CountTotal JavaScript error count. Failed resource loads are a separate signal, see /analytics/failed-resources.
blocked_count?Blocked CountAd-blocked tracker requests in the same filter scope - surface as 'N excluded as ad-blocked', not as a failure. A subset of the blocked bucket on /analytics/failed-resources.
0own_subdomain_hosts?array<string>Hosts on the site's own registrable domain, other than the page host, that served scripts or slow resources in this scope. Filled only when a ScriptError row is present: a masked error cannot be attributed, but the fix (crossorigin="anonymous" plus CORS on the host) needs a host name, and these are the ones the site owner controls. A hint, not a verdict: the beacon carries no exhaustive script-host list.
curl -X POST 'https://api.fastmon.eu/organizations/497f6eca-6276-4993-bfeb-53cbbbba6f08/analytics/error-types' \ -H 'Content-Type: application/json' \ -d '{ "time_range": { "from": "2019-08-24T14:15:22Z", "to": "2019-08-24T14:15:22Z" }}'{ "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": {} }, "data": [ { "fingerprint": "string", "error_type": "string", "count": 0, "share": 0, "sample_message": "string", "message_kind": "", "message_value": "", "ownership": "first_party", "frames": [ { "host": "string", "path": "", "line": 0, "column": 0 } ], "last_seen_at": "2019-08-24T14:15:22Z", "variants": [ { "fingerprint": "string", "count": 0, "frames": [ { "host": "string", "path": "", "line": 0, "column": 0 } ] } ], "previous_period": { "count": 0 } } ], "error_count": 0, "blocked_count": 0, "own_subdomain_hosts": [ "string" ]}