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
Your API key for authentication.
Path Parameters
The unique identifier of the contact memory record.
Body Parameters
Key-value pairs to merge with existing facts. New keys are added, existing keys are updated.
Response
The updated contact memory object.
Unique identifier for the contact memory.
The merged facts object.
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