Разработчикам

Интеграция по контракту, а не по догадкам

Все операции описаны в контракте OpenAPI 3.1: схемы запросов, ответов и ошибок, области доступа ключей, идемпотентность и пагинация. Неподдержанная операция отвечает явной ошибкой с причиной, а не тишиной.

Каналы для заявителя

  • Ссылка на проверку

    Страница проверки на домене сервиса с вашим цветом и логотипом. Ссылка создается одним запросом и имеет срок действия.

  • Веб-виджет

    Загрузчик с SRI около 3 КиБ встраивает проверку во фрейм на вашей странице; сторонние cookie не нужны.

  • SDK для iOS

    iOS 15 и выше, чтение NFC-чипа на iPhone 7 и новее, аттестация App Attest, ключ в Secure Enclave.

  • SDK для Android

    Android 8.0 и выше, камера CameraX, NFC IsoDep, Play Integrity, интерфейс на русском и английском.

Создайте заявителя и дело, затем ссылку. Повтор запроса с тем же Idempotency-Key вернет тот же результат.

Создать ссылку на проверку
curl https://api.verkyc.com/v1/cases/$CASE_ID/hosted-links \
  -H "Authorization: Bearer $VERKYC_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"locale": "ru", "return_url": "https://example.com/onboarding/done"}'

Устройство API

  • Ключи для тестовой и рабочей среды с областями доступа; ротация без простоя.
  • Idempotency-Key для всех операций создания и изменения: безопасный повтор после сбоя сети.
  • Курсорная пагинация, привязанная к фильтру списка; ETag и If-Match для изменения версионных объектов.
  • Ошибки в формате application/problem+json с машинным кодом, признаком повтора и указателями полей.
  • Предел частоты запросов с ответом 429 и заголовком Retry-After.

Вебхуки с подписью

События дела, проверок, отчетов, мониторинга, удаления и выгрузок. Каждая попытка подписана HMAC-SHA256 над временем, идентификатором события и телом; повторы идут по расписанию до суток, затем событие можно переотправить из консоли. При ротации ключа прежний действует еще 24 часа.

Проверка подписи вебхука (Node.js)
import { createHmac, timingSafeEqual } from 'node:crypto';

// rawBody - тело запроса байтами, как оно пришло, до разбора JSON.
export function verifyWebhook(secret, headers, rawBody) {
  const timestamp = headers['x-webhook-timestamp'];
  const eventId = headers['x-webhook-id'];
  const expected = createHmac('sha256', secret)
    .update(`${timestamp}.${eventId}.`)
    .update(rawBody)
    .digest('hex');
  const signature = Buffer.from(headers['x-webhook-signature'] ?? '', 'utf8');
  const fresh = Math.abs(Date.now() / 1000 - Number(timestamp)) <= 300;
  return fresh && signature.length === expected.length && timingSafeEqual(signature, Buffer.from(expected, 'utf8'));
}

Проверка отчета

Отчет подписан ES256 (JWS над канонической записью JSON). Открытые ключи опубликованы по адресу /.well-known/report-signing-jwks.json, а подлинность отчета проверяется по ссылке без передачи персональных данных.

Проверить отчет по ссылке
curl https://api.verkyc.com/public/reports/verify \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"verification_reference": "<ссылка из отчета>", "report_sha256": "<SHA-256 файла отчета>"}'

Тестовая среда

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

Частые вопросы

Есть ли ограничения на частоту запросов?

Да. При превышении предела API отвечает 429 с заголовком Retry-After; повтор с тем же Idempotency-Key безопасен.

Как получить тестовый ключ?

Оставьте заявку на странице контактов. После подключения ключи создаются в консоли в разделе для разработчиков.

Где посмотреть все операции?

В справочнике API на этом сайте: операции сгруппированы по разделам, для каждой указаны метод, путь, параметры, тело запроса и ответы.

Покажем на ваших сценариях

Расскажите, кого и где нужно проверять. Подготовим демонстрацию, тестовый доступ к API и расчет стоимости.