Сценарий из mcp-everything. Актуально на 2026-10-24.
Заказ с сайта сразу появляется на кухне и у курьеров — без ручного переноса оператором.
import time, uuid, requests
API = "https://api-ru.iiko.services/api/1"
H = {"Authorization": f"Bearer {token}"}
org, tg = "<organizationId>", "<terminalGroupId>"
order_id = str(uuid.uuid4())
resp = requests.post(f"{API}/deliveries/create", headers=H, json={
"organizationId": org,
"terminalGroupId": tg,
"createOrderSettings": {"checkStopList": True},
"order": {
"id": order_id,
"externalNumber": "SITE-1042",
"phone": "+79990001122",
"orderServiceType": "DeliveryByCourier",
"deliveryPoint": {"address": {"street": {"name": "Ленина", "city": "Екатеринбург"}, "house": "10"},
"comment": "Домофон 45"},
"items": [{"type": "Product", "productId": "<productId>", "amount": 2}],
"payments": [{"paymentTypeKind": "Card", "paymentTypeId": "<paymentTypeId>", "sum": 1580}],
"comment": "Без лука",
},
}).json()
while True:
st = requests.post(f"{API}/commands/status", headers=H,
json={"organizationId": org, "correlationId": resp["correlationId"]}).json()
if st["state"] != "InProgress":
break
time.sleep(2)
print(st["state"])
https://api-ru.iiko.servicesТип: Bearer-токен
https://public-api.iikoweb.ru/portal и создайте приложение — получите appId и одноразово показываемый clientSecret.apiKey.POST /api/v2/access_token и передавайте его во всех запросах: Authorization: Bearer {token}.Токен (JWT) действует 1 час; refresh-токена нет — запрашивайте новый до истечения срока. Старый метод POST /api/1/access_token с apiLogin устарел.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
organizationIds |
body | array | да | ID организаций |
Команда: статус выполнения проверяется через /api/1/commands/status.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
organizationId |
body | string | да | ID организации (uuid) |
terminalGroupId |
body | string | нет | ID терминальной группы, куда отправить заказ |
createOrderSettings.transportToFrontTimeout |
body | integer | нет | Сколько секунд даётся на доставку заказа в iikoFront |
createOrderSettings.checkStopList |
body | boolean | нет | Проверять позиции по стоп-листу |
order |
body | object | да | Заказ |
order.id |
body | string | нет | ID заказа (уникальный uuid); если не передан — генерируется |
order.externalNumber |
body | string | нет | Внешний номер заказа |
order.completeBefore |
body | string | нет | Время выполнения yyyy-MM-dd HH:mm:ss.fff, локальное для терминала |
order.phone |
body | string | да | Телефон: начинается с +, не меньше 8 цифр |
order.orderTypeId |
body | string | нет | Тип заказа; указывается он или orderServiceType |
order.orderServiceType |
body | string | нет | Тип обслуживания; указывается он или orderTypeId |
order.deliveryPoint.address |
body | object | нет | Адрес доставки (не нужен для самовывоза) |
order.deliveryPoint.coordinates |
body | object | нет | Координаты адреса |
order.deliveryPoint.comment |
body | string | нет | Доп. информация |
order.comment |
body | string | нет | Комментарий к заказу |
order.customer.type |
body | string | да | Тип клиента (если передаётся customer) |
order.guests.count |
body | integer | да | Число персон — определяет число приборов (если передаётся guests) |
order.items |
body | array | да | Позиции заказа |
order.items[].type |
body | string | да | Тип позиции |
order.items[].amount |
body | number | да | Количество |
order.items[].productSizeId |
body | string | нет | Размер; обязателен, если у позиции есть шкала размеров |
order.items[].comment |
body | string | нет | Комментарий |
order.combos |
body | array | нет | Комбо: id, name, amount, price, sourceId |
order.payments |
body | array | нет | Оплаты заказа |
order.marketingSourceId |
body | string | нет | Рекламный источник |
order.priceCategoryId |
body | string | нет | Ценовая категория |
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
organizationId |
body | string | да | ID организации |
orderIds |
body | array | нет | ID заказов; обязательно, если нет posOrderIds |
posOrderIds |
body | array | нет | ID заказов в POS; обязательно, если нет orderIds |
sourceKeys |
body | array | нет | Ключи источников |
returnExternalDataKeys |
body | array | нет | Ключи внешних данных |
Код ответа 410 — correlationId больше не поддерживается.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
organizationId |
body | string | да | ID организации |
correlationId |
body | string | да | ID операции из ответа команды |
Authorization; в каждом можно передать заголовок Timeout (секунды).correlationId, итог — через /api/1/commands/status.yyyy-MM-dd HH:mm:ss.fff без часового пояса, локальное время терминала.Data: dictionaries, Data: menu, Orders: creating и др.) — права API-ключа настраиваются по этим группам./api/1/access_token, /api/1/nomenclature, /api/2/menu/by_id — используйте /api/v2/access_token и /api/menu/v3/by_id.Если этого недостаточно — официальная документация: https://api-ru.iiko.services/docs Вся интеграция одним документом: https://mcp-everything.ru/integrations/iiko.md