Get thread messages
curl --request GET \
--url https://api.illuminalab.com/v1/resources/{resourceId}/threads/{threadId}/messages \
--header 'authorization: <authorization>'import requests
url = "https://api.illuminalab.com/v1/resources/{resourceId}/threads/{threadId}/messages"
headers = {"authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {authorization: '<authorization>'}};
fetch('https://api.illuminalab.com/v1/resources/{resourceId}/threads/{threadId}/messages', 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.illuminalab.com/v1/resources/{resourceId}/threads/{threadId}/messages",
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.illuminalab.com/v1/resources/{resourceId}/threads/{threadId}/messages"
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.illuminalab.com/v1/resources/{resourceId}/threads/{threadId}/messages")
.header("authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.illuminalab.com/v1/resources/{resourceId}/threads/{threadId}/messages")
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{
"messages": [
{
"id": "<string>",
"thread_id": "<string>",
"role": "<string>",
"parts": "<string>",
"metadata": "<string>",
"created_at": "<string>"
}
],
"total": 123,
"feedbacks": {},
"thread_feedback": {
"sentiment": 123,
"comment": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}resources
Get thread messages
Get all messages for a thread. Returns all message parts without filtering, including reasoning and internal tool calls. Use /public-messages for filtered output.
GET
/
v1
/
resources
/
{resourceId}
/
threads
/
{threadId}
/
messages
Get thread messages
curl --request GET \
--url https://api.illuminalab.com/v1/resources/{resourceId}/threads/{threadId}/messages \
--header 'authorization: <authorization>'import requests
url = "https://api.illuminalab.com/v1/resources/{resourceId}/threads/{threadId}/messages"
headers = {"authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {authorization: '<authorization>'}};
fetch('https://api.illuminalab.com/v1/resources/{resourceId}/threads/{threadId}/messages', 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.illuminalab.com/v1/resources/{resourceId}/threads/{threadId}/messages",
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.illuminalab.com/v1/resources/{resourceId}/threads/{threadId}/messages"
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.illuminalab.com/v1/resources/{resourceId}/threads/{threadId}/messages")
.header("authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.illuminalab.com/v1/resources/{resourceId}/threads/{threadId}/messages")
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{
"messages": [
{
"id": "<string>",
"thread_id": "<string>",
"role": "<string>",
"parts": "<string>",
"metadata": "<string>",
"created_at": "<string>"
}
],
"total": 123,
"feedbacks": {},
"thread_feedback": {
"sentiment": 123,
"comment": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}Headers
Pattern:
^Bearer [\s\S]{0,}$Path Parameters
Unique resource identifier
Minimum string length:
10UUID of the thread
Pattern:
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$Response
Response for status 200
Array of messages with all parts (unfiltered)
Show child attributes
Show child attributes
Total count of messages
Map of message IDs to feedback data
Show child attributes
Show child attributes
Thread-level feedback (score 0-5 with optional comment), null if none exists
Show child attributes
Show child attributes