Ventana de Contexto Temporal
Preguntas sobre un documento persistido
Endpoint
https://www.claix.dev/window-context/{document_id}Este endpoint responde preguntas sobre un documento que ya fue extraído con window_context activo. El document_id viaja en la URL (el que devolvió la extracción) y las preguntas van en un JSON sencillo.
URL pública: POST https://www.claix.dev/window-context/{document_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. Formato de la petición
Método HTTP: POST · Content-Type: application/json
El document_id (UUID) forma parte de la ruta. El body tiene un único campo:
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| questions | array de strings | Sí | Preguntas a responder usando solo el markdown persistido del documento. Máximo 5 por turno. Máximo 400 caracteres por pregunta. |
{
"questions": [
"¿Cuál es la penalización exacta por cancelación anticipada?",
"¿Qué empresa figura como arrendataria y cuál es su CIF?"
]
}- Al menos 1 pregunta; máximo 5.
- Cada string debe tener contenido (no solo espacios).
- El documento debe pertenecer a la cuenta de la API key y no haber expirado.
3. Cómo construir la llamada
- Extrae un archivo con
window_context: truey guarda eldocument_idde la respuesta. - Ten a mano tu API key.
- POST a
https://www.claix.dev/window-context/<document_id>. - Envía
{ "questions": ["..."] }como JSON. - Comprueba HTTP 200 y lee
ia_response.
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
{
"user_ask": [
"¿Cuál es la penalización exacta por cancelación anticipada?",
"¿Qué empresa figura como arrendataria y cuál es su CIF?"
],
"ia_response": [
"El 15 % del importe restante del contrato.",
"Inversiones Delta S.L., CIF B12345678"
]
}| Campo | Tipo | Descripción |
|---|---|---|
| user_ask | array de strings | Las preguntas enviadas, en el mismo orden. |
| ia_response | array de string o null | Respuestas alineadas 1:1 con user_ask. Si el dato no está en el documento, el valor es null (JSON nativo, no un texto). |
6. Códigos de error
{
"error": "Descripción legible del problema.",
"detalle": "Información técnica adicional (solo presente en algunos casos)."
}400 — document_id inválido, JSON mal formado, questions ausente, vacío, más de 5 ítems, o una pregunta supera 400 caracteres.
401 — API key ausente, inválida, desactivada o cuenta no activa.
404 — El documento no existe, no pertenece a la cuenta, o ha expirado.
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ódigo | Categoría | ¿Reintentar? |
|---|---|---|
| 200 | Éxito | — |
| 400 | Error del cliente (documento o datos mal formados) | No, corrige la petición primero |
| 401 | Error de autenticación | No, corrige las credenciales primero |
| 404 | Recurso no encontrado | No, corrige el schema_id primero |
| 405 | Método HTTP incorrecto | No, corrige el método primero |
| 413 | Archivo o texto extraído demasiado grande | No, reduce el tamaño primero |
| 422 | Sin datos extraíbles | No, revisa el documento/schema primero |
| 500 | Error interno del servidor | Sí, con precaución |
| 502 | Fallo del servicio de IA | Sí, recomendado con backoff |