Документация

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

Типовая интеграция с CRM укладывается в три запроса: убедиться, что ключ работает, передать клиента после закрытого заказа и посмотреть, что ему ушло. Дальше вебхуки сами сообщат, когда клиент поставит оценку.

Перед началом

  1. В кабинете откройте Разработчикам → Ключи API и выпустите ключ. Прав по умолчанию хватает для всего, что ниже.
  2. Там же скопируйте идентификатор точки, для которой будете просить отзывы, — или получите список запросом GET /locations.
  3. Убедитесь, что тариф оплачен: на пробном периоде отправка сообщений вернёт 402 plan_required.

1. Проверить ключ

GET /ping доступен любому действующему ключу и возвращает организацию и выданные права — удобно, чтобы убедиться в правильности настройки до первого боевого вызова.

curl
curl https://evidra.ru/api/v1/ping \
  -H "Authorization: Bearer evd_live_…"
200 OK
{
  "ok": true,
  "organization": { "id": "clx…", "name": "Кофейня «Утро»" },
  "scopes": ["locations:read", "contacts:write", "cascades:write", "cascades:read"]
}

2. Событие из CRM: клиент обслужен → просим отзыв

POST /contacts создаёт или обновляет контакт по вашему externalId и с флагом startCascade сразу ставит его в сценарий каскада организации. Это один вызов на одно событие «заказ закрыт».

curl
curl -X POST https://evidra.ru/api/v1/contacts \
  -H "Authorization: Bearer evd_live_…" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: order-10423" \
  -d '{
    "externalId": "crm-client-8821",
    "name": "Анна",
    "email": "anna@example.com",
    "phone": "+7 912 345-67-89",
    "locationId": "<id точки>",
    "consentAt": "2026-08-30T10:00:00+03:00",
    "startCascade": true
  }'
200 OK
{
  "contact": { "id": "clx…", "externalId": "crm-client-8821", … },
  "cascade": { "id": "clx…", "queued": 1 }
}
Idempotency-Key здесь не формальность. Вебхуки CRM повторяются при таймауте, и без ключа каждый повтор — ещё одно письмо тому же человеку. Подставляйте номер заказа или ID сделки.

Передавайте и email, и телефон, если они есть: многошаговый сценарий может начать с письма и через сутки догнать SMS. Шаг по недостающему контакту движок просто пропустит.

3. Проверить, что ушло

GET /cascades/{id} — идентификатор из ответа предыдущего шага. Показывает получателей, статус каждого шага и оценку, если клиент уже ответил.

curl
curl https://evidra.ru/api/v1/cascades/<id> \
  -H "Authorization: Bearer evd_live_…"

Опрашивать этот метод по расписанию не нужно: подключите вебхук — событие cascade.recipient.finished придёт само с оценкой клиента и причиной завершения.

Каналы и их методы

Кроме сценария организации можно отправить запрос в один конкретный канал — у каждого свой метод и своё поле контакта. Список каналов и их готовность отдаёт GET /channels: читайте его в коде вместо жёсткого списка, новые каналы появляются в API автоматически вместе со своим методом.

КаналМетодПоле контакта
EmailPOST /channels/email/sendemail
SMSPOST /channels/sms/sendphone

Что дальше