Save up to 17% with yearly billing

See pricing

Регионы

Административно-территориальные единицы ISO 3166-2 (штаты, провинции, территории). Основной сценарий интеграции — преобразование iso_region из раздела Аэропорты в понятную человеку подпись, например US-NY → New York. Две операции: получение списка регионов (с фильтром по стране или континенту) и получение одного региона по коду.

Используйте фильтры, когда это возможно. Список без фильтров возвращает около 3900 строк по всему миру. В интерфейсах в продакшне передавайте country или continent.

ЭндпоинтКогда использовать
GET /regionsСелекторы регионов с фильтром по стране или континенту
GET /regions/{code}Преобразование iso_region из записи аэропорта

Список регионов

Возвращает регионы с необязательной фильтрацией по стране и/или континенту.

Запрос

Требования

Авторизация
x-api-key в каждом запросе (прямая подписка). Подробнее →
GEThttps://data.skylinkapi.com/v3.1/regions
ПараметрТипОбязательныйПо умолчаниюОписание
countrystringНетвсе страныКод страны ISO 3166-1 alpha-2, например US
continentstringНетвсе континентыКод континента (AF, AN, AS, EU, NA, OC, SA)

Ответ

{
  "regions": [
    {
      "id": 306110,
      "code": "US-NY",
      "local_code": "NY",
      "name": "New York",
      "continent": null,
      "iso_country": "US",
      "wikipedia_link": "https://en.wikipedia.org/wiki/New_York",
      "keywords": "Airports in New York"
    }
  ],
  "total": 1
}
ПолеТипОбязательныйМожет быть null?Описание
regionsarrayДаНикогдаПодходящие записи регионов
totalintegerДаНикогдаКоличество возвращённых регионов

Элемент региона (regions[])

ПолеТипОбязательныйМожет быть null?Описание
idintegerДаНикогдаЧисловой идентификатор записи
codestringДаНикогдаКод региона ISO 3166-2, например US-NY
local_codestring | nullНетДаКороткий местный код внутри страны (например, NY)
namestringДаНикогдаНазвание региона
continentstring | nullНетДаКод континента, если назначен
iso_countrystringДаНикогдаКод alpha-2 родительской страны
wikipedia_linkstring | nullНетДаСправочный URL
keywordsstring | nullНетДаПроизвольные текстовые теги

Получение региона по коду

Получение одного региона по коду ISO 3166-2 (например, US-CA, GB-ENG). Если код не найден, возвращается 404.

Запрос

GEThttps://data.skylinkapi.com/v3.1/regions/{code}
ПараметрТипОбязательныйОписание
codestringДаКод региона ISO 3166-2 (параметр пути)

Ответ

{
  "id": 306110,
  "code": "US-NY",
  "local_code": "NY",
  "name": "New York",
  "continent": null,
  "iso_country": "US",
  "wikipedia_link": "https://en.wikipedia.org/wiki/New_York",
  "keywords": "Airports in New York"
}

Та же структура объекта, что и у элементов списка. Если фильтры списка ничего не нашли, возвращаются regions: [] и total: 0 — это не ошибка.

Клиентские типы

"""Region reference models for /regions endpoints."""from __future__ import annotationsfrom dataclasses import dataclass@dataclassclass RegionsListRequest:    country: str | None = None    continent: str | None = None@dataclassclass RegionByCodeRequest:    code: str@dataclassclass RegionRecord:    id: int    code: str    local_code: str | None    name: str    continent: str | None    iso_country: str    wikipedia_link: str | None    keywords: str | None@dataclassclass RegionsResponse:    regions: list[RegionRecord]    total: int

Интеграция

Получите справочные данные регионов для выбранной страны и преобразуйте их в варианты выбора для формы.

В примере ниже списки регионов кэшируются на 24 часа, а явные тайм-ауты помогают сохранить отзывчивость форм онбординга.

import osimport timefrom dataclasses import dataclassimport requestsHEADERS = {    "x-api-key": os.getenv("SKYLINK_API_KEY", "YOUR_API_KEY")}BASE = "https://data.skylinkapi.com/v3.1"CACHE: dict[str, tuple[dict, float]] = {}REGIONS_TTL = 86_400  # 24 h@dataclassclass RegionOption:    code: str    label: strdef fetch_regions(*, country: str) -> list[dict]:    country = country.upper()    key = f"regions:{country}"    cached = CACHE.get(key)    if cached and time.time() < cached[1]:        return cached[0]["regions"]    try:        r = requests.get(            f"{BASE}/regions",            headers=HEADERS,            params={"country": country},            timeout=(10, 15),        )    except requests.Timeout as exc:        raise RuntimeError(f"SkyLink timeout fetching regions for {country}") from exc    r.raise_for_status()    data = r.json()    CACHE[key] = (data, time.time() + REGIONS_TTL)    return data.get("regions", [])def get_region_by_code(code: str) -> dict | None:    code = code.upper()    try:        r = requests.get(f"{BASE}/regions/{code}", headers=HEADERS, timeout=(10, 15))    except requests.Timeout as exc:        raise RuntimeError(f"SkyLink timeout fetching region {code}") from exc    if r.status_code == 404:        return None    r.raise_for_status()    return r.json()def region_options(country: str) -> list[RegionOption]:    return [RegionOption(code=item["code"], label=item["name"]) for item in fetch_regions(country=country)]if __name__ == "__main__":    import json    ny = get_region_by_code("US-NY")    print(json.dumps(ny, indent=2, default=str))

Примечания по реализации

Сначала страна. По возможности запрашивайте данные по country — не отправляйте в браузер полный глобальный список.

Связь с аэропортами. Связывайте airport.iso_region из раздела Аэропорты напрямую с regions.code.

Формат кода. Где это практично, проверяйте формат вида XX-YYY до отправки запроса, чтобы избежать лишних ответов 404.

Ответы с ошибками

Общие ошибки: Обработка ошибок. Ошибки, специфичные для эндпоинта:

404 - регион не найден

{
  "detail": "Region 'ZZ-XX' not found"
}
GET
/regions
x-api-key<token>

Your SkyLink licence key, for keys bought direct from skylinkapi.com.

In: header

Query Parameters

country?|

Filter by ISO 3166-1 alpha-2 country code (e.g. US, CA, GB)

continent?|

Filter by continent code: AF, AN, AS, EU, NA, OC, SA

Response Body

application/json

application/json

curl -X GET "https://data.skylinkapi.com/v3.1/regions"
{
  "regions": [
    {
      "id": 0,
      "code": "string",
      "local_code": "string",
      "name": "string",
      "continent": "string",
      "iso_country": "string",
      "wikipedia_link": "string",
      "keywords": "string"
    }
  ],
  "total": 0
}
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}
GET
/regions/{code}
x-api-key<token>

Your SkyLink licence key, for keys bought direct from skylinkapi.com.

In: header

Path Parameters

code*Code

ISO 3166-2 region code (e.g. US-CA, GB-ENG, AU-NSW)

Response Body

application/json

application/json

curl -X GET "https://data.skylinkapi.com/v3.1/regions/US"
{
  "id": 0,
  "code": "string",
  "local_code": "string",
  "name": "string",
  "continent": "string",
  "iso_country": "string",
  "wikipedia_link": "string",
  "keywords": "string"
}
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}

См. также: Страны · Аэропорты · Поиск аэропортов