Sube archivos individuales a un caso, consulta su OCR y reclasifícalos cuando lo necesites.
| Método | Ruta | Descripción |
|---|---|---|
GET | /v1/documents | Lista paginada de documentos de la empresa |
POST | /v1/documents | Sube un documento a un caso |
GET | /v1/documents/{document_id} | Consulta metadata y OCR del documento |
GET | /v1/documents/{document_id}/extraction-data | Extracción avanzada (vigencia, códigos QR/barras, titular) |
DELETE | /v1/documents/{document_id} | Da de baja el documento (baja lógica) |
POST | /v1/documents/{document_id}/restore | Restaura un documento dado de baja |
PATCH | /v1/documents/{document_id}/ocr | Inyecta OCR de forma manual |
POST | /v1/documents/{document_id}/classify | Reclasifica el documento (manual o automático) |
POST | /v1/documents/{document_id}/process | Lanza OCR automático |
POST | /v1/documents/{document_id}/reclassify | Cambia el tipo y vuelve a procesar |
/v1/documents — Listar documentos#Devuelve la lista paginada de documentos de la empresa del usuario autenticado, ordenada del más reciente al más antiguo.
Requiere Bearer Token (JWT). A diferencia de los demás endpoints de esta serie, este no acepta
x-api-key.
| Parámetro | Tipo | Default | Descripción |
|---|---|---|---|
case_id | UUID | — | Filtra por caso. Combinable con document_id (AND). |
document_id | UUID | — | Filtra por documento. Combinable con case_id (AND). |
limit | integer | 10 | Tamaño de página (máx 100) |
offset | integer | 0 | Cursor numérico para paginación |
Un
case_idodocument_idinexistente, o de otra compañía, devuelve una lista vacía (no404/403) para no revelar la existencia de recursos ajenos.
curl "https://api.nexcar.mx/v1/documents?case_id=11111111-2222-3333-4444-555555555555&limit=10&offset=0" \
-H "Authorization: Bearer tu_token_jwt"
200#{
"data": [
{
"document_id": "abc123",
"case_id": "11111111-2222-3333-4444-555555555555",
"type": "factura",
"mime_type": "application/pdf",
"status": "completed",
"url": "https://...nexcar.mx/storage/.../factura.pdf",
"created_at": "2026-06-08T10:00:00+00:00",
"active": true
}
],
"pagination": {
"limit": 10,
"offset": 0,
"total": 1,
"has_more": false
}
}
| Campo | Tipo | Descripción |
|---|---|---|
document_id | UUID | Identificador del documento |
case_id | UUID | Caso al que pertenece |
type | string | null | Tipo del documento |
mime_type | string | null | MIME del archivo |
status | string | null | Estado de procesamiento del documento |
url | string | null | URL pública del archivo almacenado |
created_at | string | Fecha de creación en formato ISO 8601 |
active | boolean | true = documento activo |
pagination.total | integer | Total de registros que coinciden |
pagination.has_more | boolean | true si hay más páginas |
| HTTP | Código | Causa |
|---|---|---|
400 | VALIDATION_ERROR | case_id/document_id no son UUID válidos, o limit/offset no son enteros |
401 | UNAUTHORIZED | Falta el token, o no se pudo determinar company_id desde el token/perfil |
/v1/documents — Subir documento#Sube un archivo y lo asocia a un caso.
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
case_id | UUID | Sí | Caso al que pertenece el documento |
mime_type | string | Sí | MIME del archivo (ver tabla de soportados) |
url | string | Condicional | URL pública del archivo. XOR con base64. |
base64 | string | Condicional | Contenido en base64. XOR con url. |
type | string | No | Tipo del documento (ver Tipos de documento). Si no lo envías, se intentará detectar automáticamente. |
parent_file_id | UUID | No | Documento padre dentro del mismo caso (p. ej. anexo de una factura). |
Límite de tamaño: 20 MB por archivo. Debes enviar uno y solo uno entre
urlybase64.
application/pdf · application/xml · image/jpeg · image/jpg · image/png · image/tiff · image/tif · image/x-tiff
curl -X POST https://api.nexcar.mx/v1/documents \
-H "x-api-key: tu_api_key" \
-H "Content-Type: application/json" \
-d '{
"case_id": "11111111-2222-3333-4444-555555555555",
"url": "https://tu-storage.example.com/repuve-consulta.pdf",
"mime_type": "application/pdf",
"type": "repuve"
}'
BASE64=$(base64 -i ./factura.pdf)
curl -X POST https://api.nexcar.mx/v1/documents \
-H "x-api-key: tu_api_key" \
-H "Content-Type: application/json" \
-d "{
\"case_id\": \"11111111-2222-3333-4444-555555555555\",
\"base64\": \"$BASE64\",
\"mime_type\": \"application/pdf\",
\"type\": \"factura\"
}"
201#{
"document_id": "abc123",
"url": "https://...nexcar.mx/storage/.../repuve-consulta.pdf"
}
| HTTP | Código | Causa |
|---|---|---|
400 | MISSING_PARAMETER | Falta case_id, mime_type o la fuente del archivo |
400 | VALIDATION_ERROR | UUID inválido, MIME no soportado, archivo > 20 MB, ambos url y base64 |
404 | RESOURCE_NOT_FOUND | El case_id o el parent_file_id no existe |
/v1/documents/{document_id}#Devuelve metadata, OCR y datos extraídos del documento.
curl https://api.nexcar.mx/v1/documents/abc123 \
-H "x-api-key: tu_api_key"
200#{
"case_id": "11111111-2222-3333-4444-555555555555",
"url": "https://...nexcar.mx/storage/.../factura.pdf",
"mime_type": "application/pdf",
"type": "factura",
"json_ocr": { "...": "..." },
"parsed_data": {
"vin": "3VWFE21C04M000001",
"rfc_emisor": "ABC010101AAA",
"monto_total": 285000.00,
"fecha_emision": "2024-08-15"
},
"validity": {
"document_validity": "vigente",
"codes": ["QR detectado"],
"userInfo": { "nombre": "JUAN PÉREZ GARCÍA" }
}
}
json_ocr y parsed_data son null mientras el OCR no haya terminado. Para no estar haciendo polling, configura un webhook.
/v1/documents/{document_id}/classify#Cambia o asigna el tipo del documento. Útil cuando subiste un archivo sin type y deseas clasificarlo manualmente, o cuando quieres forzar una nueva detección automática.
curl -X POST https://api.nexcar.mx/v1/documents/abc123/classify \
-H "x-api-key: tu_api_key" \
-H "Content-Type: application/json" \
-d '{ "type": "tenencia" }'
Si omites el cuerpo, ejecuta clasificación automática con base en el contenido.
/v1/documents/{document_id}/reclassify#Cambia el tipo del documento y relanza el OCR con la nueva clasificación. La respuesta es 202 Accepted con el job_id del nuevo procesamiento.
curl -X POST https://api.nexcar.mx/v1/documents/abc123/reclassify \
-H "x-api-key: tu_api_key" \
-H "Content-Type: application/json" \
-d '{ "type": "factura_xml" }'