{"name":"iikoCloud API","vendor":"iiko","industry":"retail","summary":"Облачный API ресторанной системы iiko для внешних интеграций: организации и терминальные группы, внешние меню и стоп-листы, заказы на доставку и заказы в зале, банкеты и резервы, курьеры, программа лояльности iikoCard, складские и финансовые документы, номенклатура, сотрудники и OLAP-отчёты. Почти все методы — `POST` с JSON-телом; в спецификации около 350 путей, здесь — основные для доставки и меню.","docsUrl":"https://api-ru.iiko.services/docs","coverage":{"included":[],"excluded":[]},"scenarios":[{"id":"podklyuchitsya-i-nayti-svoi-restorany","title":"Подключиться и найти свои рестораны","summary":"Первый шаг любой интеграции: токен, организации и терминальные группы, куда будут уходить заказы.","steps":["Создай приложение на портале разработчика public-api.iikoweb.ru — получишь appId и clientSecret (показывается один раз). В iikoWeb → «Интеграции» → «API-ключи» сгенерируй apiKey: он определяет, к каким организациям будет доступ.","Получи токен: POST /api/v2/access_token с apiKey, appId и clientSecret. Токен живёт час, refresh-токена нет — запрашивай новый заранее, например каждые 50 минут, и передавай в заголовке Authorization: Bearer <token>.","Получи организации: POST /api/1/organizations (пустой organizationIds — все доступные). returnAdditionalInfo = true добавит адрес и версию RMS.","Получи терминальные группы доставки: POST /api/1/terminal_groups с organizationIds. Их ID понадобятся при создании заказа."],"code":"TOKEN=$(curl -s -X POST https://api-ru.iiko.services/api/v2/access_token \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"apiKey\": \"<apiKey>\", \"appId\": \"<appId>\", \"clientSecret\": \"<clientSecret>\"}' | jq -r .token)\n\ncurl -s -X POST https://api-ru.iiko.services/api/1/organizations \\\n  -H \"Authorization: Bearer $TOKEN\" -H 'Content-Type: application/json' \\\n  -d '{\"organizationIds\": [], \"returnAdditionalInfo\": true}'\n\ncurl -s -X POST https://api-ru.iiko.services/api/1/terminal_groups \\\n  -H \"Authorization: Bearer $TOKEN\" -H 'Content-Type: application/json' \\\n  -d '{\"organizationIds\": [\"<organizationId>\"]}'","language":"bash","methods":["POST /api/v2/access_token","POST /api/1/organizations","POST /api/1/terminal_groups"]},{"id":"vygruzit-menyu-na-sayt-s-uchetom-stop","title":"Выгрузить меню на сайт с учётом стоп-листа","summary":"Меню сайта или приложения доставки всегда совпадает с кассой: цены, позиции и то, что сейчас закончилось.","steps":["Получи список внешних меню и ценовых категорий: POST /api/2/menu (тело пустое). В ответе externalMenus и priceCategories.","Загрузи нужное меню: POST /api/menu/v3/by_id с externalMenuId, organizationId и при необходимости priceCategoryId. Старые /api/1/nomenclature и /api/2/menu/by_id устарели — не используй их.","Получи стоп-листы: POST /api/1/stop_lists с organizationIds (и terminalGroupsIds, если нужен конкретный ресторан). Скрывай или помечай позиции из стопа.","Меню обновляй по расписанию, а стоп-лист — часто: он меняется в течение дня."],"code":"H=(-H \"Authorization: Bearer $TOKEN\" -H 'Content-Type: application/json')\n\ncurl -s -X POST https://api-ru.iiko.services/api/2/menu \"${H[@]}\" -d '{}'\n\ncurl -s -X POST https://api-ru.iiko.services/api/menu/v3/by_id \"${H[@]}\" \\\n  -d '{\"externalMenuId\": \"<externalMenuId>\", \"organizationId\": \"<organizationId>\", \"priceCategoryId\": null}'\n\ncurl -s -X POST https://api-ru.iiko.services/api/1/stop_lists \"${H[@]}\" \\\n  -d '{\"organizationIds\": [\"<organizationId>\"], \"returnSize\": true}'","language":"bash","methods":["POST /api/2/menu","POST /api/menu/v3/by_id","POST /api/1/stop_lists"]},{"id":"peredat-zakaz-dostavki-s-sayta-na-kassu","title":"Передать заказ доставки с сайта на кассу","summary":"Заказ с сайта сразу появляется на кухне и у курьеров — без ручного переноса оператором.","steps":["Получи типы оплат: POST /api/1/payment_types с organizationIds — нужен ID типа оплаты для order.payments.","Создай заказ: POST /api/1/deliveries/create с organizationId, terminalGroupId и order — phone (с +), orderServiceType (DeliveryByCourier или DeliveryByClient для самовывоза), deliveryPoint.address, items (тип, productId, amount; productSizeId — если у блюда есть размеры), payments. Передай свой order.id (UUID) — он защитит от дублей при повторе.","createOrderSettings.checkStopList = true не даст создать заказ с позицией из стоп-листа.","Создание асинхронное: в ответе correlationId. Проверяй POST /api/1/commands/status с organizationId и correlationId, пока state не станет Success или Error.","Текущий статус и детали заказа — POST /api/1/deliveries/by_id с organizationId и orderIds. Время в iiko — локальное время терминала, без часового пояса."],"code":"import time, uuid, requests\n\nAPI = \"https://api-ru.iiko.services/api/1\"\nH = {\"Authorization\": f\"Bearer {token}\"}\norg, tg = \"<organizationId>\", \"<terminalGroupId>\"\norder_id = str(uuid.uuid4())\n\nresp = requests.post(f\"{API}/deliveries/create\", headers=H, json={\n    \"organizationId\": org,\n    \"terminalGroupId\": tg,\n    \"createOrderSettings\": {\"checkStopList\": True},\n    \"order\": {\n        \"id\": order_id,\n        \"externalNumber\": \"SITE-1042\",\n        \"phone\": \"+79990001122\",\n        \"orderServiceType\": \"DeliveryByCourier\",\n        \"deliveryPoint\": {\"address\": {\"street\": {\"name\": \"Ленина\", \"city\": \"Екатеринбург\"}, \"house\": \"10\"},\n                          \"comment\": \"Домофон 45\"},\n        \"items\": [{\"type\": \"Product\", \"productId\": \"<productId>\", \"amount\": 2}],\n        \"payments\": [{\"paymentTypeKind\": \"Card\", \"paymentTypeId\": \"<paymentTypeId>\", \"sum\": 1580}],\n        \"comment\": \"Без лука\",\n    },\n}).json()\n\nwhile True:\n    st = requests.post(f\"{API}/commands/status\", headers=H,\n                       json={\"organizationId\": org, \"correlationId\": resp[\"correlationId\"]}).json()\n    if st[\"state\"] != \"InProgress\":\n        break\n    time.sleep(2)\nprint(st[\"state\"])","language":"python","methods":["POST /api/1/payment_types","POST /api/1/deliveries/create","POST /api/1/deliveries/by_id","POST /api/1/commands/status"]},{"id":"otmenit-zakaz-i-poluchat-statusy","title":"Отменить заказ и получать статусы вебхуками","summary":"Гость отменил заказ на сайте — отмена доходит до кассы; статусы заказов приходят к тебе сами, без опроса.","steps":["Отмени заказ: POST /api/1/deliveries/cancel с organizationId, orderId и, при необходимости, cancelCauseId и cancelComment. Это тоже команда — итог проверяй через POST /api/1/commands/status. Ответ 410 значит, что correlationId устарел.","Чтобы не опрашивать заказы, настрой вебхуки: POST /api/1/webhooks/update_settings с organizationId, webHooksUri (твой HTTPS-обработчик), authToken (iiko передаст его обработчику — проверяй его) и webHooksFilter.","Обработчик должен быстро отвечать 200 и обрабатывать событие асинхронно; по ID заказа из события сверяйся через POST /api/1/deliveries/by_id."],"code":"H=(-H \"Authorization: Bearer $TOKEN\" -H 'Content-Type: application/json')\n\ncurl -s -X POST https://api-ru.iiko.services/api/1/deliveries/cancel \"${H[@]}\" \\\n  -d '{\"organizationId\": \"<organizationId>\", \"orderId\": \"<orderId>\", \"cancelComment\": \"Гость отменил на сайте\"}'\n\ncurl -s -X POST https://api-ru.iiko.services/api/1/webhooks/update_settings \"${H[@]}\" \\\n  -d '{\"organizationId\": \"<organizationId>\", \"webHooksUri\": \"https://example.ru/iiko/webhook\", \"authToken\": \"<секрет>\"}'","language":"bash","methods":["POST /api/1/deliveries/by_id","POST /api/1/deliveries/cancel","POST /api/1/commands/status","POST /api/1/webhooks/update_settings"]}],"baseUrls":[{"label":"Боевой","url":"https://api-ru.iiko.services"}],"auth":{"type":"bearer","description":"- Зарегистрируйтесь на портале разработчика `https://public-api.iikoweb.ru/portal` и создайте приложение — получите `appId` и одноразово показываемый `clientSecret`.\n- В iikoWeb → «Интеграции» → «API-ключи» сгенерируйте `apiKey`.\n- Получите токен методом `POST /api/v2/access_token` и передавайте его во всех запросах: `Authorization: Bearer {token}`.\n\nТокен (JWT) действует 1 час; refresh-токена нет — запрашивайте новый до истечения срока. Старый метод `POST /api/1/access_token` с `apiLogin` устарел.","example":""},"methods":[{"id":"POST /api/v2/access_token","title":"Получение токена","httpMethod":"POST","path":"/api/v2/access_token","description":"В ответе: `correlationId` и `token`.","params":[{"name":"apiKey","in":"body","type":"string","required":true,"description":"API-ключ из iikoWeb; определяет доступные организации"},{"name":"appId","in":"body","type":"string","required":true,"description":"ID приложения с портала разработчика (uuid)"},{"name":"clientSecret","in":"body","type":"string","required":true,"description":"Секрет приложения с портала разработчика"},{"name":"Timeout","in":"header","type":"integer","required":false,"description":"Таймаут в секундах, по умолчанию 15"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"POST /api/1/organizations","title":"Организации","httpMethod":"POST","path":"/api/1/organizations","description":"","params":[{"name":"organizationIds","in":"body","type":"array","required":false,"description":"ID организаций; по умолчанию — все доступные"},{"name":"returnAdditionalInfo","in":"body","type":"boolean","required":false,"description":"Вернуть доп. информацию (версия RMS, страна, адрес)"},{"name":"includeDisabled","in":"body","type":"boolean","required":false,"description":"Включить отключённые организации"},{"name":"returnExternalData","in":"body","type":"array","required":false,"description":"Ключи внешних данных"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"POST /api/1/terminal_groups","title":"Группы терминалов доставки","httpMethod":"POST","path":"/api/1/terminal_groups","description":"","params":[{"name":"organizationIds","in":"body","type":"array","required":true,"description":"ID организаций"},{"name":"includeDisabled","in":"body","type":"boolean","required":false,"description":"Включить отключённые группы"},{"name":"returnExternalData","in":"body","type":"array","required":false,"description":"Ключи внешних данных"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"POST /api/2/menu","title":"Внешние меню и ценовые категории","httpMethod":"POST","path":"/api/2/menu","description":"Без параметров. В ответе: `correlationId`, `externalMenus`, `priceCategories`.","params":[],"requestExample":"","responseExample":"","docsUrl":""},{"id":"POST /api/menu/v3/by_id","title":"Внешнее меню по ID","httpMethod":"POST","path":"/api/menu/v3/by_id","description":"","params":[{"name":"externalMenuId","in":"body","type":"string","required":true,"description":"ID внешнего меню из /api/2/menu"},{"name":"organizationId","in":"body","type":"string","required":true,"description":"ID организации (uuid)"},{"name":"priceCategoryId","in":"body","type":"string","required":false,"description":"Ценовая категория из /api/2/menu"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"POST /api/1/stop_lists","title":"Стоп-листы","httpMethod":"POST","path":"/api/1/stop_lists","description":"","params":[{"name":"organizationIds","in":"body","type":"array","required":true,"description":"ID организаций"},{"name":"terminalGroupsIds","in":"body","type":"array","required":false,"description":"ID терминальных групп"},{"name":"returnSize","in":"body","type":"boolean","required":false,"description":"Возвращать размеры блюд"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"POST /api/1/payment_types","title":"Типы оплат","httpMethod":"POST","path":"/api/1/payment_types","description":"","params":[{"name":"organizationIds","in":"body","type":"array","required":true,"description":"ID организаций"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"POST /api/1/deliveries/create","title":"Создание заказа на доставку","httpMethod":"POST","path":"/api/1/deliveries/create","description":"Команда: статус выполнения проверяется через `/api/1/commands/status`.","params":[{"name":"organizationId","in":"body","type":"string","required":true,"description":"ID организации (uuid)"},{"name":"terminalGroupId","in":"body","type":"string","required":false,"description":"ID терминальной группы, куда отправить заказ"},{"name":"createOrderSettings.transportToFrontTimeout","in":"body","type":"integer","required":false,"description":"Сколько секунд даётся на доставку заказа в iikoFront"},{"name":"createOrderSettings.checkStopList","in":"body","type":"boolean","required":false,"description":"Проверять позиции по стоп-листу"},{"name":"order","in":"body","type":"object","required":true,"description":"Заказ"},{"name":"order.id","in":"body","type":"string","required":false,"description":"ID заказа (уникальный uuid); если не передан — генерируется"},{"name":"order.externalNumber","in":"body","type":"string","required":false,"description":"Внешний номер заказа"},{"name":"order.completeBefore","in":"body","type":"string","required":false,"description":"Время выполнения yyyy-MM-dd HH:mm:ss.fff, локальное для терминала"},{"name":"order.phone","in":"body","type":"string","required":true,"description":"Телефон: начинается с +, не меньше 8 цифр"},{"name":"order.orderTypeId","in":"body","type":"string","required":false,"description":"Тип заказа; указывается он или orderServiceType"},{"name":"order.orderServiceType","in":"body","type":"string","required":false,"description":"Тип обслуживания; указывается он или orderTypeId"},{"name":"order.deliveryPoint.address","in":"body","type":"object","required":false,"description":"Адрес доставки (не нужен для самовывоза)"},{"name":"order.deliveryPoint.coordinates","in":"body","type":"object","required":false,"description":"Координаты адреса"},{"name":"order.deliveryPoint.comment","in":"body","type":"string","required":false,"description":"Доп. информация"},{"name":"order.comment","in":"body","type":"string","required":false,"description":"Комментарий к заказу"},{"name":"order.customer.type","in":"body","type":"string","required":true,"description":"Тип клиента (если передаётся customer)"},{"name":"order.guests.count","in":"body","type":"integer","required":true,"description":"Число персон — определяет число приборов (если передаётся guests)"},{"name":"order.items","in":"body","type":"array","required":true,"description":"Позиции заказа"},{"name":"order.items[].type","in":"body","type":"string","required":true,"description":"Тип позиции"},{"name":"order.items[].amount","in":"body","type":"number","required":true,"description":"Количество"},{"name":"order.items[].productSizeId","in":"body","type":"string","required":false,"description":"Размер; обязателен, если у позиции есть шкала размеров"},{"name":"order.items[].comment","in":"body","type":"string","required":false,"description":"Комментарий"},{"name":"order.combos","in":"body","type":"array","required":false,"description":"Комбо: id, name, amount, price, sourceId"},{"name":"order.payments","in":"body","type":"array","required":false,"description":"Оплаты заказа"},{"name":"order.marketingSourceId","in":"body","type":"string","required":false,"description":"Рекламный источник"},{"name":"order.priceCategoryId","in":"body","type":"string","required":false,"description":"Ценовая категория"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"POST /api/1/deliveries/by_id","title":"Заказы доставки по ID","httpMethod":"POST","path":"/api/1/deliveries/by_id","description":"","params":[{"name":"organizationId","in":"body","type":"string","required":true,"description":"ID организации"},{"name":"orderIds","in":"body","type":"array","required":false,"description":"ID заказов; обязательно, если нет posOrderIds"},{"name":"posOrderIds","in":"body","type":"array","required":false,"description":"ID заказов в POS; обязательно, если нет orderIds"},{"name":"sourceKeys","in":"body","type":"array","required":false,"description":"Ключи источников"},{"name":"returnExternalDataKeys","in":"body","type":"array","required":false,"description":"Ключи внешних данных"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"POST /api/1/deliveries/cancel","title":"Отмена заказа доставки","httpMethod":"POST","path":"/api/1/deliveries/cancel","description":"Команда; статус — через `/api/1/commands/status`.","params":[{"name":"organizationId","in":"body","type":"string","required":true,"description":"ID организации"},{"name":"orderId","in":"body","type":"string","required":true,"description":"ID заказа"},{"name":"cancelCauseId","in":"body","type":"string","required":false,"description":"Причина отмены из /api/1/cancel_causes"},{"name":"cancelComment","in":"body","type":"string","required":false,"description":"Комментарий к отмене"},{"name":"removalTypeId","in":"body","type":"string","required":false,"description":"Тип удаления для напечатанных позиций"},{"name":"movedOrderId","in":"body","type":"string","required":false,"description":"ID нового заказа, если заказ перенесён"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"POST /api/1/order/create","title":"Создание заказа в зале","httpMethod":"POST","path":"/api/1/order/create","description":"Команда; статус — через `/api/1/commands/status`.","params":[{"name":"organizationId","in":"body","type":"string","required":true,"description":"ID организации"},{"name":"terminalGroupId","in":"body","type":"string","required":true,"description":"ID терминальной группы"},{"name":"order.items","in":"body","type":"array","required":true,"description":"Позиции заказа"},{"name":"order.tableIds","in":"body","type":"array","required":false,"description":"ID столов"},{"name":"order.phone","in":"body","type":"string","required":false,"description":"Телефон гостя"},{"name":"order.guestCount","in":"body","type":"integer","required":false,"description":"Число гостей"},{"name":"order.payments","in":"body","type":"array","required":false,"description":"Оплаты"},{"name":"createOrderSettings.servicePrint","in":"body","type":"boolean","required":false,"description":"Автоматическая сервисная печать"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"POST /api/1/commands/status","title":"Статус команды","httpMethod":"POST","path":"/api/1/commands/status","description":"Код ответа `410` — `correlationId` больше не поддерживается.","params":[{"name":"organizationId","in":"body","type":"string","required":true,"description":"ID организации"},{"name":"correlationId","in":"body","type":"string","required":true,"description":"ID операции из ответа команды"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"POST /api/1/webhooks/update_settings","title":"Настройка вебхуков","httpMethod":"POST","path":"/api/1/webhooks/update_settings","description":"","params":[{"name":"organizationId","in":"body","type":"string","required":true,"description":"ID организации"},{"name":"webHooksUri","in":"body","type":"string","required":true,"description":"URL обработчика вебхуков"},{"name":"authToken","in":"body","type":"string","required":false,"description":"Токен авторизации, передаваемый обработчику"},{"name":"webHooksFilter","in":"body","type":"object","required":false,"description":"Фильтр событий"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"POST /api/1/loyalty/iiko/customer/info","title":"Информация о госте (лояльность)","httpMethod":"POST","path":"/api/1/loyalty/iiko/customer/info","description":"","params":[{"name":"type","in":"body","type":"string","required":true,"description":"Критерий поиска гостя"},{"name":"organizationId","in":"body","type":"string","required":false,"description":"ID организации"}],"requestExample":"","responseExample":"","docsUrl":""}],"codeExamples":[],"errors":[{"code":"400","description":"Некорректный запрос"},{"code":"401","description":"Нет авторизации или токен истёк"},{"code":"408","description":"Таймаут запроса"},{"code":"410","description":"correlationId больше не поддерживается (commands/status)"},{"code":"500","description":"Внутренняя ошибка"}],"limits":"","gotchas":["Все запросы, кроме получения токена, требуют заголовок `Authorization`; в каждом можно передать заголовок `Timeout` (секунды).","Методы-команды (создание, отмена, изменение заказов) выполняются асинхронно: в ответе `correlationId`, итог — через `/api/1/commands/status`.","Форматы: uuid — строка UUID; дата-время — `yyyy-MM-dd HH:mm:ss.fff` без часового пояса, локальное время терминала.","Методы сгруппированы по группам ограничений (`Data: dictionaries`, `Data: menu`, `Orders: creating` и др.) — права API-ключа настраиваются по этим группам.","Часть полей доступна только с определённой версии iikoRMS (в документации — пометки «Allowed from version»).","Устаревшие методы: `/api/1/access_token`, `/api/1/nomenclature`, `/api/2/menu/by_id` — используйте `/api/v2/access_token` и `/api/menu/v3/by_id`."],"slug":"iiko","version":2,"updatedAt":"2026-10-24T17:05:33.719Z","sources":[{"title":"iikoCloud API","url":"https://api-ru.iiko.services/docs","kind":"research","addedAt":"2026-10-17T07:09:01.681Z"},{"title":"Спецификация OpenAPI","url":"https://api-ru.iiko.services/api-docs/docs","kind":"research","addedAt":"2026-10-17T07:09:01.681Z"},{"title":"Портал разработчика iiko","url":"https://public-api.iikoweb.ru/portal","kind":"research","addedAt":"2026-10-17T07:09:01.681Z"},{"title":"Вставленный текст","url":"","kind":"import","addedAt":"2026-10-17T07:09:01.681Z"},{"title":"scenarios-iiko.md","url":"","kind":"import","addedAt":"2026-10-24T17:05:25.043Z"}],"logoUrl":null}