Создание процесса с документом
Этот endpoint обрабатывает два документных потока, использующих один и тот же путь, но различающихся параметрами тела запроса:
- Новый захват — отправляет изображения документа в формате base64 для обработки (требуется
document.files). - Повторное использование — пропускает захват, ссылаясь на ранее захваченный документ (требуется
document.documentId).
Активный поток определяется наличием document.documentId в теле запроса.
Перед созданием процесса с документом используйте Get Reusable Documents, чтобы проверить, есть ли у пользователя уже доступный документ.
Полный процесс интеграции описан в разделе Обзор API.
Endpoint
| Среда | URL |
|---|---|
| Production | 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.duiType | integer | да | Идентификатор типа документа. См. значения duiType ниже. |
subject.code | string | да | Значение идентификатора пользователя согласно subject.duiType. Без точек и дефисов. |
subject.name | string | нет | Полное имя. |
subject.gender | string | нет | M или F. |
subject.birthDate | string (ISO 8601) | нет | Дата рождения (YYYY-MM-DD). |
subject.email | string | нет | Адрес электронной почты. |
subject.phone | string | нет | Номер телефона в формате E.164. |
document.purpose | string | да | Бизнес-цель. Значения: creditprocess, carpurchase, paybypaycheck, onboarding, fgts. |
document.authProcessId | string | да | Идентификатор биометрического процесса, связанного с захватом этого документа. |
document.files | array | да | Изображения документа в формате base64 (лицевая и/или обратная сторона). |
document.files[].data | string | да | Изображение документа в формате base64 (PNG, JPEG или WebP, не более 800 КБ). |
subsidiaryId | string | н ет | Идентификатор филиала — требуется только при наличии нескольких филиалов. |
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
subject.duiType | integer | да | Идентификатор типа документа. См. значения duiType ниже. |
subject.code | string | да | Значение идентификатора пользователя согласно subject.duiType. Без точек и дефисов. |
subject.name | string | нет | Полное имя. |
subject.gender | string | нет | M или F. |
subject.birthDate | string (ISO 8601) | нет | Дата рождения (YYYY-MM-DD). |
subject.email | string | нет | Адрес электронной почты. |
subject.phone | string | нет | Номер телефона в формате E.164. |
document.purpose | string | да | Бизнес-цель. Значения: creditprocess, carpurchase, paybypaycheck, onboarding, fgts. |
document.authProcessId | string | да | Идентификатор биометрического процесса, связанного с данным документом. |
document.documentId | string | да | Идентификатор ра нее захваченного документа (полученный из Get Reusable Documents). При наличии document.files можно не указывать. |
subsidiaryId | string | нет | Идентификатор филиала — требуется только при наличии нескольких филиалов. |
Значения duiType
| Страна | Код | Описание |
|---|---|---|
| BR | 1 | Бразильский CPF |
| MX | 2 | Мексиканский CURP |
| US | 4 | SSN США |
| BR | 5 | Бразильский паспорт |
| AR | 6 | Аргентинский паспорт |
| AR | 7 | Аргентинский DNI |
| NG | 8 | Нигерийский NIN |
| CL | 9 | Чилийский RUN |
| EC | 10 | Эквадорский NI |
| US | 11 | Паспорт США |
| GT | 12 | Гватемальский CUI |
| UY | 13 | Уругвайский CI |
| BR | 14 | Бразильский CNPJ |
| ZZ | 15 | Адрес электронной почты |
| ID | 16 | Индонезийский NIK |
| ZZ | 17 | Номер телефона |
| US | 18 | Водительское удостоверение США |
| NG | 20 | Нигерийский номер верификации банковского счёта (BVN) |
| US | 21 | Паспортная карта США |
| US | 22 | Поликарбонатный паспорт США |
| US | 23 | Идентификационная карта США |
| TR | 24 | Турецкий идентификационный номер (TCKN) |
| MX | 25 | Мексиканский RFC (физическое лицо) |
| CO | 26 | Колумбийский NIT |
| PE | 27 | Перуанский RUC |
| CA | 28 | Канадский SIN |
| DK | 29 | Датский CPR |
| GB | 30 | Британский номер национального страхования (NINO) |
| PL | 31 | Польский PESEL |
| SE | 32 | Шведский личный номер (PNR) |
| CH | 33 | Швейцарский номер AHV/AVS |
| AT | 34 | Австрийский налоговый номер (STNR) |
| FI | 35 | Финский код личной идентификации (HETU) |
| BE | 36 | Бельгийский национальный номер (NN) |
| IT | 37 | Итальянский налоговый код (Codice Fiscale, CF) |
| SE | 38 | Шведский координационный номер (Samordningsnummer) |
| NO | 39 | Норвежский национальный идентификационный номер (Fødselsnummer) |
| PE | 40 | Перуанский DNI |
| DE | 41 | Немецкий налоговый идентификационный номер (IdNr) |
| NL | 42 | Голландский идентификационный номер гражданина (BSN) |
| NG | 43 | Токен BVN Нигерии (хешированный) |
| NG | 44 | Токен NIN Нигерии (хешированный) |
| PT | 45 | Португальский налоговый идентификационный номер (NIF) |
| FR | 46 | Французский налоговый справочный номер (SPI) |
| IE | 47 | Ирландский номер социального страхования (PPSN) |
| LU | 48 | Люксембургский национальный идентификационный номер (Matricule) |
| AR | 49 | Аргентинское водительское удостоверение (Licencia Nacional de Conducir) |
| ES | 50 | Испанский номер иностранца (NIE) |
| ES | 51 | Испанский национальный документ, удостоверяющий личность (DNI) |
| CL | 52 | Чилийский паспорт |
| CO | 53 | Колумбийский паспорт |
| PE | 54 | Перуанский паспорт |
| CO | 55 | Колумбийское водительское удостоверение (Licencia de Conducción) |
| CO | 56 | Колумбийское удостоверение личности гражданина (Cédula de Ciudadanía) |
| CL | 57 | Чилийское водительское удостоверение (Licencia de Conducir) |
| MX | 58 | Мексиканское водительское удостоверение (Licencia de Conducir) |
| — | 0 | Не указано |
| — | 3 | Внутренний идентификатор Unico |
Пример
- Новый захват — cURL
- Новый захват — Node.js
- Повторное использование — 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": {
"duiType": 1,
"code": "12345678909",
"name": "Luke Skywalker"
},
"document": {
"purpose": "onboarding",
"authProcessId": "80371b2a-3ac7-432e-866d-57fe37896ac6",
"files": [
{ "data": "/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: {
duiType: 1,
code: '12345678909',
name: 'Luke Skywalker'
},
document: {
purpose: 'onboarding',
authProcessId: '80371b2a-3ac7-432e-866d-57fe37896ac6',
files: [{ data: documentImageBase64 }]
}
})
});
const result = await res.json();
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": {
"duiType": 1,
"code": "12345678909"
},
"document": {
"purpose": "onboarding",
"authProcessId": "80371b2a-3ac7-432e-866d-57fe37896ac6",
"documentId": "doc-abc-123"
}
}'
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: {
duiType: 1,
code: '12345678909'
},
document: {
purpose: 'onboarding',
authProcessId: '80371b2a-3ac7-432e-866d-57fe37896ac6',
documentId: 'doc-abc-123'
}
})
});
const result = await res.json();
Ответы
{
"id": "80371b2a-3ac7-432e-866d-57fe37896ac6",
"status": 3,
"document": {
"id": "doc-abc-123",
"type": "unico.moja.dictionary.br.cnh.v2.Cnh",
"cpfMatch": true,
"faceMatch": true,
"content": {
"numero": "12345678",
"nomeCivil": "Luke Skywalker",
"dataNascimento": "2000-05-20T00:00:00Z",
"categoria": "B",
"dataExpiracao": "2030-05-20T00:00:00Z"
},
"fileUrls": [
"https://storage.unico.app/documents/doc-abc-123/front.jpg"
]
}
}
| Поле | Тип | Описание |
|---|---|---|
id | string (UUID) | Идентификатор процесса. |
status | integer | 3 (завершён успешно), 5 (завершён с ошибкой). |
document.id | string | Идентификатор захваченного документа. Используйте это значение в будущих запросах document.documentId для повторного использования. |
document.type | string | Идентифицированный тип документа в виде полного имени словаря. См. значения document.type ниже. |
document.cpfMatch | boolean | true, если идентификатор, извлечённый из документа, совпадает с subject.code. |
document.faceMatch | boolean | true, если лицо на документе совпадает с биометрическим селфи из document.authProcessId. |
document.content | object | Поля, извлечённые с помощью OCR. Структура зависит от типа документа — нажмите здесь, чтобы посмотреть описание полей. |
document.fileUrls | array | Временные URL (действительны 10 минут) для скачивания изображений документа. |
В document.content присутствуют только успешно извлечённые поля; всё, что OCR не смог распознать, опускается, а не возвращается пустым.
Значения document.type
Все типы документов, испо льзующие единую схему — unified_schema в справочнике полей — возвращаются в document.type в виде unico.moja.dictionary.<country>.generic.v1.<DocumentType>, где <country> — код страны ISO 3166-1 alpha-2 в нижнем регистре, а <DocumentType> — идентифицированный тип. Например:
unico.moja.dictionary.ar.generic.v1.IdCard: Удостоверение личности Аргентиныunico.moja.dictionary.us.generic.v1.PolycarbonatePassport: Поликарбонатный паспорт США
Типы документов, использующие собственную схему полей — перечисленные в specific_document_schemas в справочнике полей — приведены в таблице ниже:
| Страна | Значение | Документ |
|---|---|---|
| BR | unico.moja.dictionary.br.rg.v2.Rg | RG |
| BR | unico.moja.dictionary.br.cnh.v2.Cnh | CNH (водительское удостоверение) |
| BR | unico.moja.dictionary.br.cin.v1.Cin | CIN |
| BR | unico.moja.dictionary.br.passaporte.v1.Passaporte | Паспорт |
| MX | unico.moja.dictionary.mx.ine.v1.Ine | Избирательное удостоверение INE |
| MX | unico.moja.dictionary.mx.lpc.v1.Lpc | Licencia para conducir (водительское удостоверение) |
| MX | unico.moja.dictionary.mx.pasaporte.v1.Pasaporte | Паспорт |
| — | unico.moja.dictionary.other.unknown.v1.Unknown | Тип не удалось определить — document.content пуст |
Извлечение OCR не выполняется и ни одно поле не возвращается, когда document.type равен unico.moja.dictionary.other.unknown.v1.Unknown.
Коды ошибок
- 400 Bad Request
- 403 Forbidden
- 409 Conflict
- 500 Internal Server Error
| Код | Сообщение | Описание |
|---|---|---|
99989 | The document is invalid. | Объект document имеет неверную структуру. |
99988 | The document is empty. | Объект document отсутствует в теле запроса. |
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 недействителен или не поддерживается. |
20068 | The document.documentId or document.files parameter must be present. | Не указаны ни document.documentId, ни document.files. |
20067 | The document.purpose parameter is invalid. | Нераспознанное значение в document.purpose. |
20066 | The document.authProcessId parameter is invalid. | Недопустимое значение в document.authProcessId. |
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. | Отсутствует параметр с изображением документа. |
20008 | The subject.email field is invalid. | Недействительный формат email в 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. |
Bearer-токен или APIKEY отсутствует, истёк или недействителен. См. Аутентификация.
| Код | Сообщение | Описание |
|---|---|---|
30017 | User does not have permission to perform this action. | Некорректный JWT или пользователь без разрешения на выполнение данной операции. |
10502 | O token informado está expirado. | Срок действия токена доступа истёк. |
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 Reusable Documents.
- Для создания биометрического процесса (требуется для
document.authProcessId), см. Create Process.