Документация → Быстрый старт
Быстрый старт
От ключа до отправленной SMS-рассылки за пять шагов.
За 10 минут: получить ключ, сделать первый запрос, найти гостя по телефону, отправить SMS-рассылку по сегменту и узнать о результате. Нужен только curl — или любой HTTP-клиент на вашем языке.
1. Получите ключ
Ключ выпускает владелец или управляющий ресторана: кабинет 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:
| Ответ | Что значит | Что сделать |
|---|---|---|
401invalid_api_key | Ключ не подходит | Проверьте, что скопирован целиком; отозван — выпустите новый |
403insufficient_scope | У ключа только чтение | Выпустите ключ с полным доступом |
403paid_feature_required | Выгрузка всей базы не подключена | Подключите опцию у менеджера или ищите гостя по телефону |
409empty_audience | В сегменте сейчас некому писать | Выберите другой сегмент |
429rate_limited | Слишком часто | Подождите Retry-After секунд |
Полный список — коды ошибок. Пишете в поддержку — приложите request_id из ответа.
Что дальше
- Обзор API — права ключа, формат данных, лимиты.
- Гости — выгрузка базы и синхронизация по
updated_after. - SMS-рассылки — все поля и статусы.
- OpenAPI-схема — сгенерировать клиент или импортировать в Postman.
