OpenAPI 3.1 · версия 1.0.0

Стройте на наших данных

Каталог выпусков ЦФА, кредитный балл эмитентов и курсы онлайн-обменника — машиночитаемо, без ключа и регистрации. Всё то же, что на страницах терминала, только для вашей программы.

С чего начать

Один запрос, никакой подготовки

Ни ключа, ни заголовков, ни обмена токенами. Три выпуска из каталога — одной строкой в терминале.

curl -s 'https://stakan.finance/api/v1/offerings?limit=3'

Ответ — JSON с полем items и счётчиком total. Постранично: limit до 500, offset от нуля. Неверный параметр — это 400 с объяснением, а не молчаливое умолчание: подставленная вместо мусора сотня означала бы, что вы получили не то, что просили, и не узнали об этом.

Маршруты

Три ресурса

Каждый отдаёт то, что уже лежит в базе. Запрос сюда никогда не превращается в обращение к площадке или порталу отчётности.

GET/api/v1/offerings

Каталог выпусков ЦФА

Выпуски с площадок. status=live (по умолчанию) — непогашенные: это settledAt = null, а НЕ «ушёл с витрины площадки» — вторым признаком отмечено окончание размещения, и бумага после него живёт ещё годы.

Параметры
ИмяЗначенияЧто делает
limitinteger 1…500 · по умолчанию 100Сколько записей вернуть. По умолчанию 100, не больше 500.
offsetinteger ≥ 0 · по умолчанию 0Сколько записей пропустить.
statuslive | settled | all · по умолчанию liveКакие выпуски вернуть: непогашенные, погашенные или все.
issuerstringПодстрока названия эмитента.
currencyBYN | USD | EUR | RUBВалюта номинала выпуска.
GET/api/v1/issuers

Эмитенты и кредитный балл

Последний снимок балла по каждому эмитенту. Рядом с баллом всегда идёт coverage — доля веса факторов, которую удалось заполнить: балл при 65 % и при 95 % это разные утверждения, даже если число одинаковое.

Параметры
ИмяЗначенияЧто делает
limitinteger 1…500 · по умолчанию 100Сколько записей вернуть. По умолчанию 100, не больше 500.
offsetinteger ≥ 0 · по умолчанию 0Сколько записей пропустить.
issuerstringПодстрока названия.
GET/api/v1/rates

Курсы онлайн-обменника

Ряд курсов Nembo: пара «покупка/продажа» на каждый срез. Обменник меняет курс несколько раз в день, и все срезы отдаются как есть. scale — сколько единиц валюты стоит цена: у рубля сто, и без этого поля ошибка выйдет ровно в сто раз.

Параметры
ИмяЗначенияЧто делает
limitinteger 1…500 · по умолчанию 100Сколько записей вернуть. По умолчанию 100, не больше 500.
offsetinteger ≥ 0 · по умолчанию 0Сколько записей пропустить.
currencyusd | eur | rubВалюта котировки. Только эти три: обменник считает по ним.
fromstring (date)С какой даты, YYYY-MM-DD.
Форма ответа

Один конверт на все маршруты

Чтобы клиент, написанный под один ресурс, читал остальные без переделки.

{
  "items": [ … ],
  "total": 812,
  "limit": 100,
  "offset": 0,
  "generatedAt": "2026-08-31T09:00:00.000Z"
}
  • totalСколько записей подходит под запрос целиком — чтобы знать, докуда листать, не листая.
  • generatedAtКогда собран ОТВЕТ. Свежесть самих данных — в полях записей: у выпуска своя, у балла своя.
  • ОшибкаВсегда объект с полем error и человеческим текстом. Разбирать сообщение не нужно — код ответа говорит всё.
Что мы обещаем

Правила игры

Ответы только из нашей базы

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

Рядом с баллом — покрытие

Доля веса факторов, которую удалось заполнить. Балл при 65 % и при 95 % — разные утверждения, даже если число одинаковое.

Методика открыта

Балл считается по опубликованной формуле, а не экспертным суждением: расчёт можно повторить и оспорить.

Ключ не нужен, регистрация не нужна, ответы кэшируются на час. Ссылка на stakan.finance приветствуется, но не обязательна. Как считается балл — на странице методики.