Отрасль: CRM и продажи. Актуально на 2026-10-24.
REST API CRM для интернет-магазинов и ритейла RetailCRM: заказы и их история, клиенты, товары и остатки, оплаты, справочники, доставка, телефония, задачи. Запросы выполняются к поддомену аккаунта, ключ передаётся параметром apiKey. Актуальная версия — v5, предыдущие сохранены для совместимости и не рекомендуются.
Каждый заказ интернет-магазина сразу попадает в CRM с клиентом, товарами, доставкой и оплатой.
curl -X POST "https://<поддомен>.retailcrm.ru/api/v5/orders/create" \
--data-urlencode "apiKey=$RCRM_KEY" \
--data-urlencode 'site=my-shop' \
--data-urlencode 'order={
"externalId": "1042",
"orderMethod": "shopping-cart",
"firstName": "Иван",
"lastName": "Петров",
"phone": "+79990001122",
"email": "ivan@example.ru",
"items": [{"offer": {"externalId": "SKU-17"}, "quantity": 2, "initialPrice": 990}],
"delivery": {"address": {"text": "Москва, ул. Тверская, 1, кв. 5"}, "cost": 300},
"customerComment": "Позвонить за час"
}'
Синхронизация статусов и состава заказов из RetailCRM в свою систему.
curl -G "https://<поддомен>.retailcrm.ru/api/v5/orders/history" \
--data-urlencode "apiKey=$RCRM_KEY" \
-d 'filter[sinceId]=15230' \
-d limit=100
Оплата пришла в платёжной системе — заказ в CRM переходит в нужный статус, оплата отмечается.
curl -X POST "https://<поддомен>.retailcrm.ru/api/v5/orders/1042/edit" \
--data-urlencode "apiKey=$RCRM_KEY" \
--data-urlencode 'by=externalId' \
--data-urlencode 'site=my-shop' \
--data-urlencode 'order={"status": "assembling"}'
curl -X POST "https://<поддомен>.retailcrm.ru/api/v5/orders/payments/create" \
--data-urlencode "apiKey=$RCRM_KEY" \
--data-urlencode 'site=my-shop' \
--data-urlencode 'payment={"order": {"externalId": "1042"}, "type": "bank-card", "amount": 2280, "status": "paid", "paidAt": "2026-10-24 18:30:00"}'
Синхронизировать остатки со склада, чтобы операторы видели, что есть в наличии.
curl -X POST "https://<поддомен>.retailcrm.ru/api/v5/store/inventories/upload" \
--data-urlencode "apiKey=$RCRM_KEY" \
--data-urlencode 'site=my-shop' \
--data-urlencode 'offers=[
{"externalId": "SKU-17", "stores": [{"code": "main", "available": 25}]},
{"externalId": "SKU-18", "stores": [{"code": "main", "available": 0}]}
]'
https://{your-subdomain}.retailcrm.ru/api/v5/Тип: API-ключ
API-ключ создаётся в аккаунте RetailCRM и передаётся в параметре apiKey (GET или POST). Если ключ даёт доступ к нескольким магазинам, части методов нужен параметр site — символьный код магазина. Запросы — только по HTTPS, кодировка UTF-8.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
apiKey |
query | string | да | API-ключ |
filter |
query | object | нет | Фильтр: filter[numbers][], filter[externalIds][], filter[customerId], filter[email], filter[minPrice], filter[maxPrice], filter[trackNumber] и др. |
limit |
query | integer | нет | Количество записей на странице |
page |
query | integer | нет | Номер страницы, по умолчанию 1 |
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
externalId |
path | string | да | Внешний или внутренний ID заказа |
by |
query | string | нет | externalId или id |
site |
query | string | нет | Код магазина |
Тело — application/x-www-form-urlencoded; объект order передаётся JSON-строкой.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
apiKey |
body | string | да | API-ключ |
site |
body | string | нет | Код магазина |
order |
body | string (JSON) | да | Заказ |
order.externalId |
body | string | нет | Внешний ID |
order.number |
body | string | нет | Номер заказа |
order.orderType |
body | string | нет | Тип заказа |
order.orderMethod |
body | string | нет | Способ оформления, например phone |
order.status |
body | string | нет | Статус, например assembling |
order.firstName |
body | string | нет | Имя |
order.lastName |
body | string | нет | Фамилия |
order.patronymic |
body | string | нет | Отчество |
order.phone |
body | string | нет | Телефон |
order.email |
body | string | нет | |
order.customer |
body | object | нет | Привязка к клиенту (id и тип) |
order.managerId |
body | integer | нет | Менеджер |
order.items |
body | array | нет | Позиции: offer, quantity, priceType, purchasePrice и др. |
order.delivery |
body | object | нет | Доставка: address, cost, netCost и др. |
order.payments |
body | array | нет | Оплаты: type, status, amount, paidAt |
order.customFields |
body | object | нет | Пользовательские поля |
order.shipmentStore |
body | string | нет | Склад отгрузки |
order.shipmentDate |
body | string | нет | Дата отгрузки |
order.customerComment |
body | string | нет | Комментарий клиента |
order.managerComment |
body | string | нет | Комментарий оператора |
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
externalId |
path | string | да | Внешний или внутренний ID заказа |
by |
body | string | нет | externalId или id |
site |
body | string | нет | Код магазина |
order |
body | string (JSON) | да | Изменяемые поля заказа |
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
filter |
query | object | нет | Фильтр истории |
limit |
query | integer | нет | Количество записей |
page |
query | integer | нет | Страница |
Статусы заказов по списку ID или внешних ID.
Добавляет оплату к заказу. Изменение — POST /api/v5/orders/payments/{id}/edit, удаление — POST /api/v5/orders/payments/{id}/delete.
Загружает несколько заказов за раз. При частичных ошибках возвращает нестандартный код 460 с uploadedOrders и errors.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
filter |
query | object | нет | Фильтр |
limit |
query | integer | нет | Количество записей |
page |
query | integer | нет | Страница |
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
site |
body | string | нет | Код магазина |
customer |
body | string (JSON) | да | Клиент |
customer.externalId |
body | string | нет | Внешний ID |
customer.firstName |
body | string | нет | Имя |
customer.lastName |
body | string | нет | Фамилия |
customer.email |
body | string | нет | |
customer.phones |
body | array | нет | Телефоны |
customer.address |
body | object | нет | Адрес |
customer.managerId |
body | integer | нет | Менеджер |
customer.customFields |
body | object | нет | Пользовательские поля |
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
externalId |
path | string | да | Внешний или внутренний ID клиента |
by |
body | string | нет | externalId или id |
site |
body | string | нет | Код магазина |
customer |
body | string (JSON) | да | Изменяемые поля |
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
filter |
query | object | нет | Фильтр |
limit |
query | integer | нет | Количество записей |
page |
query | integer | нет | Страница |
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
offers |
body | string (JSON) | да | Торговые предложения с остатками |
site |
body | string | нет | Код магазина |
application/x-www-form-urlencoded, а вложенные структуры (order, customer, offers) — JSON-строкой внутри поля формы.site.limit, totalCount, currentPage, totalPageCount./orders/history и /customers/history, а не полную перевыгрузку списков.460 при пакетной загрузке означает, что часть заказов загружена с ошибками; загруженные перечислены в uploadedOrders.| Код | Описание |
|---|---|
400 |
Неверные параметры запроса; детали в errors |
403 |
Не передан или неверен apiKey, либо ограничение по IP |
404 |
Аккаунт не найден |
460 |
Заказы загружены с ошибками (uploadedOrders, errors) |
500 |
Ошибка приложения |
503 |
Превышен лимит запросов или сервис перегружен |
/api/telephony/*.HTTP/1.1 503 Service Temporarily Unavailable.Если этого недостаточно — официальная документация: https://rest-api-docs.retailcrm.ru/v5/ JSON: https://mcp-everything.ru/api/integrations/retailcrm. MCP: https://mcp-everything.ru/mcp