Finmind
Язык интерфейса

Разработчикам

HTTP API платформы Finmind

Всё, что показывают публичные страницы рынка, доступно в JSON по тому же адресу без входа. Остальная часть API обслуживает платформу после входа и требует токен аккаунта Finmind. На этой странице описано то, что есть сегодня, с настроенными лимитами; справочником служит схема OpenAPI.

Базовый URL https://finmind.uz. Версия схемы 0.1.0. Проверено на рабочей среде 2026-09-26.

Без входа

Публичные эндпоинты

Они отвечают любому клиенту. Ответы кешируются на сервере на десять минут и отправляются с публичным заголовком Cache-Control, поэтому клиент тоже может их кешировать. Если чтение источника не удалось, они отвечают 503 с заголовком Retry-After, а не устаревшим или пустым телом.

Публичные эндпоинты, что они возвращают и их лимит
ПутьВозвращаетЛимит запросов
GET /api/v1/public/market/instruments/Все акции и облигации UZSE, которые отслеживает Finmind: тикер, ISIN, название, сектор, последняя сохранённая цена закрытия, изменение с предыдущего сохранённого торгового дня и дата сделки; as_of: последний торговый день в данных.600 в минуту
GET /api/v1/public/market/stocks/<TICKER>/Одна акция: последний торговый день (открытие, максимум, минимум, закрытие, объём, дата сделки), дневные цены закрытия за год, фундаментальные показатели из отчётности, эмитент, его последние раскрытия и другие типы акций.600 в минуту
GET /api/v1/public/market/bonds/<ISIN>/Одна облигация: номинал, купон, периодичность, даты выпуска и погашения, размещённое количество, последний торговый день, история цен закрытия и раскрытия эмитента.600 в минуту
GET /api/v1/public/market/disclosures/Пятьдесят последних раскрытий эмитентов с openinfo.uz: тикер, эмитент, заголовок, категория, время публикации и ссылка на источник.600 в минуту
GET /api/v1/blog/posts/Опубликованные статьи блога на английском и узбекском; отдельная статья по адресу /api/v1/blog/posts/<slug>/.нет
GET /api/v1/health/Работоспособность: проверки базы данных и кеша и версия API.нет

Деньги и цены передаются строками JSON с точными десятичными значениями, никогда не числами с плавающей точкой. trade_date: торговый день биржи, к которому относится сохранённая цена закрытия; изменение считается относительно предыдущего сохранённого торгового дня, который для малоликвидной акции может быть на несколько недель раньше. Раскрытия содержат published_at в UTC и published_date по ташкентскому календарю.

Попробуйте

Три запроса, которые работают сегодня

Каждый пример выполнен на рабочей среде 2026-09-26; показанный ответ сокращён до названных полей.

Индекс инструментов с последним торговым днём в данных

curl -s https://finmind.uz/api/v1/public/market/instruments/

Ответ, сокращённо

{"as_of": "2026-09-25",
 "stocks": [{"ticker": "AGBA", "isin": "UZ7001560000", "name": "Agrobank ATB",
             "share_class": "common", "sector": "Financials",
             "last": "589", "change_pct": "-0.17", "trade_date": "2026-09-25"}, ...],
 "bonds":  [{"isin": "UZ6057687AE6", "ticker": "BFMT2B5",
             "coupon_rate_pct": "27", "maturity_date": "2028-01-20",
             "currency": "UZS", "last": "123998", "trade_date": "2026-09-25"}, ...]}

Одна акция: последний торговый день и цены закрытия за год

curl -s https://finmind.uz/api/v1/public/market/stocks/AGBA/

Ответ, сокращённо

{"kind": "stock", "ticker": "AGBA", "isin": "UZ7001560000", "name": "Agrobank ATB",
 "currency": "UZS", "exchange": "UZSE",
 "issuer": {"sector": "Financials", "sub_industry": "Diversified Banks", ...},
 "quote": {"last": "589", "prev_close": "590", "change": "-1", "change_pct": "-0.17",
           "open": "609", "high": "609", "low": "589", "volume": "28615",
           "trade_date": "2026-09-25", "prev_trade_date": "2026-09-24"},
 "history": [..., {"date": "2026-09-25", "close": "589"}],
 "fundamentals": {...}, "disclosures": [...], "other_share_classes": [...]}

Одна облигация по ISIN

curl -s https://finmind.uz/api/v1/public/market/bonds/UZ6057687AE6/

Ответ, сокращённо

{"kind": "bond", "isin": "UZ6057687AE6", "ticker": "BFMT2B5",
 "issuer": "BIZNES FINANS MIKROMOLIYA TASHKILOTI MChJ",
 "face_value": "100000", "coupon_rate_pct": "27", "coupon_frequency_per_year": 12,
 "issue_date": "2026-01-28", "maturity_date": "2028-01-20", "matured": false,
 "quote": {"last": "123998", "prev_close": "120000", "change_pct": "3.33",
           "trade_date": "2026-09-25", "prev_trade_date": "2026-09-24"},
 "history": [...], "disclosures": [...]}

После входа

Аутентификация и права

Всем остальным эндпоинтам нужен JSON Web Token, полученный по электронной почте и паролю аккаунта Finmind. Токен несёт собственные права человека: эндпоинт платной функции отвечает 401 без токена и 403 с кодом feature_locked, если у аккаунта Finmind нет этой функции. Бесплатным разделам каталога (портфель, список заявок, обучение) нужен только токен.

curl -s -X POST https://finmind.uz/api/v1/auth/token/ \
  -H 'Content-Type: application/json' \
  -d '{"email": "[email protected]", "password": "..."}'
# {"refresh": "...", "access": "..."}

curl -s https://finmind.uz/api/v1/portfolio/ \
  -H 'Authorization: Bearer <access>'
Токен доступа
Действует минут: 30. Передаётся в заголовке Authorization: Bearer.
Токен обновления
Действует дней: 7. Отправьте его POST-запросом на /api/v1/auth/token/refresh/; каждое обновление возвращает новую пару и отзывает старую.
Аккаунты Finmind с двухфакторной аутентификацией
Первый запрос вместо токена возвращает twofa_required и challenge; второй шаг описан в схеме.
Выйти
Чтобы отозвать токен обновления, отправьте его POST-запросом на /api/v1/auth/logout/.

Ограничения

Лимиты запросов, постраничный вывод и версии

Общего лимита запросов нет; у эндпоинтов ниже свои лимиты, которые считаются по адресу клиента. Ограниченный запрос получает ответ 429 с заголовком Retry-After.

Лимиты запросов по группам эндпоинтов
ЭндпоинтыЛимит запросов
Четыре публичных эндпоинта рынка600/min
Получение токена10/min
Создание аккаунта Finmind5/min
Форма обратной связи5/min
Ассистент (после входа)20/min
Запросы к открытым данным (после входа)30/min

Списки выдаются постранично через page и page_size (по умолчанию 50, не больше 500). Обслуживается один префикс версии, /api/v1; несовместимое изменение появилось бы под новым префиксом.

Говорим прямо

Чего пока нет

  • Нет API-ключей. Токен: это собственный вход человека в Finmind, действующий только для его данных и прав; отдельных учётных данных разработчика пока нет.
  • Нет запросов из браузера с других сайтов. CORS разрешает только finmind.uz, поэтому страница на другом домене не может обращаться к API из браузера посетителя; сервер, скрипт или notebook могут.
  • Нет котировок в реальном времени. Цены: сохранённые дневные цены закрытия биржи; у каждой указан торговый день, к которому она относится, а показатель, который источник не публикует, равен null, никогда не нулю.
  • Опубликованной политики вывода из эксплуатации пока нет. Есть один префикс версии, и схема указывает свою версию; мы предпочитаем сказать это, а не обещать политику, которую ещё не написали.

Условия использования

Использование данных

На API распространяются условия использования. Личное использование, исследования и инструмент для собственных инвестиций приветствуются. Для массовой выгрузки, перепродажи или распространения данных сначала нужно наше письменное разрешение: напишите на [email protected] и расскажите, что вы создаёте. Публикуя цифры, указывайте источники: цены принадлежат бирже (uzse.uz), а сведения о компаниях и раскрытия взяты с openinfo.uz; и то и другое читает Finmind.

Машиночитаемые соседи: лента раскрытий по адресу /feeds/disclosures.xml, карта сайта и /llms.txt для языковых моделей.