# Agents > Construye agentes de voz con ElevenLabs. Úsalo al crear asistentes de voz, bots de atención al cliente, personajes de voz interactivos o cualquier conversación de voz en tiempo real. Fuente: https://skillsagentes.com/skills/calesthio/openmontage/agents Markdown: https://skillsagentes.com/skills/calesthio/openmontage/agents.md Repositorio: https://github.com/calesthio/OpenMontage Autor: calesthio Licencia: MIT Actualizado: hace 4 meses Coste de contexto: 44 tok instalada, 2.5k tok al activarse, 16.5k tok con todos los archivos del bundle Bundle: 6 archivos, 64 KB Permisos que pide: ninguno declarado ## Instalación Un skill son archivos markdown: los mismos archivos valen para cualquier agente y lo único que cambia es el directorio de destino, es decir la bandera `--agent`. Añade `-g` para instalarlo en todos los proyectos de la máquina. ```bash # Claude Code npx -y skills add calesthio/OpenMontage --skill agents --agent claude-code # Cursor npx -y skills add calesthio/OpenMontage --skill agents --agent cursor # Codex npx -y skills add calesthio/OpenMontage --skill agents --agent codex # Gemini CLI npx -y skills add calesthio/OpenMontage --skill agents --agent gemini # Windsurf npx -y skills add calesthio/OpenMontage --skill agents --agent windsurf # Cline npx -y skills add calesthio/OpenMontage --skill agents --agent cline ``` ## Qué hace - Crea y gestiona agentes de voz en la plataforma de ElevenLabs, desde el CLI o desde los SDK de Python y JavaScript - Inicializa el proyecto, crea el agente y lo sube a la plataforma con `push` - Configura herramientas del agente, llamadas salientes y el widget embebido - Importa agentes de la plataforma a configuración local y sincroniza cambios en ambos sentidos ## Cuándo usarla - Crear un asistente de voz o un bot de atención al cliente - Construir un personaje de voz interactivo - Montar cualquier experiencia de conversación de voz en tiempo real ## Qué la activa - "Crea un agente de voz para atención al cliente" - "Monta un asistente de voz con ElevenLabs" - "Añade una herramienta a mi agente de voz" - "Embebe el widget de voz en mi web" ## Antes de instalar - Necesita acceso a internet y una `ELEVENLABS_API_KEY`. - Necesita en el PATH: curl, npm - Variables de entorno: ELEVENLABS_API_KEY - makes network requests - needs API credentials ## Archivos - SKILL.md — 10 KB - references/agent-configuration.md — 22 KB - references/client-tools.md — 16 KB - references/installation.md — 3 KB - references/outbound-calls.md — 5 KB - references/widget-embedding.md — 8 KB ## SKILL.md Reproducido tal cual desde calesthio/OpenMontage bajo MIT. Esta sección es el documento original y está en inglés. # ElevenLabs Agents Platform Build voice AI agents with natural conversations, multiple LLM providers, custom tools, and easy web embedding. > **Setup:** See [Installation Guide](references/installation.md) for CLI and SDK setup. ## Quick Start with CLI The ElevenLabs CLI is the recommended way to create and manage agents: ```bash # Install CLI and authenticate npm install -g @elevenlabs/cli elevenlabs auth login # Initialize project and create an agent elevenlabs agents init elevenlabs agents add "My Assistant" --template complete # Push to ElevenLabs platform elevenlabs agents push ``` **Available templates:** `complete`, `minimal`, `voice-only`, `text-only`, `customer-service`, `assistant` ### Python ```python from elevenlabs import ElevenLabs client = ElevenLabs() agent = client.conversational_ai.agents.create( name="My Assistant", enable_versioning=True, conversation_config={ "agent": { "first_message": "Hello! How can I help?", "language": "en", "prompt": { "prompt": "You are a helpful assistant. Be concise and friendly.", "llm": "gemini-2.0-flash", "temperature": 0.7 } }, "tts": {"voice_id": "JBFqnCBsd6RMkjVDRZzb"} } ) ``` ### JavaScript ```javascript import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js"; const client = new ElevenLabsClient(); const agent = await client.conversationalAi.agents.create({ name: "My Assistant", enableVersioning: true, conversationConfig: { agent: { firstMessage: "Hello! How can I help?", language: "en", prompt: { prompt: "You are a helpful assistant.", llm: "gemini-2.0-flash", temperature: 0.7 } }, tts: { voiceId: "JBFqnCBsd6RMkjVDRZzb" } } }); ``` ### cURL ```bash curl -X POST "https://api.elevenlabs.io/v1/convai/agents/create?enable_versioning=true" \ -H "xi-api-key: $ELEVENLABS_API_KEY" -H "Content-Type: application/json" \ -d '{"name": "My Assistant", "conversation_config": {"agent": {"first_message": "Hello!", "language": "en", "prompt": {"prompt": "You are helpful.", "llm": "gemini-2.0-flash"}}, "tts": {"voice_id": "JBFqnCBsd6RMkjVDRZzb"}}}' ``` ## Starting Conversations **Server-side (Python):** Get signed URL for client connection: ```python signed_url = client.conversational_ai.conversations.get_signed_url( agent_id="your-agent-id", environment="staging", ) ``` **Client-side (JavaScript):** ```javascript import { Conversation } from "@elevenlabs/client"; const conversation = await Conversation.startSession({ agentId: "your-agent-id", environment: "staging", onMessage: (msg) => console.log("Agent:", msg.message), onUserTranscript: (t) => console.log("User:", t.message), onError: (e) => console.error(e) }); ``` **React Hook:** ```typescript import { useConversation } from "@elevenlabs/react"; const conversation = useConversation({ onMessage: (msg) => console.log(msg) }); // Get a signed URL for the target environment from your backend, then: await conversation.startSession({ signedUrl: token }); ``` ## Configuration | Provider | Models | |----------|--------| | OpenAI | `gpt-5`, `gpt-5-mini`, `gpt-5-nano`, `gpt-4.1`, `gpt-4.1-mini`, `gpt-4.1-nano`, `gpt-4o`, `gpt-4o-mini`, `gpt-4-turbo` | | Anthropic | `claude-sonnet-4-6`, `claude-sonnet-4-5`, `claude-sonnet-4`, `claude-haiku-4-5`, `claude-3-7-sonnet`, `claude-3-5-sonnet`, `claude-3-haiku` | | Google | `gemini-3.1-flash-lite-preview`, `gemini-3-pro-preview`, `gemini-3-flash-preview`, `gemini-2.5-flash`, `gemini-2.5-flash-lite`, `gemini-2.0-flash`, `gemini-2.0-flash-lite` | | ElevenLabs | `glm-45-air-fp8`, `qwen3-30b-a3b`, `gpt-oss-120b` | | Custom | `custom-llm` (bring your own endpoint) | Use `GET /v1/convai/llm/list` to inspect the current model catalog, including deprecation state, token/context limits, and capability flags such as image-input support. **Popular voices:** `JBFqnCBsd6RMkjVDRZzb` (George), `EXAVITQu4vr4xnSDxMaL` (Sarah), `onwK4e9ZLuTAKqWW03F9` (Daniel), `XB0fDUnXU5powFXDhCwa` (Charlotte) **Turn eagerness:** `patient` (waits longer for user to finish), `normal`, or `eager` (responds quickly) See [Agent Configuration](references/agent-configuration.md) for all options. ## Tools Extend agents with webhook, client, or built-in system tools. Tools are defined inside `conversation_config.agent.prompt`: Workspace environment variables can resolve per-environment server tool URLs, headers, and auth connections, and runtime system variables such as `{{system__conversation_history}}` can pass full conversation context into tool calls when needed. ```python "prompt": { "prompt": "You are a helpful assistant that can check the weather.", "llm": "gemini-2.0-flash", "tools": [ # Webhook: server-side API call {"type": "webhook", "name": "get_weather", "description": "Get weather", "api_schema": {"url": "https://api.example.com/weather", "method": "POST", "request_body_schema": {"type": "object", "properties": {"location": {"type": "string"}}, "required": ["location"]}}}, # Client: runs in the browser {"type": "client", "name": "show_product", "description": "Display a product", "parameters": {"type": "object", "properties": {"productId": {"type": "string"}}, "required": ["productId"]}} ], "built_in_tools": { "end_call": {}, "transfer_to_number": {"transfers": [{"transfer_destination": {"type": "phone", "phone_number": "+1234567890"}, "condition": "User asks for human support"}]} } } ``` **Client tools** run in browser: ```javascript clientTools: { show_product: async ({ productId }) => { document.getElementById("product").src = `/products/${productId}`; return { success: true }; } } ``` See [Client Tools Reference](references/client-tools.md) for complete documentation. ## Widget Embedding ```html ``` Customize with attributes: `avatar-image-url`, `action-text`, `start-call-text`, `end-call-text`. See [Widget Embedding Reference](references/widget-embedding.md) for all options. ## Outbound Calls Make outbound phone calls using your agent via Twilio integration: ### Python ```python response = client.conversational_ai.twilio.outbound_call( agent_id="your-agent-id", agent_phone_number_id="your-phone-number-id", to_number="+1234567890", call_recording_enabled=True ) print(f"Call initiated: {response.conversation_id}") ``` ### JavaScript ```javascript const response = await client.conversationalAi.twilio.outboundCall({ agentId: "your-agent-id", agentPhoneNumberId: "your-phone-number-id", toNumber: "+1234567890", callRecordingEnabled: true, }); ``` ### cURL ```bash curl -X POST "https://api.elevenlabs.io/v1/convai/twilio/outbound-call" \ -H "xi-api-key: $ELEVENLABS_API_KEY" -H "Content-Type: application/json" \ -d '{"agent_id": "your-agent-id", "agent_phone_number_id": "your-phone-number-id", "to_number": "+1234567890", "call_recording_enabled": true}' ``` See [Outbound Calls Reference](references/outbound-calls.md) for configuration overrides and dynamic variables. ## Managing Agents ### Using CLI (Recommended) ```bash # List agents and check status elevenlabs agents list elevenlabs agents status # Import agents from platform to local config elevenlabs agents pull # Import all agents elevenlabs agents pull --agent # Import specific agent # Push local changes to platform elevenlabs agents push # Upload configurations elevenlabs agents push --dry-run # Preview changes first # Add tools elevenlabs tools add-webhook "Weather API" elevenlabs tools add-client "UI Tool" ``` ### Project Structure The CLI creates a project structure for managing agents: ``` your_project/ ├── agents.json # Agent definitions ├── tools.json # Tool configurations ├── tests.json # Test configurations ├── agent_configs/ # Individual agent configs ├── tool_configs/ # Individual tool configs └── test_configs/ # Individual test configs ``` ### SDK Examples ```python # List agents = client.conversational_ai.agents.list() # Get agent = client.conversational_ai.agents.get(agent_id="your-agent-id") # Update (partial - only include fields to change) client.conversational_ai.agents.update(agent_id="your-agent-id", name="New Name") client.conversational_ai.agents.update(agent_id="your-agent-id", conversation_config={ "agent": {"prompt": {"prompt": "New instructions", "llm": "claude-sonnet-4"}} }) # Delete client.conversational_ai.agents.delete(agent_id="your-agent-id") ``` See [Agent Configuration](references/agent-configuration.md) for all configuration options and SDK examples. ## Error Handling ```python try: agent = client.conversational_ai.agents.create(...) except Exception as e: print(f"API error: {e}") ``` Common errors: **401** (invalid key), **404** (not found), **422** (invalid config), **429** (rate limit) ## References - [Installation Guide](references/installation.md) - SDK setup and migration - [Agent Configuration](references/agent-configuration.md) - All config options and CRUD examples - [Client Tools](references/client-tools.md) - Webhook, client, and system tools - [Widget Embedding](references/widget-embedding.md) - Website integration - [Outbound Calls](references/outbound-calls.md) - Twilio phone call integration ## Dónde encaja - Categoría: [Desarrollo de APIs](https://skillsagentes.com/categorias/desarrollo-apis.md) — Diseña, prueba y documenta APIs HTTP y GraphQL. - Creador: [calesthio](https://skillsagentes.com/creators/calesthio.md) — 0 skills en el directorio - [Todas las skills](https://skillsagentes.com/skills.md) - [Ranking de instalaciones](https://skillsagentes.com/ranking.md) ## Otras skills del mismo repositorio - [Seedance 2 5](https://skillsagentes.com/skills/calesthio/openmontage/seedance-2-5.md): Genera vídeo cinematográfico de 4-30 s con ByteDance Seedance 2.5 por fal.ai, Volcengine Ark, Runway o ComfyUI. Cubre el contrato de prompt 2.5, cortes duros, locks de continuidad y voz. - [Comfyui](https://skillsagentes.com/skills/calesthio/openmontage/comfyui.md): Úsalo al trabajar con workflows de ComfyUI en OpenMontage: comfyui_image/video/music, workflows propios, selección de output_node, modelos que faltan, LoRAs, poca VRAM e importación de workflows de la comunidad. - [Fish Audio Tts](https://skillsagentes.com/skills/calesthio/openmontage/fish-audio-tts.md): Genera narración expresiva y multilingüe con fish.audio (modelos S1 / S2) y reutiliza voces clonadas mediante reference_id. - [Minimax H3](https://skillsagentes.com/skills/calesthio/openmontage/minimax-h3.md): Genera vídeo con MiniMax H3 (Hailuo 3.0) por la API oficial v2, fal.ai, Runway, nodos partner de ComfyUI o pesos abiertos locales. Clips de 4-15s a 2K con animación de primer/último fotograma. - [Gemini Omni](https://skillsagentes.com/skills/calesthio/openmontage/gemini-omni.md): Genera y edita conversacionalmente vídeos cortos con Google Gemini Omni Flash: itera con ediciones en lenguaje natural, clips de 3-10s a 720p con audio y texto en pantalla, e imágenes de referencia por etiquetas. --- Skills Agentes · [Índice de páginas en markdown](https://skillsagentes.com/sitemap.md) · [Inicio](https://skillsagentes.com/index.md)