Documentación API

Endpoints de extracción

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

Txt-to-JSON

Extracción de Txt / HTML / XML a JSON

Endpoint

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

Este endpoint recibe un campo content con texto plano, HTML o XML ya procesado y devuelve un único objeto JSON con los datos extraídos, siguiendo exactamente la estructura de un schema de tipo txt-json.

A diferencia de doc-json, aquí no se sube ningún archivo: el contenido llega listo en el formulario multipart. El resto del flujo (API key, schema, logs, ventana de contexto opcional) es idéntico al resto de funciones hijas.

URLs públicas (dominio Claix): extracción en POST https://www.claix.dev/api/txt-json; Modo agente en POST https://www.claix.dev/agent/txt-json. Nunca expongas la URL directa de Supabase al cliente final.

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.

1. Autenticación

Toda petición debe incluir tu API key. Es una credencial de servidor personal, distinta de cualquier token de sesión de usuario.

Opción A — Header dedicado (recomendado):

x-api-key: <TU_API_KEY>

Opción B — Header estándar Authorization:

Authorization: Bearer <TU_API_KEY>

Si envías los dos, el header x-api-key tiene prioridad.

Antes de procesar el contenido, el sistema valida que la API key exista y esté activa, y que la cuenta no esté suspendida. Si falla, responde 401.

2. Formato de la petición

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

CampoTipoObligatorioDescripción
contentTextoEl texto, HTML o XML a transformar. No es un archivo: es el contenido en sí, enviado como parte de texto del formulario.
schema_idTexto (UUID)Identificador de un schema de tipo txt-json previamente creado en tu cuenta.

El nombre de campo debe ser exactamente content, y el del identificador del schema exactamente schema_id.

Requisito importante sobre el schema

El schema_id debe corresponder a un schema de tipo txt-json. Si envías un schema de otro tipo (pdf-json, doc-json, etc.), la petición se rechaza con 400.

Tipos de contenido admitidos en content

TipoEjemplos de usoNotas
Texto planoEmails en bruto, logs, contratos pegados, CSV textual, Markdown sin renderizarSe analiza tal cual; no se interpreta sintaxis Markdown.
HTMLPáginas web, fragmentos de DOM, emails HTML, facturas renderizadasEl modelo lee etiquetas y texto visible; no ejecuta JavaScript.
XMLFeeds RSS/Atom, SOAP, facturas electrónicas, respuestas de APIs legacySe respeta la estructura de nodos para localizar datos.

Requisitos del contenido

  • El contenido no puede estar vacío (solo espacios).
  • Máximo 300.000 caracteres. Si se supera, la petición se rechaza con 413 antes de llamar a la IA.
  • Como respaldo, el campo content también acepta un File de texto si tu cliente lo envía así, pero lo habitual es un string en el multipart.

3. Cómo construir la llamada paso a paso

  1. Ten a mano tu API key.
  2. Crea un schema de tipo txt-json y copia su schema_id.
  3. Construye una petición POST a https://www.claix.dev/api/txt-json.
  4. Añade el header de autenticación (x-api-key o Authorization: Bearer).
  5. Construye el cuerpo como multipart/form-data con content (texto/HTML/XML) y schema_id (UUID como string).
  6. Envía la petición y comprueba que el código HTTP sea 200.

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

Código de estado: 200 OK · Content-Type: application/json

{
  "success": true,
  "schema_utilizado": "Facturas HTML",
  "total_registros": 1,
  "data": [
    {
      "numero_factura": "F-2026-00456",
      "importe_total": 1284.50,
      "moneda": "EUR"
    }
  ]
}
CampoTipoDescripción
successbooleanSiempre true cuando el código HTTP es 200.
schema_utilizadostringEl nombre (no el id) del schema que se aplicó.
total_registrosnumberSiempre 1: el contenido completo se trata como una única fuente de datos.
dataarray de objetosContiene exactamente un objeto, con las claves de tu schema. Si un dato no aparece, su valor es null.
document_idstring (UUID) · opcionalSolo si el schema tiene window_context activo: id del documento persistido para consultas posteriores en ventana de contexto.

6. Códigos de error

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

400 — Falta content o schema_id, el body no es multipart, el contenido está vacío, o el schema no es de tipo txt-json.

401 — API key ausente, inválida, desactivada o cuenta no activa.

404 — El schema_id no existe o no pertenece a la cuenta.

413 — El contenido supera 300.000 caracteres.

422 — No se pudo extraer ningún dato relacionado con tu schema.

502 — Fallo del servicio de IA. 405 — Método distinto de POST. 500 — Error interno.

7. Resumen rápido de códigos de error

CódigoCategoría¿Reintentar?
200Éxito
400Error del cliente (documento 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
413Archivo o texto extraído demasiado grandeNo, reduce el tamaño primero
422Sin datos extraíblesNo, revisa el documento/schema primero
500Error interno del servidorSí, con precaución
502Fallo del servicio de IASí, recomendado con backoff

Ejemplos de petición

curl -X POST "https://www.claix.dev/api/txt-json" \
  -H "x-api-key: <TU_API_KEY>" \
  -F "content=<html><body><h1>Factura F-2026-00456</h1><p>Total: 1284.50 EUR</p></body></html>" \
  -F "schema_id=b980cfe7-61ef-4a5a-9724-881c8a5541e2"