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
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 estructuradamessage. 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.
{"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 cabeceraAccept.
Streaming
id cuando termine.
Stream de eventos
Server-Sent Events estándar: cada línea esdata: 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:
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 devuelve200 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: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:- Crea una clave API de agente para la integración y cópiala — se muestra una sola vez.
- Despliégala en lugar de la anterior cuando estés listo.
- Cuando esté en producción, elimina la clave anterior desde la pantalla Canales → API.
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.

