Ventana de Contexto

Ventana de Contexto

Pregunta a un documento persistido tras una extracción con window_context activo.

Ventana de Contexto

Consultar un espacio de conocimiento

Endpoint

POSThttps://claix.dev/space-context/{space_id}

Los documentos persistidos se pueden agrupar en espacios de conocimiento. Este endpoint responde preguntas usando todos los documentos de un espacio a la vez, en lugar de uno solo, para que puedas comparar, sumar o cuadrar datos repartidos entre varios archivos.

Es el hermano de POST /document-context/{document_id}: la entrada y la salida son exactamente iguales. Lo único que cambia es el alcance de la respuesta y que en la URL viaja un space_id en vez de un document_id.

URL pública: POST https://claix.dev/space-context/{space_id}. Nunca expongas la URL directa de Supabase.

Está pensado para integraciones server-to-server. Requiere API key secreta.

1. Autenticación

Toda petición debe incluir tu API key.

Opción A — Header dedicado (recomendado):

x-api-key: <TU_API_KEY>

Opción B — Header estándar Authorization:

Authorization: Bearer <TU_API_KEY>

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

2. Cómo se agrupan los documentos

Antes de poder preguntar a un espacio, los documentos tienen que estar dentro de él. Para eso, las cinco llamadas de extracción (/api/excel-json, /api/pdf-json, /api/doc-json, /api/img-json, /api/txt-json) y las cinco de Modo agente (/agent/*-json) aceptan un campo opcional space_id.

  • El espacio debe pertenecer a la misma cuenta dueña de la API key. Si no existe o es de otra cuenta, la extracción responde 404.
  • Solo tiene efecto cuando el schema tiene la ventana de contexto activada, que es cuando el documento se guarda. Sin ella no hay nada que agrupar.
  • Puedes reutilizar el mismo space_id en tantas extracciones como quieras: cada documento se suma al espacio.

Consulta el panel de la derecha, pestaña Agrupar al extraer, para ver el flujo completo: extraer con space_id y después preguntar al espacio.

3. Formato de la petición

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

El space_id (UUID) forma parte de la ruta. El body es idéntico al de document-context y tiene un único campo:

CampoTipoObligatorioDescripción
questionsarray de stringsPreguntas a responder usando solo el contenido de los documentos del espacio. Máximo 5 por turno. Máximo 400 caracteres por pregunta.
{
  "questions": [
    "¿Qué proveedor factura más en total sumando todas las facturas?",
    "¿Hay algún contrato cuyo importe no coincida con su factura?"
  ]
}
  • Al menos 1 pregunta; máximo 5.
  • Cada string debe tener contenido (no solo espacios).
  • El espacio debe pertenecer a la cuenta de la API key y contener al menos un documento vigente.

4. Límites del contexto

Un espacio puede crecer sin parar, así que la llamada acota cuánta información recibe la IA. Esto mantiene el coste bajo control y evita que la precisión se degrade cuando hay demasiado texto en juego.

LímiteValorQué ocurre al superarlo
Documentos por consulta50Se usan los 50 más recientes del espacio.
Caracteres de contexto en total200.000El presupuesto se reparte entre los documentos seleccionados, así que ninguno queda fuera del todo.
Preguntas por llamada5Responde 400. Divide las preguntas en varias llamadas.
  • Los documentos caducados no se incluyen: si un documento ya expiró, deja de contar para el espacio.
  • Cuando un documento se recorta por presupuesto, la IA lo sabe y no afirma nada sobre la parte que no ha visto.
  • Si el espacio existe pero no tiene ningún documento vigente con contenido, responde 400.

5. Cómo construir la llamada

  1. Crea un espacio de conocimiento en el panel y copia su space_id.
  2. Extrae tus documentos con la ventana de contexto activa, enviando ese space_id en cada llamada.
  3. Ten a mano tu API key.
  4. POST a https://claix.dev/space-context/{space_id}.
  5. Envía { "questions": ["..."] } como JSON.
  6. Comprueba HTTP 200 y lee ia_response.

6. Ejemplos de llamada

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

7. Formato de la respuesta exitosa

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

La forma es idéntica a la de document-context, para que puedas cambiar de una llamada a otra sin tocar el código que lee la respuesta.

{
  "user_ask": [
    "¿Qué proveedor factura más en total sumando todas las facturas?",
    "¿Hay algún contrato cuyo importe no coincida con su factura?"
  ],
  "ia_response": [
    "Suministros Omega S.A., 48.320 € entre tres facturas (febrero, marzo y abril).",
    "Sí: contrato-omega.pdf fija 12.000 € y factura-omega-03.pdf cobra 13.450 €."
  ]
}
CampoTipoDescripción
user_askarray de stringsLas preguntas enviadas, en el mismo orden.
ia_responsearray de string o nullRespuestas alineadas 1:1 con user_ask. Si el dato no está en ninguno de los documentos del espacio, el valor es null (JSON nativo, no un texto). Cuando la respuesta sale de cruzar varios documentos, cita brevemente de qué archivos procede.

8. Códigos de error

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

400 — space_id inválido, JSON mal formado, questions ausente, vacío, más de 5 ítems, una pregunta supera 400 caracteres, o el espacio no tiene documentos vigentes con contenido.

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

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

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

9. 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://claix.dev/space-context/5b9e2c14-7d3a-4f8b-9e1c-6a0d4b8f2e7c" \
  -H "x-api-key: <TU_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "questions": [
      "¿Qué proveedor factura más en total sumando todas las facturas?",
      "¿Hay algún contrato cuyo importe no coincida con su factura?"
    ]
  }'