Войти в ЛК
Разделы документации

Документация → Быстрый старт

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

От ключа до отправленной SMS-рассылки за пять шагов.

За 10 минут: получить ключ, сделать первый запрос, найти гостя по телефону, отправить SMS-рассылку по сегменту и узнать о результате. Нужен только curl — или любой HTTP-клиент на вашем языке.

1. Получите ключ

Ключ выпускает владелец или управляющий ресторана: кабинет LazyCRM → Интеграции → блок API → впишите, для кого ключ (например, «Сайт доставки»), выберите доступ и нажмите «Выпустить ключ».

Кабинет LazyCRM, Интеграции → API: выпущенный ключ «Сайт доставки», поле названия, выбор доступа, кнопка «Выпустить ключ» и блок вебхука
  • Полный доступ — гости, сегменты и отправка рассылок. Только чтение — без отправки.
  • Ключ показывается один раз — сразу передайте его разработчику. Потеряли — отзовите и выпустите новый.
  • Хотите сначала попробовать без настоящих SMS — попросите у менеджера LazyCRM тестовый ключ lcrm_test_…: всё работает так же, но SMS никому не уходят и деньги не списываются.

Дальше в примерах ключ лежит в переменной окружения:

export LAZYCRM_KEY="lcrm_live_…"

2. Первый запрос: сегменты

Проверим, что ключ работает, и посмотрим, каким гостям можно написать.

curl https://app.lazycrm.ru/v1/segments \
  -H "Authorization: Bearer $LAZYCRM_KEY"
{
  "data": [
    {"id": "seg_at_risk", "object": "segment", "name": "Под угрозой ухода",
     "description": "Ходили часто, пропали ~45 дней", "kind": "rfm",
     "guests_count": 1830, "reachable_count": 1412, "updated_at": "2026-10-14T03:00:00Z"},
    {"id": "seg_loyal", "object": "segment", "name": "Лояльные", …}
  ],
  "has_more": false,
  "next_cursor": null
}

guests_count — гостей в сегменте, reachable_count — сколько из них получат SMS прямо сейчас: без отписавшихся, без телефона и с учётом частотного лимита ресторана. Ответ 401 invalid_api_key — ключ скопирован не полностью или отозван.

3. Найдите гостя по телефону

Например, когда гость оформляет заказ на сайте: узнать, сколько он заказывал и в каких он сегментах. Номер в формате +79001234567; плюс в URL кодируется как %2B.

curl "https://app.lazycrm.ru/v1/guests/lookup?phone=%2B79001234567" \
  -H "Authorization: Bearer $LAZYCRM_KEY"
{
  "id": "gst_7Hq2kP9x",
  "object": "guest",
  "phone": "+79001234567",
  "name": "Анна",
  "orders_count": 14,
  "total_spent": {"amount": "15400.00", "currency": "RUB"},
  "first_order_date": "2025-03-02",
  "last_order_date": "2026-10-12",
  "segment_ids": ["seg_loyal"],
  "sms_opt_out": false,
  "updated_at": "2026-10-13T21:04:11Z"
}

Такого гостя нет — 404 not_found. Выгрузить всю базу целиком можно отдельной платной опцией.

4. Отправьте SMS-рассылку

Рассылка идёт в два шага: сначала черновик — он ничего не отправляет и показывает, сколько гостей получат SMS и сколько это стоит; потом отправка.

Черновик. Возьмите id сегмента из шага 2:

curl -X POST https://app.lazycrm.ru/v1/campaigns \
  -H "Authorization: Bearer $LAZYCRM_KEY" \
  -H "Content-Type: application/json" \
  -d '{"segment_id": "seg_at_risk", "text": "Скучаем! −15% по коду BACK15"}'
{
  "id": "cmp_Q4n8Rt2v",
  "status": "draft",
  "audience_count": 1412,
  "sms_parts": 1,
  "cost": {"amount": "8472.00", "currency": "RUB"},
  …
}

Отправка. Заголовок Idempotency-Key обязателен — любая уникальная строка, например UUID. Если ответ потерялся из-за сети, повторите запрос с тем же ключом: вернётся тот же ответ, вторая рассылка не создастся.

IDEM=$(uuidgen)   # сохраните: повтор — с этим же значением
curl -X POST https://app.lazycrm.ru/v1/campaigns/cmp_Q4n8Rt2v/send \
  -H "Authorization: Bearer $LAZYCRM_KEY" \
  -H "Idempotency-Key: $IDEM"

В ответе "status": "sending" — SMS начинают уходить в течение пары минут. Отправить позже — передайте scheduled_at при создании черновика; запланированную рассылку можно отменить до начала отправки.

Статус.

curl https://app.lazycrm.ru/v1/campaigns/cmp_Q4n8Rt2v \
  -H "Authorization: Bearer $LAZYCRM_KEY"
{
  "id": "cmp_Q4n8Rt2v",
  "status": "sent",
  "stats": {"sent": 1412, "delivered": 1350, "failed": 12},
  "cost": {"amount": "8472.00", "currency": "RUB"},
  …
}

Доставка досчитывается ещё сутки после sent.

5. Узнавайте о результате без опроса

Чтобы не опрашивать статус, подключите вебхук: кабинет → Интеграции → API → Вебхук → адрес вашего сервера (только https) → «Подключить». Один раз покажется секрет подписи whsec_… — сохраните его.

При каждой смене статуса рассылки LazyCRM пришлёт POST:

{"id": "evt_2bX9", "type": "campaign.sent", "created_at": "2026-10-14T09:41:02Z",
 "data": {"id": "cmp_Q4n8Rt2v"}}

Ответьте любым 2xx в течение 10 секунд; не ответили — повторим позже. Подпись проверяется по стандарту Standard Webhooks: готовые библиотеки есть для Python, Node.js, Go, PHP и других языков, а пример на Python — в разделе События и вебхуки.

Если что-то не так

Каждая ошибка приходит с машинным code и понятным detail:

ОтветЧто значитЧто сделать
401
invalid_api_key
Ключ не подходитПроверьте, что скопирован целиком; отозван — выпустите новый
403
insufficient_scope
У ключа только чтениеВыпустите ключ с полным доступом
403
paid_feature_required
Выгрузка всей базы не подключенаПодключите опцию у менеджера или ищите гостя по телефону
409
empty_audience
В сегменте сейчас некому писатьВыберите другой сегмент
429
rate_limited
Слишком частоПодождите Retry-After секунд

Полный список — коды ошибок. Пишете в поддержку — приложите request_id из ответа.

Что дальше

  • Обзор API — права ключа, формат данных, лимиты.
  • Гости — выгрузка базы и синхронизация по updated_after.
  • SMS-рассылки — все поля и статусы.
  • OpenAPI-схема — сгенерировать клиент или импортировать в Postman.