Overview
An AI Character is the complete definition of a voice agent: its persona (system prompt, name, avatar), voice settings, tool integrations, allowed embed origins, and widget appearance. Characters are identified by a stableslug.
All character endpoints require JWT authentication.
List characters
Create a character
Retrieve a character
Update a character
PUT to replace the full object, PATCH for partial updates.
Delete a character
Character object schema
| Field | Type | Description |
|---|---|---|
slug | string | URL-friendly identifier (unique). Used in widget data-agent. |
name | string | Display name for the character. |
character_type | string | Category tag (e.g. PODCAST_HOST, STORY_TELLER, SUPPORT_AGENT). |
image | file / URL | Avatar image. |
system_prompt | string | LLM system prompt — the agent’s instructions and persona. |
greeting | string | The first utterance the agent speaks when the call starts. |
voice | object | Voice configuration (audio_file, voice_url). |
language | string | Default BCP-47 language code for STT/TTS (e.g. "en"). |
background_audio | string | Ambient audio mixed into agent audio. Options: "", "office", "crowded room", "cafe", "nature". |
allowed_origins | string[] | URL prefixes allowed to embed this character. Empty list = blocked everywhere. |
handoff_targets | {slug: string}[] | Characters this agent can hand off to mid-call. |
widget_appearance | object | Appearance overrides — see Appearance. |
stt_model | string | STT model override (e.g. "whisper-en-large"). |
tts_model | string | TTS model override (e.g. "chatterbox-en-v1"). |
llm_provider | string | LLM provider (currently "openai"). |
llm_model | string | LLM model ID (e.g. "gpt-4o-mini", "gpt-4o"). |
llm_api_key | string | Optional per-character LLM API key (encrypted at rest). |
documents | array | Knowledge base documents attached to this character. |
