curl --request POST \
--url https://api.anam.ai/v1/personas \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Cara",
"description": "A helpful assistant",
"avatarId": "071b0286-4cce-4808-bee2-e642f1062de3",
"voiceId": "de23e340-1416-4dd8-977d-065a7ca11697",
"llmId": "a7cf662c-2ace-4de1-a21e-ef0fbf144bb7",
"systemPrompt": "You are a helpful assistant."
}
'import requests
url = "https://api.anam.ai/v1/personas"
payload = {
"name": "Cara",
"description": "A helpful assistant",
"avatarId": "071b0286-4cce-4808-bee2-e642f1062de3",
"voiceId": "de23e340-1416-4dd8-977d-065a7ca11697",
"llmId": "a7cf662c-2ace-4de1-a21e-ef0fbf144bb7",
"systemPrompt": "You are a helpful assistant."
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Cara',
description: 'A helpful assistant',
avatarId: '071b0286-4cce-4808-bee2-e642f1062de3',
voiceId: 'de23e340-1416-4dd8-977d-065a7ca11697',
llmId: 'a7cf662c-2ace-4de1-a21e-ef0fbf144bb7',
systemPrompt: 'You are a helpful assistant.'
})
};
fetch('https://api.anam.ai/v1/personas', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.anam.ai/v1/personas",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Cara',
'description' => 'A helpful assistant',
'avatarId' => '071b0286-4cce-4808-bee2-e642f1062de3',
'voiceId' => 'de23e340-1416-4dd8-977d-065a7ca11697',
'llmId' => 'a7cf662c-2ace-4de1-a21e-ef0fbf144bb7',
'systemPrompt' => 'You are a helpful assistant.'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.anam.ai/v1/personas"
payload := strings.NewReader("{\n \"name\": \"Cara\",\n \"description\": \"A helpful assistant\",\n \"avatarId\": \"071b0286-4cce-4808-bee2-e642f1062de3\",\n \"voiceId\": \"de23e340-1416-4dd8-977d-065a7ca11697\",\n \"llmId\": \"a7cf662c-2ace-4de1-a21e-ef0fbf144bb7\",\n \"systemPrompt\": \"You are a helpful assistant.\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.anam.ai/v1/personas")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Cara\",\n \"description\": \"A helpful assistant\",\n \"avatarId\": \"071b0286-4cce-4808-bee2-e642f1062de3\",\n \"voiceId\": \"de23e340-1416-4dd8-977d-065a7ca11697\",\n \"llmId\": \"a7cf662c-2ace-4de1-a21e-ef0fbf144bb7\",\n \"systemPrompt\": \"You are a helpful assistant.\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.anam.ai/v1/personas")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Cara\",\n \"description\": \"A helpful assistant\",\n \"avatarId\": \"071b0286-4cce-4808-bee2-e642f1062de3\",\n \"voiceId\": \"de23e340-1416-4dd8-977d-065a7ca11697\",\n \"llmId\": \"a7cf662c-2ace-4de1-a21e-ef0fbf144bb7\",\n \"systemPrompt\": \"You are a helpful assistant.\"\n}"
response = http.request(request)
puts response.read_body{
"id": "00000000-0000-0000-0000-000000000000",
"name": "Cara",
"description": "A helpful assistant",
"personaPreset": "",
"avatar": {
"id": "071b0286-4cce-4808-bee2-e642f1062de3",
"displayName": "Liv",
"variantName": "home",
"imageUrl": "https://lab.anam.ai/persona_thumbnails/liv_home.png",
"videoUrl": "https://example.com/avatar-preview.mp4?X-Amz-Signature=...",
"createdAt": "2026-04-20T10:00:00.000Z",
"updatedAt": "2026-04-20T10:00:00.000Z",
"createdByOrganizationId": null,
"availableVersions": [
"cara-3"
],
"activeVersion": "cara-3",
"description": "A friendly professional in a modern office setting, warm expression, business casual attire.",
"displayTags": [
"professional",
"friendly",
"office"
],
"renderStyle": "realistic"
},
"avatarModel": "cara-3",
"voice": {
"id": "de23e340-1416-4dd8-977d-065a7ca11697",
"displayName": "Lucy - Fresh & Casual",
"provider": "ELEVENLABS",
"providerVoiceId": "lcMyyd2HUfFzxdCaC4Ta",
"providerModelId": "eleven_flash_v2_5",
"sampleUrl": "https://newgxnc1uqs0jnqm.public.blob.vercel-storage.com/voice-samples/de23e340-1416-4dd8-977d-065a7ca11697/1760617899390.mp3",
"previewSampleUrl": "https://newgxnc1uqs0jnqm.public.blob.vercel-storage.com/voice-samples/de23e340-1416-4dd8-977d-065a7ca11697/1760617899390.mp3",
"gender": "FEMALE",
"country": "GB",
"description": "Energetic and youthful British voice, perfect for narrations and conversational agents.",
"displayTags": [
"fast"
],
"isZdr": true,
"createdByOrganizationId": null,
"createdAt": "2026-04-20T10:00:00.000Z",
"updatedAt": "2026-04-20T10:00:00.000Z"
},
"voiceSpeed": 1,
"llmId": "a7cf662c-2ace-4de1-a21e-ef0fbf144bb7",
"brain": {
"personality": null,
"systemPrompt": "You are a helpful assistant."
},
"tools": [],
"knowledge": [],
"shareLinks": null,
"primaryShareLink": null,
"enableAudioPassthrough": false,
"skipGreeting": false,
"zeroDataRetention": false,
"voiceDetectionOptions": null,
"voiceGenerationOptions": null,
"widgetConfig": {},
"createdAt": "2026-04-20T10:00:00.000Z",
"updatedAt": "2026-04-20T10:00:00.000Z"
}create persona
Create a new persona
curl --request POST \
--url https://api.anam.ai/v1/personas \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Cara",
"description": "A helpful assistant",
"avatarId": "071b0286-4cce-4808-bee2-e642f1062de3",
"voiceId": "de23e340-1416-4dd8-977d-065a7ca11697",
"llmId": "a7cf662c-2ace-4de1-a21e-ef0fbf144bb7",
"systemPrompt": "You are a helpful assistant."
}
'import requests
url = "https://api.anam.ai/v1/personas"
payload = {
"name": "Cara",
"description": "A helpful assistant",
"avatarId": "071b0286-4cce-4808-bee2-e642f1062de3",
"voiceId": "de23e340-1416-4dd8-977d-065a7ca11697",
"llmId": "a7cf662c-2ace-4de1-a21e-ef0fbf144bb7",
"systemPrompt": "You are a helpful assistant."
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Cara',
description: 'A helpful assistant',
avatarId: '071b0286-4cce-4808-bee2-e642f1062de3',
voiceId: 'de23e340-1416-4dd8-977d-065a7ca11697',
llmId: 'a7cf662c-2ace-4de1-a21e-ef0fbf144bb7',
systemPrompt: 'You are a helpful assistant.'
})
};
fetch('https://api.anam.ai/v1/personas', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.anam.ai/v1/personas",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Cara',
'description' => 'A helpful assistant',
'avatarId' => '071b0286-4cce-4808-bee2-e642f1062de3',
'voiceId' => 'de23e340-1416-4dd8-977d-065a7ca11697',
'llmId' => 'a7cf662c-2ace-4de1-a21e-ef0fbf144bb7',
'systemPrompt' => 'You are a helpful assistant.'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.anam.ai/v1/personas"
payload := strings.NewReader("{\n \"name\": \"Cara\",\n \"description\": \"A helpful assistant\",\n \"avatarId\": \"071b0286-4cce-4808-bee2-e642f1062de3\",\n \"voiceId\": \"de23e340-1416-4dd8-977d-065a7ca11697\",\n \"llmId\": \"a7cf662c-2ace-4de1-a21e-ef0fbf144bb7\",\n \"systemPrompt\": \"You are a helpful assistant.\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.anam.ai/v1/personas")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Cara\",\n \"description\": \"A helpful assistant\",\n \"avatarId\": \"071b0286-4cce-4808-bee2-e642f1062de3\",\n \"voiceId\": \"de23e340-1416-4dd8-977d-065a7ca11697\",\n \"llmId\": \"a7cf662c-2ace-4de1-a21e-ef0fbf144bb7\",\n \"systemPrompt\": \"You are a helpful assistant.\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.anam.ai/v1/personas")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Cara\",\n \"description\": \"A helpful assistant\",\n \"avatarId\": \"071b0286-4cce-4808-bee2-e642f1062de3\",\n \"voiceId\": \"de23e340-1416-4dd8-977d-065a7ca11697\",\n \"llmId\": \"a7cf662c-2ace-4de1-a21e-ef0fbf144bb7\",\n \"systemPrompt\": \"You are a helpful assistant.\"\n}"
response = http.request(request)
puts response.read_body{
"id": "00000000-0000-0000-0000-000000000000",
"name": "Cara",
"description": "A helpful assistant",
"personaPreset": "",
"avatar": {
"id": "071b0286-4cce-4808-bee2-e642f1062de3",
"displayName": "Liv",
"variantName": "home",
"imageUrl": "https://lab.anam.ai/persona_thumbnails/liv_home.png",
"videoUrl": "https://example.com/avatar-preview.mp4?X-Amz-Signature=...",
"createdAt": "2026-04-20T10:00:00.000Z",
"updatedAt": "2026-04-20T10:00:00.000Z",
"createdByOrganizationId": null,
"availableVersions": [
"cara-3"
],
"activeVersion": "cara-3",
"description": "A friendly professional in a modern office setting, warm expression, business casual attire.",
"displayTags": [
"professional",
"friendly",
"office"
],
"renderStyle": "realistic"
},
"avatarModel": "cara-3",
"voice": {
"id": "de23e340-1416-4dd8-977d-065a7ca11697",
"displayName": "Lucy - Fresh & Casual",
"provider": "ELEVENLABS",
"providerVoiceId": "lcMyyd2HUfFzxdCaC4Ta",
"providerModelId": "eleven_flash_v2_5",
"sampleUrl": "https://newgxnc1uqs0jnqm.public.blob.vercel-storage.com/voice-samples/de23e340-1416-4dd8-977d-065a7ca11697/1760617899390.mp3",
"previewSampleUrl": "https://newgxnc1uqs0jnqm.public.blob.vercel-storage.com/voice-samples/de23e340-1416-4dd8-977d-065a7ca11697/1760617899390.mp3",
"gender": "FEMALE",
"country": "GB",
"description": "Energetic and youthful British voice, perfect for narrations and conversational agents.",
"displayTags": [
"fast"
],
"isZdr": true,
"createdByOrganizationId": null,
"createdAt": "2026-04-20T10:00:00.000Z",
"updatedAt": "2026-04-20T10:00:00.000Z"
},
"voiceSpeed": 1,
"llmId": "a7cf662c-2ace-4de1-a21e-ef0fbf144bb7",
"brain": {
"personality": null,
"systemPrompt": "You are a helpful assistant."
},
"tools": [],
"knowledge": [],
"shareLinks": null,
"primaryShareLink": null,
"enableAudioPassthrough": false,
"skipGreeting": false,
"zeroDataRetention": false,
"voiceDetectionOptions": null,
"voiceGenerationOptions": null,
"widgetConfig": {},
"createdAt": "2026-04-20T10:00:00.000Z",
"updatedAt": "2026-04-20T10:00:00.000Z"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Configuration for the new persona. avatarId, voiceId, and llmId are references to existing resources in your organization. systemPrompt, if provided, is merged into the brain field server-side. Setting zeroDataRetention to true requires both the voice and LLM to be ZDR-compatible and an enterprise plan.
Name of the persona
"Cara"
Description of the persona, for example "A helpful assistant". Does not affect the persona's behavior.
The avatar to use.
"071b0286-4cce-4808-bee2-e642f1062de3"
Avatar model version. cara-3 and cara-4 are generally available; models with the '-latest' suffix are invite only and require organization-level access.
cara-3, cara-4, cara-4-latest "cara-4"
The voice to use.
"de23e340-1416-4dd8-977d-065a7ca11697"
The LLM to use. To disable the LLM, use 'CUSTOMER_CLIENT_V1'.
"a7cf662c-2ace-4de1-a21e-ef0fbf144bb7"
System prompt for the LLM
"You are a helpful assistant"
Whether to skip the greeting message when starting a session with this persona.
false
When true, the greeting message cannot be interrupted by the user.
false
Custom first message the persona speaks to open the conversation. If empty or not provided, the persona generates its own greeting.
"Hi there! I'm excited to chat with you today."
When true, session data is not stored after the conversation ends
false
Options for voice activity detection during user speech input.
Show child attributes
Show child attributes
ISO 639-1 formatted language code override for transcription, replaces organisation level settings and multilingual (default) mode.
"en"
Configuration options for voice generation.
- ElevenLabs V1
- ElevenLabs V2
- Cartesia Sonic-3
- Fish Audio
Show child attributes
Show child attributes
Array of tool IDs to attach to the persona.
["tool-id-1", "tool-id-2"]
Response
Successfully created persona
Full persona shape returned by the create, get, and update endpoints.
Unique identifier for the persona.
Human-readable name of the persona.
Free-form description of the persona.
Name of the preset the persona was cloned from, if any.
Avatar currently attached to the persona.
Show child attributes
Show child attributes
Public model version (e.g. cara-3, cara-4) used when rendering the avatar.
Voice currently attached to the persona.
Show child attributes
Show child attributes
Speech rate multiplier applied to the voice.
ID of the LLM the persona uses, or null for presets that don't run an LLM.
Persona behaviour configuration applied on top of the raw LLM.
Show child attributes
Show child attributes
Tool configurations currently attached to the persona.
Knowledge group attachments currently active on the persona.
All share links ever issued for this persona.
Show child attributes
Show child attributes
The primary share link attached to the persona, if one has been created.
Show child attributes
Show child attributes
Whether audio is passed through from the client instead of being generated server-side.
Whether the persona skips the greeting message at the start of a session.
Whether session data is discarded instead of stored after the conversation ends.
Voice activity detection tuning for user speech.
Show child attributes
Show child attributes
Provider-specific voice generation tuning.
- ElevenLabs V1
- ElevenLabs V2
- Cartesia Sonic-3
- Fish Audio
Show child attributes
Show child attributes
Widget rendering overrides (e.g. removing the watermark).
Timestamp when the persona was created.
Timestamp when the persona was last updated.
Was this page helpful?

