Skip to main content
POST
Create an agent
Create a new conversational video agent. Returns the agent’s ID, which you’ll use to embed the agent, mint session tokens, and manage it via the other endpoints.

When to use

  • First-time setup: creating your first agent (or your first agent for a new use case)
  • Programmatic rollouts: creating many agents in bulk from your own workflows
  • Testing: spinning up experimental agents alongside your production ones
If you’re creating many similar agents, define a template once and use Create Agent by Template instead.

Required fields

At minimum you must send:
  • agent_name: used for display and identification
  • agent_system_prompt: how the agent should behave (see Prompting Strategies)
  • avatars[0].avatar_key_id: the visual identity (from the Avatar Gallery or a custom avatar)
Everything else falls back to platform defaults:
  • LLM: Groq openai/gpt-oss-120b
  • STT: Deepgram deepgram/flux-general-en
  • TTS: ElevenLabs eleven_turbo_v2_5 with a default voice
  • Language: English
  • Turn detector: enabled
  • Max call duration: 300 seconds
  • Recording: disabled

Minimum viable request

Response:

Common gotchas

  • avatar_key_id is not agent_id. They look similar and it’s an easy mixup.
  • The prompt gets copied to avatars[0].persona_prompt under the hood. For most agents the top-level agent_system_prompt is sufficient.
  • Voices and LLMs have their own IDs. Pick from the Voice Library and Available LLMs.
  • Setting record: true starts capturing recordings on the next session. Confirm your privacy policy first.

Next steps

Authorizations

x-api-key
string
header
required

Body

application/json
agent_name
string
default:My First Agent
required

Display name for the agent.

agent_system_prompt
string
required

Foundational system instruction that shapes how the agent responds.

config
object
required

Agent-level configuration properties.

avatars
object[]
required

List of avatars associated with this agent.

default_system_prompt
boolean
default:true

When true, the platform's default system prompt is applied on top of agent_system_prompt.

tools
object

Reserved map of tool bindings by identifier. Use the top-level tool array to attach existing tools.

knowledge_base
object[] | null

List of knowledge bases attached to this agent.

visual_presentations
object[]

Visual presentations (slides, screens, or media) the agent can share during the conversation.

mcp
object[] | null

List of Model Context Protocol servers attached to this agent.

tool
object[] | null

List of tools attached to this agent.

guardrail
object[] | null

List of guardrails attached to this agent.

integration
object[]

Third-party integrations (e.g., Composio) attached to this agent.

record
boolean
default:true

Whether voice call recordings should be stored.

callback_url
string

Webhook endpoint URL that receives callback events.

callback_events
enum<string>[]

Webhook events that should trigger callbacks.

Available options:
participant_left,
agent.started_speaking,
agent.stopped_speaking,
agent.interrupted,
user.started_speaking,
user.stopped_speaking,
utterance_committed,
max_call_duration_warning,
max_call_duration_timeout,
action_found,
tool_call
is_public
boolean
default:true

Whether the agent is publicly accessible via its embed URL.

is_active
boolean
default:true

Whether the agent is active and available to serve conversations.

email
string

Contact email associated with the agent (used for External Meetings invites).

type
string
default:etev

Agent type. Use etev for external / embedded video agents.

add_on
object[]

Additional add-on modules enabled for this agent.

widget
object

Appearance, layout, and behaviour of the embedded widget (also used as the top-level widget on the agent).

Response

Agent created successfully!

id
string
message
string