You can use the checker to check the status of your services. The checker is a global service that runs on machines and is available in the following supported regions:

  • ams (Amsterdam)
  • hkg (Hong-Kong)
  • iad (Northern Virginia)
  • gru (São Paulo)
  • syd (Sydney)
  • jnb (Johannesburg)

Send a POST request to[region] with the url and method as body props.

You might want to define the prefer-fly-region: [region] header additionally.


curl --request POST \
  --url \
  --header 'Content-Type: application/json' \
  --header 'x-openstatus-key: <YOUR_API_KEY>' \
  --header 'prefer-fly-region: ams' \
  --data '{
  "url": "",
  "method": "GET"


  "status": 200,
  "latency": 18,
  "headers": {
    "Content-Type": "application/json; charset=UTF-8",
    "Date": "Sat, 20 Jan 2024 16:31:18 GMT",
    "Fly-Request-Id": "01HMKVCQ9P2CBDS5GPFBN8EVYP-ams",
    "Server": "Fly/f9c163a6 (2024-01-16)",
    "Via": "2"
  "time": 1705768279337,
  "timing": {
    "dnsStart": 1705768279337,
    "dnsDone": 1705768279343,
    "connectStart": 1705768279343,
    "connectDone": 1705768279343,
    "tlsHandshakeStart": 1705768279343,
    "tlsHandshakeDone": 1705768279350,
    "firstByteStart": 1705768279350,
    "firstByteDone": 1705768279355,
    "transferStart": 1705768279355,
    "transferDone": 1705768279355

All timestamps are in UNIX epoch milliseconds. The response headers are unknown key value string pairs. All other props are fixed.

type CheckerResponse = {
  status: number;
  latency: number;
  headers: Record<string, string>;
  time: number;
  timing: {
    dnsStart: number;
    dnsDone: number;
    connectStart: number;
    connectDone: number;
    tlsHandshakeStart: number;
    tlsHandshakeDone: number;
    firstByteStart: number;
    firstByteDone: number;
    transferStart: number;
    transferDone: number;

You can use it to check from a region the following metrics:

  • DNS Look up time,
  • TLS handshake time,
  • TCP connection time,
  • Time to first byte.