Download Agent Contact Card
curl --request GET \
--url https://api.bland.ai/v2/agents/{agent_id}/identity/contact-card.vcf \
--header 'authorization: <authorization>'import requests
url = "https://api.bland.ai/v2/agents/{agent_id}/identity/contact-card.vcf"
headers = {"authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {authorization: '<authorization>'}};
fetch('https://api.bland.ai/v2/agents/{agent_id}/identity/contact-card.vcf', 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/contact-card.vcf",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"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"
"net/http"
"io"
)
func main() {
url := "https://api.bland.ai/v2/agents/{agent_id}/identity/contact-card.vcf"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("authorization", "<authorization>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.bland.ai/v2/agents/{agent_id}/identity/contact-card.vcf")
.header("authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bland.ai/v2/agents/{agent_id}/identity/contact-card.vcf")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["authorization"] = '<authorization>'
response = http.request(request)
puts response.read_bodyBEGIN:VCARD
VERSION:3.0
FN:Northwind Dental
N:Northwind Dental;;;;
ORG:Northwind Dental
EMAIL;TYPE=WORK:help@northwind.example
URL:https://northwind.example
NOTE:Front desk
REV:20260915T050844Z
END:VCARD
{
"data": null,
"errors": [
{
"error": "NOT_FOUND",
"message": "Agent not found"
}
]
}
Identity
Download Agent Contact Card
Download the agent’s contact card as a vCard file.
GET
/
v2
/
agents
/
{agent_id}
/
identity
/
contact-card.vcf
Download Agent Contact Card
curl --request GET \
--url https://api.bland.ai/v2/agents/{agent_id}/identity/contact-card.vcf \
--header 'authorization: <authorization>'import requests
url = "https://api.bland.ai/v2/agents/{agent_id}/identity/contact-card.vcf"
headers = {"authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {authorization: '<authorization>'}};
fetch('https://api.bland.ai/v2/agents/{agent_id}/identity/contact-card.vcf', 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/contact-card.vcf",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"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"
"net/http"
"io"
)
func main() {
url := "https://api.bland.ai/v2/agents/{agent_id}/identity/contact-card.vcf"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("authorization", "<authorization>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.bland.ai/v2/agents/{agent_id}/identity/contact-card.vcf")
.header("authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bland.ai/v2/agents/{agent_id}/identity/contact-card.vcf")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["authorization"] = '<authorization>'
response = http.request(request)
puts response.read_bodyBEGIN:VCARD
VERSION:3.0
FN:Northwind Dental
N:Northwind Dental;;;;
ORG:Northwind Dental
EMAIL;TYPE=WORK:help@northwind.example
URL:https://northwind.example
NOTE:Front desk
REV:20260915T050844Z
END:VCARD
{
"data": null,
"errors": [
{
"error": "NOT_FOUND",
"message": "Agent not found"
}
]
}
Overview
Returns the agent’s contact card as a vCard file rather than JSON, built from the identity fields. Recipients can save it to their contacts so the agent’s name and logo appear when it calls. The response istext/vcard; charset=utf-8 with a Content-Disposition attachment header naming the file after the display name, for example northwind-dental.vcf. Because the body is not JSON, it does not use the data and errors envelope on success. Errors still do.
The card is regenerated whenever an identity field changes, so this endpoint always reflects the current identity.
Headers
string
required
Your API key for authentication.
Path Parameters
string
required
The agent’s unique identifier.
Response
Returns200 with the vCard as the raw body.
string
Always
text/vcard; charset=utf-8.string
attachment with a filename derived from display_name, for example attachment; filename="northwind-dental.vcf".BEGIN:VCARD
VERSION:3.0
FN:Northwind Dental
N:Northwind Dental;;;;
ORG:Northwind Dental
EMAIL;TYPE=WORK:help@northwind.example
URL:https://northwind.example
NOTE:Front desk
REV:20260915T050844Z
END:VCARD
{
"data": null,
"errors": [
{
"error": "NOT_FOUND",
"message": "Agent not found"
}
]
}
Docs for agents: llms.txt
Was this page helpful?