Ссылки верификации
Ссылки верификации представляют собой одноразовые или ограниченные по времени URL-адреса, по которым пользователь инициирует процедуру верификации. Ссылки создаются через Tenant API или в административной панели и передаются пользователю (по электронной почте, SMS, QR-коду или в личном кабинете). При переходе по ссылке автоматически создаётся или привязывается сессия верификации, и пользователь перенаправляется на страницу верификации OneKYC.
Создание ссылки верификации
ApiKeyAuthAuthorization<token>HMAC-SHA256 Credential=<key_id>, Signature=<hex_signature>. SignedHeaders=x-timestamp is optional. Requires X-Timestamp header.
X-Timestamp*stringUnix timestamp (seconds, max 5 min drift)
Link options (flow_id required)
application/json- body
expires_in?integerseconds
external_reference?stringexternal_user_id?stringflow_id?stringlocale?stringmetadata?prefilled?redirect_url?stringutm_campaign?stringutm_medium?stringutm_source?stringCreated or reused link
application/json- response
data?success?booleancurl -X POST 'https://api.onekyc.io/tenant/v1/kyc/verification-links' \ -H 'X-Timestamp: string' \ -H 'Content-Type: application/json' \ -d '{}'{ "success": true, "data": { "created_at": "string", "delivery_eligible": true, "expires_at": "string", "external_reference": "string", "external_user_id": "string", "flow_id": "string", "id": "string", "link_url": "string", "locale": "string", "qr_code_url": "string", "redirect_url": "string", "reuse_reason": "external_reference", "reused": true, "session_id": "string", "session_resumable": true, "session_status": "string", "short_url": "string", "status": "string", "url": "string", "verification_link": "string", "verification_url": "string" }}Внешний ID и незавершённая ручная проверка
external_user_id идентифицирует заявителя внутри тенанта и не является ID сессии. У одного заявителя может быть несколько исторических сессий. Продолжение проверки определяется сочетанием тенанта, окружения, внешнего ID, воронки и типа KYC/KYB.
Если по этому сочетанию остаётся незавершённая ручная проверка, создание новой ссылки возвращает HTTP 409, error.code = "session_review_pending" и error.existing_session_id. Завершите текущее ревью или запросите пересдачу в нём. Истечение срока ссылки не завершает ревью. Дублирование ссылки и активация заранее созданной новой ссылки не обходят эту проверку.
Для сессии в процессе обычное создание ссылки продолжает использовать текущую сессию. После итогового одобрения или отклонения можно начать независимую проверку. external_reference повторно использует подходящую активную ссылку только если external_user_id не указан или совпадает с ID ссылки; для другого внешнего ID создаётся отдельная ссылка. Параметр не задаёт пожизненную уникальность сессии. При пакетном создании конфликт указывается для соответствующего элемента.
Сопоставляйте webhook-события по session_id вместе с external_id: позднее решение по исторической сессии относится к ней и не должно автоматически заменять результат другой сессии с тем же внешним ID.
Легаси-совместимость
Канонический KYC-путь — /tenant/v1/kyc/verification-links. Для существующих интеграций тенантов OneKYC также намеренно поддерживает /tenant/v1/verification-links и /tenant/v1/verificationLinks как KYC-алиасы. Тела запросов create и batch-create для verification links также принимают легаси-алиасы полей с разным регистром или разделителями, например flowId, FlowID, externalUserId, redirectUrl и prefilledData.
Эти алиасы нельзя считать мертвым кодом. Это поддерживаемый compatibility contract, который можно удалять только после отдельного versioned deprecation и migration window для Tenant API.
Пакетное создание ссылок
Позволяет создать несколько ссылок верификации в рамках одного запроса.
ApiKeyAuthAuthorization<token>HMAC-SHA256 Credential=<key_id>, Signature=<hex_signature>. SignedHeaders=x-timestamp is optional. Requires X-Timestamp header.
X-Timestamp*stringUnix timestamp (seconds, max 5 min drift)
Batch create request
application/json- body
defaults?items?array<>Created links
application/json- response
data?success?booleancurl -X POST 'https://api.onekyc.io/tenant/v1/kyc/verification-links/batch' \ -H 'X-Timestamp: string' \ -H 'Content-Type: application/json' \ -d '{}'{ "success": true, "data": { "failed": [ { "error": "string", "error_code": "string", "existing_session_id": "string", "index": 0, "link": { "created_at": "string", "delivery_eligible": true, "expires_at": "string", "external_reference": "string", "external_user_id": "string", "flow_id": "string", "id": "string", "link_url": "string", "locale": "string", "qr_code_url": "string", "redirect_url": "string", "reuse_reason": "external_reference", "reused": true, "session_id": "string", "session_resumable": true, "session_status": "string", "short_url": "string", "status": "string", "url": "string", "verification_link": "string", "verification_url": "string" } } ], "successful": [ { "error": "string", "error_code": "string", "existing_session_id": "string", "index": 0, "link": { "created_at": "string", "delivery_eligible": true, "expires_at": "string", "external_reference": "string", "external_user_id": "string", "flow_id": "string", "id": "string", "link_url": "string", "locale": "string", "qr_code_url": "string", "redirect_url": "string", "reuse_reason": "external_reference", "reused": true, "session_id": "string", "session_resumable": true, "session_status": "string", "short_url": "string", "status": "string", "url": "string", "verification_link": "string", "verification_url": "string" } } ], "summary": { "failed": 0, "successful": 0, "total": 0 } }}Получение списка ссылок
ApiKeyAuthAuthorization<token>HMAC-SHA256 Credential=<key_id>, Signature=<hex_signature>. SignedHeaders=x-timestamp is optional. Requires X-Timestamp header.
page?integerPage (1-based)
page_size?integerPage size (1-100)
status?stringFilter by status (active, consumed, revoked)
external_user_id?stringFilter by external user ID
external_reference?stringFilter by external reference
flow_id?stringFilter by flow UUID
sort_by?stringSort field (default created_at)
sort_order?stringSort order: asc, desc (default desc)
X-Timestamp*stringUnix timestamp (seconds, max 5 min drift)
Verification links
*/*- response
data?success?booleancurl -X GET 'https://api.onekyc.io/tenant/v1/kyc/verification-links' \ -H 'X-Timestamp: string'{ "success": true, "data": { "items": [ { "activated_at": "string", "consumed_at": "string", "created_at": "string", "created_by": "string", "expires_at": "string", "external_reference": "string", "external_user_id": "string", "flow_id": "string", "flow_session_id": "string", "id": "string", "locale": "string", "metadata": { "property1": null, "property2": null }, "prefilled_data": { "property1": null, "property2": null }, "redirect_url": "string", "revoked_at": "string", "revoked_reason": "string", "short_code": "string", "status": "string", "token": "string", "updated_at": "string", "utm_campaign": "string", "utm_medium": "string", "utm_source": "string" } ], "pagination": { "page": 0, "page_size": 0, "total": 0, "total_pages": 0 } }}Получение ссылки по идентификатору
ApiKeyAuthAuthorization<token>HMAC-SHA256 Credential=<key_id>, Signature=<hex_signature>. SignedHeaders=x-timestamp is optional. Requires X-Timestamp header.
id*stringLink UUID
X-Timestamp*stringUnix timestamp (seconds, max 5 min drift)
Verification link details
*/*- response
data?success?booleancurl -X GET 'https://api.onekyc.io/tenant/v1/kyc/verification-links/string' \ -H 'X-Timestamp: string'{ "success": true, "data": { "activated_at": "string", "consumed_at": "string", "created_at": "string", "created_by": "string", "expires_at": "string", "external_reference": "string", "external_user_id": "string", "flow_id": "string", "flow_session_id": "string", "id": "string", "locale": "string", "metadata": { "property1": null, "property2": null }, "prefilled_data": { "property1": null, "property2": null }, "redirect_url": "string", "revoked_at": "string", "revoked_reason": "string", "short_code": "string", "status": "string", "token": "string", "updated_at": "string", "utm_campaign": "string", "utm_medium": "string", "utm_source": "string" }}Отзыв ссылки
Отозванная ссылка становится недействительной и не может быть использована для инициации верификации.
ApiKeyAuthAuthorization<token>HMAC-SHA256 Credential=<key_id>, Signature=<hex_signature>. SignedHeaders=x-timestamp is optional. Requires X-Timestamp header.
id*stringLink UUID
X-Timestamp*stringUnix timestamp (seconds, max 5 min drift)
Optional revoke reason
application/json- body
reason?stringRevoked link info
application/json- response
data?success?booleancurl -X POST 'https://api.onekyc.io/tenant/v1/kyc/verification-links/string/revoke' \ -H 'X-Timestamp: string' \ -H 'Content-Type: application/json' \ -d '{}'{ "success": true, "data": { "id": "string", "revoked_at": "string", "status": "string" }}Получение QR-кода
Возвращает QR-код для ссылки верификации. Используется для реализации cross-device flow: пользователь сканирует QR-код на мобильном устройстве и продолжает верификацию.
ApiKeyAuthAuthorization<token>HMAC-SHA256 Credential=<key_id>, Signature=<hex_signature>. SignedHeaders=x-timestamp is optional. Requires X-Timestamp header.
id*stringLink UUID
size?integerQR size in pixels (1-1024, default 256)
X-Timestamp*stringUnix timestamp (seconds, max 5 min drift)
PNG image
response?unknownimage/pngcurl -X GET 'https://api.onekyc.io/tenant/v1/kyc/verification-links/string/qr' \ -H 'X-Timestamp: string'nullЖизненный цикл ссылки
[Created] → [Activated] → [Consumed]
↓ ↓ ↓
[Expired] [Expired] [Completed]
↓ ↓
[Revoked] [Revoked]Статусы ссылки:
| Статус | Описание |
|---|---|
active | Ссылка создана; пользователь ещё не переходил по ней |
activated | Пользователь перешёл по ссылке; создана сессия, верификация в процессе |
consumed | Верификация завершена (одобрена, отклонена или направлена на ревью) |
expired | Истёк срок действия ссылки (ttl_seconds); ссылка более недоступна |
revoked | Ссылка отозвана вручную через API или административную панель |
Примечание. После создания ссылки передайте её пользователю (по электронной почте, SMS, QR-коду). При переходе по ссылке автоматически создаётся сессия верификации. Для реализации cross-device flow используйте QR-код (
GET /v1/kyc/verification-links/{id}/qr).
Редирект после завершения верификации
При создании ссылки допускается указание параметра redirect_url — URL-адреса, на который пользователь будет перенаправлен после завершения процедуры верификации (например, личный кабинет или форма заявки).
Порядок работы
- При создании ссылки в теле запроса передаётся параметр
redirect_url(POST /v1/kyc/verification-linksили batch). - При активации ссылки
redirect_urlсохраняется в сессию и возвращается в ответе активации (полеredirect_url). - На экране завершения (после одобрения, отклонения или направления на ревью) пользователю отображается:
- кнопка возврата — пользователь нажимает и переходит по redirect_url;
- либо автоматический редирект через заданный интервал времени.
Настройка поведения
Поведение редиректа настраивается в параметрах флоу в административной панели:
- Redirect behavior on completion — режим перенаправления: «Show button» (отображение кнопки) или «Auto redirect» (автоматическое перенаправление).
- Redirect delay (seconds) — задержка в секундах перед автоматическим перенаправлением (применяется в режиме «Auto redirect»).
Значения по умолчанию: отображение кнопки; при автоматическом режиме задержка составляет 3 секунды. Подробнее — в разделе Флоу (админка).