SAV Informática Docs Contactar
Todos los productos

Documentación técnicaAPI · 1.7.4

Errores, límites y puesta en producción

Interpreta los códigos HTTP y prepara una integración con reintentos controlados.

En este artículo

Interpretar los códigos HTTP

CódigoCausa habitualAcción
400Datos inválidos o agente inexistenteCorrige la petición; no reintentes sin cambios
401Token vencido o revocado; licencia de widget inválidaDistingue el mecanismo de autenticación y revisa sus credenciales
402Licencia de instalación no vigenteEscala al administrador de AGOS
403Permiso faltante o función no habilitadaRevisa rol y alcance de licencia
404Recurso ausente, widget no publicado o audio deshabilitadoVerifica ruta, identificador y configuración
409Clave o identificador duplicadoConsulta el recurso antes de intentar crearlo de nuevo
413Archivo demasiado grandeReduce el tamaño según el límite documentado
429Ráfaga o cuota agotadaRespeta Retry-After cuando exista y distingue el tipo de cuota
503Cola llena o servicio no disponibleReintenta de forma acotada, con espera exponencial y variación aleatoria

Leer el cuerpo sin asumir un único formato

La mayoría de los errores usa { "error": "..." }, pero también hay texto plano, arreglos de mensajes de Identity y application/problem+json con campos de validación en errors.

Revisa el estado HTTP antes de deserializar una respuesta de éxito. Conserva el código y un diagnóstico seguro; no registres credenciales ni conversaciones completas por defecto.

Respetar límites

RecursoLímite documentado
Autenticación10 peticiones/minuto por IP
Chat autenticado20 peticiones/minuto por usuario por defecto, configurable
Widget público: chat y audio20 peticiones/minuto por IP
Audio autenticado10 peticiones/minuto por usuario
DocumentosHasta 50 MB
AudioHasta 15 MB
Imágenes de chatHasta 5 MB

La cuota diaria del chat depende del plan del usuario. La cuota mensual del widget pertenece a la licencia de uso. El exceso de maxInputChars se recorta: valida en tu interfaz si necesitas evitar que se pierda parte de la pregunta.

Reintentos sin duplicar operaciones

No repitas automáticamente una creación o un envío cuyo resultado es incierto. Una desconexión puede ocurrir después de que el servidor haya procesado la operación. El contrato no documenta una clave de idempotencia universal.

Para lecturas, usa reintentos limitados con un tiempo máximo. Para escrituras, verifica si la operación se realizó antes de repetirla. Un 403 o un 402 no se soluciona reintentando.

Chat en streaming

POST /api/chat/stream devuelve Server-Sent Events. El primer evento comunica la cola, luego llegan fragmentos de texto y finalmente [DONE].

data: {"event":"queue_position","length":0}

data: Para registrar

data:  una devolución...

data: [DONE]

Usa un cliente SSE probado que admita POST y encabezados Bearer. No asumas que cada bloque de red corresponde a un evento completo. El streaming no devuelve messageId ni sources; usa el chat sin streaming si necesitas esos campos.

Lista de verificación de producción

  • Usuario dedicado y rol de mínimo privilegio.
  • HTTPS y secretos protegidos en el backend.
  • Renovación de token sin bucles de login.
  • Manejo diferenciado de 401, 402, 403, 429 y 503.
  • Timeouts y cancelación acordes con la espera de inferencia.
  • Markdown de respuestas sanitizado antes de mostrar HTML.
  • Control de cuota por usuario y licencia, sin registrar secretos.
  • Prueba del agente, sus fuentes y los permisos en un entorno autorizado.
  • Comprobación de versión y contrato con el operador antes de liberar.

El endpoint /health es interno: no se expone a través del panel. Coordina la monitorización con el operador; no presupongas una URL pública de salud.

¿Necesitas ayuda con AGOS?Contactar con SAV