Documentación API

Endpoints de extracción

Endpoints REST estándar para convertir archivos a JSON o JSON a Excel según tu schema.

PDF-to-JSON

Extracción de datos de PDF a JSON

Endpoint

POSThttps://www.claix.dev/api/pdf-json

Este endpoint recibe un archivo PDF y devuelve un único objeto JSON con los datos extraídos del documento, siguiendo exactamente la estructura que definas mediante un schema. Funciona con PDFs de texto seleccionable y con PDFs escaneados, porque el análisis lo realiza un modelo de IA con comprensión nativa de documentos, no un extractor de texto plano.

Está pensado para integraciones server-to-server (backends, scripts, n8n/Zapier/Make). No debe llamarse desde el navegador de un usuario final porque requiere una API key secreta.

A diferencia de Excel/CSV, el PDF completo se trata como una única fuente de datos y la respuesta contiene exactamente un registro en data — ideal para facturas, contratos, formularios, certificados o informes.

1. Autenticación

Toda petición debe incluir tu API key. Es una credencial de servidor personal y debe tratarse con el mismo cuidado que una contraseña de base de datos.

Opción A — Header dedicado (recomendado):

x-api-key: <TU_API_KEY>

Opción B — Header estándar Authorization:

Authorization: Bearer <TU_API_KEY>

Con uno de los dos es suficiente. Si envías ambos, x-api-key tiene prioridad.

Antes de procesar el PDF, el sistema valida que:

  • La API key exista y esté activa.
  • La cuenta asociada esté activa (no suspendida).

Si falla, se rechaza con 401 sin procesar el archivo.

2. Formato de la petición

Método: POST · Content-Type: multipart/form-data (obligatorio)

CampoTipoObligatorioDescripción
fileArchivo binarioEl PDF a analizar. Debe ser el archivo en sí, no una ruta ni URL.
schema_idTexto (UUID)Schema previamente creado en tu cuenta, del tipo PDF → JSON.

Los nombres de campo deben ser exactamente file y schema_id. No se admiten alias como pdf, documento o upload.

El schema_id debe corresponder a un schema de tipo PDF → JSON. Si envías uno de Excel → JSON u otro tipo, recibirás 400.

Requisitos del archivo:

  • Formato: .pdf únicamente (validado por MIME y extensión).
  • No puede estar vacío (0 bytes).
  • Tamaño máximo: 15 MB (error 413 si se supera).
  • Compatible con PDFs de texto y escaneados.

3. Cómo construir la llamada

  1. Ten a mano tu API key y el schema_id del tipo correcto.
  2. Construye un POST a la URL del endpoint.
  3. Añade el header de autenticación.
  4. Envía multipart/form-data con file (PDF) y schema_id.
  5. Comprueba el código HTTP: solo 200 indica éxito.

4. Ejemplos de llamada

Consulta el panel de la derecha para ver ejemplos en cURL, JavaScript, Node.js, Python, PHP y n8n.

5. Formato de la respuesta exitosa

200 OK · Content-Type: application/json

{
  "success": true,
  "schema_utilizado": "Facturas de Proveedores",
  "total_registros": 1,
  "data": [
    {
      "numero_factura": "F-2026-00456",
      "fecha_emision": "2026-03-14",
      "proveedor": "Suministros Industriales del Ebro S.L.",
      "importe_total": 1284.50,
      "moneda": "EUR"
    }
  ]
}
CampoTipoDescripción
successbooleanSiempre true cuando el HTTP es 200.
schema_utilizadostringNombre del schema aplicado (no el id).
total_registrosnumberSiempre 1: un documento = un registro extraído.
dataarrayContiene exactamente un objeto con las propiedades del schema. Valores no encontrados son null.

Si una propiedad del schema representa una lista (p. ej. líneas de factura), las instancias se agrupan en un array. Si el schema espera un valor único pero hay varias instancias, se extrae la más relevante.

6. Códigos de error

{
  "error": "Descripción legible del problema.",
  "detalle": "Información técnica adicional (solo presente en algunos casos)."
}

400 — Falta file o schema_id, multipart inválido, no es PDF, archivo vacío, corrupto, o schema de tipo incorrecto.

401 — Autenticación fallida.

404 — schema_id inexistente o no pertenece a tu cuenta.

413 — PDF supera 15 MB.

422 — PDF leído pero sin datos extraíbles según el schema.

502 — Fallo del servicio de IA (transitorio).

405 — Método distinto de POST. · 500 — Error interno.

7. Resumen de códigos

CódigoCategoría¿Reintentar?
200Éxito
400Error del cliente (archivo o datos mal formados)No, corrige la petición primero
401Error de autenticaciónNo, corrige las credenciales primero
404Recurso no encontradoNo, corrige el schema_id primero
405Método HTTP incorrectoNo, corrige el método primero
413PDF demasiado grandeNo, reduce el tamaño del archivo primero
422Sin datos extraíblesNo, revisa el PDF/schema primero
500Error interno del servidorSí, con precaución
502Fallo del servicio de IASí, recomendado con backoff

8. Buenas prácticas

  • Valida el código HTTP antes de leer data[0].
  • Comprueba el tamaño del PDF en tu cliente antes de enviarlo.
  • Recuerda: data siempre tiene exactamente un elemento (un documento = un objeto).
  • Reintenta automáticamente solo en 500 y 502, nunca en 400, 401, 404, 413 o 422.
  • Descripciones claras en las propiedades del schema mejoran la precisión en documentos con layouts poco estandarizados.
  • No incluyas tu API key en frontend ni repositorios públicos.

Ejemplos de petición

curl -X POST "https://www.claix.dev/api/pdf-json" \
  -H "x-api-key: <TU_API_KEY>" \
  -F "file=@./factura_marzo.pdf" \
  -F "schema_id=3c7a9f21-4b8e-4d1a-9c6f-2e0d8a5b7c4f"