Download OpenAPI specification:
REST API for the Farsafe uptime monitoring platform. Provides endpoints for probe management, status pages, reporting, billing, and account management.
API keys allow programmatic access to the Farsafe API. Available on Business accounts only.
Use HTTP Basic Auth with apikey_id as the username and secret as the password:
Authorization: Basic <base64(apikey_id:secret)>
Example with curl:
curl 'https://dev.farsafe.net/api/probes?account_id=your_account_id' \
-u 'your_apikey_id:your_secret'
Returns all accounts the authenticated user belongs to. Individual accounts only — not available for business accounts.
| limit | integer Default: 25 Maximum number of items to return |
| offset | integer Default: 0 Number of items to skip for pagination |
| match | string Search/filter string |
{- "result": "success",
- "output": {
- "array": [
- {
- "id": "string",
- "identity": {
- "name": "string",
- "name_first": "string",
- "name_last": "string"
}, - "type": "i",
- "auth": "p",
- "timezone": "string",
- "flags": [
- "m"
], - "permission": [
- "o"
], - "default_id": "string",
- "accepted": true,
- "ts_created": 0,
- "ts_updated": 0
}
], - "total": 2
}
}| account_id required | string The account ID |
{- "result": "success",
- "output": {
- "id": "string",
- "identity": {
- "name": "string",
- "name_first": "string",
- "name_last": "string"
}, - "type": "i",
- "auth": "p",
- "timezone": "string",
- "flags": [
- "m"
], - "permission": [
- "o"
], - "default_id": "string",
- "accepted": true,
- "ts_created": 0,
- "ts_updated": 0
}
}Individual accounts only — creates a new business account under the authenticated user.
required | object |
| type required | string Default: "b" Value: "b" Account type for organization registration:
|
| timezone required | string IANA timezone identifier |
{- "identity": {
- "name": "string",
- "address": {
- "line1": "string",
- "line2": "string",
- "city": "string",
- "region": "string",
- "postal": "string",
- "country": "string"
}
}, - "type": "b",
- "timezone": "string"
}{- "result": "success",
- "output": {
- "id": "string",
- "identity": {
- "name": "string",
- "name_first": "string",
- "name_last": "string"
}, - "type": "i",
- "auth": "p",
- "timezone": "string",
- "flags": [
- "m"
], - "permission": [
- "o"
], - "default_id": "string",
- "accepted": true,
- "ts_created": 0,
- "ts_updated": 0
}
}| id | string |
| account_id required | string The account ID |
object | |
| accepted | boolean Terms of service acceptance |
| timezone | string non-empty |
{- "identity": {
- "name": "string",
- "first": "string"
}, - "accepted": true,
- "timezone": "string"
}{- "result": "success",
- "output": {
- "id": "string",
- "identity": {
- "name": "string",
- "name_first": "string",
- "name_last": "string"
}, - "type": "i",
- "auth": "p",
- "timezone": "string",
- "flags": [
- "m"
], - "permission": [
- "o"
], - "default_id": "string",
- "accepted": true,
- "ts_created": 0,
- "ts_updated": 0
}
}Individual accounts only — returns a new TOTP secret and QR code URI for setting up two-factor authentication.
| account_id required | string The account ID |
{- "result": "success",
- "output": {
- "issuer": "Farsafe LLC",
- "label": "WebApp Dev",
- "secret": "string",
- "uri": "string"
}
}Individual accounts only — enables or disables TOTP-based 2FA. When enabling, auth_code must be a valid code generated from the secret returned by GET /api/account/totp.
| account_id required | string The account ID |
| enable required | boolean Whether to enable or disable 2FA |
| auth_code required | string = 6 characters 6-digit TOTP verification code |
{- "enable": true,
- "auth_code": "string"
}{- "result": "success",
- "output": "string"
}Individual accounts only — not available for business accounts.
| account_id required | string The account ID |
| current_password required | string |
| new_password required | string >= 8 characters |
{- "current_password": "string",
- "new_password": "stringst"
}{- "result": "success",
- "output": "account password updated"
}Account member management. Business accounts only — these endpoints are not available for individual accounts.
| account_id required | string The account ID |
| limit | integer Default: 25 Maximum number of items to return |
| offset | integer Default: 0 Number of items to skip for pagination |
| match | string Search/filter string |
| group_id | string Filter by member group ID |
{- "result": "success",
- "output": {
- "array": [
- {
- "account_id": "string",
- "member_id": "string",
- "identity": {
- "name_first": "string",
- "name_last": "string"
}, - "permission": [
- "o"
], - "enabled": false,
- "accepted": null
}
], - "total": 0
}
}| account_id required | string The account ID |
| identity required | string <email> Email address to invite |
{- "identity": "[email protected]"
}{- "result": "success",
- "output": "account invitation initiated"
}| account_id required | string The account ID |
| member_id required | string |
{- "result": "success",
- "output": {
- "account_id": "string",
- "member_id": "string",
- "identity": {
- "name_first": "string",
- "name_last": "string"
}, - "permission": [
- "o"
], - "enabled": false,
- "accepted": null
}
}| account_id required | string The account ID |
| member_id required | string |
object | |
| permission | Array of strings (Permission) unique Items Enum: "o" "a" "pw" "pr" "sw" "sr" "bw" "br" "rw" "rr" Permission codes:
|
| enabled | boolean Default: false |
| accepted | boolean or null Default: null |
{- "identity": {
- "name_first": "string",
- "name_last": "string"
}, - "permission": [
- "o"
], - "enabled": false,
- "accepted": null
}{- "result": "success",
- "output": {
- "account_id": "string",
- "member_id": "string",
- "identity": {
- "name_first": "string",
- "name_last": "string"
}, - "permission": [
- "o"
], - "enabled": false,
- "accepted": null
}
}| account_id required | string The account ID |
| accepted required | boolean Whether to accept ( |
{- "accepted": true
}{- "result": "success",
- "output": "string"
}Account member group management. Business accounts only — these endpoints are not available for individual accounts.
| account_id required | string The account ID |
| limit | integer Default: 25 Maximum number of items to return |
| offset | integer Default: 0 Number of items to skip for pagination |
| match | string Search/filter string |
{- "result": "success",
- "output": {
- "array": [
- {
- "id": "string",
- "name": "string",
- "members": [
- "string"
], - "member_count": 0,
- "ts_created": 0,
- "ts_updated": 0
}
], - "total": 0
}
}| account_id required | string The account ID |
| group_id required | string |
{- "result": "success",
- "output": {
- "id": "string",
- "name": "string",
- "members": [
- "string"
], - "member_count": 0,
- "ts_created": 0,
- "ts_updated": 0
}
}| account_id required | string The account ID |
| name required | string non-empty |
| members required | Array of strings non-empty unique |
{- "name": "string",
- "members": [
- "string"
]
}{- "result": "success",
- "output": {
- "id": "string",
- "name": "string",
- "members": [
- "string"
], - "member_count": 0,
- "ts_created": 0,
- "ts_updated": 0
}
}| account_id required | string The account ID |
| group_id required | string |
| name required | string non-empty |
| members required | Array of strings non-empty unique |
{- "name": "string",
- "members": [
- "string"
]
}{- "result": "success",
- "output": {
- "id": "string",
- "name": "string",
- "members": [
- "string"
], - "member_count": 0,
- "ts_created": 0,
- "ts_updated": 0
}
}| account_id required | string The account ID |
| limit | integer Default: 25 Maximum number of items to return |
| offset | integer Default: 0 Number of items to skip for pagination |
| match | string Search/filter string |
{- "result": "success",
- "output": {
- "array": [
- {
- "id": "string",
- "name": "string",
- "type": "string",
- "config": {
- "url": "string",
- "method": "GET",
- "timeout": 5000,
- "ip_version": 4,
- "redirect_max": 3,
- "auth_username": "string",
- "auth_password": "string",
- "send_headers": {
- "property1": "string",
- "property2": "string"
}, - "send_body": "string",
- "recv_match": "string",
- "status_min": 200,
- "status_max": 299
}, - "regions": [
- "af"
], - "frequency": 60,
- "fail_level": 2,
- "pass_level": 1,
- "preempt_dns": 14,
- "preempt_crt": 14,
- "alert_level": 4,
- "alert_repeat": 0,
- "alert_acked": true,
- "paused": false,
- "domain": "string",
- "ts_dns_exp": 0,
- "ts_crt_exp": 0,
- "ts_process": 0,
- "ts_created": 0,
- "ts_updated": 0,
- "timespan": {
- "id": "string",
- "status": "f",
- "fail_count": 0,
- "pass_count": 0,
- "ts_minimum": 0,
- "ts_maximum": 0
}, - "last_outage": {
- "id": "string",
- "ts_minimum": 0,
- "ts_maximum": 0
}
}
], - "total": 0
}
}| probe_id required | string |
| account_id required | string The account ID |
{- "result": "success",
- "output": {
- "id": "string",
- "name": "string",
- "type": "string",
- "config": {
- "url": "string",
- "method": "GET",
- "timeout": 5000,
- "ip_version": 4,
- "redirect_max": 3,
- "auth_username": "string",
- "auth_password": "string",
- "send_headers": {
- "property1": "string",
- "property2": "string"
}, - "send_body": "string",
- "recv_match": "string",
- "status_min": 200,
- "status_max": 299
}, - "regions": [
- "af"
], - "frequency": 60,
- "fail_level": 2,
- "pass_level": 1,
- "preempt_dns": 14,
- "preempt_crt": 14,
- "alert_level": 4,
- "alert_repeat": 0,
- "alert_acked": true,
- "paused": false,
- "domain": "string",
- "ts_dns_exp": 0,
- "ts_crt_exp": 0,
- "ts_process": 0,
- "ts_created": 0,
- "ts_updated": 0,
- "timespan": {
- "id": "string",
- "status": "f",
- "fail_count": 0,
- "pass_count": 0,
- "ts_minimum": 0,
- "ts_maximum": 0
}, - "last_outage": {
- "id": "string",
- "ts_minimum": 0,
- "ts_maximum": 0
}
}
}| account_id required | string The account ID |
| name required | string non-empty |
| type required | string Default: "http" Probe monitoring type:
|
HTTP (object) or Mail (object) or Ping (object) or Port (object) Probe configuration — structure depends on the probe type | |
| regions required | Array of strings non-empty Items Enum: "af" "as" "eu" "na" "oc" "sa" One or more monitoring regions to run checks from. |
| frequency required | number [ 60 .. 480 ] |
| fail_level | number [ 1 .. 10 ] Default: 2 |
| pass_level | number [ 1 .. 10 ] Default: 1 |
| alert_level | integer [ 0 .. 4 ] |
| alert_repeat | integer [ 0 .. 60 ] Default: 0 |
| preempt_crt | integer [ 0 .. 60 ] Default: 14 |
| preempt_dns | integer [ 0 .. 60 ] Default: 14 |
| paused | boolean Default: false |
{- "name": "string",
- "type": "http",
- "config": {
- "url": "string",
- "method": "GET",
- "timeout": 5000,
- "ip_version": 4,
- "redirect_max": 3,
- "auth_username": "string",
- "auth_password": "string",
- "send_headers": {
- "property1": "string",
- "property2": "string"
}, - "send_body": "string",
- "recv_match": "string",
- "status_min": 200,
- "status_max": 299
}, - "regions": [
- "af"
], - "frequency": 60,
- "fail_level": 2,
- "pass_level": 1,
- "alert_level": 4,
- "alert_repeat": 0,
- "preempt_crt": 14,
- "preempt_dns": 14,
- "paused": false
}{- "result": "success",
- "output": {
- "id": "string",
- "name": "string",
- "type": "string",
- "config": {
- "url": "string",
- "method": "GET",
- "timeout": 5000,
- "ip_version": 4,
- "redirect_max": 3,
- "auth_username": "string",
- "auth_password": "string",
- "send_headers": {
- "property1": "string",
- "property2": "string"
}, - "send_body": "string",
- "recv_match": "string",
- "status_min": 200,
- "status_max": 299
}, - "regions": [
- "af"
], - "frequency": 60,
- "fail_level": 2,
- "pass_level": 1,
- "preempt_dns": 14,
- "preempt_crt": 14,
- "alert_level": 4,
- "alert_repeat": 0,
- "alert_acked": true,
- "paused": false,
- "domain": "string",
- "ts_dns_exp": 0,
- "ts_crt_exp": 0,
- "ts_process": 0,
- "ts_created": 0,
- "ts_updated": 0,
- "timespan": {
- "id": "string",
- "status": "f",
- "fail_count": 0,
- "pass_count": 0,
- "ts_minimum": 0,
- "ts_maximum": 0
}, - "last_outage": {
- "id": "string",
- "ts_minimum": 0,
- "ts_maximum": 0
}
}
}| probe_id required | string |
| account_id required | string The account ID |
| name required | string non-empty |
| type required | string Default: "http" Probe monitoring type:
|
HTTP (object) or Mail (object) or Ping (object) or Port (object) Probe configuration — structure depends on the probe type | |
| regions required | Array of strings non-empty Items Enum: "af" "as" "eu" "na" "oc" "sa" One or more monitoring regions to run checks from. |
| frequency required | number [ 60 .. 480 ] |
| fail_level | number [ 1 .. 10 ] Default: 2 |
| pass_level | number [ 1 .. 10 ] Default: 1 |
| alert_level | integer [ 0 .. 4 ] |
| alert_repeat | integer [ 0 .. 60 ] Default: 0 |
| preempt_crt | integer [ 0 .. 60 ] Default: 14 |
| preempt_dns | integer [ 0 .. 60 ] Default: 14 |
| paused | boolean Default: false |
{- "name": "string",
- "type": "http",
- "config": {
- "url": "string",
- "method": "GET",
- "timeout": 5000,
- "ip_version": 4,
- "redirect_max": 3,
- "auth_username": "string",
- "auth_password": "string",
- "send_headers": {
- "property1": "string",
- "property2": "string"
}, - "send_body": "string",
- "recv_match": "string",
- "status_min": 200,
- "status_max": 299
}, - "regions": [
- "af"
], - "frequency": 60,
- "fail_level": 2,
- "pass_level": 1,
- "alert_level": 4,
- "alert_repeat": 0,
- "preempt_crt": 14,
- "preempt_dns": 14,
- "paused": false
}{- "result": "success",
- "output": {
- "id": "string",
- "name": "string",
- "type": "string",
- "config": {
- "url": "string",
- "method": "GET",
- "timeout": 5000,
- "ip_version": 4,
- "redirect_max": 3,
- "auth_username": "string",
- "auth_password": "string",
- "send_headers": {
- "property1": "string",
- "property2": "string"
}, - "send_body": "string",
- "recv_match": "string",
- "status_min": 200,
- "status_max": 299
}, - "regions": [
- "af"
], - "frequency": 60,
- "fail_level": 2,
- "pass_level": 1,
- "preempt_dns": 14,
- "preempt_crt": 14,
- "alert_level": 4,
- "alert_repeat": 0,
- "alert_acked": true,
- "paused": false,
- "domain": "string",
- "ts_dns_exp": 0,
- "ts_crt_exp": 0,
- "ts_process": 0,
- "ts_created": 0,
- "ts_updated": 0,
- "timespan": {
- "id": "string",
- "status": "f",
- "fail_count": 0,
- "pass_count": 0,
- "ts_minimum": 0,
- "ts_maximum": 0
}, - "last_outage": {
- "id": "string",
- "ts_minimum": 0,
- "ts_maximum": 0
}
}
}| probe_id required | string |
| account_id required | string The account ID |
| ts_minimum required | number Start timestamp (unix seconds) |
| ts_maximum required | number End timestamp (unix seconds) |
| interval required | string Enum: "q" "h" "d" Aggregation interval for data points:
|
{- "result": "success",
- "output": {
- "data": [
- {
- "p": 0,
- "f": 0,
- "ra": "string",
- "rl": "string",
- "rh": "string",
- "t": 0
}
], - "fail_count": 0,
- "pass_count": 0,
- "runtime_min": 0,
- "runtime_max": 0,
- "runtime_avg": 0
}
}| probe_id required | string |
| account_id required | string The account ID |
| ts_minimum required | number |
| ts_maximum required | number |
{- "result": "success",
- "output": [
- {
- "server_id": "string",
- "server_name": "string",
- "server_region": "string",
- "status": "p",
- "runtime": "string",
- "ts_created": 0
}
]
}| account_id required | string The account ID |
| probe_id | string |
| ts_minimum required | number |
| ts_maximum required | number |
| limit | integer Default: 25 Maximum number of items to return |
| offset | integer Default: 0 Number of items to skip for pagination |
| status | string Enum: "f" "p" Filter by status:
|
{- "result": "success",
- "output": {
- "array": [
- {
- "id": "string",
- "probe_id": "string",
- "probe_name": "string",
- "status": "f",
- "fail_count": 0,
- "pass_count": 0,
- "note_count": 0,
- "ts_minimum": 0,
- "ts_maximum": 0,
- "ack": false,
- "notes": [
- {
- "account_id": "string",
- "identity": {
- "name_first": "string",
- "name_last": "string"
}, - "note": "string",
- "action": "a",
- "ts_created": 0
}
], - "detail": [
- {
- "server_id": "string",
- "server_name": "string",
- "server_region": "string",
- "type": "http",
- "status": "p",
- "data": [
- [
- {
- "step": "url",
- "url": "string",
- "parts": {
- "ssl": null,
- "host": null,
- "path": null,
- "port": null,
- "scheme": null
}, - "runtime": 0,
- "err_code": 0,
- "err_msg": "string"
}
]
], - "ts_created": 0
}
]
}
], - "total": 0
}
}| timespan_id required | string |
| account_id required | string The account ID |
{- "result": "success",
- "output": {
- "id": "string",
- "probe_id": "string",
- "probe_name": "string",
- "status": "f",
- "fail_count": 0,
- "pass_count": 0,
- "note_count": 0,
- "ts_minimum": 0,
- "ts_maximum": 0,
- "ack": false,
- "notes": [
- {
- "account_id": "string",
- "identity": {
- "name_first": "string",
- "name_last": "string"
}, - "note": "string",
- "action": "a",
- "ts_created": 0
}
], - "detail": [
- {
- "server_id": "string",
- "server_name": "string",
- "server_region": "string",
- "type": "http",
- "status": "p",
- "data": [
- [
- {
- "step": "url",
- "url": "string",
- "parts": {
- "ssl": true,
- "host": "string",
- "path": "string",
- "port": 0,
- "scheme": "string"
}, - "runtime": 0,
- "err_code": 0,
- "err_msg": "string"
}
]
], - "ts_created": 0
}
]
}
}| timespan_id required | string |
| account_id required | string The account ID |
| note | string |
| action | string or null Enum: "a" null
|
{- "note": "string",
- "action": "a"
}{- "result": "success",
- "output": {
- "note": "string",
- "action": "a"
}
}| account_id required | string The account ID |
| limit | integer Default: 25 Maximum number of items to return |
| offset | integer Default: 0 Number of items to skip for pagination |
| match | string Search/filter string |
{- "result": "success",
- "output": {
- "array": [
- {
- "id": "string",
- "name": "string",
- "member_count": 0,
- "members": [
- "string"
], - "ts_created": 0,
- "ts_updated": 0
}
], - "total": 0
}
}| group_id required | string |
| account_id required | string The account ID |
{- "result": "success",
- "output": {
- "id": "string",
- "name": "string",
- "member_count": 0,
- "members": [
- "string"
], - "ts_created": 0,
- "ts_updated": 0
}
}| account_id required | string The account ID |
| name required | string non-empty |
| members required | Array of strings non-empty unique |
{- "name": "string",
- "members": [
- "string"
]
}{- "result": "success",
- "output": {
- "id": "string",
- "name": "string",
- "member_count": 0,
- "members": [
- "string"
], - "ts_created": 0,
- "ts_updated": 0
}
}| group_id required | string |
| account_id required | string The account ID |
| name required | string non-empty |
| members required | Array of strings non-empty unique |
{- "name": "string",
- "members": [
- "string"
]
}{- "result": "success",
- "output": {
- "id": "string",
- "name": "string",
- "member_count": 0,
- "members": [
- "string"
], - "ts_created": 0,
- "ts_updated": 0
}
}| account_id required | string The account ID |
| limit | integer Default: 25 Maximum number of items to return |
| offset | integer Default: 0 Number of items to skip for pagination |
| match | string Search/filter string |
{- "result": "success",
- "output": {
- "array": [
- {
- "id": "string",
- "name": "string",
- "time_frame": 1,
- "probe_group_id": "string",
- "description": "string",
- "ts_created": 0,
- "ts_updated": 0
}
], - "total": 0
}
}| report_id required | string |
| account_id required | string The account ID |
{- "result": "success",
- "output": {
- "id": "string",
- "name": "string",
- "time_frame": 1,
- "probe_group_id": "string",
- "description": "string",
- "ts_created": 0,
- "ts_updated": 0
}
}| account_id required | string The account ID |
| name required | string non-empty |
| time_frame required | number Default: 1 Enum: 1 2 7 14 30 Report time frame in days:
|
| probe_group_id | string or null Default: null Probe group to include in the report. Null includes all probe groups. |
| description required | string Default: "" |
{- "name": "string",
- "time_frame": 1,
- "probe_group_id": null,
- "description": ""
}{- "result": "success",
- "output": {
- "id": "string",
- "name": "string",
- "time_frame": 1,
- "probe_group_id": "string",
- "description": "string",
- "ts_created": 0,
- "ts_updated": 0
}
}| report_id required | string |
| account_id required | string The account ID |
| name required | string non-empty |
| time_frame required | number Default: 1 Enum: 1 2 7 14 30 Report time frame in days:
|
| probe_group_id | string or null Default: null Probe group to include in the report. Null includes all probe groups. |
| description required | string Default: "" |
{- "name": "string",
- "time_frame": 1,
- "probe_group_id": null,
- "description": ""
}{- "result": "success",
- "output": {
- "id": "string",
- "name": "string",
- "time_frame": 1,
- "probe_group_id": "string",
- "description": "string",
- "ts_created": 0,
- "ts_updated": 0
}
}| report_id required | string |
| account_id required | string The account ID |
| format required | string Enum: "pdf" "csv" "json" "html" Download format:
|
| account_id required | string The account ID |
| limit | integer Default: 25 Maximum number of items to return |
| offset | integer Default: 0 Number of items to skip for pagination |
| match | string Search/filter string |
{- "result": "success",
- "output": {
- "array": [
- {
- "id": "string",
- "name": "string",
- "format": "pdf",
- "recurrence": "d",
- "day": 1,
- "probe_group_id": "string",
- "account_member_group_id": "string",
- "ts_process": 0,
- "ts_emailed": 0,
- "ts_created": 0,
- "ts_updated": 0,
}
], - "total": 0
}
}| report_schedule_id required | string |
| account_id required | string The account ID |
{- "result": "success",
- "output": {
- "id": "string",
- "name": "string",
- "format": "pdf",
- "recurrence": "d",
- "day": 1,
- "probe_group_id": "string",
- "account_member_group_id": "string",
- "ts_process": 0,
- "ts_emailed": 0,
- "ts_created": 0,
- "ts_updated": 0,
}
}| account_id required | string The account ID |
| name required | string non-empty |
| probe_group_id required | string or null Probe group to include in the report. Null includes all probe groups. |
| format required | string (ReportFormat) Default: "pdf" Enum: "pdf" "csv" "json" "html" Report file format:
|
| recurrence required | string (Recurrence) Default: "w" Enum: "d" "w" "m" Report recurrence frequency:
|
| day | number [ 1 .. 7 ] Day of week the report runs (used when recurrence is
|
| account_member_group_id | string or null Default: null Member group to send the report to. Null sends to all users. |
| additional_email | Array of strings <email> unique [ items <email > ] Default: [] |
{- "name": "string",
- "probe_group_id": "string",
- "format": "pdf",
- "recurrence": "d",
- "day": 1,
- "account_member_group_id": null,
- "additional_email": [ ]
}{- "result": "success",
- "output": {
- "id": "string",
- "name": "string",
- "format": "pdf",
- "recurrence": "d",
- "day": 1,
- "probe_group_id": "string",
- "account_member_group_id": "string",
- "ts_process": 0,
- "ts_emailed": 0,
- "ts_created": 0,
- "ts_updated": 0,
}
}| report_schedule_id required | string |
| account_id required | string The account ID |
| name required | string non-empty |
| probe_group_id required | string or null Probe group to include in the report. Null includes all probe groups. |
| format required | string (ReportFormat) Default: "pdf" Enum: "pdf" "csv" "json" "html" Report file format:
|
| recurrence required | string (Recurrence) Default: "w" Enum: "d" "w" "m" Report recurrence frequency:
|
| day | number [ 1 .. 7 ] Day of week the report runs (used when recurrence is
|
| account_member_group_id | string or null Default: null Member group to send the report to. Null sends to all users. |
| additional_email | Array of strings <email> unique [ items <email > ] Default: [] |
{- "name": "string",
- "probe_group_id": "string",
- "format": "pdf",
- "recurrence": "d",
- "day": 1,
- "account_member_group_id": null,
- "additional_email": [ ]
}{- "result": "success",
- "output": {
- "id": "string",
- "name": "string",
- "format": "pdf",
- "recurrence": "d",
- "day": 1,
- "probe_group_id": "string",
- "account_member_group_id": "string",
- "ts_process": 0,
- "ts_emailed": 0,
- "ts_created": 0,
- "ts_updated": 0,
}
}| account_id required | string The account ID |
| limit | integer Default: 25 Maximum number of items to return |
| offset | integer Default: 0 Number of items to skip for pagination |
| match | string Search/filter string |
{- "result": "success",
- "output": {
- "array": [
- {
- "id": "string",
- "name": "string",
- "visibility": "p",
- "password": "string",
- "time_frame": 1,
- "probe_group_id": "string",
- "config": {
- "brandName": "string",
- "headerBg": "string",
- "accentColor": "string",
- "hidePaused": false
}, - "ts_created": 0,
- "ts_updated": 0
}
], - "total": 0
}
}| status_page_id required | string |
| account_id required | string The account ID |
{- "result": "success",
- "output": {
- "id": "string",
- "name": "string",
- "visibility": "p",
- "password": "string",
- "time_frame": 1,
- "probe_group_id": "string",
- "config": {
- "brandName": "string",
- "headerBg": "string",
- "accentColor": "string",
- "hidePaused": false
}, - "ts_created": 0,
- "ts_updated": 0
}
}| account_id required | string The account ID |
| name required | string non-empty |
| probe_group_id required | string or null Probe group to include in the status page — |
| visibility required | string (Visibility) Default: "p" Value: "p" Status page visibility mode:
|
| password | string or null >= 9 characters Default: null Optional password protection (minimum 9 characters) |
required | object (StatusPageConfig) Customization options for the status page appearance |
{- "name": "string",
- "probe_group_id": "string",
- "visibility": "p",
- "password": null,
- "config": {
- "brandName": "string",
- "headerBg": "string",
- "accentColor": "string",
- "hidePaused": false
}
}{- "result": "success",
- "output": {
- "id": "string",
- "name": "string",
- "visibility": "p",
- "password": "string",
- "time_frame": 1,
- "probe_group_id": "string",
- "config": {
- "brandName": "string",
- "headerBg": "string",
- "accentColor": "string",
- "hidePaused": false
}, - "ts_created": 0,
- "ts_updated": 0
}
}| status_page_id required | string |
| account_id required | string The account ID |
| name required | string non-empty |
| probe_group_id required | string or null Probe group to include in the status page — |
| visibility required | string (Visibility) Default: "p" Value: "p" Status page visibility mode:
|
| password | string or null >= 9 characters Default: null Optional password protection (minimum 9 characters) |
required | object (StatusPageConfig) Customization options for the status page appearance |
{- "name": "string",
- "probe_group_id": "string",
- "visibility": "p",
- "password": null,
- "config": {
- "brandName": "string",
- "headerBg": "string",
- "accentColor": "string",
- "hidePaused": false
}
}{- "result": "success",
- "output": {
- "id": "string",
- "name": "string",
- "visibility": "p",
- "password": "string",
- "time_frame": 1,
- "probe_group_id": "string",
- "config": {
- "brandName": "string",
- "headerBg": "string",
- "accentColor": "string",
- "hidePaused": false
}, - "ts_created": 0,
- "ts_updated": 0
}
}Returns all probes with pass/fail data points and timespan summary
| status_page_id required | string |
| password | string or null |
{- "result": "success",
- "output": {
- "id": "string",
- "account_id": "string",
- "name": "string",
- "time_frame": 0,
- "probe_group_id": "string",
- "probes": [
- {
- "id": "string",
- "name": "string",
- "paused": true,
- "data": [
- {
- "p": 0,
- "f": 0,
- "t": 0
}
], - "timespan": {
- "status": "string",
- "fail_count": 0,
- "pass_count": 0,
- "ts_minimum": 0,
- "ts_maximum": 0
}
}
]
}
}Returns detailed data for a single probe including runtime metrics
| status_page_id required | string |
| probe_id required | string |
| password | string or null |
{- "result": "success",
- "output": {
- "id": "string",
- "account_id": "string",
- "name": "string",
- "time_frame": 0,
- "probe_group_id": "string",
- "probe": {
- "id": "string",
- "name": "string",
- "runtime_avg": 0,
- "runtime_min": 0,
- "runtime_max": 0,
- "data": [
- {
- "p": 0,
- "f": 0,
- "t": 0,
- "rl": "string",
- "ra": "string",
- "rh": "string"
}
], - "timespan": {
- "status": "string",
- "fail_count": 0,
- "pass_count": 0,
- "ts_minimum": 0,
- "ts_maximum": 0
}
}
}
}Notification contact management and verification. Available contact types differ by account type: individual accounts support email contacts only; business accounts support phone, Slack, Discord, Microsoft Teams, Google Chat, Webhook, and Telegram contacts.
| account_id required | string The account ID |
{- "result": "success",
- "output": {
- "array": [
- {
- "id": "string",
- "type": "e",
- "name": "string",
- "identity": "string",
- "roles": [
- "t"
], - "alert_level": 4,
- "verified": false,
- "ts_touched": 0,
- "ts_created": 0,
- "ts_updated": 0
}
], - "total": 0
}
}| account_id required | string The account ID |
| contact_id required | string |
{- "result": "success",
- "output": {
- "id": "string",
- "type": "e",
- "name": "string",
- "identity": "string",
- "roles": [
- "t"
], - "alert_level": 4,
- "verified": false,
- "ts_touched": 0,
- "ts_created": 0,
- "ts_updated": 0
}
}| account_id required | string The account ID |
| name required | string non-empty |
| identity required | string non-empty |
| type required | string (ContactType) Enum: "e" "p" "s" "d" "m" "g" "w" "t"
|
| roles required | Array of strings Items Enum: "t" "v" "n" Alert roles assigned to this contact:
|
{- "name": "string",
- "identity": "string",
- "type": "e",
- "roles": [
- "t"
]
}{- "result": "success",
- "output": {
- "id": "string",
- "type": "e",
- "name": "string",
- "identity": "string",
- "roles": [
- "t"
], - "alert_level": 4,
- "verified": false,
- "ts_touched": 0,
- "ts_created": 0,
- "ts_updated": 0
}
}| account_id required | string The account ID |
| contact_id required | string |
| name required | string non-empty |
| identity required | string non-empty |
| type required | string (ContactType) Enum: "e" "p" "s" "d" "m" "g" "w" "t"
|
| roles required | Array of strings Items Enum: "t" "v" "n" Alert roles assigned to this contact:
|
{- "name": "string",
- "identity": "string",
- "type": "e",
- "roles": [
- "t"
]
}{- "result": "success",
- "output": {
- "id": "string",
- "type": "e",
- "name": "string",
- "identity": "string",
- "roles": [
- "t"
], - "alert_level": 4,
- "verified": false,
- "ts_touched": 0,
- "ts_created": 0,
- "ts_updated": 0
}
}| account_id required | string The account ID |
| contact_id required | string |
| code required | string = 6 characters ^[0-9]{6}$ 6-digit verification code |
{- "code": "string"
}{- "result": "success",
- "output": "string"
}Billing, payment methods, and transaction records. Business accounts only — these endpoints are not available for individual accounts.
| account_id required | string The account ID |
{- "result": "success",
- "output": {
- "account_id": "string",
- "dflt_method_id": "string",
- "identity": {
- "name": "string",
- "address": {
- "line1": "string",
- "city": "string",
- "region": "string",
- "postal": "string",
- "country": "string"
}
}, - "currency": "string",
- "balance": 0,
- "pending": 0,
- "tax_rate": 0,
- "attach": true,
- "itemize": true,
- "anonymize": true,
- "curr_year": 0,
- "curr_month": 0,
- "enabled": true,
- "curr_estimate": 0,
- "last_invoice": {
- "id": "string",
- "invoice_id": "string",
- "type": "i",
- "status": "s",
- "amount": 0,
- "notes": "string",
- "ts_created": 0,
- "ts_updated": 0,
- "pi_id": "string",
- "method": {
- "id": "string",
- "name": "string",
- "type": "c",
- "brand": "string",
- "last4": "string",
- "exp_year": "string",
- "exp_month": "string",
- "ts_created": 0,
- "ts_updated": 0,
- "ts_deleted": 0
}
}, - "last_payment": {
- "id": "string",
- "invoice_id": "string",
- "type": "i",
- "status": "s",
- "amount": 0,
- "notes": "string",
- "ts_created": 0,
- "ts_updated": 0,
- "pi_id": "string",
- "method": {
- "id": "string",
- "name": "string",
- "type": "c",
- "brand": "string",
- "last4": "string",
- "exp_year": "string",
- "exp_month": "string",
- "ts_created": 0,
- "ts_updated": 0,
- "ts_deleted": 0
}
}
}
}| account_id required | string The account ID |
object | |
| itemize | boolean Include itemized list in invoice documents |
| anonymize | boolean Remove PII from invoice line items |
| attach | boolean Attach invoice documents to billing emails |
| dflt_method_id | string or null ID of the default payment method |
{- "identity": {
- "name": "string",
- "address": {
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "postal_code": "string",
- "country": "string"
}
}, - "itemize": true,
- "anonymize": true,
- "attach": true,
- "dflt_method_id": "string"
}{- "result": "success",
- "output": {
- "account_id": "string",
- "dflt_method_id": "string",
- "identity": {
- "name": "string",
- "address": {
- "line1": "string",
- "city": "string",
- "region": "string",
- "postal": "string",
- "country": "string"
}
}, - "currency": "string",
- "balance": 0,
- "pending": 0,
- "tax_rate": 0,
- "attach": true,
- "itemize": true,
- "anonymize": true,
- "curr_year": 0,
- "curr_month": 0,
- "enabled": true,
- "curr_estimate": 0,
- "last_invoice": {
- "id": "string",
- "invoice_id": "string",
- "type": "i",
- "status": "s",
- "amount": 0,
- "notes": "string",
- "ts_created": 0,
- "ts_updated": 0,
- "pi_id": "string",
- "method": {
- "id": "string",
- "name": "string",
- "type": "c",
- "brand": "string",
- "last4": "string",
- "exp_year": "string",
- "exp_month": "string",
- "ts_created": 0,
- "ts_updated": 0,
- "ts_deleted": 0
}
}, - "last_payment": {
- "id": "string",
- "invoice_id": "string",
- "type": "i",
- "status": "s",
- "amount": 0,
- "notes": "string",
- "ts_created": 0,
- "ts_updated": 0,
- "pi_id": "string",
- "method": {
- "id": "string",
- "name": "string",
- "type": "c",
- "brand": "string",
- "last4": "string",
- "exp_year": "string",
- "exp_month": "string",
- "ts_created": 0,
- "ts_updated": 0,
- "ts_deleted": 0
}
}
}
}| account_id required | string The account ID |
| enable required | boolean |
{- "enable": true
}{- "result": "success",
- "output": "billing is enabled"
}| account_id required | string The account ID |
| limit | integer Default: 25 Maximum number of items to return |
| offset | integer Default: 0 Number of items to skip for pagination |
{- "result": "success",
- "output": {
- "array": [
- {
- "id": "string",
- "name": "string",
- "type": "c",
- "brand": "string",
- "last4": "string",
- "exp_year": "string",
- "exp_month": "string",
- "ts_created": 0,
- "ts_updated": 0,
- "ts_deleted": 0
}
], - "total": 0
}
}| account_id required | string The account ID |
| limit | integer Default: 25 Maximum number of items to return |
| offset | integer Default: 0 Number of items to skip for pagination |
{- "result": "success",
- "output": {
- "array": [
- {
- "id": "string",
- "invoice_id": "string",
- "type": "i",
- "status": "s",
- "amount": 0,
- "notes": "string",
- "ts_created": 0,
- "ts_updated": 0,
- "pi_id": "string",
- "method": {
- "id": "string",
- "name": "string",
- "type": "c",
- "brand": "string",
- "last4": "string",
- "exp_year": "string",
- "exp_month": "string",
- "ts_created": 0,
- "ts_updated": 0,
- "ts_deleted": 0
}
}
], - "total": 0
}
}| account_id required | string The account ID |
| record_id required | string |
{- "result": "success",
- "output": {
- "id": "string",
- "invoice_id": "string",
- "type": "i",
- "status": "s",
- "amount": 0,
- "notes": "string",
- "ts_created": 0,
- "ts_updated": 0,
- "pi_id": "string",
- "method": {
- "id": "string",
- "name": "string",
- "type": "c",
- "brand": "string",
- "last4": "string",
- "exp_year": "string",
- "exp_month": "string",
- "ts_created": 0,
- "ts_updated": 0,
- "ts_deleted": 0
}
}
}| account_id required | string The account ID |
| record_id required | string |
{- "result": "success",
- "output": {
- "id": "string",
- "invoice_id": "string",
- "type": "i",
- "status": "s",
- "amount": 0,
- "notes": "string",
- "ts_created": 0,
- "ts_updated": 0,
- "pi_id": "string",
- "method": {
- "id": "string",
- "name": "string",
- "type": "c",
- "brand": "string",
- "last4": "string",
- "exp_year": "string",
- "exp_month": "string",
- "ts_created": 0,
- "ts_updated": 0,
- "ts_deleted": 0
}
}
}{- "result": "success",
- "output": {
- "notice": [ ],
- "status": [
- {
- "name": "Europe",
- "servers": [
- {
- "name": "server-eu-de1",
- "ipv4": "87.106.71.41",
- "location": "Germany",
- "status": "Online"
}, - {
- "name": "server-eu-fr1",
- "ipv4": "51.38.50.181",
- "location": "France",
- "status": "Online"
}
]
}, - {
- "name": "North America",
- "servers": [
- {
- "name": "server-na-us1",
- "ipv4": "159.203.102.99",
- "location": "United States",
- "status": "Online"
}
]
}
]
}
}| sms | boolean |
{- "result": "success",
- "output": [
- {
- "code": "us",
- "name": "United States",
- "sms": "t",
- "sms_price": 0.02
}, - {
- "code": "gb",
- "name": "United Kingdom",
- "sms": "a",
- "sms_price": 0.07
}, - {
- "code": "jp",
- "name": "Japan",
- "sms": null,
- "sms_price": null
}
]
}{- "result": "success",
- "output": {
- "SIGNUP_INDIVIDUAL_ENABLE": true,
- "SIGNUP_ORGANIZATION_ENABLE": true,
- "STRIPE_PUBLIC_KEY": "pk_live_example",
- "TELEGRAM_BOT_NAME": "FARSAFE_bot",
- "TURNSTILE_SITE_KEY": "0x4AAAAAABl_example"
}
}{- "result": "success",
- "output": [
- {
- "type": "i",
- "name": "Individual",
- "cost_probe": 0,
- "cost_member": 0,
- "limits": {
- "probes": 10,
- "reports": 3,
- "accounts": 5,
- "contacts": {
- "e": 2,
- "o": 1
}, - "status_pages": 1,
- "report_schedules": 3
}
}, - {
- "type": "b",
- "name": "Business",
- "cost_probe": 0.32,
- "cost_member": 2.5,
- "limits": {
- "probes": 250,
- "reports": 10,
- "accounts": 0,
- "contacts": {
- "d": 1,
- "g": 1,
- "m": 1,
- "p": 5,
- "s": 1,
- "t": 1,
- "w": 1
}, - "status_pages": 3,
- "report_schedules": 5
}
}
]
}| account_id required | string The account ID |
| ts_minimum required | number Start of time range (unix seconds) |
| ts_maximum required | number End of time range (unix seconds) |
| interval required | string Enum: "q" "h" "d" Bucket interval size:
|
{- "result": "success",
- "output": {
- "data": [
- {
- "p": 0,
- "f": 0,
- "t": 0
}
], - "fail_count": 0,
- "pass_count": 0
}
}| account_id required | string The account ID |
{- "result": "success",
- "output": {
- "probe_count": 0,
- "probe_count_unknown": 0,
- "probe_count_suspended": 0,
- "probe_count_failed": 0,
- "probe_count_passed": 0,
- "last_outage": {
- "probe_id": "string",
- "probe_name": "string",
- "ts_minimum": 0,
- "ts_maximum": 0
}, - "next_dns_exp": {
- "probe_id": "string",
- "probe_name": "string",
- "ts_expires": 0
}, - "next_crt_exp": {
- "probe_id": "string",
- "probe_name": "string",
- "ts_expires": 0
}
}
}| account_id required | string The account ID |
| name required | string |
| permission required | Array of strings (Permission) unique Items Enum: "o" "a" "pw" "pr" "sw" "sr" "bw" "br" "rw" "rr" Permission codes:
|
| enabled required | boolean |
{- "name": "string",
- "permission": [
- "o"
], - "enabled": true
}{- "result": "success",
- "output": {
- "apikey_id": "string",
- "name": "string",
- "permission": [
- "o"
], - "enabled": true,
- "ts_created": 0,
- "ts_updated": 0,
- "id": "string",
- "secret": "string"
}
}| account_id required | string The account ID |
| apikey_id required | string |
| name required | string |
| permission required | Array of strings (Permission) unique Items Enum: "o" "a" "pw" "pr" "sw" "sr" "bw" "br" "rw" "rr" Permission codes:
|
| enabled required | boolean |
{- "name": "string",
- "permission": [
- "o"
], - "enabled": true
}{- "result": "success",
- "output": {
- "apikey_id": "string",
- "name": "string",
- "permission": [
- "o"
], - "enabled": true,
- "ts_created": 0,
- "ts_updated": 0
}
}