https://api.togle.ru/v1Togle API
REST-интерфейс к сетевым данным Togle: информация об IP, DNS-записи, RDAP, ping, проверка портов, мониторинг и белые списки ТСПУ. Ответы в JSON, авторизация по ключу.
Bearer tgl_live_…Быстрый старт
Создайте ключ в личном кабинете и передавайте его в заголовке Authorization. Первый запрос — за минуту.
curl https://api.togle.ru/v1/ip/8.8.8.8 \
-H "Authorization: Bearer tgl_live_••••••••"Ключ показывается один раз при создании. Не размещайте его в клиентском коде и публичных репозиториях — используйте серверный прокси.
Группы методов
Все эндпоинты сгруппированы по задачам. Нажмите на группу, чтобы перейти к её методам.
ip/{ip}ip/meip/bulk+1dns/{domain}dns/reverse/{ip}rdap/{query}+1pingports/scanlocationsssl/{domain}whitelist/{query}monitorsmonitorsmonitors/{id}/uptime+2account/usageaccount/keysIP и сети
Основная группа: паспорт IP, пакетная проверка, работа с подсетями и классификация адресов.
GET/v1/ip/{ip}Полная информация об IP-адресе1 запрос
Параметры
ipобязательноstringIPv4 или IPv6 адресfieldsstringСписок полей через запятую: geo,asn,risk,tagsПример запроса
curl -X GET https://api.togle.ru/v1/ip/8.8.8.8 \
-H "Authorization: Bearer tgl_live_••••••••"Ответ · 200 OK
{
"ip": "8.8.8.8",
"version": 4,
"geo": {"country":"US","city":"Mountain View","lat":37.42,"lon":-122.08},
"asn": {"number":15169,"name":"GOOGLE","org":"Google LLC"},
"tags": {"vpn":false,"proxy":false,"tor":false,"hosting":true},
"risk": {"level":"low","sources_checked":12},
"checked_at": "2026-08-02T09:14:22Z"
}GET/v1/ip/meIP-адрес клиента, выполнившего запрос1 запрос
Параметры
Метод не принимает параметров.
Пример запроса
curl -X GET https://api.togle.ru/v1/ip/me \
-H "Authorization: Bearer tgl_live_••••••••"Ответ · 200 OK
{
"ip": "89.23.104.17",
"geo": {"country":"RU"}
}POST/v1/ip/bulkПакетная проверка до 100 адресов1 запрос за адрес
Параметры
ipsобязательноstring[]Массив IP, максимум 100fieldsstringОграничить набор полейПример запроса
curl -X POST https://api.togle.ru/v1/ip/bulk \
-H "Authorization: Bearer tgl_live_••••••••"Ответ · 200 OK
{
"results": [
{"ip":"8.8.8.8","country":"US","asn":15169,"risk":"low"},
{"ip":"185.220.101.34","country":"DE","asn":205100,"risk":"high"}
],
"failed": []
}GET/v1/subnet/{cidr}Расчёт подсети: маска, диапазон, broadcast1 запрос
Параметры
cidrобязательноstringПодсеть, например 192.168.1.0/24Пример запроса
curl -X GET https://api.togle.ru/v1/subnet/192.168.1.0%2F24 \
-H "Authorization: Bearer tgl_live_••••••••"Ответ · 200 OK
{
"cidr": "192.168.1.0/24",
"netmask": "255.255.255.0",
"network": "192.168.1.0",
"broadcast": "192.168.1.255",
"hosts": {"first":"192.168.1.1","last":"192.168.1.254","total":254}
}DNS и домены
Резолвинг записей, reverse lookup и данные регистратора домена или сети.
GET/v1/dns/{domain}DNS-записи домена1 запрос
Параметры
domainобязательноstringДоменное имяtypestringA, AAAA, MX, TXT, NS, CNAME, SOA, CAA. По умолчанию — всеПример запроса
curl -X GET https://api.togle.ru/v1/dns/example.com \
-H "Authorization: Bearer tgl_live_••••••••"Ответ · 200 OK
{
"domain": "example.com",
"records": [
{"type":"A","value":"93.184.216.34","ttl":3600},
{"type":"MX","value":"10 mail.example.com","ttl":3600}
],
"resolver": "ru-mow-1"
}GET/v1/dns/reverse/{ip}Обратная запись PTR1 запрос
Параметры
ipобязательноstringIPv4 или IPv6 адресПример запроса
curl -X GET https://api.togle.ru/v1/dns/reverse/8.8.8.8 \
-H "Authorization: Bearer tgl_live_••••••••"Ответ · 200 OK
{"ip":"8.8.8.8","ptr":"dns.google"}GET/v1/rdap/{query}Регистрационные данные IP, домена или ASN1 запрос
Параметры
queryобязательноstringIP, домен или ASN в формате AS15169Пример запроса
curl -X GET https://api.togle.ru/v1/rdap/example.com \
-H "Authorization: Bearer tgl_live_••••••••"Ответ · 200 OK
{
"handle": "GOGL",
"name": "GOOGLE",
"registry": "ARIN",
"range": "8.8.8.0 - 8.8.8.255",
"registered_at": "2014-03-14T00:00:00Z",
"abuse_contact": "network-abuse@google.com"
}GET/v1/domain/{domain}/expiryСрок регистрации домена1 запрос
Параметры
domainобязательноstringДоменное имяПример запроса
curl -X GET https://api.togle.ru/v1/domain/example.com/expiry \
-H "Authorization: Bearer tgl_live_••••••••"Ответ · 200 OK
{
"domain": "example.com",
"registrar": "RU-CENTER",
"expires_at": "2027-03-14T00:00:00Z",
"days_left": 224
}Диагностика сети
Активные проверки доступности выполняются воркерами Togle из выбранных стран.
POST/v1/pingICMP/TCP ping из выбранных локаций1 запрос за локацию
Параметры
targetобязательноstringIP-адрес или доменlocationsstring[]Коды локаций: ru-mow-1, de-fra-1. По умолчанию — ближайшаяcountintegerЧисло пакетов, 1–10. По умолчанию 4Пример запроса
curl -X POST https://api.togle.ru/v1/ping \
-H "Authorization: Bearer tgl_live_••••••••"Ответ · 200 OK
{
"target": "example.com",
"resolved_ip": "93.184.216.34",
"results": [
{"location":"ru-mow-1","min":42.1,"avg":45.8,"max":51.3,"loss":0},
{"location":"de-fra-1","min":12.4,"avg":13.1,"max":14.9,"loss":0}
]
}POST/v1/ports/scanПроверка доступности TCP-портов2 запроса
Параметры
targetобязательноstringПубличный IP или доменportsобязательноinteger[]Порты из разрешённого списка, максимум 20Пример запроса
curl -X POST https://api.togle.ru/v1/ports/scan \
-H "Authorization: Bearer tgl_live_••••••••"Ответ · 200 OK
{
"target": "203.0.113.10",
"ports": [
{"port":443,"state":"open","service":"https","rtt_ms":38},
{"port":22,"state":"filtered","service":"ssh"}
]
}GET/v1/locationsСписок доступных локаций проверкибесплатно
Параметры
Метод не принимает параметров.
Пример запроса
curl -X GET https://api.togle.ru/v1/locations \
-H "Authorization: Bearer tgl_live_••••••••"Ответ · 200 OK
{
"locations": [
{"code":"ru-mow-1","country":"RU","city":"Москва","status":"online"},
{"code":"de-fra-1","country":"DE","city":"Франкфурт","status":"online"}
]
}SSL и безопасность
Проверка сертификата и статуса ресурса в реестрах фильтрации.
GET/v1/ssl/{domain}Информация о TLS-сертификате1 запрос
Параметры
domainобязательноstringДоменное имяportintegerTLS-порт, по умолчанию 443Пример запроса
curl -X GET https://api.togle.ru/v1/ssl/example.com \
-H "Authorization: Bearer tgl_live_••••••••"Ответ · 200 OK
{
"domain": "example.com",
"valid": true,
"issuer": "Let's Encrypt R3",
"expires_at": "2026-09-28T12:00:00Z",
"days_left": 57,
"hostname_match": true,
"chain_valid": true
}GET/v1/whitelist/{query}Проверка IP или домена в белых списках ТСПУ1 запрос
Параметры
queryобязательноstringIP-адрес или доменПример запроса
curl -X GET https://api.togle.ru/v1/whitelist/example.com \
-H "Authorization: Bearer tgl_live_••••••••"Ответ · 200 OK
{
"query": "example.com",
"status": "listed",
"lists": ["gov_services"],
"checked_at": "2026-08-02T09:14:22Z"
}Мониторинг
Создание и настройка проверок доступности, чтение метрик и истории инцидентов.
GET/v1/monitorsСписок мониторов проекта1 запрос
Параметры
statusstringup, down, pausedlimitintegerРазмер страницы, по умолчанию 50Пример запроса
curl -X GET https://api.togle.ru/v1/monitors \
-H "Authorization: Bearer tgl_live_••••••••"Ответ · 200 OK
{
"monitors": [
{
"id": "mon_9f2c",
"name": "example.com",
"status": "up",
"uptime_24h": 99.98,
"response_ms": 184
}
],
"total": 4
}POST/v1/monitorsСоздать монитор1 запрос
Параметры
targetобязательноstringURL или IPintervalобязательноinteger10, 30, 60 или 300locationsобязательноstring[]Коды локацийnamestringНазвание монитораПример запроса
curl -X POST https://api.togle.ru/v1/monitors \
-H "Authorization: Bearer tgl_live_••••••••"Ответ · 200 OK
{"id":"mon_9f2c","status":"pending_first_check"}GET/v1/monitors/{id}/uptimeUptime за период1 запрос
Параметры
idобязательноstringИдентификатор монитораperiodstring24h, 7d, 30dПример запроса
curl -X GET https://api.togle.ru/v1/monitors/mon_9f2c/uptime \
-H "Authorization: Bearer tgl_live_••••••••"Ответ · 200 OK
{
"monitor_id": "mon_9f2c",
"period": "30d",
"uptime": 99.94,
"downtime_minutes": 26,
"incidents": 2
}GET/v1/incidentsИстория инцидентов1 запрос
Параметры
monitor_idstringФильтр по мониторуfromstringНачало периода ISO 8601Пример запроса
curl -X GET https://api.togle.ru/v1/incidents \
-H "Authorization: Bearer tgl_live_••••••••"Ответ · 200 OK
{
"incidents": [
{
"id": "inc_4821",
"monitor_id": "mon_9f2c",
"severity": "SEV2",
"type": "partial_outage",
"started_at": "2026-07-18T19:38:04Z",
"resolved_at": "2026-07-18T19:42:16Z",
"affected_locations": ["de-fra-1"]
}
]
}DELETE/v1/monitors/{id}Удалить мониторбесплатно
Параметры
idобязательноstringИдентификатор монитораПример запроса
curl -X DELETE https://api.togle.ru/v1/monitors/mon_9f2c \
-H "Authorization: Bearer tgl_live_••••••••"Ответ · 200 OK
{"deleted":true,"id":"mon_9f2c"}Аккаунт и квоты
Служебные методы для контроля расхода лимитов. Не расходуют квоту.
GET/v1/account/usageРасход квоты в текущем периодебесплатно
Параметры
Метод не принимает параметров.
Пример запроса
curl -X GET https://api.togle.ru/v1/account/usage \
-H "Authorization: Bearer tgl_live_••••••••"Ответ · 200 OK
{
"plan": "solo",
"limit": 10000,
"used": 347,
"remaining": 9653,
"resets_at": "2026-09-01T00:00:00Z"
}GET/v1/account/keysСписок API-ключей (без секретов)бесплатно
Параметры
Метод не принимает параметров.
Пример запроса
curl -X GET https://api.togle.ru/v1/account/keys \
-H "Authorization: Bearer tgl_live_••••••••"Ответ · 200 OK
{
"keys": [
{
"id": "key_3f7a",
"name": "Production",
"prefix": "tgl_live_••••3f7a",
"last_used_at": "2026-08-02T09:10:00Z"
}
]
}Лимиты и стоимость запросов
Каждый вызов расходует квоту тарифа. Тяжёлые операции стоят дороже одного запроса.
| Тариф | Запросов / мес. | Rate limit | API-ключей |
|---|---|---|---|
| Free | 100 | 60 / мин. | 1 |
| Solo | 10 000 | 120 / мин. | 5 |
| Team | 500 000 | 600 / мин. | 20 |
Заголовки ответа: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset. При исчерпании — 429 с Retry-After.
Ошибки
Единый формат ошибки для всех методов.
{
"type": "about:blank",
"title": "Публичные и зарезервированные адреса проверять нельзя",
"status": 422,
"code": "unsafe_target",
"detail": "Используйте публичный IPv4, IPv6 или домен",
"request_id": "8f3c…"
}| HTTP | Код | Что делать |
|---|---|---|
| 400 | invalid_request | Проверьте параметры запроса |
| 401 | unauthorized | Проверьте API-ключ |
| 403 | forbidden | Проверьте права и тариф |
| 404 | not_found | Проверьте адрес ресурса |
| 422 | unsafe_target | Используйте публичную цель |
| 429 | rate_limit | Дождитесь сброса лимита |
| 500 | internal_error | Повторите запрос позже |