Документация ОРБИТА API

Полное руководство по интеграции с платформой. 52+ REST-эндпоинтов + WebSocket для работы с финансовыми данными: акции, облигации, ETF, валюты, криптовалюты, сырьё, фьючерсы, индексы, макроэкономика.

REST API v3.4 WebSocket JSON / CSV / Excel https://orbita.denarius.pro/api/v1
Начало работы Аутентификация Тарифы Rate Limiting Медиа Форматы Эндпоинты WebSocket Ошибки Webhooks SDK

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

Базовый URL

https://orbita.denarius.pro/api/v1

Как получить API-ключ

  1. Свяжитесь с администратором платформы
  2. Получите уникальный ключ формата orb_xxxxxxxxxxxxxxxxxxxxxxxxxxxx
  3. Сохраните ключ немедленно — он показывается только один раз при создании
  4. Передавайте ключ в HTTP-заголовке X-API-Key каждого запроса

Быстрый старт

# Текущая цена Сбербанка
curl -H "X-API-Key: orb_YOUR_KEY" \
  "https://orbita.denarius.pro/api/v1/company/real-time?code=MOEX:SBER"

# Ключевая ставка ЦБ РФ
curl -H "X-API-Key: orb_YOUR_KEY" \
  "https://orbita.denarius.pro/api/v1/macro/indicator?code=key_rate_rus"

# Курс USD/RUB
curl -H "X-API-Key: orb_YOUR_KEY" \
  "https://orbita.denarius.pro/api/v1/currency/history?code=rub_usd"

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

HTTP-заголовок X-API-Key

Каждый запрос к /api/v1/* должен содержать заголовок:

X-API-Key: orb_ваш_ключ_здесь

Примеры на разных языках

cURL
curl -H "X-API-Key: orb_KEY" \
  URL/api/v1/company/real-time?code=MOEX:SBER
Python
import httpx
h = {"X-API-Key": "orb_KEY"}
r = httpx.get(
  "URL/api/v1/company/real-time",
  params={"code": "SBER"},
  headers=h
)
JavaScript
const r = await fetch(
  "URL/api/v1/company/real-time?code=MOEX:SBER",
  { headers: {"X-API-Key": "orb_KEY"} }
);

Ответы при ошибках

401 — отсутствует X-API-Key
{"detail": "Missing X-API-Key header. Obtain a key at /api-docs or contact an administrator."}
403 — ключ невалиден/отключён
{"detail": "Invalid or deactivated API key."}

3 Тарифные планы

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

Тариф Запросов / минута Запросов / день Описание
Free10100Для тестирования и ознакомления с API
Standard601 000Стандартный план для основных интеграций
Professional30010 000Для активных приложений и дашбордов
Enterprise1 000100 000Для высоконагруженных систем и крупных клиентов
UnlimitedБез ограничений — для стратегических партнёров и внутренних систем

Гибкая настройка

  • Администратор может переопределить лимиты для любого ключа, независимо от тарифа
  • Ключи Unlimited не проходят через rate-limiter — отклик минимальный
  • Тариф отображается в заголовке X-RateLimit-Tier
  • Допуск к конкретным эндпоинтам может быть ограничен через allowed_endpoints

Определение тарифа из ответа

HTTP/1.1 200 OK
X-RateLimit-Tier: professional
X-RateLimit-Limit: 300
X-RateLimit-Remaining: 287

# Для Unlimited-ключей:
X-RateLimit-Tier: unlimited
X-RateLimit-Limit: unlimited
X-RateLimit-Remaining: unlimited

4 Rate Limiting

Каждый API-ключ имеет индивидуальные лимиты, определяемые тарифным планом. Администратор может задать индивидуальные значения. Ключи с тарифом Unlimited не ограничиваются.

5
тарифных планов
10 — ∞
запросов / минута
100 — ∞
запросов / день

HTTP-заголовки ответа

ЗаголовокОписаниеПример
X-RateLimit-TierТарифный план ключаprofessional
X-RateLimit-LimitМаксимум запросов/мин для ключа300
X-RateLimit-RemainingСколько ещё можно отправить287
Retry-AfterСекунды до сброса (при 429)60

Стратегия обработки лимитов (Backoff)

1. Проверяйте X-RateLimit-Remaining после каждого ответа

2. При получении 429 — ждите время из Retry-After

3. Применяйте экспоненциальный backoff: 1с → 2с → 4с → 8с (максимум 60с)

4. Для высоконагруженных приложений рекомендуется тариф Professional или Enterprise

429 — лимит превышен
{"detail": "Rate limit exceeded (per minute)."}

5 Медиа-ассеты (логотипы, изображения)

ОРБИТА автоматически кэширует все медиа-файлы (логотипы компаний, валют, картинки новостей) на локальном сервере. В ответах API внешние URL заменяются на локальные ссылки для стабильной и быстрой загрузки.

Как это работает

1. API получает данные от источника (porti.ru, smart-lab.ru и др.) с внешними URL-адресами картинок

2. AssetProxy автоматически скачивает медиа-файлы на сервер ОРБИТА

3. URL в ответе заменяется на https://orbita.denarius.pro/media/{hash}.{ext}

4. Файлы кэшируются перманентно и отдаются с заголовком Cache-Control: public, max-age=86400

Затрагиваемые поля

Поле JSONГде встречаетсяПример
logoВалюты, компании, биржи/media/a1b2c3d4.png
imgНовости/media/e5f6g7h8.webp
iconКатегории, индексы/media/i9j0k1l2.svg
imageДокументы, графики/media/m3n4o5p6.jpg

Информация о кэше

GET /api/v1/media/info

{
  "total_files": 342,
  "total_size_mb": 47.8,
  "assets_dir": "/app/data/assets"
}

6 Форматы ответов (реальные данные API)

Все примеры ниже — реальные ответы от API, полученные в марте 2026. Значения полей time — Unix timestamp (секунды).

Формат экспорта: JSON / CSV / Excel

По умолчанию все эндпоинты возвращают JSON. Добавьте query-параметр format для получения данных в табличном формате:

format=json

По умолчанию. Стандартный JSON.

format=csv

Табличный CSV (UTF-8). Content-Type: text/csv

format=excel

Microsoft Excel (.xlsx). Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

Примеры:

curl -H "X-API-Key: orb_KEY" "https://orbita.denarius.pro/api/v1/currency/list?format=csv"
curl -H "X-API-Key: orb_KEY" "https://orbita.denarius.pro/api/v1/company/real-time?code=MOEX:SBER&format=excel" -o sber.xlsx
Структура: Array<{code: string, time: string, price: string}>
Массив минутных тиков (до ~600 записей) за последний торговый день. time — Unix timestamp (сек), price — строка с числом.
[
  {"code": "MOEX:SBER", "time": "1772797801", "price": "314.84"},
  {"code": "MOEX:SBER", "time": "1772797201", "price": "314.84"},
  {"code": "MOEX:SBER", "time": "1772796901", "price": "314.84"},
  {"code": "MOEX:SBER", "time": "1772796841", "price": "314.76"}
]
ПолеТипОписание
codestringТикер в формате EXCHANGE:SYMBOL (напр. MOEX:SBER)
timestringUnix timestamp (секунды) — момент фиксации цены
pricestringЦена закрытия минутной свечи (в валюте торгов)
Структура: Array<{code, time, price}> — идентична realtime
Каждая запись — дневная цена закрытия. Данные идут в хронологическом порядке от новых к старым.
[
  {"code": "MOEX:SBER", "time": "1772744400", "price": "314.84"},
  {"code": "MOEX:SBER", "time": "1772658000", "price": "314.68"},
  {"code": "MOEX:SBER", "time": "1772571600", "price": "311.10"},
  {"code": "MOEX:SBER", "time": "1772485200", "price": "311.82"}
]
Структура: {dividends: Array, splits: Array}
{
  "dividends": [
    {
      "title": "2023",
      "dividend": "33.3",
      "dividend_yield": "10.5",
      "registry_closing_time": 1720558800,
      "meeting_date": ""
    },
    {
      "title": "2024",
      "dividend": 34.84,
      "dividend_yield": 10.7,
      "registry_closing_time": 1752699600,
      "meeting_date": ""
    }
  ],
  "splits": []
}
ПолеТипОписание
titlestringГод дивиденда
dividendstring|numberРазмер дивиденда (руб./акцию)
dividend_yieldstring|numberДивидендная доходность (%)
registry_closing_timenumberДата закрытия реестра (Unix timestamp)
meeting_datestringДата собрания акционеров (пусто если нет)
Структура: {common: Object, msfo: {annual: {dividends, balance, income, cashflow}}, rsbu: ...}
Массивный объект с полными фундаментальными данными: общая информация (FIGI, сектор, рейтинги, адрес), МСФО и РСБУ по годам (дивиденды, баланс, P&L, cash flow).
{
  "common": {
    "code": "MOEX:SBER",
    "title": "Сбербанк",
    "description": "<p>...</p>",
    "figi": "BBG004730N88",
    "currency": "rub",
    "report_currency": "rub",
    "industry": "Banks",
    "sector": "Financials",
    "category": "Акции",
    "ipodate": null,
    "link": "https://www.sberbank.ru",
    "address": {
      "Street": "19 Vavilova Street",
      "City": "Moscow", "Country": "Russia",
      "Phone": "7 495 957 5731", "Index": 117312, "Countryiso": "RU"
    },
    "rating": {
      "credit_rating_qualify_akra": "AAA",
      "credit_rating_qualify_expert": "AAA",
      "credit_rating_qualify_fitch": "CCC",
      "credit_rating_qualify_moody": "C",
      "credit_rating_qualify_sp": null
    },
    "isin": "RU0009029540",
    "exchanges": ["MOEX"]
  },
  "msfo": {
    "annual": {
      "dividends": {"2023": {"div_payout_ratio": 50.09, "div_yield": 10.535, "dividend": 33.3, "dividend_payout": 752.1}},
      "balance": {"2023": {"total_assets": 53827.353, "total_equity": 7362.025, ...}},
      "income": {"2023": {"revenue": 3408.949, "net_income": 1502.8, ...}},
      "cashflow": {"2023": {"operating_cf": 1015.2, ...}}
    }
  }
}
Объект common содержит ~15 полей. Объекты msfo и rsbu содержат данные по каждому году (от IPO до текущего).
[
  {
    "time": "1765400400",
    "disclosure_time": "1765486800",
    "type": "2",
    "price": "307.19",
    "volume": "6658",
    "count": "216732",
    "insider": "Фамилия Имя",
    "insider_role": "Контроллная ревизионная организация",
    "link": "https://www.e-disclosure.ru/portal/event.aspx?EventId=...",
    "shares_percentage_before": "0.11",
    "shares_percentage_after": "0.11"
  }
]
ПолеТипОписание
typestring"1" = покупка, "2" = продажа
pricestringЦена сделки
volumestringОбъём в рублях
countstringКоличество акций
shares_percentage_before/afterstringДоля акций до/после сделки (%)
[
  {"name": "Moscow Exchange", "code": "MOEX", "mic": "MISX", "operatingMic": "MISX", "country": "Russia", "currency": "rub"},
  {"name": "New York Stock Exchange", "code": "NYSE", "mic": "XNYS", "operatingMic": "XNYS", "country": "USA", "currency": "usd"},
  {"name": "NASDAQ", "code": "NASDAQ", "mic": "XNAS", "operatingMic": "XNAS", "country": "USA", "currency": "usd"},
  {"name": "London Stock Exchange", "code": "LSE", "mic": "XLON", "operatingMic": "XLON", "country": "UK", "currency": "gbp"}
]
ПолеОписание
codeУникальный код биржи (используется в тикерах: MOEX:SBER)
micMarket Identifier Code (ISO 10383)
currencyВалюта торгов (rub, usd, eur, ...)
[
  {"value": "78.19", "title": "Доллар", "symbol": "$", "isin": "USD000UTSTOM", "code": "usd", "logo": "https://porti.ru/.../usd.png"},
  {"value": "104.501", "title": "Фунт стерлингов", "symbol": "£", "isin": null, "code": "gbp", "logo": "https://porti.ru/.../gbp.png"},
  {"value": "55.1474", "title": "Австралийский доллар", "symbol": "$", "code": "aud", "logo": "..."}
]
Коды: inflation_rus, inflation_usa, inflation_euro, inflation_chine, ruonia, key_rate_rus, key_rate_usa, observed_inflation_rus, expected_inflation_rus, deposit_rus
[
  {"code": "key_rate_rus", "time": "1772658000", "value": "15.5"},
  {"code": "key_rate_rus", "time": "1772571600", "value": "15.5"},
  {"code": "key_rate_rus", "time": "1770930000", "value": "16"},
  {"code": "key_rate_rus", "time": "1770843600", "value": "16"}
]
[
  {
    "time": "1772797980",
    "title": "Заголовок новости...",
    "source": "https://smartlab.news/read/...",
    "img": "https://smart-lab.ru/uploads/.../image.webp",
    "lang": "ru",
    "sentiment": "23.918",
    "summary": "Краткое содержание новости..."
  }
]
ПолеОписание
sentimentML-оценка сентимента (0-100, выше = позитивнее)
summaryАвтоматическая суммаризация текста
langЯзык: ru, en
[
  {
    "title": "SBER: Публикация финансовых результатов за 2025 год",
    "time": "1767214800",
    "holders": [
      {"code": "MOEX:SBER", "title": "Сбербанк", "type": "company"}
    ]
  },
  {
    "title": "T: Дата ex-сплита акций в соотношении 1:10",
    "time": "1767214800",
    "holders": [
      {"code": "MOEX:T", "title": "Т-Технологии | Т Банк | Тинькофф", "type": "company"}
    ]
  }
]
{
  "common": {"code": "IMOEX", "title": "Индекс Мосбиржи"},
  "holders": [
    {"title": "Лукойл",  "code": "MOEX:LKOH", "share": "13.85", "is_pref": 0},
    {"title": "Сбербанк", "code": "MOEX:SBER", "share": "12.32", "is_pref": 0},
    {"title": "Газпром",  "code": "MOEX:GAZP", "share": "9.61",  "is_pref": 0},
    {"title": "Яндекс",   "code": "MOEX:YDEX", "share": "7.28",  "is_pref": 0}
  ]
}
ПолеОписание
shareВес компании в индексе (%)
is_pref0 = обыкновенные акции, 1 = привилегированные
Возвращает массив пар (timestamp, value). Каждый timestamp представлен дважды (интервал цен). Значение "null" (строка) означает недостаточно данных для расчёта.
// RSI(14) для SBER
[
  {"time": 1741899600, "value": "null"},
  {"time": 1741899600, "value": 50.889487870619945},
  {"time": 1741986000, "value": 57.36549165120595},
  {"time": 1741986000, "value": 50.94918504314478},
  {"time": 1742072400, "value": 57.876984126984155}
]
{
  "company": [
    {"title": "Сбербанк", "code": "SBER", "type": "company"},
    {"title": "Sberbank of Russia", "code": "SBRCY", "type": "company"},
    {"title": "Carlsberg A/S", "code": "CABGY", "type": "company"}
  ],
  "futures": [
    {"title": "SBERF", "code": "SBERF", "type": "futures"}
  ]
}

7 Полный справочник эндпоинтов

8 WebSocket — реальное время

Подключение

wss://orbita.denarius.pro/ws/prices

WebSocket не требует API-ключ. Данные обновляются каждые 5-10 секунд.

Подписка

const ws = new WebSocket("wss://orbita.denarius.pro/ws/prices");
ws.onopen = () => {
  ws.send(JSON.stringify({ action: "subscribe", tickers: ["SBER", "GAZP", "LKOH"] }));
};
ws.onmessage = (event) => {
  const data = JSON.parse(event.data);
  // data = { "SBER": {"price": 314.84, ...}, "GAZP": {"price": 148.75, ...} }
};

Формат входящих сообщений

{
  "SBER": {"price": 314.84, "change": 0.05, "time": "2026-03-06T15:30:01"},
  "GAZP": {"price": 148.75, "change": -0.32, "time": "2026-03-06T15:30:01"}
}

9 Коды ошибок

КодСтатусОписаниеДействие
200OKЗапрос выполнен успешно
400Bad RequestНекорректные параметрыПроверьте параметры
401UnauthorizedЗаголовок X-API-Key отсутствуетДобавьте заголовок
403ForbiddenКлюч невалиден или деактивированЗапросите новый ключ
404Not FoundТикер/ресурс не найденИспользуйте /search
429Too Many RequestsЛимит запросов исчерпанПодождите Retry-After
500Internal ErrorОшибка на сервереПовторите позже
502Bad GatewayИсточник данных недоступенПовторите через 30с

10 Полные примеры интеграции

Python — полный клиент

import httpx

BASE = "https://orbita.denarius.pro/api/v1"
KEY = "orb_YOUR_KEY"
H = {"X-API-Key": KEY}

# 1. Текущая цена акции
r = httpx.get(f"{BASE}/company/real-time",
              params={"code": "SBER"}, headers=H)
prices = r.json()  # [{code, time, price}, ...]

# 2. Дивиденды
r = httpx.get(f"{BASE}/company/dividends",
              params={"code": "SBER"}, headers=H)
divs = r.json()  # {dividends: [...], splits: [...]}

# 3. Фундаментальные данные
r = httpx.get(f"{BASE}/company/fundamental",
              params={"code": "SBER"}, headers=H)
fund = r.json()  # {common: {...}, msfo: {...}}

# 4. Поиск актива
r = httpx.get(f"{BASE}/company/search",
              params={"q": "газпром"}, headers=H)
results = r.json()  # {company: [...], futures: [...]}

# 5. Ключевая ставка ЦБ РФ
r = httpx.get(f"{BASE}/macro/indicator",
              params={"code": "key_rate_rus"}, headers=H)
rates = r.json()  # [{code, time, value}, ...]

# 6. Технический анализ (RSI-14)
r = httpx.get(f"{BASE}/market/technical",
              params={"code":"SBER", "func":"rsi"},
              headers=H)

# 7. Состав индекса Мосбиржи
r = httpx.get(f"{BASE}/indices/holders",
              params={"code": "IMOEX"}, headers=H)
idx = r.json()  # {common:{}, holders:[{share}]}

JavaScript — fetch + WebSocket

const BASE = "https://orbita.denarius.pro/api/v1";
const H = { "X-API-Key": "orb_YOUR_KEY" };

// 1. REST — цена акции
const priceRes = await fetch(
  `${BASE}/company/real-time?code=MOEX:SBER`, {headers: H}
);
const prices = await priceRes.json();
// [{code:"MOEX:SBER", time:"177...", price:"314.84"}]

// 2. REST — все биржи
const exRes = await fetch(
  `${BASE}/exchange/list`, {headers: H}
);
const exchanges = await exRes.json();
// [{name,code,mic,country,currency}, ...]

// 3. REST — валюты
const curRes = await fetch(
  `${BASE}/currency/list`, {headers: H}
);
const currencies = await curRes.json();
// [{value:"78.19",title:"Доллар",code:"usd"}]

// 4. WebSocket — реальное время
const ws = new WebSocket(
  "wss://orbita.denarius.pro/ws/prices"
);
ws.onopen = () => {
  ws.send(JSON.stringify({
    action: "subscribe",
    tickers: ["SBER", "GAZP", "LKOH"]
  }));
};
ws.onmessage = (e) => {
  const data = JSON.parse(e.data);
  Object.entries(data).forEach(([ticker, info]) => {
    console.log(`${ticker}: ${info.price}`);
  });
};

// 5. Обработка лимитов
const resp = await fetch(url, {headers: H});
const remaining = resp.headers
  .get("X-RateLimit-Remaining");
if (resp.status === 429) {
  const wait = resp.headers.get("Retry-After");
  await new Promise(r => setTimeout(r, wait*1000));
}

Go — net/http клиент

package main

import (
    "encoding/json"
    "fmt"
    "net/http"
    "io"
)

const (
    base = "https://orbita.denarius.pro/api/v1"
    key  = "orb_YOUR_KEY"
)

func orbGet(endpoint string) ([]byte, error) {
    req, _ := http.NewRequest("GET", base+endpoint, nil)
    req.Header.Set("X-API-Key", key)
    resp, err := http.DefaultClient.Do(req)
    if err != nil {
        return nil, err
    }
    defer resp.Body.Close()
    // Check tier and rate limits
    tier := resp.Header.Get("X-RateLimit-Tier")
    rem := resp.Header.Get("X-RateLimit-Remaining")
    fmt.Printf("Tier: %s, Remaining: %s\n", tier, rem)
    return io.ReadAll(resp.Body)
}

func main() {
    data, _ := orbGet("/company/real-time?code=MOEX:SBER")
    fmt.Println(string(data))
}

PHP — cURL клиент

<?php
$base = "https://orbita.denarius.pro/api/v1";
$key  = "orb_YOUR_KEY";

function orbGet($endpoint) {
    global $base, $key;
    $ch = curl_init($base . $endpoint);
    curl_setopt_array($ch, [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_HTTPHEADER => [
            "X-API-Key: $key",
            "Accept: application/json",
        ],
    ]);
    $response = curl_exec($ch);
    $code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    if ($code === 429) {
        sleep(60); // backoff
        return orbGet($endpoint);
    }
    return json_decode($response, true);
}

// Текущая цена
$price = orbGet("/company/real-time?code=MOEX:SBER");
print_r($price);

// Новости за 7 дней
$news = orbGet("/macro/news?period=7");
foreach ($news as $item) {
    echo $item['title'] . "\n";
}
?>

11 Webhooks

Доступно в v3.4

Webhook-система позволяет получать push-уведомления о событиях платформы ОРБИТА на ваш URL. Подписки управляются через админ-панель или API.

Поддерживаемые события

СобытиеОписаниеТриггер
alert.triggeredАлерт по цене сработалAlertEngine
etl.completedETL-коллектор завершил сбор данныхScheduler
price.thresholdЦена достигла порогового значенияPrice monitor

API эндпоинты

GET /api/v1/webhooks

Список всех подписок. Требуется admin-сессия.

POST /api/v1/webhooks

Создать подписку. Возвращает secret для проверки подписи (HMAC-SHA256).

Request body:
{ "url": "https://example.com/webhook", "events": ["alert.triggered", "etl.completed"], "description": "My hook" }
PATCH /api/v1/webhooks/{id}

Обновить подписку (url, events, is_active).

DELETE /api/v1/webhooks/{id}

Удалить подписку.

POST /api/v1/webhooks/{id}/test

Отправить тестовый payload на URL подписки.

GET /api/v1/webhooks/events

Получить список поддерживаемых событий.

Формат payload

{

  "event": "alert.triggered",

  "timestamp": "2026-03-06T12:00:00+00:00",

  "data": {

    "alert_id": 42,

    "asset_code": "MOEX:GAZP",

    "condition": "price_above",

    "threshold": 200.0,

    "current_price": 205.5

  }

}

Проверка подписи (HMAC-SHA256)

Каждый запрос содержит заголовок X-Orbita-Signature в формате sha256=<hex_digest>.

Для проверки: вычислите HMAC-SHA256 тела запроса с вашим secret и сравните с полученной подписью.

# Python
import hmac, hashlib
expected = hmac.new(secret.encode(), request_body, hashlib.sha256).hexdigest()
signature = request.headers["X-Orbita-Signature"].removeprefix("sha256=")
is_valid = hmac.compare_digest(expected, signature)

API Versioning

API использует семантическое версионирование. Текущая версия: v3.4

Все эндпоинты доступны через префикс /api/v1/. При выпуске /api/v2/ старые эндпоинты будут поддерживаться минимум 12 месяцев.

Breaking changes анонсируются через Changelog и webhook-уведомления.

12 Changelog

v3.4Март 2026Текущая
  • Безлимитный вывод данных: сняты все искусственные ограничения на количество записей в ответах API, Streamlit и Telegram-боте
  • Пагинация с контролем клиента: параметры limit и offset во всех эндпоинтах (0 = без лимита)
  • Мониторинг лимитов источника: /system/source-limits — реальное время использования API Porti.ru (1000/мин, 10000/день) с визуализацией в админ-панели
  • Webhook-система: push-уведомления по событиям alert.triggered, etl.completed, price.threshold с HMAC-SHA256 подписью
  • Управление вебхуками: новая вкладка в админ-панели (CRUD, тестирование, мониторинг ошибок)
  • Расширенная документация: полное описание Webhook API с примерами верификации подписи
v3.2Март 2026
  • Тарифные планы: 5 уровней (Free, Standard, Professional, Enterprise, Unlimited) с гибкой настройкой лимитов
  • Unlimited-ключи: для стратегических партнёров без ограничений на количество запросов
  • Контроль эндпоинтов: ограничение доступа к конкретным API-методам по ключу (allowed_endpoints)
  • Статистика использования: детальная аналитика по каждому API-ключу в админ-панели
  • Медиа-прокси: автоматическое кэширование логотипов, картинок и документов на сервере ОРБИТА
  • Брендинг: разработчик — Компания ПИР
  • Расширенная документация внешних интеграций
v3.1Март 2026
  • Аутентификация по API-ключам (X-API-Key)
  • Per-key rate limiting (минута + день)
  • Админ-панель для управления ключами
  • Публичная документация с реальными форматами ответов
v3.0Март 2026
  • 52+ REST эндпоинтов (акции, облигации, ETF, валюты, крипто, сырьё, фьючерсы, индексы, макро)
  • WebSocket /ws/prices для стриминга котировок
  • Системные эндпоинты (/system/status, /system/etl-runs, /system/cache-stats)
  • Расширенная аналитика (Sharpe ratio, Max Drawdown, Beta)
  • 13-страничный веб-портал с Chart.js визуализациями