Получение документов для повторного использования
Используйте этот эндпоинт, чтобы проверить, есть ли у пользователя доступный для повторного использования документ, прежде чем начинать новый процесс захвата документа. Если документ найден, его documentId можно передать напрямую в POST /processes/v1 (тип Document), чтобы пропустить этап захвата.
Эндпоинт
| Среда | URL |
|---|---|
| Production | GET https://api.id.unico.app/documents/v1 |
| Sandbox | GET https://api.id.uat.unico.app/documents/v1 |
Запрос
| Заголовок | Значение |
|---|---|
Authorization | Bearer <access_token> (см. Аутентификация) |
APIKEY | Предоставленный API-ключ с включённой функцией Распознавание документов и повторное использование. |
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
code | string | да | Идентификатор пользователя (CPF или CURP, без форматирования). |
type | string | да | Тип документа для запроса. Допустимые значения: BR_RG, BR_CNH, BR_CIN, BR_PASSPORT. |
Значения type, указанные выше, относятся только к этому эндпоинту. Не путайте их с:
subject.duiTypeв POST-запросах — использует префиксDUI_TYPE_*и идентифицирует человека, а не тип документа (например,DUI_TYPE_BR_CPF).documentTypeв ответе — использует полный путь реестра (например,unico.moja.dictionary.br.cnh.v2.Cnh).
Пример
- cURL
- Node.js
curl -X GET "https://api.id.unico.app/documents/v1?code=12345678909&type=BR_CNH" \
-H "Authorization: Bearer $TOKEN" \
-H "APIKEY: $API_KEY"
import fetch from 'node-fetch';
const params = new URLSearchParams({ code: '12345678909', type: 'BR_CNH' });
const res = await fetch(
`https://api.id.unico.app/documents/v1?${params}`,
{
headers: {
Authorization: `Bearer ${accessToken}`,
APIKEY: apiKey
}
}
);
const data = await res.json();
// data.items[0].documentId → pass to POST /processes/v1 for reuse
Ответы
{
"items": [
{
"documentType": "unico.moja.dictionary.br.cnh.v2.Cnh",
"documentId": "doc-abc-123"
}
]
}
| Поле | Тип | Описание |
|---|---|---|
items | array | Список документов, доступных для повторного использования. Пустой массив, если для указанных code и type документ не найден. |
items[].documentType | string | Идентификатор типа документа. Возможные значения: unico.moja.dictionary.br.rg.v2.Rg, unico.moja.dictionary.br.cnh.v2.Cnh, unico.moja.dictionary.br.cin.v1.Cin, unico.moja.dictionary.br.passaporte.v1.Passaporte. |
items[].documentId | string | Идентификатор документа. Передайте это значение в document.documentId при вызове POST /processes/v1, чтобы повторно использовать документ. |
Использование documentId для повторного использования
Получив documentId, передайте его в запросе на создание процесса Document, чтобы пропустить захват:
{
"subject": {
"code": "12345678909",
"name": "Luke Skywalker"
},
"document": {
"purpose": "onboarding",
"authProcessId": "<biometric-process-id>",
"documentId": "doc-abc-123"
}
}
| Поле | Описание |
|---|---|
document.purpose | Бизнес-цель данного процесса документа. Допустимые значения: creditprocess, carpurchase, paybypaycheck, onboarding, fgts. Эти значения специфичны для Document API и отличаются от перечисления purpose биометрического SDK. |
document.authProcessId | ID биометрического процесса, ранее созданного для этого пользователя (из POST /processes/v1). |
document.documentId | ID документа, полученный из ответа этого эндпоинта. При указании этого параметра document.files можно опу стить — платформа автоматически извлечёт ранее захваченный документ. |
Полную схему запроса процесса Document см. в разделе Создание процесса Document.
Коды ошибок
- 400 Bad Request
- 403 Forbidden
- 404 Not Found
- 429 Too Many Requests
- 500 Internal Server Error
| Код | Сообщение | Описание |
|---|---|---|
20507 | O parâmetro subject.code é inválido. | Некорректное или несуществующее значение идентификатора (CPF или CURP). |
20002 | O parâmetro APIKey não foi informado. | Отсутствует заголовок APIKEY. |
20001 | O parâmetro authtoken não foi informado. | Отсутствует заголовок токена аутентификации. |
Bearer-токен или APIKEY отсутствует, истёк или недействителен.
| Код | Сообщение | Описание |
|---|---|---|
30020 | The provided authorization token does not have permission to perform this action. | Токен не имеет разрешения на доступ к селфи документа. |
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. |
| Код | Сообщение | Описание |
|---|---|---|
99987 | Attachment not found. | Вложение, связанное с документом, не найдено. |
50001 | The process is not found. | Документ для указанных параметров не найден. |
Rate limit reached. When your system receives an HTTP 429 error, you must implement mechanisms to prevent cascading failures and avoid worsening the restriction.
Best practices:
- Cool-down period (backoff): Immediately halt or throttle subsequent requests from your system. Do not continuously retry failed requests in a tight loop.
- Queueing & throttling: Buffer or queue outgoing requests on your end to control the traffic flow before re-sending them.
- Exponential backoff with jitter: When retrying, increase the waiting time exponentially between attempts (e.g., 1 s, 2 s, 4 s, 8 s) and add a small random delay ("jitter") to prevent a herd effect where all queued requests retry at the exact same millisecond.
Continuously hitting a rate-limited endpoint without backing off can prolong the restriction period and severely impact your system's operational throughput. Properly throttling requests on your side ensures a smoother, more resilient integration.
For default limits, increase requests and additional details, see Rate Limits.
| Код | Сообщение | Описание |
|---|---|---|
99999 | Internal failure! Try again later. | Ошибка обработки на стороне сервера. |