These docs are a work in progress: some pages may still be incomplete or contain inaccuracies.
fastmon Docs
Synthetic

Get Synthetic Timeseries

Chart series for the device: sparse lab points (one per CS Lighthouse run, score + CWV from that run's scores[]) and raw ttfb points (one per dedicated 5-min TTFB run, full DNS→transfer phases) overlaid on the regular field p75 line (RUM). lab.ttfb is Lighthouse's server-only TTFB; the ttfb series is the full phase breakdown — different measurements, kept in separate series. The ttfb series is device-independent (CS measures TTFB once per run).

series selects which to compute — only the requested ones are fetched; the rest return as empty lists.

Authorization

bearerAuth
AuthorizationBearer <token>

API token generated from the fastmon dashboard (Account → API Token). Send as Authorization: Bearer fm_... or paste the full token (including the fm_ prefix) into the Authorize dialog.

In: header

Path Parameters

page_id*Page Id
Formatuuid
site_id*Site Id
Formatuuid

Query Parameters

device?Device
Match^(desktop|mobile)$
Default"desktop"
window_days?Window Days
Range1 <= value <= 90
Default30
interval?Interval
Match^(hour|day)$
Default"day"
series?Series

Comma-separated subset of lab,ttfb,field to compute. Unrequested series come back empty; use it to skip the expensive TTFB pull when unneeded. An empty/blank value means all series.

Default"lab,ttfb,field"

Response Body

application/json

application/json

application/json

application/json

application/json

GET
/v1/sites/{site_id}/synthetic/pages/{page_id}/timeseries
curl -X GET "https://example.com/v1/sites/497f6eca-6276-4993-bfeb-53cbbbba6f08/synthetic/pages/497f6eca-6276-4993-bfeb-53cbbbba6f08/timeseries"
{  "page_id": "ef107761-0142-48fe-9dcd-5140d1ae58db",  "url": "string",  "device": "string",  "window_days": 0,  "interval": "string",  "lab": [    {      "ts": "string",      "score": 0,      "lcp": 0,      "fcp": 0,      "cls": 0,      "inp": 0,      "ttfb": 0    }  ],  "ttfb": [    {      "ts": "string",      "range_dns": 0,      "range_connection": 0,      "range_ssl": 0,      "range_server": 0,      "range_transfer": 0,      "total": 0    }  ],  "field": [    {      "ts": "string",      "samples": 0,      "lcp": 0,      "fcp": 0,      "cls": 0,      "inp": 0,      "ttfb": 0    }  ]}
{  "error": {    "code": "string",    "message": "string",    "request_id": "string",    "doc_url": "string",    "details": {}  }}
{  "error": {    "code": "string",    "message": "string",    "request_id": "string",    "doc_url": "string",    "details": {}  }}
{  "detail": [    {      "loc": [        "string"      ],      "msg": "string",      "type": "string",      "input": null,      "ctx": {}    }  ]}
{  "error": {    "code": "string",    "message": "string",    "request_id": "string",    "doc_url": "string",    "details": {}  }}