Получение документов для повторного использования
Используйте этот эндпоинт, чтобы проверить, есть ли у пользователя доступный для повторного использования документ, прежде чем начинать новый процесс захвата документа. Если документ найден, его 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, чтобы повторно использовать документ. |
Bearer-токен или APIKEY отсутствует, истёк или недействителен.
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.
Использование 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
- 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. | Отсутствует заголовок токена аутентификации. |
| Код | Сообщение | Описание |
|---|---|---|
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. | Документ для указанных параметров не найден. |
| Код | Сообщение | Описание |
|---|---|---|
99999 | Internal failure! Try again later. | Ошибка обработки на стороне сервера. |