Create Persona
curl --request POST \
--url https://api.bland.ai/v1/personas \
--header 'Content-Type: application/json' \
--header 'authorization: <authorization>' \
--data '
{
"name": "<string>",
"role": "<string>",
"description": "<string>",
"tags": [
{}
],
"image_url": "<string>",
"call_config": {
"voice": "<string>",
"record": true,
"language": "<string>",
"background": "<string>",
"max_duration": 123,
"wait_for_greeting": true,
"interruption_threshold": 123
},
"orchestration_prompt": "<string>",
"personality_prompt": "<string>",
"default_tools": [
{}
],
"pathway_conditions": [
{
"name": "<string>",
"prompt": "<string>",
"pathway_id": "<string>",
"pathway_version": "<string>",
"start_node_id": "<string>"
}
],
"kb_ids": [
{}
]
}
'import requests
url = "https://api.bland.ai/v1/personas"
payload = {
"name": "<string>",
"role": "<string>",
"description": "<string>",
"tags": [{}],
"image_url": "<string>",
"call_config": {
"voice": "<string>",
"record": True,
"language": "<string>",
"background": "<string>",
"max_duration": 123,
"wait_for_greeting": True,
"interruption_threshold": 123
},
"orchestration_prompt": "<string>",
"personality_prompt": "<string>",
"default_tools": [{}],
"pathway_conditions": [
{
"name": "<string>",
"prompt": "<string>",
"pathway_id": "<string>",
"pathway_version": "<string>",
"start_node_id": "<string>"
}
],
"kb_ids": [{}]
}
headers = {
"authorization": "<authorization>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {authorization: '<authorization>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
role: '<string>',
description: '<string>',
tags: [{}],
image_url: '<string>',
call_config: {
voice: '<string>',
record: true,
language: '<string>',
background: '<string>',
max_duration: 123,
wait_for_greeting: true,
interruption_threshold: 123
},
orchestration_prompt: '<string>',
personality_prompt: '<string>',
default_tools: [{}],
pathway_conditions: [
{
name: '<string>',
prompt: '<string>',
pathway_id: '<string>',
pathway_version: '<string>',
start_node_id: '<string>'
}
],
kb_ids: [{}]
})
};
fetch('https://api.bland.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.bland.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' => '<string>',
'role' => '<string>',
'description' => '<string>',
'tags' => [
[
]
],
'image_url' => '<string>',
'call_config' => [
'voice' => '<string>',
'record' => true,
'language' => '<string>',
'background' => '<string>',
'max_duration' => 123,
'wait_for_greeting' => true,
'interruption_threshold' => 123
],
'orchestration_prompt' => '<string>',
'personality_prompt' => '<string>',
'default_tools' => [
[
]
],
'pathway_conditions' => [
[
'name' => '<string>',
'prompt' => '<string>',
'pathway_id' => '<string>',
'pathway_version' => '<string>',
'start_node_id' => '<string>'
]
],
'kb_ids' => [
[
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"authorization: <authorization>"
],
]);
$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.bland.ai/v1/personas"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"role\": \"<string>\",\n \"description\": \"<string>\",\n \"tags\": [\n {}\n ],\n \"image_url\": \"<string>\",\n \"call_config\": {\n \"voice\": \"<string>\",\n \"record\": true,\n \"language\": \"<string>\",\n \"background\": \"<string>\",\n \"max_duration\": 123,\n \"wait_for_greeting\": true,\n \"interruption_threshold\": 123\n },\n \"orchestration_prompt\": \"<string>\",\n \"personality_prompt\": \"<string>\",\n \"default_tools\": [\n {}\n ],\n \"pathway_conditions\": [\n {\n \"name\": \"<string>\",\n \"prompt\": \"<string>\",\n \"pathway_id\": \"<string>\",\n \"pathway_version\": \"<string>\",\n \"start_node_id\": \"<string>\"\n }\n ],\n \"kb_ids\": [\n {}\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("authorization", "<authorization>")
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.bland.ai/v1/personas")
.header("authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"role\": \"<string>\",\n \"description\": \"<string>\",\n \"tags\": [\n {}\n ],\n \"image_url\": \"<string>\",\n \"call_config\": {\n \"voice\": \"<string>\",\n \"record\": true,\n \"language\": \"<string>\",\n \"background\": \"<string>\",\n \"max_duration\": 123,\n \"wait_for_greeting\": true,\n \"interruption_threshold\": 123\n },\n \"orchestration_prompt\": \"<string>\",\n \"personality_prompt\": \"<string>\",\n \"default_tools\": [\n {}\n ],\n \"pathway_conditions\": [\n {\n \"name\": \"<string>\",\n \"prompt\": \"<string>\",\n \"pathway_id\": \"<string>\",\n \"pathway_version\": \"<string>\",\n \"start_node_id\": \"<string>\"\n }\n ],\n \"kb_ids\": [\n {}\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bland.ai/v1/personas")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["authorization"] = '<authorization>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"role\": \"<string>\",\n \"description\": \"<string>\",\n \"tags\": [\n {}\n ],\n \"image_url\": \"<string>\",\n \"call_config\": {\n \"voice\": \"<string>\",\n \"record\": true,\n \"language\": \"<string>\",\n \"background\": \"<string>\",\n \"max_duration\": 123,\n \"wait_for_greeting\": true,\n \"interruption_threshold\": 123\n },\n \"orchestration_prompt\": \"<string>\",\n \"personality_prompt\": \"<string>\",\n \"default_tools\": [\n {}\n ],\n \"pathway_conditions\": [\n {\n \"name\": \"<string>\",\n \"prompt\": \"<string>\",\n \"pathway_id\": \"<string>\",\n \"pathway_version\": \"<string>\",\n \"start_node_id\": \"<string>\"\n }\n ],\n \"kb_ids\": [\n {}\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "12345678-1234-1234-1234-123456789012",
"name": "Blandie",
"role": null,
"description": null,
"tags": [],
"image_url": null,
"created_at": "2025-09-23T15:13:36.348Z",
"updated_at": "2025-09-23T15:13:36.412Z",
"deleted_at": null,
"user_id": "12345678-1234-1234-1234-123456789012",
"current_production_version_id": "12345678-1234-1234-1234-123456789012",
"current_draft_version_id": "12345678-1234-1234-1234-123456789012",
"current_production_version": {
"id": "12345678-1234-1234-1234-123456789012",
"persona_id": "12345678-1234-1234-1234-123456789012",
"version_type": "production",
"version_number": 1,
"orchestration_prompt": null,
"personality_prompt": "You are a helpful assistant",
"pathway_conditions": null,
"kb_ids": [],
"call_config": null,
"default_tools": [],
"promoted_from_version_id": null,
"promoted_at": "2025-09-23T15:13:36.368Z",
"promoted_by": null,
"created_at": "2025-09-23T15:13:36.369Z",
"updated_at": "2025-09-23T15:13:36.369Z"
},
"current_draft_version": {
"id": "12345678-1234-1234-1234-123456789012",
"persona_id": "12345678-1234-1234-1234-123456789012",
"version_type": "draft",
"version_number": 2,
"orchestration_prompt": null,
"personality_prompt": "You are a helpful assistant",
"pathway_conditions": null,
"kb_ids": [],
"call_config": null,
"default_tools": [],
"promoted_from_version_id": "12345678-1234-1234-1234-123456789012",
"promoted_at": null,
"promoted_by": null,
"created_at": "2025-09-23T15:13:36.390Z",
"updated_at": "2025-09-23T15:13:36.390Z"
}
},
"errors": null
}
Personas
Create Persona
Create a new persona.
POST
/
v1
/
personas
Create Persona
curl --request POST \
--url https://api.bland.ai/v1/personas \
--header 'Content-Type: application/json' \
--header 'authorization: <authorization>' \
--data '
{
"name": "<string>",
"role": "<string>",
"description": "<string>",
"tags": [
{}
],
"image_url": "<string>",
"call_config": {
"voice": "<string>",
"record": true,
"language": "<string>",
"background": "<string>",
"max_duration": 123,
"wait_for_greeting": true,
"interruption_threshold": 123
},
"orchestration_prompt": "<string>",
"personality_prompt": "<string>",
"default_tools": [
{}
],
"pathway_conditions": [
{
"name": "<string>",
"prompt": "<string>",
"pathway_id": "<string>",
"pathway_version": "<string>",
"start_node_id": "<string>"
}
],
"kb_ids": [
{}
]
}
'import requests
url = "https://api.bland.ai/v1/personas"
payload = {
"name": "<string>",
"role": "<string>",
"description": "<string>",
"tags": [{}],
"image_url": "<string>",
"call_config": {
"voice": "<string>",
"record": True,
"language": "<string>",
"background": "<string>",
"max_duration": 123,
"wait_for_greeting": True,
"interruption_threshold": 123
},
"orchestration_prompt": "<string>",
"personality_prompt": "<string>",
"default_tools": [{}],
"pathway_conditions": [
{
"name": "<string>",
"prompt": "<string>",
"pathway_id": "<string>",
"pathway_version": "<string>",
"start_node_id": "<string>"
}
],
"kb_ids": [{}]
}
headers = {
"authorization": "<authorization>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {authorization: '<authorization>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
role: '<string>',
description: '<string>',
tags: [{}],
image_url: '<string>',
call_config: {
voice: '<string>',
record: true,
language: '<string>',
background: '<string>',
max_duration: 123,
wait_for_greeting: true,
interruption_threshold: 123
},
orchestration_prompt: '<string>',
personality_prompt: '<string>',
default_tools: [{}],
pathway_conditions: [
{
name: '<string>',
prompt: '<string>',
pathway_id: '<string>',
pathway_version: '<string>',
start_node_id: '<string>'
}
],
kb_ids: [{}]
})
};
fetch('https://api.bland.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.bland.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' => '<string>',
'role' => '<string>',
'description' => '<string>',
'tags' => [
[
]
],
'image_url' => '<string>',
'call_config' => [
'voice' => '<string>',
'record' => true,
'language' => '<string>',
'background' => '<string>',
'max_duration' => 123,
'wait_for_greeting' => true,
'interruption_threshold' => 123
],
'orchestration_prompt' => '<string>',
'personality_prompt' => '<string>',
'default_tools' => [
[
]
],
'pathway_conditions' => [
[
'name' => '<string>',
'prompt' => '<string>',
'pathway_id' => '<string>',
'pathway_version' => '<string>',
'start_node_id' => '<string>'
]
],
'kb_ids' => [
[
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"authorization: <authorization>"
],
]);
$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.bland.ai/v1/personas"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"role\": \"<string>\",\n \"description\": \"<string>\",\n \"tags\": [\n {}\n ],\n \"image_url\": \"<string>\",\n \"call_config\": {\n \"voice\": \"<string>\",\n \"record\": true,\n \"language\": \"<string>\",\n \"background\": \"<string>\",\n \"max_duration\": 123,\n \"wait_for_greeting\": true,\n \"interruption_threshold\": 123\n },\n \"orchestration_prompt\": \"<string>\",\n \"personality_prompt\": \"<string>\",\n \"default_tools\": [\n {}\n ],\n \"pathway_conditions\": [\n {\n \"name\": \"<string>\",\n \"prompt\": \"<string>\",\n \"pathway_id\": \"<string>\",\n \"pathway_version\": \"<string>\",\n \"start_node_id\": \"<string>\"\n }\n ],\n \"kb_ids\": [\n {}\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("authorization", "<authorization>")
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.bland.ai/v1/personas")
.header("authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"role\": \"<string>\",\n \"description\": \"<string>\",\n \"tags\": [\n {}\n ],\n \"image_url\": \"<string>\",\n \"call_config\": {\n \"voice\": \"<string>\",\n \"record\": true,\n \"language\": \"<string>\",\n \"background\": \"<string>\",\n \"max_duration\": 123,\n \"wait_for_greeting\": true,\n \"interruption_threshold\": 123\n },\n \"orchestration_prompt\": \"<string>\",\n \"personality_prompt\": \"<string>\",\n \"default_tools\": [\n {}\n ],\n \"pathway_conditions\": [\n {\n \"name\": \"<string>\",\n \"prompt\": \"<string>\",\n \"pathway_id\": \"<string>\",\n \"pathway_version\": \"<string>\",\n \"start_node_id\": \"<string>\"\n }\n ],\n \"kb_ids\": [\n {}\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bland.ai/v1/personas")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["authorization"] = '<authorization>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"role\": \"<string>\",\n \"description\": \"<string>\",\n \"tags\": [\n {}\n ],\n \"image_url\": \"<string>\",\n \"call_config\": {\n \"voice\": \"<string>\",\n \"record\": true,\n \"language\": \"<string>\",\n \"background\": \"<string>\",\n \"max_duration\": 123,\n \"wait_for_greeting\": true,\n \"interruption_threshold\": 123\n },\n \"orchestration_prompt\": \"<string>\",\n \"personality_prompt\": \"<string>\",\n \"default_tools\": [\n {}\n ],\n \"pathway_conditions\": [\n {\n \"name\": \"<string>\",\n \"prompt\": \"<string>\",\n \"pathway_id\": \"<string>\",\n \"pathway_version\": \"<string>\",\n \"start_node_id\": \"<string>\"\n }\n ],\n \"kb_ids\": [\n {}\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "12345678-1234-1234-1234-123456789012",
"name": "Blandie",
"role": null,
"description": null,
"tags": [],
"image_url": null,
"created_at": "2025-09-23T15:13:36.348Z",
"updated_at": "2025-09-23T15:13:36.412Z",
"deleted_at": null,
"user_id": "12345678-1234-1234-1234-123456789012",
"current_production_version_id": "12345678-1234-1234-1234-123456789012",
"current_draft_version_id": "12345678-1234-1234-1234-123456789012",
"current_production_version": {
"id": "12345678-1234-1234-1234-123456789012",
"persona_id": "12345678-1234-1234-1234-123456789012",
"version_type": "production",
"version_number": 1,
"orchestration_prompt": null,
"personality_prompt": "You are a helpful assistant",
"pathway_conditions": null,
"kb_ids": [],
"call_config": null,
"default_tools": [],
"promoted_from_version_id": null,
"promoted_at": "2025-09-23T15:13:36.368Z",
"promoted_by": null,
"created_at": "2025-09-23T15:13:36.369Z",
"updated_at": "2025-09-23T15:13:36.369Z"
},
"current_draft_version": {
"id": "12345678-1234-1234-1234-123456789012",
"persona_id": "12345678-1234-1234-1234-123456789012",
"version_type": "draft",
"version_number": 2,
"orchestration_prompt": null,
"personality_prompt": "You are a helpful assistant",
"pathway_conditions": null,
"kb_ids": [],
"call_config": null,
"default_tools": [],
"promoted_from_version_id": "12345678-1234-1234-1234-123456789012",
"promoted_at": null,
"promoted_by": null,
"created_at": "2025-09-23T15:13:36.390Z",
"updated_at": "2025-09-23T15:13:36.390Z"
}
},
"errors": null
}
Headers
string
required
Your API key for authentication.
Body Parameters
string
required
Display name for the persona.
string
Role assigned to the persona.
string
Description of the persona’s purpose and use case.
array
Array of tags to associate with the persona.
string
URL of the persona’s profile image.
object
Call configuration settings for the persona.
string
Orchestration prompt for the persona (optional).
string
Personality and behavior prompt for the persona.
array
Array of default tools enabled for the persona.
array
Array of pathway routing conditions for the persona.
array
Array of knowledge base IDs to connect to the persona.
Response
object
The created persona object.
Show persona object
Show persona object
string
Unique identifier for the persona.
string
Display name of the persona.
string
Role assigned to the persona.
string
Description of the persona’s purpose.
array
Array of tags associated with the persona.
string
URL of the persona’s profile image (null if none).
string
ISO 8601 timestamp of when the persona was created.
string
ISO 8601 timestamp of when the persona was last modified.
string
ISO 8601 timestamp of when the persona was deleted (null if active).
string
ID of the user who owns this persona.
string
ID of the current production version.
string
ID of the current draft version.
object
Complete production version object.
object
Complete draft version object.
string
Any errors that occurred (null if none).
{
"data": {
"id": "12345678-1234-1234-1234-123456789012",
"name": "Blandie",
"role": null,
"description": null,
"tags": [],
"image_url": null,
"created_at": "2025-09-23T15:13:36.348Z",
"updated_at": "2025-09-23T15:13:36.412Z",
"deleted_at": null,
"user_id": "12345678-1234-1234-1234-123456789012",
"current_production_version_id": "12345678-1234-1234-1234-123456789012",
"current_draft_version_id": "12345678-1234-1234-1234-123456789012",
"current_production_version": {
"id": "12345678-1234-1234-1234-123456789012",
"persona_id": "12345678-1234-1234-1234-123456789012",
"version_type": "production",
"version_number": 1,
"orchestration_prompt": null,
"personality_prompt": "You are a helpful assistant",
"pathway_conditions": null,
"kb_ids": [],
"call_config": null,
"default_tools": [],
"promoted_from_version_id": null,
"promoted_at": "2025-09-23T15:13:36.368Z",
"promoted_by": null,
"created_at": "2025-09-23T15:13:36.369Z",
"updated_at": "2025-09-23T15:13:36.369Z"
},
"current_draft_version": {
"id": "12345678-1234-1234-1234-123456789012",
"persona_id": "12345678-1234-1234-1234-123456789012",
"version_type": "draft",
"version_number": 2,
"orchestration_prompt": null,
"personality_prompt": "You are a helpful assistant",
"pathway_conditions": null,
"kb_ids": [],
"call_config": null,
"default_tools": [],
"promoted_from_version_id": "12345678-1234-1234-1234-123456789012",
"promoted_at": null,
"promoted_by": null,
"created_at": "2025-09-23T15:13:36.390Z",
"updated_at": "2025-09-23T15:13:36.390Z"
}
},
"errors": null
}
Docs for agents: llms.txt
Was this page helpful?
⌘I