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

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

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

Всё, что показывают открытые рыночные страницы, доступно в JSON по тому же адресу без входа. Остальная часть API обслуживает платформу после входа и требует токен аккаунта Finmind или, для собственных систем организации, API-ключ организации. Эта страница описывает то, что существует сегодня, с настроенными лимитами; справочником служит схема 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 нет этой функции. Бесплатным разделам каталога (список заявок, обучение) нужен только токен, а инструментам тарифа Essentials, например портфелю, нужен этот тариф.

curl -s -X POST https://finmind.uz/api/v1/auth/token/ \
  -H 'Content-Type: application/json' \
  -d '{"email": "you@example.com", "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/.

Для организаций

API-ключи организации

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

curl -s https://finmind.uz/api/v1/orgs/<organisation>/market/instruments/ \
  -H 'Authorization: Api-Key fm_org_<prefix>_<secret>'
Показывается один раз
Полный ключ показывается один раз при создании. Finmind хранит только отпечаток SHA-256 его секретной части и не может показать его снова.
Срок действия
90 дней, если не выбрано иное, не более 365 дней. До 20 действующих ключей на организацию.
Лимит запросов
120 запросов в минуту на все ключи организации вместе и на каждый ключ, если договор не предусматривает больше; для рыночных данных также действует открытый лимит 600 в минуту, считается на организацию. Ограниченный запрос получает ответ 429 с заголовком Retry-After.
Когда ключ перестаёт работать
Ключ отозван, истёк, организация приостановлена или закрыта, или договор больше не включает доступ через API: ответ 401 с кодом, который называет причину. Отозванные ключи остаются в списке; ничто не удаляет ключ.
Области доступа API-ключей организации и что они открывают
Область доступаОткрывает
market:readАкции и облигации UZSE: список инструментов, одна акция, одна облигация. Для внутреннего использования организацией, с указанием источников в каждом ответе./api/v1/orgs/<organisation>/market/instruments/ /api/v1/orgs/<organisation>/market/stocks/<TICKER>/ /api/v1/orgs/<organisation>/market/bonds/<ISIN>/
portfolios:readПортфели организации: список, карточка, оценка, сохранённые оценки, распределение, активы, операции, депозиты, ручные инструменты, ручные цены, импорты; а также выгрузки CSV или XLSX, если договор включает выгрузку данных./api/v1/orgs/<organisation>/portfolios/ /api/v1/orgs/<organisation>/portfolios/<portfolio>/holdings/ /api/v1/orgs/<organisation>/portfolios/<portfolio>/valuation/ /api/v1/orgs/<organisation>/exports/
portfolios:importОтправка файла позиций или операций в портфель: сначала предпросмотр, затем запись. Каждая запись попадает в аудит с хешем файла и числом строк./api/v1/orgs/<organisation>/portfolios/<portfolio>/import/preview/ /api/v1/orgs/<organisation>/portfolios/<portfolio>/import/commit/
reports:readСформированные отчёты организации. Пока ни один адрес это не обслуживает.
limits:readПравила лимитов и их проверки. Пока ни один адрес это не обслуживает.

Рыночные данные через ключ или в выгрузке предназначены только для внутреннего использования организацией и не подлежат распространению; каждый ответ содержит объект data_licence с источниками (uzse.uz, openinfo.uz, cbu.uz). Собственные позиции и операции организации принадлежат ей без этого ограничения. Каждый импорт и каждая выгрузка записываются в журнал аудита организации.

Ограничения

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

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

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

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

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

Чего пока нет

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

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

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

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

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