Для начала работы вам нужно зарегистрироваться на https://lkrc.ru.
Получить API-Key в личном кабинете https://lkrc.ru/user/settings.
Выбрать один из представленных пакетов https://lkrc.ru/tariff.
Детальные схемы ответов по отдельным продуктам вынесены в дополнительные справочники в этой же директории:
./doc_owner.html,
./doc_credit_rating.html,
./doc_risk.html,
./doc_check_owner.html.
./doc.html — основной сценарный API-гайд../doc_owner.html — CheckOwnerV2 / IndependentReportAI../doc_credit_rating.html — CreditRating../doc_risk.html — RiskAssessmentV2../doc_check_owner.html — CheckOwner API Details по источникам.
Во всех запросах необходимо передавать ключ в заголовке API-Key.
Значением этого заголовка является ваш персональный API-ключ, полученный в личном кабинете.
curl -X GET "https://apirc.ru/balance" \
-H "API-Key: YOUR_API_KEY"
Если нужно быстро запустить интеграцию, обычно достаточно пройти этот сценарий. Он покрывает большинство продуктов с асинхронной моделью работы.
Сделайте запрос к /balance. Если получили баланс, ключ валиден и можно продолжать интеграцию.
Отправьте POST /order, сохраните order_item_id для каждого продукта в заказе.
Запрашивайте POST /orders с массивом order_item_ids, пока статус не станет done.
Если продукт отдает файл, используйте /download. Если результат встроен в JSON, читайте поле data.
curl -X GET "https://apirc.ru/balance" \
-H "API-Key: YOUR_API_KEY"
curl -X POST "https://apirc.ru/order" \
-H "Content-Type: application/json" \
-H "API-Key: YOUR_API_KEY" \
-d '{
"order_items": [
{
"product_name": "CheckOwnerV2",
"metadata": {
"ownersData": [
{
"first": "Иван",
"surname": "Иванов",
"birthday": "1997-04-07T00:01:00.0Z",
"passport": "9217285273"
}
]
}
}
]
}'
curl -X POST "https://apirc.ru/orders" \
-H "Content-Type: application/json" \
-H "API-Key: YOUR_API_KEY" \
-d '{
"order_item_ids": ["YOUR_ORDER_ITEM_ID"]
}'
curl -X GET "https://apirc.ru/subscriptions/current?only_active=true&has_requests_left=true" \
-H "API-Key: YOUR_API_KEY"
curl -X GET "https://apirc.ru/subscriptions/usage?limit=20" \
-H "API-Key: YOUR_API_KEY"
Ниже короткая карта типовых сценариев. Она помогает быстро понять, какой метод использовать и чего ожидать от результата.
| Сценарий | Основной метод | Что обязательно сохранить | Где смотреть результат | Особенность |
|---|---|---|---|---|
| Обычный продукт с заказом | POST /order |
order_item_id |
POST /orders, затем /download или data |
Основной сценарий для большинства продуктов |
| Проверка физлица | POST /order с CheckOwnerV2 |
order_item_id |
POST /orders |
Качество результата зависит от полноты входных данных |
| Проверка контрагента | POST /order с CounterAgent |
order_item_id |
POST /orders |
Лучше передавать корректный ИНН и регион |
| Риск-отчёт по объекту | POST /order с RiskAssessmentV2 |
order_item_id |
POST /orders и дочерние risk-методы |
После создания заказа можно добавлять участников сделки |
| Поиск кадастрового номера | GET /search |
Кадастровый номер Number |
Результат возвращается сразу в ответе | Это синхронный метод, order_item_id не создаётся |
| Работа по подписке | GET /subscriptions/current |
subscription_id, plan_code, kind |
GET /subscriptions/usage |
Нужно следить за оставшимся лимитом запросов |
order_item_id, но и product_name, время создания заказа и последний известный статус. Это упрощает поддержку и повторные запросы.
Большинство асинхронных продуктов работают через создание заказа и последующий опрос статуса. Эти статусы стоит интерпретировать одинаково во всех интеграциях.
| Статус | Что означает | Что делать клиенту |
|---|---|---|
| done | Заказ завершён, результат готов. | Заберите данные из data или скачайте файл через /download. |
| in_progress | Заказ ещё обрабатывается. | Повторите опрос позже. Практически разумный интервал: от 1 до 3 минут. |
| waiting_for_payment | Недостаточно средств или оплата ещё не прошла. | Проверьте баланс и факт списания, затем повторите запрос. |
| action_required | Заказ требует вмешательства или завис на внешнем источнике. | Если статус не меняется более 3 рабочих дней, можно инициировать возврат или обратиться в поддержку. |
| refund | По заказу произведён возврат. | Не продолжайте polling; зафиксируйте возврат в своей системе. |
| deleted | Заказ удалён и больше недоступен. | Проверьте историю действий и не пытайтесь повторно скачать результат. |
Ниже список типовых проблем, которые чаще всего встречаются на этапе интеграции и в боевой эксплуатации.
| Ситуация | Частая причина | Что проверить |
|---|---|---|
401 / 403 |
Неверный API-ключ или доступ запрещён для владельца ключа. | Проверьте заголовок API-Key, окружение, пробелы и актуальность ключа в личном кабинете. |
400 / 422 |
Ошибка в структуре JSON или обязательных полях. | Сверьте тело запроса с примерами и убедитесь, что переданы поля нужного формата. |
404 при скачивании |
Некорректный order_item_id, неверный fileType или файл ещё не готов. |
Сначала запросите статус через POST /orders и убедитесь, что заказ в статусе done. |
not_enough_money = true |
На балансе недостаточно средств для создания заказа. | Запросите /balance, пополните баланс или смените тариф/пакет. |
| Пустой результат | По входным данным ничего не найдено или реестр не вернул данных. | Проверьте корректность ФИО, ИНН, адреса, кадастрового номера и полноту входных атрибутов. |
| Подписка есть, но запросы не проходят | Лимит закончился, подписка неактивна или фильтр выбран не по тому kind. |
Проверьте /subscriptions/current: активность, остаток лимита, kind и связанный продукт. |
Эти термины стоит одинаково трактовать и в коде интеграции, и в интерфейсе для операторов.
| Термин | Что означает | Зачем нужен |
|---|---|---|
product_name |
Техническое имя продукта, которое передаётся при создании заказа. | Определяет, какую именно проверку или отчёт вы заказываете. |
order_item_id |
Уникальный идентификатор конкретного элемента заказа. | По нему запрашиваются статус, результат и скачивание файла. |
kind |
Тип подписки или категория subscription-продукта. | Помогает понять, к какому классу запросов относится подписка. |
plan_code |
Код тарифного плана подписки. | Используется для различения пакетов, лимитов и условий биллинга. |
task_type |
Тип внутренней задачи в сложном продукте, например в risk-отчёте. | Позволяет отличать блоки результата друг от друга. |
job_name |
Название отдельной проверки или источника внутри задачи. | Нужно для интерпретации конкретного ответа по источнику. |
data |
Основной контейнер результата. | В зависимости от продукта может содержать JSON-ответ, массив объектов или ссылки на файлы. |
file_pdf_url, file_signed_zip_url |
Ссылки на готовые файлы отчёта. | Используются после получения статуса done. |
Чтобы снизить количество пустых или спорных результатов, важно разделять: что необходимо для технического принятия запроса и что повышает точность проверки.
| Сценарий | Технически обязательные поля | Поля, повышающие качество | Что будет, если не передавать |
|---|---|---|---|
Проверка физлица (CheckOwnerV2) |
first, surname + корректная оболочка order_items/metadata |
birthday, passport, inn, snils, patronymic, region |
Запрос может пройти, но возрастает риск неполного совпадения, пустых ответов и ложных совпадений. |
Проверка юрлица (CounterAgent) |
first, inn, region, owner_type |
Полное наименование компании, дополнительные идентификаторы и корректный регион | Повышается вероятность, что данные будут неполными или не совпадут с нужным контрагентом. |
Риск-отчёт (RiskAssessmentV2) |
product_name, object_key, базовые данные участника |
object_address, registration_number, паспорт/дата рождения/ИНН участника |
Часть risk-задач может отработать с меньшей детализацией или вернуть неполный набор найденных рисков. |
Поиск кадастрового номера (/search) |
query |
Полный и структурированный адрес: город, улица, дом, корпус, квартира | Чем менее точный адрес, тем больше шумных результатов или вероятность пустой выдачи. |
Один хороший и один плохой пример обычно ускоряют интеграцию лучше, чем длинный текстовый список ограничений.
{
"order_items": [
{
"product_name": "CheckOwnerV2",
"metadata": {
"ownersData": [
{
"first": "Иван",
"surname": "Петров",
"patronymic": "Александрович",
"birthday": "1978-08-01T00:00:00.000Z",
"passport": "1809370925",
"inn": "123456789012",
"region": "50",
"owner_type": 0
}
]
}
}
]
}
Почему хорошо: есть базовые идентификаторы и дата рождения, что уменьшает количество ложных совпадений.
{
"order_items": [
{
"product_name": "CheckOwnerV2",
"metadata": {
"ownersData": [
{
"first": "Иван",
"surname": "Иванов"
}
]
}
}
]
}
Почему плохо: запрос может быть принят, но точность будет низкой, особенно для распространённых ФИО.
{
"order_items": [
{
"product_name": "CounterAgent",
"metadata": {
"ownersData": [
{
"first": "АО Компания",
"inn": "1640011322",
"region": "16",
"owner_type": 1
}
]
}
}
]
}
Почему хорошо: заполнены ключевые поля для точной идентификации контрагента.
{
"order_items": [
{
"product_name": "CounterAgent",
"metadata": {
"ownersData": [
{
"first": "Компания"
}
]
}
}
]
}
Почему плохо: отсутствуют ИНН и регион, из-за чего вероятность релевантного результата резко падает.
# Хорошо:
GET /search?query=Москва,+пр-кт.+Рязанский,+д.+97,+корп.+2,+кв.+74
# Плохо:
GET /search?query=Рязанский
Почему плохо: короткий и неструктурированный запрос возвращает шум или слишком широкий список объектов.
{
"order_items": [
{
"product_name": "RiskAssessmentV2",
"object_key": "50:11:0050501:2982",
"object_address": "Московская область, ...",
"metadata": {
"ownersData": [
{
"owner_type": 0,
"first": "Иван",
"surname": "Петров",
"passport": "1809370925",
"birthday": "1978-08-01T00:00:00.000Z",
"region": "50",
"registration_number": "50-50/011-50/011/002/2016-5561/1"
}
]
}
}
]
}
{
"order_items": [
{
"product_name": "RiskAssessmentV2",
"object_key": "50:11:0050501:2982"
}
]
}
Почему второй вариант хуже: отчёт может построиться, но часть проверок по участникам сделки будет недоступна или неполна.
Раздел нужен для нового интегратора, чтобы быстро понять, активна ли подписка, есть ли лимит, и когда лучше использовать подписочный сценарий.
| Вопрос | Что проверить | Как интерпретировать |
|---|---|---|
| Подписка активна? | is_active, expires_at в GET /subscriptions/current |
Если is_active=true и срок не истек, подписка доступна для запросов. |
| Лимит закончился? | limit_reached, requests_left, is_unlimited |
Если limit_reached=true или requests_left=0 (при is_unlimited=false), лимит исчерпан. |
kind и продукт — это одно и то же? |
kind + product_name |
kind — тип подписки, product_name — конкретный продукт в API. |
| Где смотреть историю расходования? | GET /subscriptions/usage |
По usage видно, какие запросы прошли, с каким результатом и каким payload. |
/subscriptions/current и убедитесь, что нужный kind действительно активен.curl -X GET "https://apirc.ru/subscriptions/current?only_active=true&has_requests_left=true" \
-H "API-Key: YOUR_API_KEY"
Часть интеграционных проблем возникает из-за ожидания «всегда полный ответ». Ниже практическая норма по поведению API.
| Ситуация | Это нормально? | Комментарий |
|---|---|---|
| Пустой массив в поиске по адресу | Да | Означает, что по текущему запросу объект не найден в источнике, а не ошибку API. |
Часть полей в data отсутствует или null |
Да | Некоторые поля зависят от внешних реестров и могут отсутствовать для конкретного кейса. |
Долгий статус in_progress |
Да | Срок зависит от внешних источников. Нужен polling с разумным интервалом, не слишком частый. |
| Разная полнота результатов для похожих кейсов | Да | Качество зависит от полноты входных данных и актуальности внешних источников на момент запроса. |
| В usage нет распарсенного payload/response | Да | JSON-поля возвращаются только при include_result=true и валидном JSON в хранилище. |
Webhook отправляет событие order.final_status_changed, когда order_item переходит в терминальный статус: DONE, REFUND, DELETED, ACTION_REQUIRED.
Кроме событий по заказам, для продуктов мониторинга объекта доступны отдельные webhook-события семейства objectinfo_monitoring.*.
| Сценарий | Статус | Как использовать |
|---|---|---|
Личный кабинет /user/webhooks |
Планируется | UI-управление webhook подписками на странице https://lkrc.ru/user/webhooks. |
| Интеграция через API | Доступно сейчас | Используйте API-Key и методы /webhooks. |
POST /webhooks.secret и настройте проверку подписи на своей стороне.POST /webhooks/{webhookID}/ping.GET /webhooks и при авто-отключении вызывайте POST /webhooks/{webhookID}/reset.# 1) Создать подписку
curl -X POST "https://apirc.ru/webhooks" \
-H "API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"target_url": "https://client.example.com/hooks/realtycloud",
"active": true
}'
# 2) Тестовый вызов (ping)
curl -X POST "https://apirc.ru/webhooks/{webhookID}/ping" \
-H "API-Key: YOUR_API_KEY"
# 3) Проверить состояние подписок
curl -X GET "https://apirc.ru/webhooks" \
-H "API-Key: YOUR_API_KEY"
POST c JSON и быстро возвращать 2xx. Для безопасной обработки используйте X-RC-Webhook-Id/Idempotency-Key как ключ дедупликации и проверяйте подпись X-RC-Webhook-Signature.
| Событие | Когда приходит | На какие продукты действует | Какой payload приходит |
|---|---|---|---|
order.final_status_changed |
Когда любой order_item переходит в терминальный статус DONE, REFUND, DELETED или ACTION_REQUIRED. |
На все API-продукты, которые создаются через заказ и имеют order_item: например, CheckOwnerV2, CreditRating, IndependentReportAI, CounterAgent, CheckAuto, EGRN-продукты и другие. Точный продукт всегда можно определить по полю order.item.product_name. |
Снимок заказа и конкретного order_item на момент доставки webhook. |
webhook.ping |
Только при ручной проверке через POST /webhooks/{webhookID}/ping. |
Техническое событие, не зависит от продукта. | Минимальный тестовый payload без заказа. |
objectinfo_monitoring.* |
Когда срабатывают события мониторинга объекта: изменения, ошибки настройки, ошибки источника, нехватка баланса, напоминания об окончании, окончание подписки. | Только на продукты/сценарии мониторинга объекта (ObjectInfo). |
Payload с блоками monitoring и, при наличии проверки, check. |
order.final_status_changed{
"delivery_id": "f1f33ec5-3645-4b31-bc4a-1df2bb1b4267",
"type": "order.final_status_changed",
"occurred_at": "2026-03-04T18:20:00Z",
"order_id": "e2e0e58d-cf26-48fe-8b1d-7f533ef455a4",
"order_item_id": "30947b06-3eb1-4c4c-8f13-2cc53ff63c93",
"person_id": "e9d99ec7-1b8f-4f19-bb4c-206cc8404c65",
"status": "DONE",
"order": {
"order_id": "e2e0e58d-cf26-48fe-8b1d-7f533ef455a4",
"owner_id": "e9d99ec7-1b8f-4f19-bb4c-206cc8404c65",
"owner_email": "client@example.com",
"owner_phone": "+79990000000",
"paid": true,
"created_at": "2026-03-04T17:55:00Z",
"source": "https://partner.example.com",
"transaction_id": "7d2b73b8-a4fb-4a40-9f7a-f1f8db8829c8",
"transaction_status_id": 4,
"item": {
"order_item_id": "30947b06-3eb1-4c4c-8f13-2cc53ff63c93",
"order_id": "e2e0e58d-cf26-48fe-8b1d-7f533ef455a4",
"product_id": "30b9fa1e-27e7-4976-ba73-b4c4b03a1559",
"product_name": "CheckOwnerV2",
"amount": 1,
"price": "249",
"discount": "0",
"status": "done",
"comment": "",
"metadata": {
"ownersData": [
{
"first": "Иван",
"surname": "Иванов",
"patronymic": "Иванович",
"birthday": "1997-04-07T00:01:00.0Z",
"passport": "9217285273",
"region": "16",
"owner_type": 0
}
]
},
"rosreestr_request_id": "",
"item_metadata": {
"order_item_id": "30947b06-3eb1-4c4c-8f13-2cc53ff63c93"
},
"is_order_paid": true,
"download_link_pdf": "https://apirc.ru/download?orderID=30947b06-3eb1-4c4c-8f13-2cc53ff63c93&fileType=pdf",
"download_link_zip": "https://apirc.ru/download?orderID=30947b06-3eb1-4c4c-8f13-2cc53ff63c93&fileType=signed_zip",
"item_statuses": [
{
"status": "done",
"created_at": "2026-03-04T18:20:00Z"
}
]
}
}
}
order.final_status_changed| Поле | Тип | Описание |
|---|---|---|
delivery_id |
UUID | Уникальный идентификатор доставки webhook. Используйте как ключ идемпотентности. |
type |
string | Тип события. Для этого сценария всегда order.final_status_changed. |
occurred_at |
datetime | Время формирования payload в UTC. |
order_id, order_item_id, person_id |
UUID | Идентификаторы заказа, позиции заказа и владельца заказа. |
status |
string | Нормализованный терминальный API-статус: DONE, REFUND, DELETED, ACTION_REQUIRED. |
order |
object | Снимок заказа на момент доставки webhook. |
order.item.product_name |
string | Название продукта, по которому можно маршрутизировать обработку на своей стороне. |
order.item.metadata |
object | Исходные metadata заказа. Полезно для построения собственных DTO и повторной идентификации входных параметров. |
order.item.item_metadata |
object|null | Результирующие метаданные по продукту, если они доступны для данного типа отчёта. |
order.item.download_link_pdf, order.item.download_link_zip |
string | Ссылки на выгрузку готовых файлов, если они уже сформированы. |
webhook.ping{
"type": "webhook.ping",
"occurred_at": "2026-03-04T18:22:00Z",
"webhook_subscription_id": "0f58cd3c-2d8a-4f57-8d0d-a4bc570c9c62",
"message": "ping"
}
objectinfo_monitoring.changes_detected{
"type": "objectinfo_monitoring.changes_detected",
"occurred_at": "2026-03-16T09:45:00Z",
"person_id": "e9d99ec7-1b8f-4f19-bb4c-206cc8404c65",
"monitoring": {
"monitoring_id": "11111111-1111-1111-1111-111111111111",
"cadastr": "77:04:0002010:1101",
"frequency": "weekly",
"status": "active",
"duration_days": 0,
"tracking_keys": ["rights", "encumbrances"],
"has_unread_changes": true,
"successful_checks": 7,
"failed_checks": 1,
"charged_total_rub": "18.72",
"next_check_at": "2026-03-16T10:00:00Z",
"last_success_at": "2026-03-15T09:30:00Z",
"expires_at": "2026-04-01T00:00:00Z"
},
"check": {
"check_id": "22222222-2222-2222-2222-222222222222",
"status": "success_with_changes",
"http_status": 200,
"app_status": "success",
"success": true,
"consumed": true,
"amount_rub": "2.16",
"diff_summary": "Изменились права",
"diff_result": [
{
"key": "rights"
}
],
"created_at": "2026-03-16T09:45:00Z"
}
}
OrderFinalStatusChangedWebhook, WebhookPingPayload и ObjectInfoMonitoringWebhook. Разбор по бизнес-логике лучше делать по паре type + order.item.product_name.
Короткий changelog помогает интеграторам быстро понимать, что изменилось и нужно ли дорабатывать клиента.
| Дата | Изменение | Совместимость |
|---|---|---|
| 2026-07-22 | Документация и все примеры API переведены на домен apirc.ru. Подробные страницы доступны в /static/. |
Да: замените базовый URL https://api.realtycloud.pro на https://apirc.ru. |
| 2026-05-04 | В документации CheckOwner источники начислений Госуслуг обновлены: общий gosuslugi_bills разделён на gosuslugi_bills_driver_license, gosuslugi_bills_inn, gosuslugi_bills_passport, gosuslugi_bills_snils; источник mosgorsud удалён из списка. |
Breaking для клиентов, которые ожидали старый job name gosuslugi_bills или источник mosgorsud |
| 2026-03-26 | Раздел Webhooks: интеграция расширен точными JSON-моделями для order.final_status_changed, webhook.ping и objectinfo_monitoring.*, а также описанием того, на какие продукты распространяются события. |
Non-breaking (изменения только в документации) |
| 2026-03-04 | В doc.html добавлен раздел Webhooks: интеграция на основе webhooks_api.md с текущим flow через API-Key и пометкой о планируемой странице /user/webhooks. |
Non-breaking (изменения только в документации) |
| 2026-03-04 | Добавлены описания и относительные ссылки для файлов doc.html, doc_check_owner.html, doc_credit_rating.html, doc_owner.html, doc_risk.html; обновлены скрипты публикации send.sh и send.bat. |
Non-breaking (изменения только в документации) |
| 2026-03-04 | Добавлены разделы Quick Start, сценарии интеграции, статусы заказов, ошибки, глоссарий. | Non-breaking (изменения только в документации) |
| 2026-03-04 | Добавлены пояснения по обязательным полям, качеству результата, примерам хороших/плохих запросов, UX по подпискам, ожиданиям по результату. | Non-breaking (изменения только в документации) |
| 2026-03-04 | Для subscriptions задокументированы product_id, product_name, product_description и совместимость с API-Key. |
Backward compatible для API-клиентов |