Документация› API и интеграции› API v2: персональные серверы и лимиты

API v2: персональные серверы и лимиты

GET https://openspeedtest.ru/api/v2/servers

Возвращает персональный список тестовых серверов для ключа, а также итоговые лимиты аккаунта и текущее использование квоты.

Аутентификация

ЗаголовокОбязательныйОписание
X-API-KEYдаАктивный API-ключ

Только метод GET; другие методы → 405.

Пример

bashcurl -H "X-API-KEY: ВАШ_КЛЮЧ" "https://openspeedtest.ru/api/v2/servers"

Ответ (200)

json{
  "success": true,
  "servers": [
    {
      "id": 12,
      "name": "Moscow #1",
      "server_url": "https://msk1.example-speedtest.net",
      "dl_url": "https://msk1.example-speedtest.net/speedtest/random3500x3500.jpg",
      "ul_url": "https://msk1.example-speedtest.net/speedtest/upload.php",
      "ping_url": "https://msk1.example-speedtest.net/speedtest/empty.php",
      "get_ip_url": "https://msk1.example-speedtest.net/speedtest/getip.php",
      "sponsor_name": "ExampleNet",
      "city": "Москва",
      "region": "Москва",
      "country": "Россия",
      "country_code": "RU",
      "latitude": 55.7558,
      "longitude": 37.6173,
      "bandwidth_mbps": 10000
    }
  ],
  "limits": {
    "api_requests_per_hour": 5,
    "api_requests_per_day": 50,
    "max_servers": 3,
    "max_api_keys": 3
  },
  "usage": { "hour": 2, "day": 7 }
}

Описание полей

  • servers — только контрактные поля. Геополя (city, region, country, country_code, latitude, longitude, bandwidth_mbps) могут быть null. Внутренние технические поля в ответ не включаются.
  • limits — итоговые лимиты аккаунта (персональные настройки → тариф → без ограничений). Для ключа без привязки к аккаунту — null.
  • usage — текущее использование за час и сутки. Для ключа без привязки к аккаунту — null.

Рекомендации по использованию

Перед массовой отправкой результатов сверяйте usage с limits, чтобы не упираться в 429. Привязка ключа к аккаунту делает usage и limits доступными и включает единый учёт квоты.

Ошибки

КодУсловиеТело
401Нет X-API-KEY{"success":false,"error":"API Key is missing."}
403Ключ не найден или неактивен{"success":false,"error":"Invalid or inactive API Key."}
405Метод не GET{"success":false,"error":"Method Not Allowed"}
429Превышена квота (не для ключей виджета)см. «Квоты и лимиты»
500Внутренняя ошибка{"success":false,"error":"An internal server error occurred."}
Техническая деталь

Эндпоинт не добавляет CORS-заголовков (рассчитан на запросы с того же источника). Значения limits вычисляются по цепочке «индивидуальные настройки аккаунта → активный тариф → без ограничений»; отсутствие лимита означает отсутствие ограничения. Запрос учитывается в счётчиках использования.