Attach Phone Numbers to Persona
curl --request POST \
--url https://api.bland.ai/v1/personas/{persona_id}/inbound/attach \
--header 'Content-Type: application/json' \
--header 'authorization: <authorization>' \
--data '
{
"inbound_numbers": [
"<string>"
]
}
'import requests
url = "https://api.bland.ai/v1/personas/{persona_id}/inbound/attach"
payload = { "inbound_numbers": ["<string>"] }
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({inbound_numbers: ['<string>']})
};
fetch('https://api.bland.ai/v1/personas/{persona_id}/inbound/attach', 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/{persona_id}/inbound/attach",
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([
'inbound_numbers' => [
'<string>'
]
]),
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/{persona_id}/inbound/attach"
payload := strings.NewReader("{\n \"inbound_numbers\": [\n \"<string>\"\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/{persona_id}/inbound/attach")
.header("authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"inbound_numbers\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bland.ai/v1/personas/{persona_id}/inbound/attach")
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 \"inbound_numbers\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "12345678-1234-1234-1234-123456789012",
"name": "Support Agent",
"user_id": "12345678-1234-1234-1234-123456789012",
"inbound_numbers": [
{
"phone_number": "+14155551234",
"label": "Support Line",
"persona_id": "12345678-1234-1234-1234-123456789012",
"persona_settings": null
},
{
"phone_number": "+14155555678",
"label": null,
"persona_id": "12345678-1234-1234-1234-123456789012",
"persona_settings": null
}
],
"created_at": "2025-09-23T15:13:36.348Z",
"updated_at": "2025-09-23T15:13:36.412Z"
},
"errors": null
}
{
"data": null,
"errors": [
{
"error": "INVALID_INBOUND_NUMBERS",
"message": "Some phone numbers were not found or do not belong to you"
}
]
}
Phone Numbers
Attach Phone Numbers to Persona
Attach one or more inbound phone numbers to a persona. The same endpoint handles voice, SMS, and WhatsApp numbers — channel capability is determined by the number’s own configuration, not by this call.
POST
/
v1
/
personas
/
{persona_id}
/
inbound
/
attach
Attach Phone Numbers to Persona
curl --request POST \
--url https://api.bland.ai/v1/personas/{persona_id}/inbound/attach \
--header 'Content-Type: application/json' \
--header 'authorization: <authorization>' \
--data '
{
"inbound_numbers": [
"<string>"
]
}
'import requests
url = "https://api.bland.ai/v1/personas/{persona_id}/inbound/attach"
payload = { "inbound_numbers": ["<string>"] }
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({inbound_numbers: ['<string>']})
};
fetch('https://api.bland.ai/v1/personas/{persona_id}/inbound/attach', 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/{persona_id}/inbound/attach",
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([
'inbound_numbers' => [
'<string>'
]
]),
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/{persona_id}/inbound/attach"
payload := strings.NewReader("{\n \"inbound_numbers\": [\n \"<string>\"\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/{persona_id}/inbound/attach")
.header("authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"inbound_numbers\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bland.ai/v1/personas/{persona_id}/inbound/attach")
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 \"inbound_numbers\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "12345678-1234-1234-1234-123456789012",
"name": "Support Agent",
"user_id": "12345678-1234-1234-1234-123456789012",
"inbound_numbers": [
{
"phone_number": "+14155551234",
"label": "Support Line",
"persona_id": "12345678-1234-1234-1234-123456789012",
"persona_settings": null
},
{
"phone_number": "+14155555678",
"label": null,
"persona_id": "12345678-1234-1234-1234-123456789012",
"persona_settings": null
}
],
"created_at": "2025-09-23T15:13:36.348Z",
"updated_at": "2025-09-23T15:13:36.412Z"
},
"errors": null
}
{
"data": null,
"errors": [
{
"error": "INVALID_INBOUND_NUMBERS",
"message": "Some phone numbers were not found or do not belong to you"
}
]
}
Headers
Your API key for authentication.
Path Parameters
The unique identifier of the persona to attach numbers to.
Body Parameters
Array of E.164 formatted phone numbers to attach to this persona. All numbers must already belong to your account.
Response
The updated persona object with the newly attached inbound numbers.
Show persona object
Show persona object
Unique identifier for the persona.
Display name of the persona.
ID of the user who owns this persona.
Array of inbound number objects now attached to this persona.
ISO 8601 timestamp of when the persona was created.
ISO 8601 timestamp of when the persona was last modified.
null on success, or a list of error objects if the request failed.{
"data": {
"id": "12345678-1234-1234-1234-123456789012",
"name": "Support Agent",
"user_id": "12345678-1234-1234-1234-123456789012",
"inbound_numbers": [
{
"phone_number": "+14155551234",
"label": "Support Line",
"persona_id": "12345678-1234-1234-1234-123456789012",
"persona_settings": null
},
{
"phone_number": "+14155555678",
"label": null,
"persona_id": "12345678-1234-1234-1234-123456789012",
"persona_settings": null
}
],
"created_at": "2025-09-23T15:13:36.348Z",
"updated_at": "2025-09-23T15:13:36.412Z"
},
"errors": null
}
{
"data": null,
"errors": [
{
"error": "INVALID_INBOUND_NUMBERS",
"message": "Some phone numbers were not found or do not belong to you"
}
]
}
Docs for agents: llms.txt
Was this page helpful?
⌘I