Obtener documentos reutilizables
Utilice este endpoint para verificar si un usuario ya tiene un documento disponible para reutilización antes de iniciar un nuevo flujo de captura de documentos. Si se encuentra un documento, su documentId se puede pasar directamente a POST /processes/v1 (tipo Documento) para omitir el paso de captura.
Endpoint
| Entorno | URL |
|---|---|
| Producción | GET https://api.id.unico.app/documents/v1 |
| Sandbox | GET https://api.id.uat.unico.app/documents/v1 |
Solicitud
| Encabezado | Valor |
|---|---|
Authorization | Bearer <access_token> (consulte Autenticación) |
APIKEY | Clave API provisionada con Captura de Documentos y Reutilización habilitada. |
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
code | string | sí | Identificador del usuario (CPF o CURP, sin formato). |
type | string | sí | Tipo de documento a consultar. Valores aceptados: BR_RG, BR_CNH, BR_CIN, BR_PASSPORT. |
Los valores de type anteriores son específicos de este endpoint. No los confunda con:
subject.duiTypeen las solicitudes POST: usa el prefijoDUI_TYPE_*e identifica a la persona, no el tipo de documento (por ejemplo,DUI_TYPE_BR_CPF).documentTypeen la respuesta: usa la ruta completa del registro (por ejemplo,unico.moja.dictionary.br.cnh.v2.Cnh).
Ejemplo
- 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
Respuestas
{
"items": [
{
"documentType": "unico.moja.dictionary.br.cnh.v2.Cnh",
"documentId": "doc-abc-123"
}
]
}
| Campo | Tipo | Descripción |
|---|---|---|
items | array | Lista de documentos reutilizables encontrados para el usuario. Array vacío si no se encontró ningún documento reutilizable para el code y type proporcionados. |
items[].documentType | string | Identificador del tipo de documento. Valores posibles: 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 | Identificador del documento. Pase este valor en document.documentId en POST /processes/v1 para reutilizar el documento. |
Token Bearer o APIKEY ausente, expirado o inválido.
Límite de tasa alcanzado. Cuando su sistema recibe un error HTTP 429, debe implementar mecanismos para prevenir fallos en cascada y evitar empeorar la restricción.
Mejores prácticas:
- Período de espera (backoff): Detenga o limite inmediatamente las solicitudes subsecuentes de su sistema. No reintente continuamente solicitudes fallidas en un bucle cerrado.
- Cola y limitación: Almacene en buffer o encole las solicitudes salientes de su lado para controlar el flujo de tráfico antes de reenviarlas.
- Backoff exponencial con jitter: Al reintentar, aumente el tiempo de espera exponencialmente entre intentos (por ejemplo, 1 s, 2 s, 4 s, 8 s) y agregue un pequeño retraso aleatorio ("jitter") para prevenir un efecto manada donde todas las solicitudes en cola reintentan en el mismo milisegundo.
Golpear continuamente un endpoint con límite de tasa sin aplicar backoff puede prolongar el período de restricción e impactar severamente el rendimiento operativo de su sistema. Limitar adecuadamente las solicitudes de su lado asegura una integración más fluida y resiliente.
Para límites predeterminados, solicitudes de aumento y detalles adicionales, consulte Límites de tasa.
Uso del documentId para reutilización
Una vez que tenga un documentId, páselo en la solicitud de proceso de Documento para omitir la captura:
{
"subject": {
"code": "12345678909",
"name": "Luke Skywalker"
},
"document": {
"purpose": "onboarding",
"authProcessId": "<biometric-process-id>",
"documentId": "doc-abc-123"
}
}
| Campo | Descripción |
|---|---|
document.purpose | Propósito de negocio para este proceso de documento. Valores aceptados: creditprocess, carpurchase, paybypaycheck, onboarding, fgts. Estos valores son específicos de la API de Documentos y difieren del enum purpose del SDK biométrico. |
document.authProcessId | ID del proceso biométrico creado previamente para este usuario (de POST /processes/v1). |
document.documentId | ID del documento obtenido de la respuesta de este endpoint. Cuando se proporciona, document.files puede omitirse: la plataforma recupera automáticamente el documento capturado previamente. |
Para el esquema completo de solicitud de proceso de Documento, consulte Crear proceso de documento.
Códigos de error
- 400 Bad Request
- 403 Forbidden
- 404 Not Found
- 500 Internal Server Error
| Código | Mensaje | Descripción |
|---|---|---|
20507 | O parâmetro subject.code é inválido. | Valor de identificador malformado o inexistente (CPF o CURP). |
20002 | O parâmetro APIKey não foi informado. | Falta el encabezado APIKEY. |
20001 | O parâmetro authtoken não foi informado. | Falta el encabezado del token de autenticación. |
| Código | Mensaje | Descripción |
|---|---|---|
30020 | The provided authorization token does not have permission to perform this action. | El token no tiene permiso para acceder al selfie del documento. |
30017 | User does not have permission to perform this action. | JWT malformado o usuario sin permiso para realizar esta operación. |
10502 | O token informado está expirado. | Token de acceso expirado. |
10501 | O token informado é inválido. | Token de autenticación inválido. |
10201 | O AppKey informado é inválido. | APIKEY ausente o inexistente. |
| Código | Mensaje | Descripción |
|---|---|---|
99987 | Attachment not found. | No se encontró el adjunto asociado al documento. |
50001 | The process is not found. | No se encontró ningún documento para los parámetros proporcionados. |
| Código | Mensaje | Descripción |
|---|---|---|
99999 | Internal failure! Try again later. | Error de procesamiento del lado del servidor. |