M MenuLabБаза знаний Поддержка

Публичный API

Быстрый старт

Создайте API-клиента и передайте первый заказ.

Обновлено 20 августа 2026

1. Создайте API-клиента

Администратор ресторана открывает в CRM Настройки → Интеграции → API-клиенты, создаёт клиента и выбирает пресет: «Сайт», «Мобильное приложение» или «Агрегатор».

Новая рабочая интеграция получает профиль Standard: 120 запросов/минуту и 10 000/сутки. Профиль Sandbox используйте только для разработки; Business и High volume назначаются сетям и крупным интеграциям отдельно.

Сразу сохраните три значения:

  • API key;
  • API secret;
  • webhook secret.

Секреты показываются при создании или регенерации. Не передавайте их в браузер, HTML, JavaScript публичного сайта или мобильное приложение.

Мобильное приложение вызывает ваш backend, а уже backend подписывает запрос к MenuLab API.

2. Настройте webhook

Укажите публичный HTTPS URL backend-обработчика, например:

https://integration.example.com/webhooks/menulab

Основные события заказа: order.created, order.updated, order.paid, order.completed, order.cancelled. Для всех возвратов также обрабатывайте payment.refund.requested, payment.refund.succeeded и payment.refund.failed; внешний эквайер вызывайте только при action_required: true.

3. Создайте заказ

curl -X POST "https://restaurant.example/api/v1/orders" \
  -H "X-API-Key: $MENULAB_API_KEY" \
  -H "X-API-Secret: $MENULAB_API_SECRET" \
  -H "X-Idempotency-Key: site-order-100-create" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "external_id": "site-order-100",
    "source": "website",
    "type": "pickup",
    "payment_method": "online",
    "customer_phone": "+79991234567",
    "items": [{"dish_id": 101, "quantity": 1}]
  }'

Сохраните data.id из ответа рядом со своим external_id.

4. Получайте состояние

Основной канал — webhook. Для сверки или восстановления после сбоя используйте лёгкий запрос:

curl "https://restaurant.example/api/v1/orders/status?external_id=site-order-100&source=website" \
  -H "X-API-Key: $MENULAB_API_KEY" \
  -H "X-API-Secret: $MENULAB_API_SECRET" \
  -H "Accept: application/json"

Пример ответа:

{
  "success": true,
  "data": {
    "order_id": 3812,
    "external_id": "site-order-100",
    "status": "pending",
    "payment_status": "pending",
    "payment_method": "online"
  }
}

5. Проверьте обязательные сценарии

Перед production проверьте создание, повтор запроса с тем же ключом идемпотентности, webhook, оплату, отмену из API, отмену из POS и полный онлайн-возврат.