Документация
API Evidra
REST API, чтобы ваша CRM, сайт или касса передавали нам клиентов и запускали запрос отзыва без ручной загрузки списков. Обратное направление — вебхуки: мы сами сообщим, когда клиент поставил оценку или сообщение не дошло.
Что можно сделать
- Передать контакт и сразу поставить его в каскад — одно событие «заказ закрыт» в CRM, один вызов.
- Запустить каскад для списка получателей по сценарию организации или в один канал.
- Получить персональную ссылку на отзыв, чтобы отправить её своими каналами.
- Узнать статус каскада: кому что ушло, кто открыл, кто поставил оценку.
- Получать события вебхуками: завершение каскада по клиенту, доставка и сбой сообщения.
Если вы только начинаете — идите в быстрый старт: три запроса покрывают типовую интеграцию с CRM.
Базовый адрес
Все методы живут под https://evidra.ru/api/v1. Запросы и ответы — JSON в кодировке UTF-8, даты — ISO 8601 с часовым поясом. Версия зашита в путь: несовместимые изменения выйдут отдельной версией, текущая останется работать.
Машиночитаемая спецификация — OpenAPI 3.1. Её можно отдать генератору клиентов и не писать HTTP-обвязку руками. Справочник на этом сайте собирается из неё же, поэтому они не расходятся.
Авторизация
Ключ выпускается в кабинете: Разработчикам → Ключи API. Он показывается один раз при выпуске — сохраните его в секреты вашей системы. Ключ передаётся в заголовке:
Authorization: Bearer evd_live_…Если конструктор интеграций не умеет составной заголовок, подойдёт X-Api-Key: evd_live_… — оба варианта равнозначны.
Организация определяется ключом. Ни один метод не принимает идентификатор организации в запросе — его нельзя ни передать, ни подменить. Точки, сценарии и каскады видны только те, что принадлежат организации ключа.
Права ключа
При выпуске ключа выбираются права. Метод, требующий права, которого у ключа нет, вернёт 403 insufficient_scope. Права крупные, по ресурсу, а не по методу — так проще выдать «читать точки + ставить каскады», чем собирать матрицу из десятка галочек.
| Право | Что разрешает | По умолчанию |
|---|---|---|
locations:read | Читать точки. Список точек с их идентификаторами — интегратору нужен, чтобы указать точку в запросе. | да |
contacts:write | Передавать контакты. Создавать и обновлять контакты клиентов бизнеса (покупатели из CRM). | да |
cascades:write | Запускать каскады. Ставить контакты в каскад запроса отзыва и отправлять сообщения. | да |
cascades:read | Читать статусы каскадов. Смотреть, что ушло получателям и как они ответили. | да |
review-requests:write | Создавать ссылки на отзыв. Получать персональную ссылку /r/<token>, чтобы отправить её своими каналами. | нет |
Какое право нужно конкретному методу — указано у каждого метода в справочнике. Служебные методы (/ping, /channels) доступны любому действующему ключу.
Идемпотентность
Методы, которые отправляют сообщения, принимают заголовок Idempotency-Key — любую строку до 255 символов, уникальную для операции на вашей стороне (номер заказа, ID сделки). Повтор запроса с тем же ключом в течение 24 часов вернёт сохранённый ответ и не отправит сообщения повторно.
Это обязательно, если вызов инициирует вебхук вашей CRM с автоматическими повторами: без ключа каждый повтор — ещё одна рассылка тем же людям. Повтор с тем же ключом, но другим телом отклоняется с 409 conflict.
Idempotency-Key: order-10423Лимиты
Не больше 120 запросов в минуту на ключ. Текущее состояние — в заголовках каждого ответа:
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 117
X-RateLimit-Reset: 1756576800При превышении придёт 429 rate_limited с заголовком Retry-After в секундах. За один вызов каскада можно передать до 500 получателей — для больших списков разбивайте на пачки.
Ошибки
Формат ошибки один на все методы — обработчик пишется один раз:
{
"error": {
"code": "invalid_request",
"message": "Проверьте параметры запроса",
"details": [
{ "field": "recipients.0.email", "message": "Некорректный email" }
]
}
}code — машинный и стабильный, по нему ветвитесь в коде. message — человекочитаемый, на русском, может меняться без предупреждения. details есть только у ошибок валидации.
| code | HTTP | Когда |
|---|---|---|
unauthorized | 401 | Ключ не передан, не найден или отозван |
insufficient_scope | 403 | Ключу не выдано право, которое требует метод |
forbidden | 403 | Операция запрещена для организации (например, не подтверждён email) |
invalid_request | 400 | Ошибка валидации — конкретные поля в details |
not_found | 404 | Точка, сценарий или каскад не найдены в вашей организации |
conflict | 409 | Повтор Idempotency-Key с другим телом |
channel_unavailable | 409 | Канал не настроен на стороне Evidra |
plan_required | 402 | Тариф или пробный период не позволяют запускать каскад |
rate_limited | 429 | Превышен лимит запросов; см. Retry-After |
internal_error | 500 | Ошибка на нашей стороне — повторите позже |
Доступ по тарифу
Выпустить ключ и читать справочники можно на любом тарифе. Запуск каскада — то есть отправка сообщений клиентам — доступен на оплаченном тарифе с подтверждённым email; на пробном периоде такие методы вернут 402 plan_required. Это защита от спама с одноразовых аккаунтов, а не ограничение интеграции: как только тариф оплачен, тот же код начинает работать без изменений.
