Add Comment
curl --request POST \
--url https://api.bland.ai/v1/triage/issues/{id}/comments \
--header 'Content-Type: application/json' \
--header 'authorization: <authorization>' \
--data '
{
"detail": "<string>",
"resource_link_ids": [
"<string>"
]
}
'import requests
url = "https://api.bland.ai/v1/triage/issues/{id}/comments"
payload = {
"detail": "<string>",
"resource_link_ids": ["<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({detail: '<string>', resource_link_ids: ['<string>']})
};
fetch('https://api.bland.ai/v1/triage/issues/{id}/comments', 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}/comments",
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([
'detail' => '<string>',
'resource_link_ids' => [
'<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}/comments"
payload := strings.NewReader("{\n \"detail\": \"<string>\",\n \"resource_link_ids\": [\n \"<string>\"\n ]\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}/comments")
.header("authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"detail\": \"<string>\",\n \"resource_link_ids\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bland.ai/v1/triage/issues/{id}/comments")
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 \"detail\": \"<string>\",\n \"resource_link_ids\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": {
"entry_kind": "issue",
"id": "5a9d0fa9-27b7-414c-9e49-5fc32f240c01",
"issue_id": "4f9a7c2d-7f88-4dc4-9d1e-be83c5067f1c",
"type": "comment",
"actor": {
"kind": "user",
"id": "1f4cabe4-5f9b-4b30-bc4f-fcd3e94a5b15",
"label": "John Bland",
"avatar_url": null
},
"detail": "@norm please look at the routing logic on the closing node, this looks like the same bug from T-1029.",
"from_status": null,
"to_status": null,
"metadata": null,
"resources": [],
"referenced_issues": [],
"created_at": "2026-05-07T05:26:21.449Z"
},
"errors": null
}
Activity & Comments
Add Comment
Comment on an issue. Mention @norm to dispatch a Norm investigation.
POST
/
v1
/
triage
/
issues
/
{id}
/
comments
Add Comment
curl --request POST \
--url https://api.bland.ai/v1/triage/issues/{id}/comments \
--header 'Content-Type: application/json' \
--header 'authorization: <authorization>' \
--data '
{
"detail": "<string>",
"resource_link_ids": [
"<string>"
]
}
'import requests
url = "https://api.bland.ai/v1/triage/issues/{id}/comments"
payload = {
"detail": "<string>",
"resource_link_ids": ["<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({detail: '<string>', resource_link_ids: ['<string>']})
};
fetch('https://api.bland.ai/v1/triage/issues/{id}/comments', 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}/comments",
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([
'detail' => '<string>',
'resource_link_ids' => [
'<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}/comments"
payload := strings.NewReader("{\n \"detail\": \"<string>\",\n \"resource_link_ids\": [\n \"<string>\"\n ]\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}/comments")
.header("authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"detail\": \"<string>\",\n \"resource_link_ids\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bland.ai/v1/triage/issues/{id}/comments")
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 \"detail\": \"<string>\",\n \"resource_link_ids\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": {
"entry_kind": "issue",
"id": "5a9d0fa9-27b7-414c-9e49-5fc32f240c01",
"issue_id": "4f9a7c2d-7f88-4dc4-9d1e-be83c5067f1c",
"type": "comment",
"actor": {
"kind": "user",
"id": "1f4cabe4-5f9b-4b30-bc4f-fcd3e94a5b15",
"label": "John Bland",
"avatar_url": null
},
"detail": "@norm please look at the routing logic on the closing node, this looks like the same bug from T-1029.",
"from_status": null,
"to_status": null,
"metadata": null,
"resources": [],
"referenced_issues": [],
"created_at": "2026-05-07T05:26:21.449Z"
},
"errors": null
}
Overview
Adds a comment to the issue’s activity feed. If the body contains@norm, the same call also dispatches a Norm investigation, creating a session if none exists. The mention is stripped before the prompt reaches Norm. The HTTP response returns once the comment is saved, so the comment is durable even if the dispatch fails.
Headers
Your API key for authentication.
Path Parameters
Internal UUID of the issue.
Body Parameters
Comment body. 1-4000 characters. Include
@norm anywhere in the body to also dispatch a Norm investigation.Optional array of resource link IDs (from List Resources) to attach to this comment as inline references. The dashboard renders these as chips alongside the comment.
Response
Returns201 Created with the comment timeline entry. See List Activity for the full field list.
An
IssueTimelineEntry with entry_kind: "issue" and type: "comment".null on success. Returns 404 if the issue does not exist.{
"data": {
"entry_kind": "issue",
"id": "5a9d0fa9-27b7-414c-9e49-5fc32f240c01",
"issue_id": "4f9a7c2d-7f88-4dc4-9d1e-be83c5067f1c",
"type": "comment",
"actor": {
"kind": "user",
"id": "1f4cabe4-5f9b-4b30-bc4f-fcd3e94a5b15",
"label": "John Bland",
"avatar_url": null
},
"detail": "@norm please look at the routing logic on the closing node, this looks like the same bug from T-1029.",
"from_status": null,
"to_status": null,
"metadata": null,
"resources": [],
"referenced_issues": [],
"created_at": "2026-05-07T05:26:21.449Z"
},
"errors": null
}
Docs for agents: llms.txt
Was this page helpful?
⌘I