Save up to 17% with yearly billing

See pricing

Начало работы

SkyLink API продаётся по двум каналам: напрямую у нас (оплата через наш собственный портал) и через маркетплейс RapidAPI. Оба отдают одни и те же данные — различаются только базовый URL и заголовок аутентификации. Вы оформляете подписку (или подаёте заявку на пробный период), копируете ключ и отправляете HTTPS-запросы; каждый ответ приходит в формате JSON.

Выберите канал

Выберите тот, через который вы совершили покупку. Все базовые URL, заголовки и примеры кода в этой документации следуют этому переключателю, а ваш выбор запоминается на всех страницах.

Direct APIRapidAPI
Базовый URLhttps://data.skylinkapi.com + /v3.1, /v3 или /v2https://skylink-api.p.rapidapi.com (без сегмента версии)
Аутентификацияx-api-keyX-RapidAPI-Key и X-RapidAPI-Host
Где купитьнаша страница оплатыстраница на RapidAPI
ОплатаPolar (merchant of record)RapidAPI

Шаг 1 — оформите подписку и получите учётные данные

FREE Trial

FREE Trial (1000 запросов в месяц) не оформляется самостоятельно. Подайте заявку на FREE Trial SkyLink API — заявки рассматриваются еженедельно; большинство команд получают ответ в течение 3–5 рабочих дней.

  1. Откройте страницу оплаты SkyLink API и выберите Basic или Pro с ежемесячной или ежегодной оплатой (сравнить тарифы).
  2. После оплаты ваш лицензионный ключ отображается на странице подтверждения и отправляется вам по электронной почте; он всегда доступен в вашем клиентском портале Polar.

Каждый аутентифицированный запрос содержит один заголовок:

ЗаголовокЗначение
x-api-keyВаш лицензионный ключ

Заголовок — единственный допустимый способ передачи: ключ никогда не считывается из query-параметра. Отсутствующий или неизвестный ключ возвращает 401.

Версия указывается в пути. https://data.skylinkapi.com/v3.1/... для v3.1, /v3/... и /v2/... для более старых поколений.

Защита ключа

  • Никогда не встраивайте ключ в мобильные приложения, браузерный JavaScript или публичные репозитории — он даёт полный доступ к API в рамках квоты вашей подписки.
  • Храните его в переменной окружения (например, SKYLINK_API_KEY) и подставляйте на стороне сервера во время выполнения.
  • Смените ключ в панели управления оплатой, если он когда-либо был раскрыт.

Публичные эндпоинты (ключ не требуется)

Спецификации OpenAPI и проверка работоспособности upstream-сервиса отдаются с api.skylinkapi.com — отдельно и от хоста данных, и от прокси RapidAPI — и не требуют ключа:

ЭндпоинтОписание
GET https://api.skylinkapi.com/healthПроверка работоспособности upstream-сервиса
GET https://api.skylinkapi.com/v2/openapi.jsonСпецификация OpenAPI v2
GET https://api.skylinkapi.com/v3/openapi.jsonСпецификация OpenAPI v3
GET https://api.skylinkapi.com/v3.1/openapi.jsonСпецификация OpenAPI v3.1

Важно: вызов /health или / на хосте данных возвращает 404. Используйте api.skylinkapi.com только для спецификаций без аутентификации и проверок работоспособности.

Шаг 2 — отправьте первый запрос

GEThttps://data.skylinkapi.com/v3.1/weather/metar/{icao}

Пример: ?parsed=true для /weather/metar/KJFK.

Заголовки: Шаг 1.

import osimport requestsBASE_URL = "https://data.skylinkapi.com/v3.1"HEADERS = {    "x-api-key": os.getenv(        "SKYLINK_API_KEY",        os.getenv("SKYLINK_API_KEY", os.getenv("SKYLINK_API_KEY", "YOUR_API_KEY")),    )}def get_metar(icao: str, parsed: bool = True) -> dict:    r = requests.get(        f"{BASE_URL}/weather/metar/{icao}",        headers=HEADERS,        params={"parsed": str(parsed).lower()},        timeout=(10, 15),    )    r.raise_for_status()    return r.json()if __name__ == "__main__":    import json    data = get_metar("KJFK")    print(json.dumps(data, indent=2, default=str))

Официальные SDK

Предпочитаете типизированный клиент вместо «сырого» HTTP? Оба официальных SDK опубликованы под именем skylink-api, оборачивают одни и те же эндпоинты, считывают ваш ключ из окружения и возвращают типизированные модели.

ЯзыкРеестрУстановка
PythonPyPI → skylink-apipip install skylink-api
TypeScriptnpm → skylink-apinpm install skylink-api
from skylink_api import SkyLink

with SkyLink() as sky:
    metar = sky.weather.metar("KJFK")
    traffic = sky.adsb.aircraft(lat=51.47, lon=-0.46, radius=75)
    status = sky.flight_status("BA117")
import { SkyLink } from "skylink-api";

// Direct channel — omit `provider` to use RapidAPI, the SDK's default.
const sky = new SkyLink({ provider: "direct", apiKey: process.env.SKYLINK_API_KEY });

const metar = await sky.weather.metar("KJFK", { parsed: true });
const flight = await sky.flightStatus("BA117");

Оба канала предоставляют идентичный набор методов — provider определяет лишь базовый URL и то, какие заголовки аутентификации отправляются.

Клиент для Python требует Python 3.10+ и зависит от httpx и pydantic v2. Клиент для TypeScript требует Node 20+ (или любую среду выполнения с глобальным fetch — Bun, Deno, Cloudflare Workers, Vercel Edge), не имеет зависимостей во время выполнения и включает встроенные повторные попытки и учёт квоты. Клиент для TypeScript считывает RAPIDAPI_KEY или SKYLINK_API_KEY из окружения, если ключ не передан явно.

Что вы получаете в ответ

Успешный ответ METAR с parsed=true выглядит так:

{
  "raw": "METAR KJFK 062251Z 24017G23KT 10SM FEW060 FEW075 SCT110 BKN180 BKN250 28/17 A2974 RMK AO2 SLP072 T02830167 $",
  "icao": "KJFK",
  "airport_name": "John F. Kennedy International Airport",
  "timestamp": "2026-06-06T23:09:37Z",
  "parsed": {
    "time": "2026-06-07T00:51:00+02:00",
    "wind": { "direction": 240, "speed": 17, "gust": 23, "variable": [] },
    "visibility": { "value": 10, "repr": "10" },
    "flight_rules": "VFR",
    "temperature": 28,
    "dewpoint": 17,
    "altimeter": 29.74
  }
}

parsed.flight_rules — это категория полётных условий, определяемая по высоте нижней границы облаков и видимости: VFR (правила визуальных полётов), MVFR (пограничные VFR), IFR (правила полётов по приборам) или LIFR (низкие IFR). Полные таблицы полей и правила допустимости значения null: справочник по METAR.

При parsed=false (или если параметр не указан) ключ parsed отсутствует — вы получаете только raw, icao, airport_name и timestamp.

Дальнейшие шаги