Аутентификация
Для того, чтобы воспользоваться API необходимо иметь действующий аккаунт в системе и токен авторизации. Токен авторизации можно сгенерировать в личном профиле в пункте «API».
Использование сгенерированного токена
Сгенерированный токен должен передаваться в HTTP-заголовке Authorization во всех API-запросах.
Authorization: Bearer wGGtaQVncybYmhbiAab9poccBWoU4n0c1H0ee2zVyICWEM7B9s0DFrzU
Пример запроса на получение информации о сенсорах при помощи утилиты curl (подставьте свой токен):
curl --location 'https://geopinger.net/api/v1/sensors' \
--header 'Authorization: Bearer wGGtaQVncybYmhbiAab9poccBWoU4n0c1H0ee2zVyICWEM7B9s0DFrzU'
Список сенсоров
Метод для получения списка сенсоров, с которых DownDetector осуществляет проверки доступности, со всеми дополнительными характеристиками
URL
/api/v1/sensors
Метод
GET
Описание возвращаемых данных
Метод возвращает JSON-массив, состоящий из объектов со следующими полями:
Пример
Запрос:
curl --location 'https://geopinger.net/api/v1/' \
--header 'Authorization: Bearer wGGtaQVncybYmhbiAab9poccBWoU4n0c1H0ee2zVyICWEM7B9s0DFrzU'
Ответ:
[ { "ip": "146.185.199.33", "id": "nsk.rtcloud1.downdetector.info", "city": "Новосибирск", "provider": "", "ccode": "ru", "active": true }, { "ip": "95.46.196.233", "id": "sochi.sochipark.downdetector.info", "city": "Сочи (Сириус)", "provider": "Мегафон", "ccode": "ru", "active": true }, { "ip": "5.101.218.215", "id": "msk.rt3.downdetector.info", "city": "Москва", "provider": "Ростелеком", "ccode": "ru", "active": true } ]
События
Метод для получения идинтификаторов параметров запроса UX-проверки
URL
/api/v1/ux-meta
Метод
GET
Описание возвращаемых данных
Метод возвращает JSON-объект со следующими полями:
Объект data имеети следующие поля:
Пример
Запрос:
curl --location 'https://detector404.ru/api/v1/ux-meta' \
--header 'Authorization: Bearer wGGtaQVncybYmhbiAab9poccBWoU4n0c1H0ee2zVyICWEM7B9s0DFrzU'
Ответ:
{ "success": true, "data": { "api_version": "ux-v1", "locations": [ { "id": "vlad", "name": "Владивосток" }, { "id": "nsk", "name": "Новосибирск" }, { "id": "msk", "name": "Москва" }, ], "browsers": [{ "id": "chrome", "name": "Chrome", "enabled": true, "default": true }], "profiles": [ { "id": "gpt", "name": "OpenAI", "enabled": true, "default": true }, { "id": "yandex", "name": "YandexGPT", "enabled": true, "default": false } ], "defaults": { "location": "msk", "browser": "chrome", "profile": "gpt", "mode": "waf-penetration", "poll_interval_ms": 2500 } } }
Ответ в случае ошибки:
{ "success": false, "error": "Service unavailable" }
Запуск проверки
Метод для инициации простой проверки
URL
/api/v1/start/{method}
Подставляемое значение {method}: метод проверки. Возможные варианты: http, ping, tcp, dns
Метод
POST
Тело запроса
В JSON-формате, объект со следующими полями:
sensors и places оба указывать необязательно, но хотя бы один из них присутствовать должен. places запускает проверку на одном случайно выбранном сенсоре в каждом городе (если их там более одного), sensors позволяет указать требуемый список сенсоров по своим критериям.
В случае метода tcp обязательным является наличие еще одного поля:
В случае метода dns обязательным является наличие еще одного поля:
Пример:
{ "url": "https://ya.ru", "places": ["Москва","Владивосток"], "port": [110,8080] }
Описание возвращаемых данных
Метод возвращает JSON-объект со следующими полями:
Пример
Запрос:
Ответ:
{ "success": true, "task_id": "jcwir6r5nhjwfcnbihnsbhyw" }
Запуск UX-проверки
Метод для инициации UX-проверки, описывается отдельно от прочих типов проверок (/start/{method}) в силу большого различия в требуемых параметрах.
URL
/api/v1/start/ux
Метод
POST
Тело запроса
В JSON-формате, объект со следующими полями:
Все идентификаторы следует брать из возвращаемых методом /ux-meta.
Пример:
{ "url": "https://ya.ru", "location": "msk", "browser": "chrome", "profile": "gpt", "force": false }
Описание возвращаемых данных
Метод возвращает JSON-объект со следующими полями:
Пример
Запрос:
Ответ:
{ "success": true, "task_id": "uem-91964a7d2c4c49f69550a124" }
Результаты проверки
Метод для получения результатов проверки
URL
/api/v1/results/{task_id}
Подставляемое значение {task_id}: идентификатор проверки, ранее полученный при запуске методами /api/v1/start/{method} или /api/v1/start/ux.
Метод
GET
Описание возвращаемых данных
Метод возвращает JSON-объект со следующими полями:
Объект task содержит в себе поля с информацией о задаче, в частности:
В случае методов http, ping, tcp, dns :
В случае UX-проверки:
Пример
Запрос:
curl --location 'https://geopinger.net/api/v1/results/gb2du2gnt3jweibnrjjgxgxk' \
--header 'Authorization: Bearer wGGtaQVncybYmhbiAab9poccBWoU4n0c1H0ee2zVyICWEM7B9s0DFrzU'
Ответ:
{ "success": true, "task": { "task_id": "gb2du2gnt3jweibnrjjgxgxk", "url": "https://ya.ru", "status": "done", "sensors": [ { "id": "msk.curator.downdetector.info", "city": "Москва", "provider": "", "ccode": "ru" }, { "id": "krdr.kubtel.downdetector.info", "city": "Краснодар", "provider": "Кубтел", "ccode": "ru" } ], "method": "ping", "started_at": "2026-05-22T12:08:43.185863+00:00", "started_at_ms": 1779451723185, "elapsed_ms": 2641, "results": [ { "ip": "5.255.255.242", "rtt_min": 13.169, "rtt_max": 13.345, "rtt_avg": 13.248, "packets_sent": 3, "packets_lost": 0, "success": true, "rtt_ms": 13, "sensor": { "id": "msk.curator.downdetector.info", "city": "Москва", "provider": "", "ccode": "ru" } }, { "rtt_avg": 25.772, "packets_sent": 3, "packets_lost": 0, "success": true, "rtt_ms": 26, "ip": "77.88.44.242", "rtt_min": 25.675, "rtt_max": 25.893, "sensor": { "id": "krdr.kubtel.downdetector.info", "city": "Краснодар", "provider": "Кубтел", "ccode": "ru" } } ] } }
Ответ в случае UX-проверки:
{ "success": true, "task": { "task_id": "uem-91964a7d2c4c49f69550a124", "status": "done", "url": "https://ya.ru/", "domain": "ya.ru", "route": "ai", "force": false, "browser": "chrome", "check_browser": "chrome", "profile": "gpt", "check_profile": "gpt", "ai_mode": "waf-penetration", "location": { "id": "msk", "name": "Москва" }, "check_location": "Москва", "started_at": "2026-05-22T11:57:04Z", "started_at_ms": 1779451024583, "elapsed_ms": 83324, "result": { "status": "ok", "raw_status": "ok", "confidence": 0.98, "summary": "Сайт открылся и пригоден для использования: видна главная страница Яндекса с поиском, сервисами и основным контентом, без активного WAF/капчи и без признаков ограничения по VPN/proxy на этом пути проверки.", "user_impact": "Обычный пользователь может открыть страницу, выполнить поиск и использовать основные блоки главной страницы без видимых препятствий.", "details": "Обычный пользователь может открыть страницу, выполнить поиск и использовать основные блоки главной страницы без видимых препятствий.", "checked_at": "2026-05-22T11:58:27Z", "checked_at_ms": 1779451107884, "primary_failure": "none", "route": "ai", "ai_mode": "waf-penetration", "browser": "chrome", "check_browser": "chrome", "check_location": "Москва", "check_profile": "gpt", "location": { "id": "msk", "name": "Москва" }, "cached": false, "final_url": "https://ya.ru/", "reasons": [ "Видна рабочая главная страница Яндекса с поиском и основным контентом.", "Активного JS-челленджа, капчи или access-denied экрана не было.", "Нет видимых сообщений о блокировке через VPN/proxy или необходимости сменить сеть.", "Критичных сетевых ошибок и пользовательски значимых ошибок консоли не обнаружено." ], "screenshots": [ { "src": "/uem-runs/1779451107-01-initial.png", "url": "/uem-runs/1779451107-01-initial.png", "label": "01-initial.png" }, { "src": "/uem-runs/1779451107-02-after-challenge.png", "url": "/uem-runs/1779451107-02-after-challenge.png", "label": "02-after-challenge.png" } ], "metrics": { "loaded_bytes": 1742199.0, "site_load_ms": 463, "page_ready_ms": 648.0, "request_count": 108, "check_duration_ms": 82594, "console_error_count": 2, "failed_request_count": 0, "console_warning_count": 0, "dom_content_loaded_ms": 462, "largest_contentful_paint_ms": 648.0, "largest_contentful_paint_estimated": false }, "timings": { "check_duration_ms": 82594, "page_ready_ms": 648.0, "site_load_ms": 463, "dom_content_loaded_ms": 462, "largest_contentful_paint_ms": 648.0, "loaded_bytes": 1742199.0 }, "check_context": { "browser": { "mode": "waf-penetration", "name": "Chrome", "model": "gpt-5.4-mini", "engine": "AI + Playwright MCP", "profile": "playwright-extra-stealth-chrome", "version": "148.0.0.0", "scenario": "js-challenge" }, "locations": [ { "city": "Москва", "label": "выбранная точка", "egress": "proxy:msk.rtcloud.downdetector.info", "status": "ok" } ], }, "egress": { "id": "proxy:msk.rtcloud.downdetector.info", "city": "Москва", "kind": "http_connect", "crawler_id": "msk.rtcloud.downdetector.info" }, "egress_id": "proxy:msk.rtcloud.downdetector.info" } } }
Ответ в случае ошибки:
{ "success": false, "error": "Произошла ошибка при выполнении запроса, проверьте параметры" }