| Сценарий | Пример |
|---|---|
| Удалённая идентификация клиента (KYC) | Банк, микрофинансовая или страховая компания открывает счёт онлайн, без визита в офис. |
| Подтверждение личности перед важным действием | Подтверждение владельца аккаунта перед крупным переводом, сбросом пароля или сменой номера телефона. |
| Онлайн-подписание договоров | Проверка того, что договор займа или аренды подписывает именно этот гражданин. |
| Проверка возраста / личности | Маркетплейсы, телеком, игровые сервисы или службы доставки, которым нужно подтвердить возраст или реальную личность. |
| Автозаполнение регистрации | Пользователь только делает селфи, а ваша форма заполняется подтверждёнными ФИО, документом и датой рождения. |
| Термин | Кто это |
|---|---|
| Клиент | Компания, которая интегрирует RS-ID (вы). Зарегистрирована в RS-ID и получила client_id / client_secret. Включает бэкенд клиента (вызывает API RS-ID) и фронтенд клиента (ваш сайт, который направляет пользователя на страницу RS-ID). |
| Пользователь | Конечный человек, которого идентифицируют, — ваш клиент, гражданин Узбекистана. |
| Сервер | Сервер RS-ID: API Web SDK и страница RS-ID (<rsid_base_url>), на которой пользователь делает селф и. |
| Сессия | Одна попытка идентификации, созданная бэкендом клиента. Определяется session_id (UUID). Имеет ограниченный срок жизни и ограниченное число попыток. |
| ПИНФЛ | Персональный идентификационный номер физического лица — 14 цифр. |
Номер документа (id_number) | Серия и номер паспорта или ID-карты, например AA1234567. |
redirect_url.<iframe> на своей странице, и пользователь не покидает ваш сайт.allow="camera" обязателен — без него браузер заблокирует камеру внутри iframe.redirect_url. Укажите в redirect_url небольшую страницу на своём домене, которая уведомит родительское окно, например:| Окружение | Базовый URL API | Страница RS-ID |
|---|---|---|
| Stage (тестовое) | https://sdk.stage.rsid.uz/web/api | https://sdk.stage.rsid.uz/?session_id={session_id} |
| Production | https://sdk.rsid.uz/web/api | https://sdk.rsid.uz/?session_id={session_id} |
client_id / client_secret. Сессия, созданная на stage, открывается только на stage-странице, и наоборот.{ "data": { }, "code": 0, "message": "Success" }| Поле | Тип | Описание |
|---|---|---|
code | integer | 0 — успех. Любое другое значение — ошибка (см. таблицы ошибок). Всегда проверяйте code, а не только HTTP-статус. |
message | string | Текст на языке запроса (uz / ru / en). Не разбирайте его программно. |
data | any | Данные ответа. Отсутствует при ошибке. |
| Заголовок | Значение | Где используется |
|---|---|---|
Content-Type | application/json | Все POST-запросы |
Authorization | Bearer {access_token} | Все запросы, кроме sign-in |
Accept-Language | uz / ru / en | Необязательно — язык поля message |
Безопасность. client_secretиaccess_tokenдолжны храниться только на бэкенде клиента. Никогда не передавайте их в браузер. Фронтенду клиента нужен толькоsession_id.
POST{base_url}/v1/auth/sign-in — без заголовка Authorizationapplication/json| Поле | Тип | Обязательно | Длина / формат | Описание |
|---|---|---|---|---|
client_id | string | Да | Не пустое; не может начинаться с цифры | Идентификатор клиента, выданный RS-ID. |
client_secret | string | Да | Не пустое | Секрет клиента, выданный RS-ID. |
{
"client_id": "web-sdk-client",
"client_secret": "s3cr3t-value"
}| Поле | Тип | Описание |
|---|---|---|
data.access_token | string (JWT) | Токен для заголовка Authorization: Bearer. |
data.token_type | string | Всегда Bearer. |
data.expires_in | integer | Срок жизни токена в секундах. |
data.scope | string | Выданные права, через пробел. |
data.refresh_token | string (JWT) | Токен для получения нового access_token без повторной отправки учётных данных. |
code | integer | 0 при успехе. |
message | string | Текст результата. |
{
"data": {
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "Bearer",
"expires_in": 3600,
"scope": "read write",
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
},
"code": 0,
"message": "Success"
}POST {base_url}/v1/auth/refresh?token={refresh_token} с обязательными параметрами. Используйте токен повторно до истечения срока, а не авторизуйтесь заново для каждой сессии.access_token по refresh_token без повторной авторизации. Вызывайте, когда access_token истёк (через expires_in секунд).POST{base_url}/v1/auth/refresh?token={refresh_token} — без заголовка Authorization.application/json| Поле | Тип | Обязательно | Длина / формат | Описание |
|---|---|---|---|---|
token | string | Да | JWT | refresh_token из авторизации (7.1) или из предыдущего ответа обновления. |
client_id | string | Да | Не пустое | Идентификатор клиента, выданный RS-ID. |
| Поле | Тип | Описание |
|---|---|---|
data.access_token | string (JWT) | Новый токен для заголовка Authorization: Bearer. |
data.token_type | string | Всегда Bearer. |
data.expires_in | integer | Срок жизни токена в секундах. |
data.scope | string | Выданные права, через пробел. |
code | integer | 0 при успехе. |
message | string | Текст результата. |
{
"data": {
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "Bearer",
"expires_in": 3600,
"scope": "read write"
},
"code": 0,
"message": "Success"
}ip_address пользователя. Это гарантирует, что сессия работает только на текущем устройстве пользователя и только один раз.POST{base_url}/v1/sessionsBearer {access_token}application/json| Поле | Тип | Обязательно | Длина / формат | Описание |
|---|---|---|---|---|
client_type | string (enum) | Да | WEB | Канал интеграции. Для Web SDK всегда WEB. |
ip_address | string | Да | IPv4 / IPv6 | Публичный IP-адрес пользователя (возьмите его из запроса пользователя к вашему бэкенду). Страница RS-ID работает только с этого IP — см. примечание ниже. |
user_info | object | Нет | — | Данные гражданина. Передайте, чтобы создать сессию с user_info; не передавайте для сессии без user_info. |
user_info.pinfl | string | Условно | Ровно 14 цифр | ПИНФЛ. Передавайте либо pinfl, либо id_number, но не оба. |
user_info.id_number | string | Условно | 9 символов: 2 буквы + 7 цифр, например AA1234567 | Номер паспорта / ID-карты. Передавайте либо pinfl, либо id_number, но не оба. |
user_info.birth_date | string | Да, если передан user_info | dd.MM.yyyy | Дата рождения. Пользователю должно быть не меньше 16 лет. |
external_id | string | Нет | — | Ваш собственный идентификатор (заказа, заявки или клиента) для связи сессии с вашими данными. Рекомендуется случайный uuid. |
retry_count | integer | Нет | > 0 | Максимальное число попыток. Если не передано, равно 0 или больше системного максимума — используется системный максимум. |
threshold | number | Нет | 0.0 – 1.0 | Минимальный порог сходства лиц для прохождения. Если не передан, используется значение по умолчанию. |
locale | string (enum) | Нет | UZ, RU, EN | По умолчанию UZ. |
additional_params | object | Нет | Только ключи ниже | Настройки страницы RS-ID. Любой другой ключ отклоняется. |
additional_params.redirect_url | string | Рекомендуется | URL | Куда перенаправить пользователя после успешной идентификации (см. 7.6). |
additional_params.lang | string | Нет | uz, ru, en | Язык страницы RS-ID. |
additional_params.theme | string | Нет | например light, dark | Тема страницы RS-ID. |
additional_params.primary_color | string | Нет | Цвет в HEX, например #1A73E8 | Акцентный цвет страницы RS-ID. |
Порог (threshold). threshold— минимальная оценка сходства лиц (от0.0до1.0), которую селфи должно получить при сравнении с фото из паспорта, чтобы идентификация прошла. Если параметр не передан, используется значение по умолчанию0.5. Если вы передаёте его сами, рекомендуем значение выше0.5. Для высокоточной (строгой) идентификации передавайте значение выше0.7. Чем выше значение, тем строже проверка и ниже риск, что пройдёт другой человек, но настоящим пользователям может понадобиться больше попыток.
Привязка к IP. Сессия привязана к ip_address. Когда пользователь открывает страницу RS-ID, RS-ID сравнивает его IP с этим значением. Если они не совпадают, страница показывает ошибку (-1028). Передавайте реальный публичный IP пользователя, а не IP вашего сервера.
| Поле | Тип | Длина / формат | Описание |
|---|---|---|---|
data | string | UUID, 36 символов | session_id. Используйте его, чтобы открыть страницу RS-ID и получить результат. |
code | integer | 0 при успехе. | |
message | string | Текст результата. |
{
"data": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"code": 0,
"message": "Success"
}| Код | Причина |
|---|---|
-1000 | Некорректный запрос — например, в user_info переданы оба поля pinfl / id_number или ни одного. |
-1002 | Учётные данные не принадлежат клиенту Web SDK. |
-1024 | Неверный формат id_number. |
-1025 | Неверный формат pinfl. |
-1026 | Не передан birth_date. |
-1034 | Неизвестный ключ в additional_params. |
-1052 | threshold вне диапазона 0–1. |
-1090 | Пользователю меньше 16 лет. |
400 | Ошибка валидации поля, например ip address cannot be blank. |
session_id фронтенд клиента открывает страницу RS-ID — переходом (3.1) или в iFrame (3.2):| Окружение | URL |
|---|---|
| Stage | https://sdk.stage.rsid.uz/?session_id={session_id} |
| Production | https://sdk.rsid.uz/?session_id={session_id} |