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

Create Synthetic Page

Create a synthetic page (URL normalized + must be under the site domain).

Registering the CS site always kicks off exactly one immediate analysis — you can't create a CS site without it running once — so even a paused page (schedule=false) produces this one creation run; its analysis_uuid is returned so the client polls analyses/{uuid}/status instead of firing a redundant run.

mode=monitor (default) is a sticky, quota-counted page honoring the schedule flags. mode=oneshot is an unbudgeted "measure now": schedules forced off, nocache forced true, and a missing creation-run id is fatal (502) rather than tolerated — the run is the deliverable. A one-shot stays viewable via the normal detail/run endpoints and can be promoted later via PATCH (source→manual + schedule).

One-shot is intentionally unbounded (no quota) — note the cost: CS has no reliable teardown, so each one-shot on a new URL leaves a CS site we can't reap. Add a cap here once CS supports teardown.

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

site_id*Site Id
Formatuuid

Request Body

application/json

Create a synthetic page. The URL is normalized to the beacon form and must be under the site's own domain. Registering always runs one immediate analysis.

mode picks the intent:

  • monitor (default): a sticky, quota-counted page. schedule (recurring 24h Lighthouse, default on) and ttfb_schedule (recurring 5-min CS, default on) are honored — set either false to register paused / opt out; the flags govern only the recurring runs.
  • oneshot: an unbudgeted "measure now". The schedule flags are ignored (both forced off), nocache is forced true (fresh origin fetch), and the single creation run is mandatory — a missing run id is a hard 502, not tolerated.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

POST
/v1/sites/{site_id}/synthetic/pages
curl -X POST "https://example.com/v1/sites/497f6eca-6276-4993-bfeb-53cbbbba6f08/synthetic/pages" \  -H "Content-Type: application/json" \  -d '{    "url": "string"  }'
{  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",  "site_id": "72771e6a-6f5e-4de4-a5b9-1266c4197811",  "url": "string",  "source": "manual",  "auto_rank": 0,  "cs_site_uuid": "d1582410-9fb8-4c55-ac9c-23a03fafe6e4",  "schedule": true,  "ttfb_schedule": true,  "nocache": true,  "created_at": "2019-08-24T14:15:22Z",  "analysis_uuid": "string",  "analysis_status": 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": {}  }}
{  "error": {    "code": "string",    "message": "string",    "request_id": "string",    "doc_url": "string",    "details": {}  }}
{  "error": {    "code": "string",    "message": "string",    "request_id": "string",    "doc_url": "string",    "details": {}  }}
{  "error": {    "code": "string",    "message": "string",    "request_id": "string",    "doc_url": "string",    "details": {}  }}
{  "error": {    "code": "string",    "message": "string",    "request_id": "string",    "doc_url": "string",    "details": {}  }}