Tres identificadores con funciones diferentes
Por ejemplo,
support-agent puede recibir llamadas de support-2026-09-a y
support-2026-09-b. Mantén el mismo agent.externalId para ambas. Si asignas un
ID de agente diferente a cada versión, crearás agentes separados que no se pueden
seleccionar como las dos versiones de un experimento.
Declarar versiones en LiveKit o una integración propia
Envíaversion en el nivel superior de cada carga a
POST https://ingest.zelto.ai/webhooks/calls. El campo se llama version,
no prompt_version, agent.version ni metadata.version.
La API acepta una cadena de 1 a 255 caracteres después de eliminar los
espacios de los extremos. Distingue mayúsculas: release-a y Release-A
son versiones diferentes. Puedes usar una etiqueta de despliegue, un ID de
compilación inmutable o un hash de toda la configuración versionada. Un hash
solo del prompt no distingue cambios exclusivos del pipeline.
Authorization: Bearer $ZELTO_API_KEY, Content-Type: application/json
y X-Zelto-Provider: livekit para LiveKit, o zelto para cargas propias.
Consulta el ejemplo de LiveKit
y el contrato de carga de llamadas.
Puedes registrar una versión antes de enviar llamadas. De lo contrario, la
primera llamada procesada con una etiqueta nueva crea la versión
declarada; las siguientes con el mismo agente y etiqueta la reutilizan. No hace
falta otra solicitud para crear la versión. Zelto también asigna un número como
v1 o v2 según el orden de primera aparición. Ese número es independiente
de tu etiqueta: envía la etiqueta del despliegue, no un número deducido del panel.
version es opcional para la ingesta general. En integraciones destinadas a
experimentos, envía una versión explícita en cada llamada para atribuirla al
despliegue que realmente la atendió.Mantener cada etiqueta ligada a un despliegue
- Cambia la etiqueta al modificar el prompt, modelo, voz, transcripción, herramientas o flujo de trabajo que quieras identificar por separado.
- Mantenla estable entre las llamadas de esa versión. No uses un ID de sala, cliente, marca de tiempo por llamada ni UUID aleatorio como etiqueta.
- Captura la etiqueta y configuración de la sesión que atendió la llamada. Puede haber un despliegue mientras está en curso: no etiquetes una carga tardía con la versión vigente en el momento de enviarla.
- En los reintentos, conserva el ID de llamada, versión y capturas originales. No cambies la etiqueta de llamadas antiguas para moverlas a otro lado.
- Al volver a un despliegue sin cambios, reutiliza su etiqueta. Si necesitas distinguir dos despliegues de código idéntico, usa etiquetas diferentes de forma consistente.
Registrar una versión en Zelto
Los propietarios y administradores pueden abrir Agentes → tu agente → Versiones → Registrar versión. Introduce la etiqueta, el prompt opcional y los proveedores/modelos de LLM, STT y TTS. TTS incluye un campo de ID de voz. En Configuración adicional (JSON) puedes describir herramientas, flujos, bases de conocimiento, ejecución y contexto propio. También admite ajustes comollm.temperature; los campos de proveedor/modelo anteriores tienen
prioridad. Registrar guarda contexto, no despliega ni ejecuta la configuración.
Los candidatos de prompt en borrador siguen siendo independientes.
Registrar una versión mediante la API
Usa una clave de la organización cuyo propietario sea dueño o administrador. El agente debe existir en esa organización. EnvíaPOST /v1/agents/{id}/versions al host de la API de la plataforma, con el UUID
del agente en Zelto:
version.json
201 con { "id": "<UUID de versión>", "created": true }. Repetir la misma etiqueta y configuración devuelve HTTP
200 con created: false. Un prompt o configuración diferentes para una versión
existente devuelven 409 Conflict: usa otra etiqueta. Los campos omitidos en
un reintento no cambian los valores existentes. Los prefijos draft: y
generated: están reservados.
La carga de llamadas permanece en https://ingest.zelto.ai/webhooks/calls.
Registrar una versión no la convierte en la opción de respaldo para llamadas sin versión. Se considera observada cuando una llamada procesada informa explícitamente su etiqueta.
El registro utiliza config; la carga utiliza versionConfig, junto con
version. Ambos guardan la misma configuración de versión. Después de registrar,
envía la etiqueta en cada llamada, no el UUID devuelto ni el número del panel.
La identidad y la configuración son independientes
version asigna llamadas a un despliegue. Tu organización proporciona su
configuración: proveedores, modelos, voz, herramientas, recuperación de datos,
flujos, ejecución y componentes propios. Se conservan todos los campos JSON y
se muestran en el detalle y comparación, incluida la creación de experimentos.
Envía un objeto JSON, de hasta 64 KiB serializado en UTF-8. llm, stt
y tts son convenciones del formulario, no una lista cerrada. Se admiten otras
claves y objetos/listas anidados. Incluye configuración, no claves ni credenciales.
Este contexto es descriptivo: Zelto no ejecuta flujos, configura proveedores ni
descubre los ajustes que falten.
Envía el prompt real como systemPrompt o como turno inicial system en cargas
de llamadas. La etiqueta por sí sola no proporciona un prompt.
La primera llamada puede crear la versión con versionConfig. Las cargas
posteriores no reemplazan capturas existentes; pueden completar una ausente.
Envía configuración completa desde el principio y usa otra etiqueta al cambiarla.
Una captura antigua de metadatos también cuenta como existente: una carga posterior
no combina versionConfig con ella.
En versiones antiguas sin configuración explícita, Zelto solo muestra modelo,
transcripción y voz capturados de los metadatos. Una captura ausente no prueba
que los pipelines sean idénticos. El contexto completo de herramientas y flujos
está disponible cuando lo proporciona tu integración o formulario; no se recopila
automáticamente.
Versiones del proveedor y versiones automáticas
Sin
version explícito en LiveKit o cargas propias, Zelto crea una versión
generada inicial si hace falta y asigna las siguientes llamadas a la última
versión desplegada. Un proceso semanal puede crear otra cuando cambia el prompt
generalizado. No detecta cambios exclusivos del pipeline ni distingue
inmediatamente dos despliegues simultáneos. Usa etiquetas explícitas para
experimentos.
Un candidato en borrador creado en Zelto sirve para simulaciones. No ha
atendido llamadas reales y no se puede seleccionar como lado de un experimento.
Despliega la versión en tu plataforma y envía llamadas con su etiqueta.
Verificar antes de lanzar un experimento
- Envía una llamada de A y otra de B con el mismo ID de agente, IDs de llamada distintos y etiquetas de versión diferentes.
- Espera al procesamiento. HTTP
200con{ "received": true }confirma aceptación; no significa que la llamada y versión ya estén visibles. - Abre Versiones del agente. Confirma las etiquetas y las llamadas asignadas a cada una. Revisa las capturas cuando estén disponibles.
- Abre Experimentos → Nuevo experimento y selecciona ese agente y las dos versiones. Revisa las diferencias capturadas y el tráfico reciente.
- Elige monitores configurados y comprueba el tráfico reciente. Las llamadas históricas verifican la configuración; no rellenan los resultados nuevos.
- Introduce un nombre y lanza el experimento. Sigue indicando la versión real
en cada llamada futura y enruta a las personas de forma consistente en tu
plataforma. Envía un
endUserIdestable cuando esté disponible.

