Проверка возраста
Полный процесс интеграции описан в разделе Обзор API.
Эндпоинт
| Среда | URL |
|---|---|
| Продуктивная | POST https://api.id.unico.app/processes/v1 |
| Sandbox | POST https://api.id.uat.unico.app/processes/v1 |
Запрос
Заголовки
| Заголовок | Значение |
|---|---|
Authorization | Bearer <access_token> (см. Аутентификация) |
APIKEY | Выданный API-ключ — должны быть включены возможности Проверки возраста. |
Content-Type | application/json |
Параметры тела запроса
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
subject | object | да | Контейнер с данными пользователя. |
subject.code | string | условное | CPF (BR) или CURP (MX) без форматирования. Обязательно, если процесс включает Проверку живости или Проверку личности (см. возможность Проверки возраста); не требуется для процессов только с Проверкой возраста. |
subject.name | string | нет | Полное имя пользователя. |
subject.gender | string | нет | M для мужского или F для женского пола. |
subject.birthDate | string (ISO 8601) | нет | Дата рождения (YYYY-MM-DD). |
subject.email | string | нет | Адрес электронной почты пользователя. |
subject.phone | string | нет | Номер телефона: код страны + код региона + номер, без разделителей (например, 5519725570707). |
useCase | string | нет | Идентификатор сценария использования операции. |
subsidiaryId | string | нет | Идентификатор филиала — требуется только при наличии нескольких филиалов. |
imageBase64 | string | да | Зашифрованный вывод SDK или изображение в формате base64 (PNG, JPEG, WebP). |
Требования к изображению
- Минимальное разрешение: 640 × 480 (стандарт HD)
- Максимальный размер файла: 800 КБ (рекомендуется сжатие JPEG92)
- JWT-токены из SDK истекают через 10 минут и могут использоваться только один раз
Пример
- cURL
- Node.js
curl -X POST https://api.id.unico.app/processes/v1 \
-H "Authorization: Bearer $TOKEN" \
-H "APIKEY: $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"subject": {
"code": "12345678909",
"name": "Luke Skywalker",
"birthDate": "2000-05-20",
"email": "[email protected]",
"phone": "5519725570707"
},
"useCase": "AgeVerification",
"imageBase64": "/9j/4AAQSkZJR..."
}'
import fetch from 'node-fetch';
const res = await fetch('https://api.id.unico.app/processes/v1', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.UNICO_ACCESS_TOKEN}`,
'APIKEY': process.env.UNICO_API_KEY,
'Content-Type': 'application/json'
},
body: JSON.stringify({
subject: {
code: '12345678909',
name: 'Luke Skywalker',
birthDate: '2000-05-20',
phone: '5519725570707'
},
useCase: 'AgeVerification',
imageBase64: capturedImage
})
});
const result = await res.json();
Ответы
200 OK
Возвращаемые поля ответа зависят от того, какие возможности включены для вашего APIKEY.
Только Проверка возраста (без Проверки живости, без Проверки личности):
{
"id": "80371b2a-3ac7-432e-866d-57fe37896ac6",
"status": 3,
"idAge": { "result": "yes" }
}
Проверка возраста + Проверка живости + Проверка личности:
{
"id": "80371b2a-3ac7-432e-866d-57fe37896ac6",
"status": 3,
"unicoId": { "result": "yes" },
"idAge": { "result": "yes" },
"liveness": 1
}
| Поле | Тип | Описание |
|---|---|---|
id | string (UUID) | Идентификатор процесса. Используйте с Get Process для повторных запросов. |
status | integer | 3 (завершено успешно), 5 (ошибка). Для принятия бизнес-решений используйте только status = 3. Все возможные значения см. в Get Process. |
idAge.result | string | yes, no, inconclusive — результат Проверки возраста. Присутствует во всех ответах. |
unicoId.result | string | yes, no, inconclusive — присутствует только при включённой Проверке личности. |
liveness | integer | 1 (пройдено), 2 (не пройдено) — присутствует только при включённой Проверке живости. |
400 Bad Request
Полезная нагрузка имеет неверный формат, изображение недействительно или отсутствуют обязательные поля.
403 Forbidden
Bearer-токен или APIKEY отсутствует, истёк срок действия или они недействительны. См. Аутентификация.
409 Conflict
Указанный processId уже существует для данного тенанта. См. Коды ошибок ниже.
429 Too Many Requests
Достигнут лимит запросов. Повторите попытку после интервала, указанного в заголовке ответа Retry-After. См. Ограничения скорости.
500 Internal Server Error
Непредвиденная ошибка сервера.
Коды ошибок
- 400 Bad Request
- 403 Forbidden
- 409 Conflict
- 500 Internal Server Error
| Код | Сообщение | Описание |
|---|---|---|
20900 | O base64 informado não é válido. | Недопустимый параметр base64; возможна проблема с изображением или инъекция. |
20807 | A imagem precisa estar no padrão HD ou possuir uma resolução superior a 640 x 480. | Разрешение изображения ниже минимального порога. |
20509 | The subject.name field is invalid. | Поле subject.name содержит недопустимые символы. |
20508 | The subject.gender field is invalid. | Поле subject.gender должно быть M или F. |
20507 | O parâmetro subject.code é inválido. | Некорректное или несуществующее значение идентификатора. Срабатывает только когда в процесс включена Проверка живости или Проверка личности — не требуется для процессов только с Проверкой возраста. |
20506 | O base64 informado é muito grande. O tamanho máximo suportado é até 800kb. | Полезная нагрузка превышает 800 КБ; сожмите до JPEG92. |
20505 | O base64 informado não é suportado. Os formatos aceitos são png, jpeg e webp. | Неподдерживаемый формат или недопустимый префикс base64. |
20062 | The useCase field is invalid. | Нераспознанное значение в поле useCase. |
20021 | The subject.phone field is invalid. | Формат subject.phone недопустим (код страны + код города + номер, 13 символов). |
20019 | The subject.birthDate field is invalid. | Поле subject.birthDate не соответствует формату ISO 8601 (YYYY-MM-DD). |
20009 | O parâmetro imagebase64 não foi informado. | Отсутствует параметр изображения selfie. |
20008 | The subject.email field is invalid. | Недопустимый формат электронной почты в subject.email. |
20005 | O parâmetro subject.code não foi informado. | Отсутствует параметр subject.code. Срабатывает только когда в процесс включена Проверка живости или Проверка личности — не требуется для процессов только с Проверкой возраста. |
20004 | O parâmetro subject não foi informado. | Отсутствует объект subject. |
20003 | The request body is missing or invalid. | Пустая или некорректная полезная нагрузка. |
20002 | O parâmetro APIKey não foi informado. | Отсутствует заголовок APIKEY. |
20001 | O parâmetro authtoken não foi informado. | Отсутствует заголовок токена аутентификации. |
10508 | The JWT with the captured face has already been used. | JWT может быть использован только один раз. |
10507 | The JWT with the captured face is expired. | Срок действия JWT превышает 10-минутное окно валидности. |
10506 | The imageBase64 field is not a valid JWT from SDK. | Поле imageBase64 не является действительным JWT, сгенерированным SDK. |
| Код | Сообщение | Описание |
|---|---|---|
30017 | User does not have permission to perform this action. | Некорректный JWT или пользователь не имеет разрешения на выполнение данной операции. |
30017 | Jwt header is an invalid JSON. | Access-token содержит недопустимые символы. |
10502 | O token informado está expirado. | Истёкший access-token. |
10501 | O token informado é inválido. | Недопустимый токен аутентификации. |
10201 | O AppKey informado é inválido. | Отсутствующий или несуществующий APIKEY. |
| Код | Сообщение | Описание |
|---|---|---|
20073 | The processID already exists. | Указанный processId уже существует для данного тенанта. |
| Код | Сообщение | Описание |
|---|---|---|
99999 | Internal failure! Try again later. | Ошибка обработки на стороне сервера. |
Что дальше
- Для запроса существующего процесса см. Get Process.