Saltar al contenido principal
POST /api/v1/agent/chat ejecuta tu agente y responde en una sola llamada. Envías un mensaje con un identificador de conversación; Juryo guarda la conversación y responde. Sin sesión que crear, sin transcripción que gestionar, sin stream que interpretar salvo que quieras los tokens según llegan.
  • Base: https://chat.juryo.ai
  • Autenticación: Authorization: Bearer TU_CLAVE — consulta Autenticación y claves para saber qué clave usar y cómo cambiar a una nueva
Medido el 17 de agosto de 2026 con el agente en producción de un cliente: respuesta completa en unos 3 segundos (3,2 s en frío, 2,8–3,2 s en caliente), primer token en unos 2 segundos. La API de sesiones con el mismo agente: 6–11 s hasta la respuesta completa. Elige este endpoint cuando la latencia importa. Usa la API de sesiones cuando tu integración necesite que el agente te pregunte o pida aprobaciones a mitad de conversación, trabajos largos, o los controles de cancelar/limpiar/compactar/reiniciar — la tabla comparativa de esa página las muestra lado a lado.

La llamada

Envía el siguiente mensaje con el mismo id — el agente recuerda la conversación. Juryo es dueño de la transcripción: envía solo el mensaje nuevo, nunca una lista de mensajes.

Campos propios (metadata)

Adjunta tus propios campos clave/valor a un mensaje usando la forma estructurada message. Sirve para registrar de dónde viene una conversación — una landing, una campaña, tu propia referencia — y arrastrarlo hasta el lead cuando se cualifica.
Los valores deben ser texto — envía "42", no 42, y aplana cualquier estructura anidada. Una clave nueva que no hayas usado antes no requiere ningún cambio por nuestra parte. Qué ocurre con ello:
  • Se guarda en el contacto de la conversación y se muestra en Juryo, para que tu equipo vea de qué página o campaña viene cada conversación.
  • El agente puede leerlo a partir del mensaje siguiente. Los campos se guardan una vez generada la respuesta del mensaje que los trajo, así que un valor enviado en el primer mensaje está disponible para el agente desde el segundo. Si el agente debe reaccionar a ello ya en el primer mensaje, inclúyelo también en el texto.
  • La lectura está disponible en agentes configurados para usar datos del contacto; si el tuyo no parece verlos, pídenos que revisemos su configuración.
  • Cuando una conversación se cualifica como lead, viaja al registro del lead y se incluye cuando Juryo envía el lead de vuelta a tu sistema.
Los campos se fusionan clave a clave entre turnos. Enviar {"source": "landing-divorcio-es"} en el primer mensaje y {"case_ref": "A-119"} en uno posterior deja el contacto con ambos — una clave que dejas de enviar se conserva, no se borra. Vuelve a enviar una clave con otro valor para cambiarla.
metadata solo existe en la forma estructurada message. El atajo text no tiene dónde ponerlo, así que cambia a message cuando necesites campos propios. Todo lo demás — el mismo id, los modos de respuesta, la transcripción — no cambia.

Modos de respuesta

Se eligen con la cabecera Accept.

Streaming

Lee el cuerpo según llega; la conexión se cierra cuando la respuesta está completa. Envía el siguiente mensaje con el mismo id cuando termine.

Stream de eventos

Server-Sent Events estándar: cada línea es data: seguido de un objeto JSON con un type; el stream termina con data: [DONE]. Cualquier cliente SSE en cualquier lenguaje lo lee — sin librerías.
Concatena los text-delta para obtener el mismo texto que devuelve el modo JSON. Ignora los tipos de evento que no manejes — pueden aparecer nuevos.

Clientes AI SDK

El stream de eventos es el protocolo de UI message stream del AI SDK (x-vercel-ai-ui-message-stream: v1 en la respuesta), así que los clientes del AI SDK funcionan contra este endpoint sin adaptador:
Pasa el transport a useChat (React) o a cualquier otro cliente de chat del AI SDK.

Cuando una persona atiende la conversación

Cuando alguien del despacho atiende la conversación, el agente no responde. La API guarda igualmente el mensaje y devuelve 200 con text vacío (cuerpo vacío en text/plain, un stream sin texto en el stream de eventos). No muestres nada al usuario: el despacho responde desde Juryo.

Autenticación y claves

Cada petición lleva una cabecera:
Una clave está vinculada a un agente. La clave decide qué agente responde, así que crea una clave por cada agente que quieras exponer. También está vinculada a tu despacho — la clave por sí sola determina a quién pertenecen los datos de la conversación, y por eso nada de lo que envíes en el cuerpo puede cambiarlo.

Qué clave usar

Juryo está migrando a un sistema de claves nuevo. Ambos tipos funcionan en este endpoint, así que puedes cambiar cuando te venga bien. Las claves API de agentes son el sistema actual. La creas tú: eliges el agente que ejecuta y le pones un nombre (por ejemplo, Backend del sitio web), y la clave se muestra una sola vez. Una clave por integración, cada una apuntando al agente que debe responder. La misma clave sirve también para el runtime de agentes, no solo para este endpoint. Las claves heredadas viven en la pantalla Canales → API, donde es el canal el que lleva el agente, no la clave. Esa diferencia es la razón de que sean dos secciones distintas.

Cambiar a una clave nueva

Tu clave anterior sigue funcionando durante el cambio. No hay ventana de corte ni despliegue coordinado:
  1. Crea una clave API de agente para la integración y cópiala — se muestra una sola vez.
  2. Despliégala en lugar de la anterior cuando estés listo.
  3. Cuando esté en producción, elimina la clave anterior desde la pantalla Canales → API.
Si algo falla en el paso 2, vuelve a poner la clave anterior — no ha cambiado nada en ella al crear la nueva.
Guarda las claves de servidor en tu servidor — nunca en el navegador ni en una app móvil. Una clave se almacena como hash y se muestra una sola vez, al crearla; si la pierdes, emite una nueva en lugar de intentar recuperarla. Rotar una clave heredada sk_live_… con Regenerar en la pantalla del canal invalida la anterior al instante, así que despliega primero la sustituta. La clave pública pk_live_… está diseñada para aparecer en una página web y no es un secreto.

Errores

En los modos de streaming, un fallo a mitad de respuesta cierra el stream antes de tiempo (el stream de eventos envía antes un evento error); reintenta con el mismo id.

Conviene saber

  • Memoria: la conversación se guarda por agente e id, y se reproduce en cada turno.
  • Tu bandeja: cada turno se registra además como una conversación en Juryo, contra un contacto creado para ese id — así una conversación de API aparece en la bandeja junto a las de WhatsApp y el widget. Los metadata que envíes se guardan en ese contacto.
  • Herramientas: las integraciones conectadas del agente (calendario, correo vía Composio) y las herramientas HTTP definidas por tu administrador se ejecutan en línea. Las herramientas específicas de WhatsApp (acciones de contacto y pipeline) no están en esta superficie.
  • Modelo y razonamiento son los que configuraste para el agente en Configuración → Agentes; la misma configuración gobierna ambas APIs.
  • Un turno puede durar hasta 300 s cuando hay herramientas; lo típico son 3–5 s.