With the fastry API you create monitors, mark deployments and read your rankings – for example from your CI pipeline. The API is available in the Agency plan.
Authentication
Create an API key under
Settings → API and choose its rights there. Send it with every request:
Authorization: Bearer fry_…
Without a valid API key the API responds with 401, if a right is missing with 403. Errors come as JSON with the field error.
Paging
Lists return data and meta
(page, per_page, total, total_pages). With ?page=2&per_page=50 you get the next page;
per_page is 100 by default, at most 200.
Example: report a deployment from CI
curl -X POST https://fastry.com/api/v1/deployments \
-H "Authorization: Bearer $FASTRY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://shop.example.com", "commit": "a1b2c3d"}'
POST
/api/v1/deployments
Right: Report deployments
Mark deployment
Sets a marker on all monitors of the URL(s). A plain domain (without path) matches all monitors of this domain. About 2 minutes later fastry measures every monitor with performance tracking again (default; can be switched off per monitor or with `scan: false`; `scan: true` also measures switched-off monitors). Several deploys in quick succession result in one measurement; it doesn't count towards the scans per day. 404 if no URL matches a monitor.
Fields:
author (string)
branch (string)
commit (string)
commit_url (string)
deployed_at (string)
environment (string)
message (string)
scan (boolean)
url (string)
urls (array)
GET
/api/v1/monitors
Right: Read monitors
List monitors
- page
- Page, from 1 (default 1)
- per_page
- Entries per page (default 100, at most 200)
POST
/api/v1/monitors
Right: Create & change monitors
Create monitor
Fields:
monitor.basic_auth (object | null)
monitor.check_type (string)
monitor.expected_content_type (string)
monitor.expected_status_codes (object)
monitor.field_rules (array)
monitor.follow_redirects (boolean)
monitor.host (string)
monitor.http_method (string)
monitor.interval_seconds (integer)
monitor.json_schema (object | null)
monitor.keyword (string)
monitor.keyword_case_sensitive (boolean)
monitor.keyword_mode (string)
monitor.location (string)
monitor.max_response_ms (integer)
monitor.name (string)
monitor.packet_count (integer)
monitor.packet_loss_threshold (integer)
monitor.paused (boolean)
monitor.port (integer)
monitor.port_expect (string)
monitor.psi_device (string)
monitor.psi_enabled (boolean)
monitor.request_body (string)
monitor.request_content_type (string)
monitor.request_headers (object | null)
monitor.scan_after_deploy (boolean)
monitor.timeout_seconds (integer)
monitor.udp_payload (string)
monitor.udp_payload_template (string)
monitor.url (string)
GET
/api/v1/monitors/{id}
Right: Read monitors
Read a monitor
- id
- ID of the monitor
PATCH
/api/v1/monitors/{id}
Right: Create & change monitors
Change monitor
- id
- ID of the monitor
Fields:
monitor.basic_auth (object | null)
monitor.check_type (string)
monitor.expected_content_type (string)
monitor.expected_status_codes (object)
monitor.field_rules (array)
monitor.follow_redirects (boolean)
monitor.host (string)
monitor.http_method (string)
monitor.interval_seconds (integer)
monitor.json_schema (object | null)
monitor.keyword (string)
monitor.keyword_case_sensitive (boolean)
monitor.keyword_mode (string)
monitor.location (string)
monitor.max_response_ms (integer)
monitor.name (string)
monitor.packet_count (integer)
monitor.packet_loss_threshold (integer)
monitor.paused (boolean)
monitor.port (integer)
monitor.port_expect (string)
monitor.psi_device (string)
monitor.psi_enabled (boolean)
monitor.request_body (string)
monitor.request_content_type (string)
monitor.request_headers (object | null)
monitor.scan_after_deploy (boolean)
monitor.timeout_seconds (integer)
monitor.udp_payload (string)
monitor.udp_payload_template (string)
monitor.url (string)
PUT
/api/v1/monitors/{id}
Right: Create & change monitors
Change monitor (like PATCH)
- id
- ID of the monitor
Fields:
monitor.basic_auth (object | null)
monitor.check_type (string)
monitor.expected_content_type (string)
monitor.expected_status_codes (object)
monitor.field_rules (array)
monitor.follow_redirects (boolean)
monitor.host (string)
monitor.http_method (string)
monitor.interval_seconds (integer)
monitor.json_schema (object | null)
monitor.keyword (string)
monitor.keyword_case_sensitive (boolean)
monitor.keyword_mode (string)
monitor.location (string)
monitor.max_response_ms (integer)
monitor.name (string)
monitor.packet_count (integer)
monitor.packet_loss_threshold (integer)
monitor.paused (boolean)
monitor.port (integer)
monitor.port_expect (string)
monitor.psi_device (string)
monitor.psi_enabled (boolean)
monitor.request_body (string)
monitor.request_content_type (string)
monitor.request_headers (object | null)
monitor.scan_after_deploy (boolean)
monitor.timeout_seconds (integer)
monitor.udp_payload (string)
monitor.udp_payload_template (string)
monitor.url (string)
DELETE
/api/v1/monitors/{id}
Right: Create & change monitors
Delete monitor
- id
- ID of the monitor
POST
/api/v1/monitors/{id}/check
Right: Create & change monitors
Check immediately
- id
- ID of the monitor
GET
/api/v1/rankings
Right: Read rankings
Read current rankings
- page
- Page, from 1 (default 1)
- per_page
- Entries per page (default 100, at most 200)