Update Contact Facts
curl --request PATCH \
--url https://api.bland.ai/v1/memory/contact/{memory_id}/facts \
--header 'Content-Type: application/json' \
--header 'authorization: <authorization>' \
--data '{
"facts": {}
}'import requests
url = "https://api.bland.ai/v1/memory/contact/{memory_id}/facts"
payload = { "facts": {} }
headers = {
"authorization": "<authorization>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {authorization: '<authorization>', 'Content-Type': 'application/json'},
body: JSON.stringify({facts: {}})
};
fetch('https://api.bland.ai/v1/memory/contact/{memory_id}/facts', 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/memory/contact/{memory_id}/facts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'facts' => [
]
]),
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/memory/contact/{memory_id}/facts"
payload := strings.NewReader("{\n \"facts\": {}\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.bland.ai/v1/memory/contact/{memory_id}/facts")
.header("authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"facts\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bland.ai/v1/memory/contact/{memory_id}/facts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["authorization"] = '<authorization>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"facts\": {}\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "mem-aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
"org_id": "11111111-2222-3333-4444-555555555555",
"contact_id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
"persona_id": "persona-12345678",
"agent_number": null,
"summary": "Customer is a premium plan subscriber.",
"facts": {
"name": "John Doe",
"company": "Acme Corp",
"role": "CTO",
"preferred_contact": "phone",
"timezone": "America/New_York"
},
"recent_messages": [...],
"created_at": "2025-07-20T10:30:00.000Z",
"updated_at": "2025-07-22T16:00:00.000Z"
},
"errors": null
}
{
"data": null,
"errors": [
{
"error": "BAD_REQUEST",
"message": "facts is required"
}
]
}
Memory
Update Contact Facts
Merge new facts into a contact’s memory record. Existing keys are updated and new keys are added, but no keys are deleted. Facts are structured key-value pairs (e.g. name, plan, timezone) that persist across all conversations.
PATCH
/
v1
/
memory
/
contact
/
{memory_id}
/
facts
Update Contact Facts
curl --request PATCH \
--url https://api.bland.ai/v1/memory/contact/{memory_id}/facts \
--header 'Content-Type: application/json' \
--header 'authorization: <authorization>' \
--data '{
"facts": {}
}'import requests
url = "https://api.bland.ai/v1/memory/contact/{memory_id}/facts"
payload = { "facts": {} }
headers = {
"authorization": "<authorization>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {authorization: '<authorization>', 'Content-Type': 'application/json'},
body: JSON.stringify({facts: {}})
};
fetch('https://api.bland.ai/v1/memory/contact/{memory_id}/facts', 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/memory/contact/{memory_id}/facts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'facts' => [
]
]),
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/memory/contact/{memory_id}/facts"
payload := strings.NewReader("{\n \"facts\": {}\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.bland.ai/v1/memory/contact/{memory_id}/facts")
.header("authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"facts\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bland.ai/v1/memory/contact/{memory_id}/facts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["authorization"] = '<authorization>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"facts\": {}\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "mem-aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
"org_id": "11111111-2222-3333-4444-555555555555",
"contact_id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
"persona_id": "persona-12345678",
"agent_number": null,
"summary": "Customer is a premium plan subscriber.",
"facts": {
"name": "John Doe",
"company": "Acme Corp",
"role": "CTO",
"preferred_contact": "phone",
"timezone": "America/New_York"
},
"recent_messages": [...],
"created_at": "2025-07-20T10:30:00.000Z",
"updated_at": "2025-07-22T16:00:00.000Z"
},
"errors": null
}
{
"data": null,
"errors": [
{
"error": "BAD_REQUEST",
"message": "facts is required"
}
]
}
Headers
string
required
Your API key for authentication.
Path Parameters
string
required
The unique identifier of the contact memory record.
Body Parameters
object
required
Key-value pairs to merge with existing facts. New keys are added, existing keys are updated.
Response
object
The updated contact memory object.
string
Unique identifier for the contact memory.
object
The merged facts object.
null
Error array (null on success).
Facts Examples
Facts can store any structured information about the contact:{
"facts": {
"name": "John Doe",
"company": "Acme Corp",
"role": "CTO",
"preferred_contact": "phone",
"timezone": "America/New_York",
"plan": "premium",
"account_number": "ACC-12345"
}
}
{
"data": {
"id": "mem-aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
"org_id": "11111111-2222-3333-4444-555555555555",
"contact_id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
"persona_id": "persona-12345678",
"agent_number": null,
"summary": "Customer is a premium plan subscriber.",
"facts": {
"name": "John Doe",
"company": "Acme Corp",
"role": "CTO",
"preferred_contact": "phone",
"timezone": "America/New_York"
},
"recent_messages": [...],
"created_at": "2025-07-20T10:30:00.000Z",
"updated_at": "2025-07-22T16:00:00.000Z"
},
"errors": null
}
{
"data": null,
"errors": [
{
"error": "BAD_REQUEST",
"message": "facts is required"
}
]
}
Docs for agents: llms.txt
Was this page helpful?
⌘I