fastmon Docs
Analytics

Resources that failed to load

Report an issue

Resources that failed to load, grouped by host and path.

The host of the failing resource is always there. Its path is not: stack frames are opt-in per site and off by default, and without them a path is kept only when the resource is served from the page host itself. A resource on the shop's own CDN subdomain therefore counts as first party but still arrives host-only.

count is the number of failed loads, pageviews the pageviews they happened on.

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

Request for the failed-resources breakdown.

time_range*

Time range for the query

filters?

Optional filters

ownership?array<>|

Restrict to these ownerships. Default: both. mixed is rejected.

host?array<string>|

Restrict to these resource hosts (exact match on the host that should have served the file). Narrows the totals too, unlike ownership.

exclude_hosts?array<string>|

Drop these resource hosts (e.g. a tracker every ad blocker kills). Host is the dimension that decides this list, so without it the top rows are whatever the blockers hit most and the site's own broken files sit below them. Narrows the totals too, so the numbers agree with the rows.

limit?Limit

Max rows to return

Range1 <= value <= 100
Default20

Response Body

Successful Response

application/json
  1. response

Response for the failed-resources breakdown.

Deliberately NOT part of the error rate: a failed resource load is dominated by the visitor's ad blocker, which is not a defect of the site. The first_party half is the one a site operator can act on.

meta*

Facts about the result

request*

The request as the server resolved it

data*array<>

Failing resources, most frequent first. A top-N, so the rows do not sum to the totals below. Narrowed by the request's ownership, if it set one.

failed_count*Failed Count

Every failed load in the time range and filter scope, both halves included. Deliberately NOT narrowed by the request's ownership: the point of the number is that the reader sees how the two compare.

failed_by_ownership?

Failed loads per ownership (first_party / third_party), over the same unnarrowed scope as failed_count.

POST
/organizations/{org_id}/analytics/failed-resources
curl -X POST 'https://api.fastmon.eu/organizations/497f6eca-6276-4993-bfeb-53cbbbba6f08/analytics/failed-resources' \  -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": [    {      "ownership": "first_party",      "host": "string",      "path": "",      "fingerprint": "",      "count": 0,      "pageviews": 0    }  ],  "failed_count": 0,  "failed_by_ownership": {    "property1": 0,    "property2": 0  }}