---
title: "Multi Region Check"
method: POST
path: "/public/tools/multi-region-check"
tags: ["Tools (public)"]
---

# Multi Region Check

`POST /public/tools/multi-region-check`

## Request

- Base URL: `https://api.fettle.sh` (the document declares no server; this is the origin it was published from)
- URL: `https://api.fettle.sh/public/tools/multi-region-check`
- Auth: none declared

Check a URL from every monitoring region.

Returns one entry per region with the HTTP status and latency. A region
that does not answer in time is reported as unknown.

## Request body

- MultiRegionCheckRequest: Body of ``POST /public/tools/multi-region-check``.
  - `url` string, required

## Response `200`

Successful Response

- MultiRegionCheckResponse
  - `url` string, required
  - `checked_at` string, date-time, required
  - `regions` RegionCheckResult[], required
    - `code` string, required
    - `name` string, required
    - `status` 'up' | 'down' | 'error' | 'unknown', required: Advisory outcome of a У2 pre-check, returned to the create-monitor form. ``UP``/``DOWN``/``ERROR`` map from the worker's ``CheckResultStatus``; ``UNKNOWN`` is the fail-open value used whenever the core cannot get a definite reply (no worker in the region, request timeout, malformed reply, or the pre-check kill switch). Only ``DOWN``/``ERROR`` should gate the form with a modal; ``UP``/``UNKNOWN`` proceed to create directly.
    - `http_status` integer, nullable
    - `response_time_ms` integer, nullable
    - `failure_kind` 'TIMEOUT' | 'DNS_FAILURE' | 'CONNECTION_REFUSED' | 'TLS_INVALID' | 'HTTP_4XX' | 'HTTP_5XX' | 'HTTP_UNEXPECTED_STATUS' | 'KEYWORD_MISSING' | 'TOO_MANY_REDIRECTS' | 'TARGET_BLOCKED' | 'PORT_STATE_MISMATCH' | 'INVALID_TARGET' | 'UNKNOWN': Structured classification of why a probe reported a non-UP result. Set by the worker on DOWN/ERROR outcomes so the core can store a typed incident cause (icons, grouping, filtering) while ``CheckResult.error`` / the incident's ``cause_detail`` carry the raw human-readable reason. Absent on UP results.
    - `error` string, nullable

## Other responses

- `422`: The target is malformed or cannot be checked (non-global address, disallowed port, unresolvable host), or the request body itself failed validation.
- `503`: This tool is temporarily disabled by the operator kill switch.

---

[API](https://skmtc.dev/fettle/apis/fettle-sh.md) · [All operations](https://skmtc.dev/fettle/apis/fettle-sh/llms.txt) · [OpenAPI document](https://skmtc.dev/fettle/apis/fettle-sh/revisions/f32c8a18606f?raw)
