Messaging
Get Conversation by ID
Retrieve a single SMS conversation and its messages by its ID
GET
/
v1
/
sms
/
conversations
/
{id}
Get Conversation by ID
curl --request GET \
--url https://api.bland.ai/v1/sms/conversations/{id} \
--header 'authorization: <authorization>'import requests
url = "https://api.bland.ai/v1/sms/conversations/{id}"
headers = {"authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {authorization: '<authorization>'}};
fetch('https://api.bland.ai/v1/sms/conversations/{id}', 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/sms/conversations/{id}",
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/v1/sms/conversations/{id}"
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/v1/sms/conversations/{id}")
.header("authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bland.ai/v1/sms/conversations/{id}")
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_body{
"data": {
"id": "convo_abc123",
"created_at": "2025-05-13T20:50:59.233Z",
"updated_at": "2025-05-13T20:50:59.233Z",
"user_id": "user_abc123",
"user_number": "+15550001111",
"agent_number": "+15550002222",
"inbound_id": 123456,
"variables": null,
"current_node_id": null,
"curr_pathway_id": "pathway_abc123",
"curr_pathway_version": "latest",
"timed_out_at": null,
"last_message_at": "2025-05-13T20:50:59.233Z",
"is_active": true,
"effective_channel": "sms",
"summary": null,
"citation_variables": null,
"disposition_tag": null,
"messages": [
{
"created_at": "2025-05-13T20:50:59.708Z",
"message": "<Call Connected>",
"from": "+15550002222",
"to": "+15550001111",
"sender": "USER",
"id": 100001,
"status": null,
"error_code": null
},
{
"created_at": "2025-05-13T20:51:00.917Z",
"message": "Hey, what's up?",
"from": "+15550002222",
"to": "+15550001111",
"sender": "AGENT",
"id": 100002,
"status": "delivered",
"error_code": null
}
],
"disposition_logs": [
{
"disposition_id": "d1234567-abcd-1234-efgh-123456789012",
"snippet_version": 1,
"status": "COMPLETE",
"result": {
"appointmentBooked": true,
"callDisposition": "confirmed"
},
"error": null,
"exec_time": 1234
}
]
},
"errors": null
}
Enterprise Feature - SMS is only available on Enterprise plans. Contact your Bland representative for access.
Headers
Path Parameters
Response
ISO timestamp when the conversation timed out due to inactivity, if applicable. When set, the conversation will not respond to new user messages but will store them.
ISO timestamp set while a human owns the thread. The agent does not reply until the conversation is resumed. Messages sent by the rep have
sender: "HUMAN".source ("api", "node", or "dashboard"), optional actor, plus any metadata passed at handoff.The resolved delivery channel for this conversation:
"sms", "rcs", or "whatsapp". Determined based on the input channel and whether the messaging service supports RCS.AI-generated conversation summary, produced when the conversation ends and a summary prompt is configured on the SMS number.
Extracted citation variable values from the conversation transcript. Keys are variable names, values are the extracted data. Only populated when citation schemas are configured.
The first successful outcome result tag. Provides a quick classification of the conversation outcome without needing to inspect the full
disposition_logs.Delivery status of the message. Possible values:
"pending", "queued", "sent", "delivered", "read", "failed", "undelivered". The "read" status is available for RCS and WhatsApp channels.An array of outcome run results for this conversation. Each entry represents one outcome that was evaluated when the conversation ended.
The execution status.
"COMPLETE" indicates the outcome ran successfully, "ERROR" indicates a failure.{
"data": {
"id": "convo_abc123",
"created_at": "2025-05-13T20:50:59.233Z",
"updated_at": "2025-05-13T20:50:59.233Z",
"user_id": "user_abc123",
"user_number": "+15550001111",
"agent_number": "+15550002222",
"inbound_id": 123456,
"variables": null,
"current_node_id": null,
"curr_pathway_id": "pathway_abc123",
"curr_pathway_version": "latest",
"timed_out_at": null,
"last_message_at": "2025-05-13T20:50:59.233Z",
"is_active": true,
"effective_channel": "sms",
"summary": null,
"citation_variables": null,
"disposition_tag": null,
"messages": [
{
"created_at": "2025-05-13T20:50:59.708Z",
"message": "<Call Connected>",
"from": "+15550002222",
"to": "+15550001111",
"sender": "USER",
"id": 100001,
"status": null,
"error_code": null
},
{
"created_at": "2025-05-13T20:51:00.917Z",
"message": "Hey, what's up?",
"from": "+15550002222",
"to": "+15550001111",
"sender": "AGENT",
"id": 100002,
"status": "delivered",
"error_code": null
}
],
"disposition_logs": [
{
"disposition_id": "d1234567-abcd-1234-efgh-123456789012",
"snippet_version": 1,
"status": "COMPLETE",
"result": {
"appointmentBooked": true,
"callDisposition": "confirmed"
},
"error": null,
"exec_time": 1234
}
]
},
"errors": null
}
Docs for agents: llms.txt
Was this page helpful?
⌘I
Get Conversation by ID
curl --request GET \
--url https://api.bland.ai/v1/sms/conversations/{id} \
--header 'authorization: <authorization>'import requests
url = "https://api.bland.ai/v1/sms/conversations/{id}"
headers = {"authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {authorization: '<authorization>'}};
fetch('https://api.bland.ai/v1/sms/conversations/{id}', 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/sms/conversations/{id}",
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/v1/sms/conversations/{id}"
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/v1/sms/conversations/{id}")
.header("authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bland.ai/v1/sms/conversations/{id}")
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_body{
"data": {
"id": "convo_abc123",
"created_at": "2025-05-13T20:50:59.233Z",
"updated_at": "2025-05-13T20:50:59.233Z",
"user_id": "user_abc123",
"user_number": "+15550001111",
"agent_number": "+15550002222",
"inbound_id": 123456,
"variables": null,
"current_node_id": null,
"curr_pathway_id": "pathway_abc123",
"curr_pathway_version": "latest",
"timed_out_at": null,
"last_message_at": "2025-05-13T20:50:59.233Z",
"is_active": true,
"effective_channel": "sms",
"summary": null,
"citation_variables": null,
"disposition_tag": null,
"messages": [
{
"created_at": "2025-05-13T20:50:59.708Z",
"message": "<Call Connected>",
"from": "+15550002222",
"to": "+15550001111",
"sender": "USER",
"id": 100001,
"status": null,
"error_code": null
},
{
"created_at": "2025-05-13T20:51:00.917Z",
"message": "Hey, what's up?",
"from": "+15550002222",
"to": "+15550001111",
"sender": "AGENT",
"id": 100002,
"status": "delivered",
"error_code": null
}
],
"disposition_logs": [
{
"disposition_id": "d1234567-abcd-1234-efgh-123456789012",
"snippet_version": 1,
"status": "COMPLETE",
"result": {
"appointmentBooked": true,
"callDisposition": "confirmed"
},
"error": null,
"exec_time": 1234
}
]
},
"errors": null
}