Saltar al contenido principal

Referencia API

Veridia expone una API REST chica. Tres endpoints. JSON in, JSON out. Sin SOAP, sin GraphQL, sin XML.

Base URL

https://api.xxuxe.online

Todas las requests deben usar HTTPS. Las requests HTTP son rechazadas.

Resumen de endpoints

MetodoPathProposito
POST/v1/verify/initInicia una verificacion, obtene URLs de upload presigned
POST/v1/verify/submitDespues del upload, dispara el pipeline ML
GET/v1/verify/:idConsulta status de verificacion / obtene veredicto
GET/healthLiveness check (no requiere auth)

El widget usa estos endpoints internamente. Vos los llamas directamente solo cuando construyas un flujo server-side o un cliente mobile custom.

Autenticacion

Cada endpoint (excepto /health) requiere un bearer token:

Authorization: Bearer qv_pub_FJJWXMA2RN2XPRDK6YJX4KTVD0XSQHW9

Existen dos tipos de keys:

TipoPrefijoDonde usar
Publishableqv_pub_*Browser, widget, clientes publicos
Secretqv_sec_*Solo server-side — obtene veredictos, verifica webhooks

Detalles completos: Autenticacion.

Versionado

La API esta versionada en el path de URL: /v1/.... Cambios breaking obtienen un path de version nuevo (/v2/...). La version actual queda disponible al menos 12 meses despues que una sucesora se publica.

Adiciones no-breaking (nuevos campos opcionales, nuevos endpoints) suceden en /v1 sin aviso.

Formato de request

Todos los bodies POST son JSON:

POST /v1/verify/init HTTP/1.1
Host: api.xxuxe.online
Authorization: Bearer qv_pub_...
Content-Type: application/json

{
"userRef": "customer-12345",
"country": "PY",
"documentType": "dni"
}

Formato de response

Las responses JSON incluyen un requestId que deberias loguear. Cuando algo sale mal, asi es como soporte rastrea el problema:

{
"verificationId": "vf_AG07CDWRRFQV4T05ZXG2",
"uploads": { ... },
"expiresAt": 1714604000
}

Las responses de error usan un shape consistente:

{
"error": "invalid_body",
"message": "Request body failed validation",
"requestId": "9f511d92ac11236d-SJC",
"detail": {
"fieldErrors": {
"country": ["expected 2 characters"]
}
}
}

El response header X-Request-Id lleva el mismo valor, para que puedas correlacionar incluso cuando el parsing JSON falla.

Expectativas de latencia

OperacionTipicoP99
/v1/verify/init<400ms<1.2s
/v1/verify/submit<2.7s<5s
/v1/verify/:id (durante procesamiento)<150ms<400ms

El endpoint /submit es el lento — corre OCR, despacha al backend ML, y espera respuesta inicial. El pipeline ML real termina async; haces polling a /v1/verify/:id para el veredicto.

Rate limits

Limites por defecto por tenant:

EndpointRequests / minuto
/v1/verify/init60
/v1/verify/submit30
/v1/verify/:id600

Necesitas limites mas altos? Contacta soporte — los podemos subir por-tenant.

Cuando llegas a un limite, la respuesta es 429 Too Many Requests con un header Retry-After.

CORS

La API permite requests cross-origin desde cualquier origen listado en los allowed origins de tu key en el dashboard. Las requests preflight (OPTIONS) son cacheadas por 10 minutos.

Errores

Todas las responses de error siguen el mismo shape. Mira Errores para el catalogo completo de codigos error que podes recibir.

Que sigue