curl --request GET \
--url https://app.sendmux.ai/api/v1/mailbox/threads/{thread_id}/messages \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.sendmux.ai/api/v1/mailbox/threads/{thread_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.sendmux.ai/api/v1/mailbox/threads/{thread_id}/messages', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.sendmux.ai/api/v1/mailbox/threads/{thread_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))
}{
"meta": {
"request_id": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx"
},
"ok": true,
"data": [
{
"bcc": [
{
"email": "agent@example.com",
"name": "Support"
}
],
"cc": [
{
"email": "agent@example.com",
"name": "Support"
}
],
"flags": {
"answered": true,
"draft": true,
"flagged": true,
"seen": true
},
"folder_ids": [
"<string>"
],
"from": {
"email": "agent@example.com",
"name": "Support"
},
"has_attachments": true,
"id": "<string>",
"keywords": [
"$seen",
"$flagged",
"agent_triaged"
],
"preview": "<string>",
"received_at": "<string>",
"sent_at": "<string>",
"size_bytes": 123,
"subject": "<string>",
"thread_id": "<string>",
"to": [
{
"email": "agent@example.com",
"name": "Support"
}
],
"attachments": [
{
"content_id": "<string>",
"content_type": "application/pdf",
"disposition": "attachment",
"filename": "invoice.pdf",
"id": "<string>",
"size_bytes": 12345,
"download_url": "https://app.sendmux.ai/api/v1/mailbox/messages/msg_123/attachment-downloads/attref_abc123?download_token=..."
}
]
}
],
"pagination": {
"has_more": true,
"next_cursor": "<string>"
}
}{
"error": {
"code": "invalid_parameter",
"message": "<string>",
"retryable": false,
"doc_url": "<string>",
"errors": [
{
"code": "invalid_string",
"field": "recipient.email",
"message": "<string>"
}
],
"param": "<string>"
},
"meta": {
"request_id": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx"
},
"ok": false
}{
"error": {
"code": "invalid_parameter",
"message": "<string>",
"retryable": false,
"doc_url": "<string>",
"errors": [
{
"code": "invalid_string",
"field": "recipient.email",
"message": "<string>"
}
],
"param": "<string>"
},
"meta": {
"request_id": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx"
},
"ok": false
}List thread messages
Returns cursor-paginated message summaries for one thread. Use the thread content endpoint when you need cleaned bodies.
curl --request GET \
--url https://app.sendmux.ai/api/v1/mailbox/threads/{thread_id}/messages \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.sendmux.ai/api/v1/mailbox/threads/{thread_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.sendmux.ai/api/v1/mailbox/threads/{thread_id}/messages', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.sendmux.ai/api/v1/mailbox/threads/{thread_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))
}{
"meta": {
"request_id": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx"
},
"ok": true,
"data": [
{
"bcc": [
{
"email": "agent@example.com",
"name": "Support"
}
],
"cc": [
{
"email": "agent@example.com",
"name": "Support"
}
],
"flags": {
"answered": true,
"draft": true,
"flagged": true,
"seen": true
},
"folder_ids": [
"<string>"
],
"from": {
"email": "agent@example.com",
"name": "Support"
},
"has_attachments": true,
"id": "<string>",
"keywords": [
"$seen",
"$flagged",
"agent_triaged"
],
"preview": "<string>",
"received_at": "<string>",
"sent_at": "<string>",
"size_bytes": 123,
"subject": "<string>",
"thread_id": "<string>",
"to": [
{
"email": "agent@example.com",
"name": "Support"
}
],
"attachments": [
{
"content_id": "<string>",
"content_type": "application/pdf",
"disposition": "attachment",
"filename": "invoice.pdf",
"id": "<string>",
"size_bytes": 12345,
"download_url": "https://app.sendmux.ai/api/v1/mailbox/messages/msg_123/attachment-downloads/attref_abc123?download_token=..."
}
]
}
],
"pagination": {
"has_more": true,
"next_cursor": "<string>"
}
}{
"error": {
"code": "invalid_parameter",
"message": "<string>",
"retryable": false,
"doc_url": "<string>",
"errors": [
{
"code": "invalid_string",
"field": "recipient.email",
"message": "<string>"
}
],
"param": "<string>"
},
"meta": {
"request_id": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx"
},
"ok": false
}{
"error": {
"code": "invalid_parameter",
"message": "<string>",
"retryable": false,
"doc_url": "<string>",
"errors": [
{
"code": "invalid_string",
"field": "recipient.email",
"message": "<string>"
}
],
"param": "<string>"
},
"meta": {
"request_id": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx"
},
"ok": false
}Authorizations
Sendmux API key. Use a root API key for Management API routes, or a mailbox credential for Mailbox API routes. Obtain keys from the dashboard under API Keys.
Path Parameters
Thread ID.
Query Parameters
Pagination cursor — the next_cursor from the previous response.
Maximum results (default 50, max 100).
1 <= x <= 100Message sort direction within the thread.
asc, desc Mailbox public ID to target when the credential grants access to more than one mailbox. Omit when the credential is scoped to exactly one mailbox.
Response
Thread messages
true Hide child attributes
Hide child attributes
Message ID
Active message keywords, including system flags and custom labels.
["$seen", "$flagged", "agent_triaged"]
Attachment metadata for this message. Each item includes a short-lived download_url; if it expires, fetch message metadata again.
Hide child attributes
Hide child attributes
Content ID for inline attachments, when present.
"application/pdf"
"attachment"
"invoice.pdf"
Attachment blob ID.
12345
Short-lived URL for this exact attachment. Fetch it promptly; if it expires, call the message or attachment metadata endpoint again to receive a fresh URL.
"https://app.sendmux.ai/api/v1/mailbox/messages/msg_123/attachment-downloads/attref_abc123?download_token=..."
Was this page helpful?