API и интеграция с CRM
Полный цикл без ручной работы: ваша система сама выпускает код на съёмку, узнаёт о снятом материале и программно проверяет подлинность файла. Подходит для CRM, систем учёта заявок, 1С и no-code-платформ.
Доступ: один ключ на всё
API-ключ создаётся в личном кабинете, раздел «Интеграции и API» — самостоятельно, без обращения в поддержку. Ключ показывается один раз в момент создания; если потеряли — отзовите его там же и создайте новый.
Ключ передаётся в заголовке X-Api-Key в каждом запросе. Один и тот же ключ работает для всех операций ниже.
| База | Что там |
|---|---|
https://api.trustvisor.ru | Коды на съёмку, статусы, вебхуки — всё под /v1/business/… |
https://portal.trustvisor.ru | Проверка файлов — /v1/verify |
Типовой сценарий (страховая, СТО, логистика — любой)
2. Код уходит исполнителю (СМС, мессенджер — как вы обычно общаетесь).
3. Исполнитель вводит код в приложении TrustVisor и снимает.
4. В момент съёмки мы шлём вебхук на ваш адрес (или CRM опрашивает статус кода) → заявка двигается по воронке сама.
5. Полученный файл CRM отправляет на проверку — вердикт о подлинности возвращается за секунды и сам записывается в журнал панели.
Коды на съёмку
Выпустить код
POST https://api.trustvisor.ru/v1/business/case-codes
curl -X POST https://api.trustvisor.ru/v1/business/case-codes \ -H "X-Api-Key: ваш_ключ" \ -H "Content-Type: application/json" \ -d '{"case_id": "ОСАГО-4712", "max_videos": 2, "max_photos": 10}'
Поля запроса (обязателен только case_id — ваш номер заявки/сделки, до 64 символов):
| Поле | Описание |
|---|---|
case_id | Номер вашей заявки — по нему код виден в панели и в вебхуках |
max_videos, max_photos | Лимиты съёмки; не передали — без лимита |
quality, ratio | Требования к съёмке (качество, соотношение сторон) |
gps_mode | Требование геометки |
require_online | true — съёмка только при живой связи с сервером |
max_duration_seconds | Максимальная длительность видео |
Ответ: {"key": "TV-XXXX-XXXX", "case_id": "…", "expires_at": "…", …}. Код живёт 24 часа до первого ввода в приложение; дальше срок отсчитывается от активации.
Узнать статус
GET https://api.trustvisor.ru/v1/business/case-codes/TV-XXXX-XXXX — один код, или без ключа в пути — все коды разом.
{
"key": "TV-XXXX-XXXX",
"case_id": "ОСАГО-4712",
"state": "in_use", // unused | in_use | expired
"captured": true, // съёмка состоялась
"received": false, // вы отметили файл полученным
"videos_used": 1, "max_videos": 2, …
}
Отметить, что файл дошёл до вас: POST /v1/business/case-codes/TV-XXXX-XXXX/mark-received.
Проверка файла
POST https://portal.trustvisor.ru/v1/verify — multipart/form-data, файл в поле package.
curl -X POST https://portal.trustvisor.ru/v1/verify \ -H "X-Api-Key: ваш_ключ" \ -F "package=@REC_20260622_0702.trustvisor"
Код 200 и JSON — если проверка вообще состоялась (в том числе если файл оказался поддельным — это тоже успешный результат проверки, не ошибка запроса). Каждая проверка автоматически попадает в журнал «Проверки» вашей панели.
Загруженный файл не хранится на сервере дольше самой проверки. Бесплатный браузерный верификатор на trustvisor.ru остаётся доступен без ключа — он работает целиком в браузере и в журнал панели не пишет.
Вебхуки: события в вашу систему
Вместо опроса статусов мы сами отправим POST-запрос на ваш адрес. Вебхук создаётся в панели («Интеграции и API») или по API:
curl -X POST https://api.trustvisor.ru/v1/business/webhooks \ -H "X-Api-Key: ваш_ключ" \ -H "Content-Type: application/json" \ -d '{"url": "https://ваш-сервер/trustvisor-hook", "events": ["captured", "verified"]}'
Ответ содержит secret — ключ подписи, показывается один раз.
| Событие | Когда приходит | Тело (JSON) |
|---|---|---|
captured | Первая завершённая съёмка по кейс-коду | {"event":"captured","at":"…","key":"TV-…","case_id":"…"} |
verified | Проверка пакета записана в журнал (из панели или по API) | {"event":"verified","at":"…","verdict":"TAMPERED","file_name":"…","source":"api"} |
test | Кнопка «Тест» в панели | {"event":"test","at":"…"} |
Подпись и повторы
Каждый запрос несёт заголовки X-TrustVisor-Event, X-TrustVisor-Delivery (номер доставки) и X-TrustVisor-Signature: sha256=<hex> — HMAC-SHA256 сырого тела запроса вашим секретом. Проверка на Python:
import hashlib, hmac expected = "sha256=" + hmac.new(secret.encode(), raw_body, hashlib.sha256).hexdigest() ok = hmac.compare_digest(expected, request.headers["X-TrustVisor-Signature"])
Ответьте любым кодом 2xx за 6 секунд. Не успели/упали — повторим до 6 раз с нарастающими интервалами (1 мин → 5 мин → 30 мин → 2 ч → 6 ч). Обрабатывайте события идемпотентно: при повторе X-TrustVisor-Delivery тот же.
Ограничения: до 5 вебхуков на компанию; адрес — только внешний https/http (локальные и внутренние адреса не принимаются).
Рецепты для CRM
Битрикс24
Без разработки: роботы Битрикс24 умеют слать исходящие вебхуки, но не умеют добавлять свой заголовок X-Api-Key — поэтому прямой вызов нашего API из робота не собрать. Рабочие пути:
- Через Albato / ApiX-Drive / n8n / Make (см. ниже): робот Битрикса дёргает сценарий связки, сценарий вызывает наш API с ключом и пишет код/вердикт обратно в сделку через REST Битрикса.
- Локальное приложение Битрикс24 (для вашего портала, бесплатно): небольшой скрипт на вашем хостинге, который принимает событие сделки, вызывает наш API и обновляет поле сделки. Наши вебхуки
captured/verifiedон же принимает и двигает стадию.
amoCRM
Salesbot / digital pipeline умеют шаг «отправить вебхук» — тоже без своих заголовков, поэтому схема та же: связка через no-code-платформу или свой мини-обработчик, который держит ключ и ходит в наш API.
1С
Из 1С наш API вызывается штатно, без посредников:
Соединение = Новый HTTPСоединение("api.trustvisor.ru",,,,, Новый ЗащищённоеСоединениеOpenSSL); Запрос = Новый HTTPЗапрос("/v1/business/case-codes"); Запрос.Заголовки.Вставить("X-Api-Key", Ключ); Запрос.Заголовки.Вставить("Content-Type", "application/json"); Запрос.УстановитьТелоИзСтроки("{""case_id"": ""ЗАКАЗ-1042""}"); Ответ = Соединение.ОтправитьДляОбработки(Запрос);
Albato, ApiX-Drive, n8n, Make
Любая платформа связок с шагом «HTTP-запрос с заголовками» подключается за вечер: шаг 1 — триггер вашей CRM, шаг 2 — POST к нам с X-Api-Key, шаг 3 — записать key из ответа в поле сделки. Входящие вебхуки от нас эти платформы принимают штатным триггером «Webhook».
Свой сайт или внутренняя система
Просто HTTP: выпуск кода — один POST, проверка файла — один POST, события — вебхук. Примеры на curl и JavaScript выше подходят без изменений.
Ошибки
| Код | Значение |
|---|---|
| 401 | Не передан X-Api-Key, либо ключ неверный/отозван |
| 400 | Запрос не удалось разобрать; для вебхуков — недопустимый адрес или превышен лимит 5 вебхуков |
| 402/403 | Операция недоступна на вашем тарифе (коды на съёмку — тариф «Клиент»/Business) |
| 404 | Код или вебхук не найден (или принадлежит другой компании) |
| 413 | Файл слишком большой |
| 422 | Файл отклонён как подозрительный до полной проверки |
| 429 | Превышен лимит запросов (выпуск кодов — 30/мин, проверка — 20/мин) |
Нужна помощь с интеграцией — напишите на info@trustvisor.ru, поможем собрать связку под вашу систему.