PromptShop

Agents

The ElevenLabs Agents Platform enables users to build voice AI agents capable of natural conversations. It supports multiple LLM providers, custom tools, and...

Install

npx promptshop add agents

Details

What This Skill Does

The ElevenLabs Agents Platform enables users to build voice AI agents capable of natural conversations. It supports multiple LLM providers, custom tools, and easy web embedding, allowing for versatile agent creation. It's designed for developers and businesses looking to integrate conversational AI into their applications.

When to Use

  • Create a customer service chatbot with voice interaction.
  • Build a virtual assistant for internal company use.
  • Develop an interactive educational tool.
  • Design a voice-controlled smart home interface.
  • Implement a voice-based game character.
  • Prototype a new conversational AI product.

Key Features

  • Supports multiple LLM providers.
  • Allows for custom tool integration.
  • Enables easy web embedding.
  • Offers templates for quick agent creation.
  • Provides Python, JavaScript, and cURL interfaces.
  • Supports versioning for agent configurations.

Build voice AI agents with natural conversations, multiple LLM providers, custom tools, and easy web embedding.

Setup: See Installation Guide for CLI and SDK setup.

Quick Start with CLI

The ElevenLabs CLI is the recommended way to create and manage agents:

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

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

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

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: signed_url = client.conversational_ai.conversations.get_signed_url(agent_id="your-agent-id")

Client-side (JavaScript): import { Conversation } from "@elevenlabs/client";

const conversation = await Conversation.startSession({ agentId: "your-agent-id", onMessage: (msg) => console.log("Agent:", msg.message), onUserTranscript: (t) => console.log("User:", t.message), onError: (e) => console.error(e) });

React Hook: import { useConversation } from "@elevenlabs/react";

const conversation = useConversation({ onMessage: (msg) => console.log(msg) }); // Get signed URL from backend, then: await conversation.startSession({ signedUrl: token });

Configuration

ProviderModels
OpenAIgpt-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
Anthropicclaude-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
Googlegemini-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
ElevenLabsglm-45-air-fp8, qwen3-30b-a3b, gpt-oss-120b
Customcustom-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 for all options.

Tools

Extend agents with webhook, client, or built-in system tools. Tools are defined inside conversation_config.agent.prompt:

"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: clientTools: { show_product: async ({ productId }) => { document.getElementById("product").src = /products/${productId}; return { success: true }; } }

See Client Tools Reference for complete documentation.

Widget Embedding

<elevenlabs-convai agent-id="your-agent-id"></elevenlabs-convai>

<script src="https://unpkg.com/@elevenlabs/convai-widget-embed" async type="text/javascript"></script>

Customize with attributes: avatar-image-url, action-text, start-call-text, end-call-text.

See Widget Embedding Reference for all options.

Outbound Calls

Make outbound phone calls using your agent via Twilio integration:

Managing Agents

Using CLI (Recommended)

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 <agent-id> # Import specific agent

Push local changes to platform elevenlabs agents push # Upload configurations elevenlabs agents push --dry-run # Preview chang