Get Message Endpoint
curl --request GET \
--url https://flow.seekr.com/v1/threads/{thread_id}/messages/{message_id} \
--header 'Authorization: <api-key>'import requests
url = "https://flow.seekr.com/v1/threads/{thread_id}/messages/{message_id}"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://flow.seekr.com/v1/threads/{thread_id}/messages/{message_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://flow.seekr.com/v1/threads/{thread_id}/messages/{message_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: <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://flow.seekr.com/v1/threads/{thread_id}/messages/{message_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<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://flow.seekr.com/v1/threads/{thread_id}/messages/{message_id}")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://flow.seekr.com/v1/threads/{thread_id}/messages/{message_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"thread_id": "<string>",
"role": "<string>",
"content": "<string>",
"id": "<string>",
"object": "thread.message",
"created_at": "2023-11-07T05:31:56Z",
"parts": [
{
"type": "text",
"text": "<string>",
"id": "<string>",
"metadata": {}
}
],
"agent_id": "<string>",
"run_id": "<string>",
"meta_data": {}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Get message
Get a message by ID.
GET
/
v1
/
threads
/
{thread_id}
/
messages
/
{message_id}
Get Message Endpoint
curl --request GET \
--url https://flow.seekr.com/v1/threads/{thread_id}/messages/{message_id} \
--header 'Authorization: <api-key>'import requests
url = "https://flow.seekr.com/v1/threads/{thread_id}/messages/{message_id}"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://flow.seekr.com/v1/threads/{thread_id}/messages/{message_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://flow.seekr.com/v1/threads/{thread_id}/messages/{message_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: <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://flow.seekr.com/v1/threads/{thread_id}/messages/{message_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<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://flow.seekr.com/v1/threads/{thread_id}/messages/{message_id}")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://flow.seekr.com/v1/threads/{thread_id}/messages/{message_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"thread_id": "<string>",
"role": "<string>",
"content": "<string>",
"id": "<string>",
"object": "thread.message",
"created_at": "2023-11-07T05:31:56Z",
"parts": [
{
"type": "text",
"text": "<string>",
"id": "<string>",
"metadata": {}
}
],
"agent_id": "<string>",
"run_id": "<string>",
"meta_data": {}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Retrieve a single message by ID. For assistant messages where file search was used, the content includes source tracing fields per retrieved chunk:
chunk_id, page, lines, and section. Use chunk_id to call the chunk endpoint for full Markdown provenance and the file_id of the source document.Authorizations
Your Seekr API key, sent in the Authorization header with no 'Bearer' prefix.
Headers
Response
Success
Thread message shape returned by the thread API.
parts are opt-in so existing clients keep the previous response shape by default.
content
string(InputText · object | InputImage · object | InputFile · object)[](OutputText · object | OutputGuardrail · object)[]
required
parts
(MessageTextPart · object | MessageReasoningPart · object | MessageFilePart · object | MessageDataPart · object | MessageToolCallPart · object | MessageToolErrorPart · object | MessageToolResultPart · object)[] | null
A text part persisted alongside a thread message.
- MessageTextPart
- MessageReasoningPart
- MessageFilePart
- MessageDataPart
- MessageToolCallPart
- MessageToolErrorPart
- MessageToolResultPart
Show child attributes
Show child attributes
Last modified on July 31, 2026
Was this page helpful?
⌘I