Documentación API

Endpoints de schemas

Consulta, crea y elimina schemas de tu cuenta con la misma API key de extracción.

Schemas · Crear

Crear un schema por API

Endpoint

POSThttps://claix.dev/api/create-schema

Crea un schema en la cuenta de la API key, listo para usarse en los endpoints de extracción o Modo Agente. Equivale a crearlo desde el dashboard, con validación de tipos y definiciones.

Llama siempre a https://claix.dev/api/create-schema.

Está pensado para integraciones server-to-server. Esta llamada es gratuita: no se factura ni consume el cupo de extracciones.

1. Autenticación

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

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.

El sistema valida que la key exista, esté activa y la cuenta no esté suspendida. Si falla, responde 401.

2. Formato de la petición

Método: POST · Content-Type: application/json

CampoTipoObligatorioDescripción
namestringNombre visible del schema (máx. 200).
typestringexcel-json, json-excel, pdf-json, doc-json, img-json o txt-json.
schema_definitionobjetoCampos a extraer. Cada clave es el nombre JSON de salida.
is_agent_modebooleanNoActiva Modo Agente. Si omites el campo pero envías agent_definition, se asume true.
agent_definitionobjetoSi hay modo agenteParámetros a razonar. Obligatorio si is_agent_mode es true.
resumen_agentstringNoInstrucción extra para la fase agente (máx. 500).
window_contextbooleanNoActiva la ventana temporal de contexto. Por defecto false.
window_timenumberSi window_context es trueDuración de la ventana en minutos. Valores admitidos: 5, 10, 15, 30, 45, 60, 90, 120, 180, 240, 360, 480, 720, 1440.

Cada campo de schema_definition debe ser:

{
  "nombre_dni": {
    "type": "string",
    "description": "nombre de la persona del dni"
  }
}

Types permitidos en extracción: string, integer, number, boolean. La description es obligatoria.

Cada parámetro de agent_definition usa boolean, string, closed o integer. Si el type es closed, options debe ser un array con al menos una respuesta:

{
  "calidad_foto": {
    "type": "closed",
    "options": ["buena calidad", "mala calidad", "ilegible", "perfecta"],
    "description": "La calidad de la imagen y la legibilidad de sus datos"
  }
}

El tipo json-excel no admite Modo Agente.

3. Cómo construir la llamada

  1. Ten a mano tu API key.
  2. Construye un POST JSON a https://claix.dev/api/create-schema.
  3. Incluye name, type y schema_definition.
  4. Si quieres Modo Agente, añade is_agent_mode: true y agent_definition.
  5. Comprueba el código HTTP: 201 indica que se creó.

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

201 Created · Content-Type: application/json

{
  "success": true,
  "schema": {
    "id": "b980cfe7-61ef-4a5a-9724-881c8a5541e2",
    "name": "DNI cliente",
    "type": "img-json",
    "schema_definition": {
      "nombre_dni": {
        "type": "string",
        "description": "nombre de la persona del dni"
      },
      "numero_dni": {
        "type": "string",
        "description": "numero de dni"
      },
      "fecha_caducidad": {
        "type": "string",
        "description": "fecha de caducidad del dni"
      }
    },
    "is_agent_mode": true,
    "agent_definition": {
      "edad": {
        "type": "integer",
        "description": "Edad exacta de la persona pero restale 3"
      },
      "calidad_foto": {
        "type": "closed",
        "options": ["buena calidad", "mala calidad", "ilegible", "perfecta"],
        "description": "La calidad de la imagen y la legibilidad de sus datos"
      },
      "es_mayor_edad": {
        "type": "boolean",
        "description": "Es mayor de edad actualmente la persona del dni?"
      },
      "fecha_vencimiento": {
        "type": "string",
        "description": "Cuado le vence el dni y cuanto tiempo queda para ello"
      }
    },
    "resumen_agent": null,
    "window_context": false,
    "window_time": null,
    "created_at": "2026-08-17T13:10:00.000Z"
  }
}
CampoTipoDescripción
successbooleanSiempre true cuando el HTTP es 201.
schemaobjetoSchema persistido, incluido su id UUID.
schema.iduuidÚsalo luego como schema_id en extracción.
schema.schema_definitionobjetoDefinición normalizada.
schema.agent_definitionobjeto | nullNull si is_agent_mode es false.
schema.window_contextbooleanIndica si el schema usa ventana temporal de contexto.
schema.window_timenumber | nullDuración en minutos cuando window_context es true; null si está desactivada.

6. Códigos de error

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

400 — Payload inválido: falta name/type/definition, type desconocido, description vacía, closed sin options, json-excel con Modo Agente, o window_context true sin window_time válido.

401 — Autenticación fallida: key ausente, inexistente, desactivada o cuenta suspendida.

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

7. Resumen de códigos

CódigoCategoría¿Reintentar?
201Creado
400Error del cliente (datos mal formados)No, corrige la petición primero
401Error de autenticaciónNo, corrige las credenciales primero
405Método HTTP incorrectoNo, corrige el método primero
500Error interno del servidorSí, con precaución

8. Buenas prácticas

  • Usa https://claix.dev/api/create-schema.
  • El type debe coincidir con el endpoint de extracción posterior.
  • Descriptions claras mejoran la precisión de la IA en extracción y agente.
  • No incluyas tu API key en frontend ni repositorios públicos.

Ejemplos de petición

curl -X POST "https://claix.dev/api/create-schema" \
  -H "x-api-key: <TU_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{  "name": "DNI cliente",  "type": "img-json",  "schema_definition": {    "nombre_dni": {      "type": "string",      "description": "nombre de la persona del dni"    },    "numero_dni": {      "type": "string",      "description": "numero de dni"    },    "fecha_caducidad": {      "type": "string",      "description": "fecha de caducidad del dni"    }  },  "is_agent_mode": true,  "agent_definition": {    "edad": {      "type": "integer",      "description": "Edad exacta de la persona pero restale 3"    },    "calidad_foto": {      "type": "closed",      "options": ["buena calidad", "mala calidad", "ilegible", "perfecta"],      "description": "La calidad de la imagen y la legibilidad de sus datos"    },    "es_mayor_edad": {      "type": "boolean",      "description": "Es mayor de edad actualmente la persona del dni?"    },    "fecha_vencimiento": {      "type": "string",      "description": "Cuado le vence el dni y cuanto tiempo queda para ello"    }  }}'