Free
Для прототипов и оценки API
- 1 000 запросов / период
- 60 запросов / минуту
- 1 активных API-ключей
Ищите компании через нормализованный JSON и при необходимости возвращайтесь к национальным полям, файлу и хешу первоисточника.
Быстрый старт
Все методы данных используют единый контракт авторизации. SDK не обязателен: достаточно обычного HTTP-клиента.
Откройте API-кабинет, задайте название окружения и сразу сохраните секрет — повторно он не показывается.
Открыть API-кабинет →Используйте X-API-Key или Bearer. В консоли API уже указаны правильный URL и параметры.
Ответ содержит X-Request-ID. Передавайте его поддержке при разборе конкретного запроса.
Авторизация
Создавайте отдельный ключ для production, staging и аналитики. Ключ действует от имени аккаунта и расходует его общую месячную квоту.
OpenRegister сохраняет только SHA-256-хеш. Не помещайте секрет в строку запроса, клиентский пакет, логи или публичный репозиторий.
X-API-Key Серверные интеграции и запросы данных.
Clerk session Кабинет, ключи и управление подпиской.
Stripe-Signature Только подписанные события от Stripe.
Пагинация
Поиск сортируется по названию и стабильному ID. Используйте значения из meta, а не вычисляйте число страниц на клиенте.
page1…N Номер запрашиваемой страницы.
pageSize1…100 По умолчанию возвращается 25 записей.
meta.totalinteger Количество записей по текущему фильтру.
meta.pageCountinteger Число доступных страниц.
Лимиты и квоты
Минутный лимит защищает API от всплесков, месячная квота ограничивает объём тарифа. Оба счётчика возвращаются после каждого успешного запроса данных.
| Header | Значение |
|---|---|
X-RateLimit-Limit | Лимит запросов в минуту. |
X-RateLimit-Remaining | Остаток в текущем окне. |
X-RateLimit-Reset | Unix timestamp сброса окна. |
X-Monthly-Quota-Limit | Квота расчётного периода. |
X-Monthly-Quota-Remaining | Остаток запросов в периоде. |
X-Monthly-Quota-Reset | Дата нового периода в формате ISO 8601. |
Ошибки
Обрабатывайте error.code программно, а message показывайте в логах. requestId связывает ошибку с серверным запросом.
{
"error": {
"code": "invalid_api_key",
"message": "The API key is invalid or revoked",
"requestId": "69a27c71-44ab-4c0c-a95d-1a1ea8da24cc",
"docs": "https://md.hanta.io/docs/api"
}
}invalid_request Параметр или UUID имеет неверный формат.
api_key_required Заголовок с API-ключом отсутствует.
invalid_api_key Ключ неизвестен, отозван или повреждён.
entity_not_found Запись с таким OpenRegister ID не найдена.
rate_limit_exceeded Исчерпан минутный лимит ключа.
monthly_quota_exceeded Исчерпана квота расчётного периода.
Версионирование
Текущий стабильный контракт — /api/v1. В рамках v1 мы можем добавлять новые nullable-поля и методы, но не удаляем поля и не меняем их тип без новой версии.
Справочник API
Все три метода требуют API-ключ и возвращают заголовки лимитов. Нажмите «Показать пример», чтобы открыть готовый запрос в консоли.
/countriesДоступные сейчас и запланированные реестры.
Параметры не требуются.
/entitiesПоиск по названию или IDNO с фильтрами и стабильной пагинацией.
qstring Фрагмент названия или регистрационного номера без учёта регистра.
countrystring Двухбуквенный код страны ISO 3166-1.
legalFormstring Точное национальное значение организационно-правовой формы.
activitystring Точное значение или код вида деятельности.
activityTypeunlicensed | licensed Тип списка деятельности: unlicensed или licensed.
pageinteger Номер страницы. По умолчанию — 1.
pageSizeinteger Размер страницы от 1 до 100. По умолчанию — 25.
/entities/{id}Нормализованные поля, национальная запись и происхождение источника.
iduuidобязательно OpenRegister ID из результата поиска.
Справочник API
Нормализованные поля одинаковы для всех стран. Национальная структура остаётся в registry и sourceData, поэтому новые страны не ломают общий контракт.
iduuid Стабильный идентификатор OpenRegister.
countryCodestring Код юрисдикции ISO 3166-1 alpha-2.
canonicalNamestring Название для поиска и отображения.
statusstring Нормализованный статус записи.
legalFormstring | null Национальная организационно-правовая форма.
registryobject Типизированные и расшифрованные национальные поля.
sourceDataobject Исходные поля без потерь и переименований.
registrationsarray Регистрационные номера и локальные статусы.
provenanceobject | null Файл, хеш, дата импорта и URL первоисточника.
Тарифы API
При исчерпании квоты API останавливает запросы с 429 — неожиданный счёт не появится.
/api/v1/plansпубличныйДля прототипов и оценки API
Для продуктовых интеграций
Для больших объёмов и нескольких окружений
Методы аккаунта
Эти методы обслуживают API-кабинет и используют токен сеанса Clerk или cookie сеанса. Ключ Registry API для них не подходит.
/api/v1/account Тариф, использование, статус оплаты и активные ключи.
/api/v1/auth/me Профиль текущего пользователя Clerk.
/api/v1/api-keys Список активных ключей без секретов.
/api/v1/api-keys Создать ключ и один раз вернуть полный секрет.
/api/v1/api-keys/{id} Отозвать ключ текущего аккаунта.
/api/v1/health/live Процесс запущен и принимает HTTP-запросы.
/api/v1/health/ready Приложение и PostgreSQL готовы принимать трафик.
Оплата через Stripe
Платные планы оформляются в Stripe Checkout. Счета, способ оплаты, смена тарифа и отмена доступны через Stripe Customer Portal из API-кабинета.
Доступ меняется только после подписанного webhook-события Stripe, а не после перенаправления из Checkout.
/api/v1/plans Публичный каталог тарифов и доступных возможностей.
/api/v1/billing/checkout Создать сеанс Stripe Checkout.
/api/v1/billing/portal Создать сеанс Stripe Customer Portal.
/api/v1/billing/webhook Внутренний метод с заголовком Stripe-Signature.
checkout.session.completedcustomer.subscription.createdcustomer.subscription.updatedcustomer.subscription.deletedcustomer.subscription.pausedcustomer.subscription.resumedID события сохраняется до обработки, поэтому повторная доставка безопасна. Более старое событие не перезаписывает новое состояние подписки.