curl --request GET \
--url https://api.coval.dev/v1/conversations/simulated/{conversation_id}/comments \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.coval.dev/v1/conversations/simulated/{conversation_id}/comments"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.coval.dev/v1/conversations/simulated/{conversation_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.coval.dev/v1/conversations/simulated/{conversation_id}/comments",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$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.coval.dev/v1/conversations/simulated/{conversation_id}/comments"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
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.coval.dev/v1/conversations/simulated/{conversation_id}/comments")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.coval.dev/v1/conversations/simulated/{conversation_id}/comments")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"comments": [
{
"name": "<string>",
"id": "<string>",
"conversation_id": "<string>",
"content": "<string>",
"message_index": 123,
"selected_text": "<string>",
"text_start_offset": 123,
"text_end_offset": 123,
"created_by": "<string>",
"created_by_name": "<string>",
"create_time": "2023-11-07T05:31:56Z",
"update_time": "2023-11-07T05:31:56Z",
"parent_comment_id": "<string>"
}
],
"next_page_token": "<string>"
}{
"error": {
"code": "INVALID_ARGUMENT",
"message": "Request validation failed",
"details": [
{
"description": "Agent not found or not accessible by your organization",
"field": "agent_id"
}
]
}
}{
"error": {
"code": "INVALID_ARGUMENT",
"message": "Request validation failed",
"details": [
{
"description": "Agent not found or not accessible by your organization",
"field": "agent_id"
}
]
}
}{
"error": {
"code": "INVALID_ARGUMENT",
"message": "Request validation failed",
"details": [
{
"description": "Agent not found or not accessible by your organization",
"field": "agent_id"
}
]
}
}{
"error": {
"code": "INVALID_ARGUMENT",
"message": "Request validation failed",
"details": [
{
"description": "Agent not found or not accessible by your organization",
"field": "agent_id"
}
]
}
}{
"error": {
"code": "INVALID_ARGUMENT",
"message": "Request validation failed",
"details": [
{
"description": "Agent not found or not accessible by your organization",
"field": "agent_id"
}
]
}
}{
"error": {
"code": "INVALID_ARGUMENT",
"message": "Request validation failed",
"details": [
{
"description": "Agent not found or not accessible by your organization",
"field": "agent_id"
}
]
}
}List simulated conversation comments
Read transcript comments for this conversation, including conversation-level comments (message_index -1) and threaded replies. These are separate from metric review annotations and reviewer_notes. Results are ordered by create_time then id. Follow next_page_token until null. Pages form a live traversal: newly inserted comments can appear and deleted comments disappear; the export is not a frozen snapshot. Requires comments:read. The authenticated workspace must have access to the conversation and its comments.
curl --request GET \
--url https://api.coval.dev/v1/conversations/simulated/{conversation_id}/comments \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.coval.dev/v1/conversations/simulated/{conversation_id}/comments"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.coval.dev/v1/conversations/simulated/{conversation_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.coval.dev/v1/conversations/simulated/{conversation_id}/comments",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$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.coval.dev/v1/conversations/simulated/{conversation_id}/comments"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
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.coval.dev/v1/conversations/simulated/{conversation_id}/comments")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.coval.dev/v1/conversations/simulated/{conversation_id}/comments")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"comments": [
{
"name": "<string>",
"id": "<string>",
"conversation_id": "<string>",
"content": "<string>",
"message_index": 123,
"selected_text": "<string>",
"text_start_offset": 123,
"text_end_offset": 123,
"created_by": "<string>",
"created_by_name": "<string>",
"create_time": "2023-11-07T05:31:56Z",
"update_time": "2023-11-07T05:31:56Z",
"parent_comment_id": "<string>"
}
],
"next_page_token": "<string>"
}{
"error": {
"code": "INVALID_ARGUMENT",
"message": "Request validation failed",
"details": [
{
"description": "Agent not found or not accessible by your organization",
"field": "agent_id"
}
]
}
}{
"error": {
"code": "INVALID_ARGUMENT",
"message": "Request validation failed",
"details": [
{
"description": "Agent not found or not accessible by your organization",
"field": "agent_id"
}
]
}
}{
"error": {
"code": "INVALID_ARGUMENT",
"message": "Request validation failed",
"details": [
{
"description": "Agent not found or not accessible by your organization",
"field": "agent_id"
}
]
}
}{
"error": {
"code": "INVALID_ARGUMENT",
"message": "Request validation failed",
"details": [
{
"description": "Agent not found or not accessible by your organization",
"field": "agent_id"
}
]
}
}{
"error": {
"code": "INVALID_ARGUMENT",
"message": "Request validation failed",
"details": [
{
"description": "Agent not found or not accessible by your organization",
"field": "agent_id"
}
]
}
}{
"error": {
"code": "INVALID_ARGUMENT",
"message": "Request validation failed",
"details": [
{
"description": "Agent not found or not accessible by your organization",
"field": "agent_id"
}
]
}
}Authorizations
API key for authentication.
Headers
Workspace ID. When omitted, the API resolves the default workspace. Only the default workspace includes legacy comments without workspace attribution.
Path Parameters
ID of the simulated conversation.
Query Parameters
Maximum comments per page.
1 <= x <= 100Opaque next_page_token from the previous response. Keep the same conversation and workspace.
1 - 4096Was this page helpful?