Upload Agent Logo
curl --request POST \
--url https://api.bland.ai/v2/agents/{agent_id}/identity/logo \
--header 'authorization: <authorization>' \
--header 'content-type: <content-type>' \
--data '{}'import requests
url = "https://api.bland.ai/v2/agents/{agent_id}/identity/logo"
payload = {}
headers = {
"authorization": "<authorization>",
"content-type": "<content-type>"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {authorization: '<authorization>', 'content-type': '<content-type>'},
body: JSON.stringify({})
};
fetch('https://api.bland.ai/v2/agents/{agent_id}/identity/logo', 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/v2/agents/{agent_id}/identity/logo",
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([
]),
CURLOPT_HTTPHEADER => [
"authorization: <authorization>",
"content-type: <content-type>"
],
]);
$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/v2/agents/{agent_id}/identity/logo"
payload := strings.NewReader("{}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("authorization", "<authorization>")
req.Header.Add("content-type", "<content-type>")
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/v2/agents/{agent_id}/identity/logo")
.header("authorization", "<authorization>")
.header("content-type", "<content-type>")
.body("{}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bland.ai/v2/agents/{agent_id}/identity/logo")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["authorization"] = '<authorization>'
request["content-type"] = '<content-type>'
request.body = "{}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "b88c3ce2-54d4-406c-bd21-733c61556151",
"org_id": "4bb834b5-8e95-487a-908d-d712a201008c",
"agent_id": "ec74c83e-5370-450b-9aa0-59757ec25a81",
"display_name": "Northwind Dental",
"tagline": "Front desk",
"support_email": "help@northwind.example",
"website": "https://northwind.example",
"address": "",
"logo_file_id": "5db9aecc-5013-4f97-8592-b0330617a6d0",
"vcf_file_id": "2ee5217f-562e-477c-8e30-0b1a68e44c2f",
"vcf_delivery_enabled": false,
"rcs_enabled": true,
"bcid_enabled": false,
"bcid_status": "not_submitted",
"bcid_submission": null,
"phone_numbers": [],
"logo_url": "https://files.bland.ai/agent-identity/5db9aecc-5013-4f97-8592-b0330617a6d0?signature=...",
"vcf_url": "https://files.bland.ai/agent-identity/2ee5217f-562e-477c-8e30-0b1a68e44c2f?signature=...",
"created_at": "2026-09-15T05:08:35.092Z",
"updated_at": "2026-09-15T05:09:02.118Z"
},
"errors": null
}
{
"data": null,
"errors": [
{
"error": "BAD_REQUEST",
"message": "A `file` image field is required"
}
]
}
{
"data": null,
"errors": [
{
"error": "BAD_REQUEST",
"message": "Logo must be a PNG or JPEG image"
}
]
}
Identity
Upload Agent Logo
Upload the logo shown on the agent’s contact card.
POST
/
v2
/
agents
/
{agent_id}
/
identity
/
logo
Upload Agent Logo
curl --request POST \
--url https://api.bland.ai/v2/agents/{agent_id}/identity/logo \
--header 'authorization: <authorization>' \
--header 'content-type: <content-type>' \
--data '{}'import requests
url = "https://api.bland.ai/v2/agents/{agent_id}/identity/logo"
payload = {}
headers = {
"authorization": "<authorization>",
"content-type": "<content-type>"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {authorization: '<authorization>', 'content-type': '<content-type>'},
body: JSON.stringify({})
};
fetch('https://api.bland.ai/v2/agents/{agent_id}/identity/logo', 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/v2/agents/{agent_id}/identity/logo",
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([
]),
CURLOPT_HTTPHEADER => [
"authorization: <authorization>",
"content-type: <content-type>"
],
]);
$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/v2/agents/{agent_id}/identity/logo"
payload := strings.NewReader("{}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("authorization", "<authorization>")
req.Header.Add("content-type", "<content-type>")
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/v2/agents/{agent_id}/identity/logo")
.header("authorization", "<authorization>")
.header("content-type", "<content-type>")
.body("{}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bland.ai/v2/agents/{agent_id}/identity/logo")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["authorization"] = '<authorization>'
request["content-type"] = '<content-type>'
request.body = "{}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "b88c3ce2-54d4-406c-bd21-733c61556151",
"org_id": "4bb834b5-8e95-487a-908d-d712a201008c",
"agent_id": "ec74c83e-5370-450b-9aa0-59757ec25a81",
"display_name": "Northwind Dental",
"tagline": "Front desk",
"support_email": "help@northwind.example",
"website": "https://northwind.example",
"address": "",
"logo_file_id": "5db9aecc-5013-4f97-8592-b0330617a6d0",
"vcf_file_id": "2ee5217f-562e-477c-8e30-0b1a68e44c2f",
"vcf_delivery_enabled": false,
"rcs_enabled": true,
"bcid_enabled": false,
"bcid_status": "not_submitted",
"bcid_submission": null,
"phone_numbers": [],
"logo_url": "https://files.bland.ai/agent-identity/5db9aecc-5013-4f97-8592-b0330617a6d0?signature=...",
"vcf_url": "https://files.bland.ai/agent-identity/2ee5217f-562e-477c-8e30-0b1a68e44c2f?signature=...",
"created_at": "2026-09-15T05:08:35.092Z",
"updated_at": "2026-09-15T05:09:02.118Z"
},
"errors": null
}
{
"data": null,
"errors": [
{
"error": "BAD_REQUEST",
"message": "A `file` image field is required"
}
]
}
{
"data": null,
"errors": [
{
"error": "BAD_REQUEST",
"message": "Logo must be a PNG or JPEG image"
}
]
}
Overview
Replaces the agent’s logo. Send the image as a multipart form upload in a field namedfile, not as JSON. Uploading a logo rebuilds the contact card, so vcf_file_id and vcf_url change in the response.
Requires an admin, owner, operator, or prompter role.
curl -X POST https://api.bland.ai/v2/agents/{agent_id}/identity/logo \
-H "authorization: YOUR_API_KEY" \
-F "file=@logo.png;type=image/png"
Headers
string
required
Your API key for authentication.
string
required
multipart/form-data. Most HTTP clients set this for you when you attach a file.Path Parameters
string
required
The agent’s unique identifier.
Body Parameters
file
required
The logo image. PNG or JPEG only, at most 2 MB, one file per request. A request with no file returns
400 BAD_REQUEST, and any other image type is rejected with Logo must be a PNG or JPEG image.Response
Returns the full identity in the same shape as Get Agent Identity, with the newlogo_file_id and a fresh logo_url.
object
The updated identity. See Get Agent Identity for every field.
null | array
null on success, or a list of error objects if the request failed.{
"data": {
"id": "b88c3ce2-54d4-406c-bd21-733c61556151",
"org_id": "4bb834b5-8e95-487a-908d-d712a201008c",
"agent_id": "ec74c83e-5370-450b-9aa0-59757ec25a81",
"display_name": "Northwind Dental",
"tagline": "Front desk",
"support_email": "help@northwind.example",
"website": "https://northwind.example",
"address": "",
"logo_file_id": "5db9aecc-5013-4f97-8592-b0330617a6d0",
"vcf_file_id": "2ee5217f-562e-477c-8e30-0b1a68e44c2f",
"vcf_delivery_enabled": false,
"rcs_enabled": true,
"bcid_enabled": false,
"bcid_status": "not_submitted",
"bcid_submission": null,
"phone_numbers": [],
"logo_url": "https://files.bland.ai/agent-identity/5db9aecc-5013-4f97-8592-b0330617a6d0?signature=...",
"vcf_url": "https://files.bland.ai/agent-identity/2ee5217f-562e-477c-8e30-0b1a68e44c2f?signature=...",
"created_at": "2026-09-15T05:08:35.092Z",
"updated_at": "2026-09-15T05:09:02.118Z"
},
"errors": null
}
{
"data": null,
"errors": [
{
"error": "BAD_REQUEST",
"message": "A `file` image field is required"
}
]
}
{
"data": null,
"errors": [
{
"error": "BAD_REQUEST",
"message": "Logo must be a PNG or JPEG image"
}
]
}
Docs for agents: llms.txt
Was this page helpful?