Add Flag
curl --request POST \
--url https://api.bland.ai/v1/triage/issues/{id}/flags \
--header 'Content-Type: application/json' \
--header 'authorization: <authorization>' \
--data '
{
"call_id": "<string>",
"type": "<string>",
"note": "<string>",
"node_id": "<string>",
"node_name": "<string>",
"message_index": 123,
"message_text": "<string>"
}
'import requests
url = "https://api.bland.ai/v1/triage/issues/{id}/flags"
payload = {
"call_id": "<string>",
"type": "<string>",
"note": "<string>",
"node_id": "<string>",
"node_name": "<string>",
"message_index": 123,
"message_text": "<string>"
}
headers = {
"authorization": "<authorization>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {authorization: '<authorization>', 'Content-Type': 'application/json'},
body: JSON.stringify({
call_id: '<string>',
type: '<string>',
note: '<string>',
node_id: '<string>',
node_name: '<string>',
message_index: 123,
message_text: '<string>'
})
};
fetch('https://api.bland.ai/v1/triage/issues/{id}/flags', 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/triage/issues/{id}/flags",
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([
'call_id' => '<string>',
'type' => '<string>',
'note' => '<string>',
'node_id' => '<string>',
'node_name' => '<string>',
'message_index' => 123,
'message_text' => '<string>'
]),
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/triage/issues/{id}/flags"
payload := strings.NewReader("{\n \"call_id\": \"<string>\",\n \"type\": \"<string>\",\n \"note\": \"<string>\",\n \"node_id\": \"<string>\",\n \"node_name\": \"<string>\",\n \"message_index\": 123,\n \"message_text\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.bland.ai/v1/triage/issues/{id}/flags")
.header("authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"call_id\": \"<string>\",\n \"type\": \"<string>\",\n \"note\": \"<string>\",\n \"node_id\": \"<string>\",\n \"node_name\": \"<string>\",\n \"message_index\": 123,\n \"message_text\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bland.ai/v1/triage/issues/{id}/flags")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["authorization"] = '<authorization>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"call_id\": \"<string>\",\n \"type\": \"<string>\",\n \"note\": \"<string>\",\n \"node_id\": \"<string>\",\n \"node_name\": \"<string>\",\n \"message_index\": 123,\n \"message_text\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "ad0931e4-b0e1-4bd6-a5b1-09e7c9123dba",
"org_id": "f5b40b9e-bc05-4b8a-9af1-d8f6a8a3a201",
"issue_id": "9bbe5547-d5b1-4b83-9f80-87c4af7c6b34",
"call_id": "3aefc79d-1870-4514-b32b-b9212ae32bc8",
"type": "missed_handoff",
"note": "Agent transferred without confirming the email.",
"node_id": null,
"node_name": null,
"message_index": 12,
"message_text": "OK, transferring you now.",
"author_id": "75c5c7da-a5d6-4e26-a51e-1ae8ef2bfa4a",
"created_at": "2026-05-07T05:26:11.327Z"
},
"errors": null
}
{
"data": null,
"errors": [
{ "error": "call_not_attached", "message": "Call must be attached to issue first" }
]
}
Flags
Add Flag
Flag a moment on an attached call.
POST
/
v1
/
triage
/
issues
/
{id}
/
flags
Add Flag
curl --request POST \
--url https://api.bland.ai/v1/triage/issues/{id}/flags \
--header 'Content-Type: application/json' \
--header 'authorization: <authorization>' \
--data '
{
"call_id": "<string>",
"type": "<string>",
"note": "<string>",
"node_id": "<string>",
"node_name": "<string>",
"message_index": 123,
"message_text": "<string>"
}
'import requests
url = "https://api.bland.ai/v1/triage/issues/{id}/flags"
payload = {
"call_id": "<string>",
"type": "<string>",
"note": "<string>",
"node_id": "<string>",
"node_name": "<string>",
"message_index": 123,
"message_text": "<string>"
}
headers = {
"authorization": "<authorization>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {authorization: '<authorization>', 'Content-Type': 'application/json'},
body: JSON.stringify({
call_id: '<string>',
type: '<string>',
note: '<string>',
node_id: '<string>',
node_name: '<string>',
message_index: 123,
message_text: '<string>'
})
};
fetch('https://api.bland.ai/v1/triage/issues/{id}/flags', 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/triage/issues/{id}/flags",
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([
'call_id' => '<string>',
'type' => '<string>',
'note' => '<string>',
'node_id' => '<string>',
'node_name' => '<string>',
'message_index' => 123,
'message_text' => '<string>'
]),
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/triage/issues/{id}/flags"
payload := strings.NewReader("{\n \"call_id\": \"<string>\",\n \"type\": \"<string>\",\n \"note\": \"<string>\",\n \"node_id\": \"<string>\",\n \"node_name\": \"<string>\",\n \"message_index\": 123,\n \"message_text\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.bland.ai/v1/triage/issues/{id}/flags")
.header("authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"call_id\": \"<string>\",\n \"type\": \"<string>\",\n \"note\": \"<string>\",\n \"node_id\": \"<string>\",\n \"node_name\": \"<string>\",\n \"message_index\": 123,\n \"message_text\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bland.ai/v1/triage/issues/{id}/flags")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["authorization"] = '<authorization>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"call_id\": \"<string>\",\n \"type\": \"<string>\",\n \"note\": \"<string>\",\n \"node_id\": \"<string>\",\n \"node_name\": \"<string>\",\n \"message_index\": 123,\n \"message_text\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "ad0931e4-b0e1-4bd6-a5b1-09e7c9123dba",
"org_id": "f5b40b9e-bc05-4b8a-9af1-d8f6a8a3a201",
"issue_id": "9bbe5547-d5b1-4b83-9f80-87c4af7c6b34",
"call_id": "3aefc79d-1870-4514-b32b-b9212ae32bc8",
"type": "missed_handoff",
"note": "Agent transferred without confirming the email.",
"node_id": null,
"node_name": null,
"message_index": 12,
"message_text": "OK, transferring you now.",
"author_id": "75c5c7da-a5d6-4e26-a51e-1ae8ef2bfa4a",
"created_at": "2026-05-07T05:26:11.327Z"
},
"errors": null
}
{
"data": null,
"errors": [
{ "error": "call_not_attached", "message": "Call must be attached to issue first" }
]
}
Overview
Flags pinpoint where on a call something went wrong. Thecall_id must already be attached as a resource on this issue, otherwise the request fails with 409 conflict and { error: "call_not_attached" }. Flag types accumulate into a reusable per-org catalog (see List Flag Types).
Headers
Your API key for authentication.
Path Parameters
Internal UUID of the issue.
Body Parameters
ID of the attached call this flag points at. Must already be attached as a resource on this issue.
Flag type. Free-form, but normalized to lower_snake_case before storage. Reusing a type increments its
usage_count in List Flag Types.Free-text note explaining why this moment was flagged. 1-4000 characters.
ID of the pathway node the flag is attached to, if known.
Display name of the pathway node, captured at flag time so the dashboard can render the node name even if the pathway later changes.
Zero-based index of the message turn in the call transcript that this flag points at.
Verbatim text of the flagged message, captured at flag time.
Response
Returns201 Created with the new flag.
Show Flag fields
Show Flag fields
Internal UUID of the flag.
The normalized flag type (lower_snake_case).
Empty string if no note was provided.
User ID of the caller that filed the flag.
null on success.{
"data": {
"id": "ad0931e4-b0e1-4bd6-a5b1-09e7c9123dba",
"org_id": "f5b40b9e-bc05-4b8a-9af1-d8f6a8a3a201",
"issue_id": "9bbe5547-d5b1-4b83-9f80-87c4af7c6b34",
"call_id": "3aefc79d-1870-4514-b32b-b9212ae32bc8",
"type": "missed_handoff",
"note": "Agent transferred without confirming the email.",
"node_id": null,
"node_name": null,
"message_index": 12,
"message_text": "OK, transferring you now.",
"author_id": "75c5c7da-a5d6-4e26-a51e-1ae8ef2bfa4a",
"created_at": "2026-05-07T05:26:11.327Z"
},
"errors": null
}
{
"data": null,
"errors": [
{ "error": "call_not_attached", "message": "Call must be attached to issue first" }
]
}
Docs for agents: llms.txt
Was this page helpful?
⌘I