Разработчикам
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 |
| Создание аккаунта Finmind | 5/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 для языковых моделей.