Get Messages
curl --request GET \
--url https://app.pixie.ai/api/threads/{id}/messages \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.pixie.ai/api/threads/{id}/messages"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.pixie.ai/api/threads/{id}/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://app.pixie.ai/api/threads/{id}/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: Bearer <token>"
],
]);
$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://app.pixie.ai/api/threads/{id}/messages"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.pixie.ai/api/threads/{id}/messages")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.pixie.ai/api/threads/{id}/messages")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_bodyUnibox
Get Messages
List messages in a Unibox thread without changing unread state.
GET
/
api
/
threads
/
{id}
/
messages
Get Messages
curl --request GET \
--url https://app.pixie.ai/api/threads/{id}/messages \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.pixie.ai/api/threads/{id}/messages"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.pixie.ai/api/threads/{id}/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://app.pixie.ai/api/threads/{id}/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: Bearer <token>"
],
]);
$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://app.pixie.ai/api/threads/{id}/messages"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.pixie.ai/api/threads/{id}/messages")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.pixie.ai/api/threads/{id}/messages")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_bodyCLI:
Email attachment URLs are refreshed before messages are returned.
pixie thread message --id <id>
pixie thread message --id <id> --page <page> --limit <limit>
Overview
Lists messages for one Unibox thread. This endpoint verifies thread ownership and returns paginatedconversation_messages rows ordered by sent_at ascending.
Unlike Get thread, this endpoint does not mark the thread as read.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
id | string | Thread ID. |
Query Parameters
| Parameter | Type | Description |
|---|---|---|
page | integer | Page number. Defaults to 1. |
limit | integer | Page size. Defaults to 50, max 200. |
Example
curl -H "Authorization: Bearer $PIXIE_API_KEY" \
"https://app.pixie.ai/api/threads/3d986dd1-9d70-45b7-8e36-5d5b8b1c9337/messages?limit=25"
{
"messages": [
{
"id": "6d54211c-7e24-4eb9-85fc-7388c8d89f2f",
"conversation_id": "3d986dd1-9d70-45b7-8e36-5d5b8b1c9337",
"direction": "outbound",
"subject": "Quick question",
"body_text": "Hi Alex, I had a quick question.",
"sent_at": "2026-05-26T08:36:25.000Z"
}
],
"total": 1,
"page": 1,
"limit": 25
}
AI agent notes
Use this endpoint for polling or auditing message history when you should not reset unread state. Use Get thread when you need participant and sender context.Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Thread (conversations.id) UUID.
Query Parameters
Page number. Defaults to 1.
Required range:
0 < x <= 9007199254740991Messages per page. Defaults to 50; maximum 200.
Required range:
0 < x <= 200Response
Successful response.
Was this page helpful?