import { Resend } from 'resend';
const resend = new Resend('re_xxxxxxxxx');
const { data, error } = await resend.inboxes.threads.emails.list({
inboxId: 'b3e2b2b6-3f0e-4c8e-9ad3-2f43a1e2c7f1',
threadId: '4d8e2a1c-9b3f-4c6d-8a21-3e5f7c9c0d12',
});
curl -X GET 'https://api.resend.com/inboxes/b3e2b2b6-3f0e-4c8e-9ad3-2f43a1e2c7f1/threads/4d8e2a1c-9b3f-4c6d-8a21-3e5f7c9c0d12/emails' \
-H 'Authorization: Bearer re_xxxxxxxxx'
resend inboxes threads emails list b3e2b2b6-3f0e-4c8e-9ad3-2f43a1e2c7f1 4d8e2a1c-9b3f-4c6d-8a21-3e5f7c9c0d12
{
"object": "list",
"has_more": false,
"data": [
{
"id": "5b1a9f47-2c8d-4e6f-9a03-1d2e3f4a5b60",
"direction": "inbound",
"from": "Ada Lovelace <ada@example.org>",
"to": ["support@example.com"],
"cc": [],
"bcc": [],
"reply_to": ["replies@example.org"],
"subject": "Refund for order 1041",
"message_id": "<1041@example.org>",
"html": "<p>Could I get a refund for order 1041?</p>",
"text": "Could I get a refund for order 1041?",
"attachments": [
{
"id": "9d4f2b81-6c3a-4e7d-8b12-0a5c6d7e8f90",
"filename": "receipt.pdf",
"size": 20841
}
],
"read": false,
"received_at": "2026-08-05T14:03:11.229Z"
}
]
}
List Thread Emails
Retrieve the messages in a thread.
GET
/
inboxes
/
:inbox_id
/
threads
/
:thread_id
/
emails
import { Resend } from 'resend';
const resend = new Resend('re_xxxxxxxxx');
const { data, error } = await resend.inboxes.threads.emails.list({
inboxId: 'b3e2b2b6-3f0e-4c8e-9ad3-2f43a1e2c7f1',
threadId: '4d8e2a1c-9b3f-4c6d-8a21-3e5f7c9c0d12',
});
curl -X GET 'https://api.resend.com/inboxes/b3e2b2b6-3f0e-4c8e-9ad3-2f43a1e2c7f1/threads/4d8e2a1c-9b3f-4c6d-8a21-3e5f7c9c0d12/emails' \
-H 'Authorization: Bearer re_xxxxxxxxx'
resend inboxes threads emails list b3e2b2b6-3f0e-4c8e-9ad3-2f43a1e2c7f1 4d8e2a1c-9b3f-4c6d-8a21-3e5f7c9c0d12
{
"object": "list",
"has_more": false,
"data": [
{
"id": "5b1a9f47-2c8d-4e6f-9a03-1d2e3f4a5b60",
"direction": "inbound",
"from": "Ada Lovelace <ada@example.org>",
"to": ["support@example.com"],
"cc": [],
"bcc": [],
"reply_to": ["replies@example.org"],
"subject": "Refund for order 1041",
"message_id": "<1041@example.org>",
"html": "<p>Could I get a refund for order 1041?</p>",
"text": "Could I get a refund for order 1041?",
"attachments": [
{
"id": "9d4f2b81-6c3a-4e7d-8b12-0a5c6d7e8f90",
"filename": "receipt.pdf",
"size": 20841
}
],
"read": false,
"received_at": "2026-08-05T14:03:11.229Z"
}
]
}
Inboxes are currently in private beta and only available to a limited
number of users. The response shape might change before GA.Get early access if you’re interested in testing this feature.Once you have access, upgrade your Resend SDK to use the new methods:
npm install resend@6.33.0
npm install -g resend-cli@2.25.0
id of the
last message as after to get the next, newer page. Pass the id of the first
message as before to get the previous, older page. You cannot combine after
and before. A cursor that is not a message of the thread returns a 404.
Path Parameters
Query Parameters
number
Number of messages to return. Default is
20, maximum is 100, minimum is
1.string
The ID of the last message on the current page. Returns the next, newer page.
string
The ID of the first message on the current page. Returns the previous, older
page. Cannot be combined with
after.Response Fields
string
Always
list.boolean
Whether more messages exist beyond this page. Pass the last message’s
id as
after to continue.array
The messages on this page.
Hide properties
Hide properties
string
The ID of the message.
string
Whether the message was received by the inbox or sent from it. One of
inbound or outbound. A message the inbox sent to itself is inbound, so
a reply to it goes to its sender.string
Sender email address. Includes the display name when the sender has one, in
the format
Name <sender@domain.com>.string[]
The recipients of the message. For a received message, these are the
addresses it was delivered to, not the full
To header.string[]
The CC recipients of the message.
string[]
The BCC recipients of the message. Always empty for a received message.
string[]
The Reply-To addresses.
string | null
The subject of the message.
string | null
The Message-ID header of the message.
string | null
The HTML body.
string | null
The plain-text body.
array
boolean
Whether the message has been read.
string
ISO 8601 timestamp when the inbox received the message, or when the inbox
sent it.
import { Resend } from 'resend';
const resend = new Resend('re_xxxxxxxxx');
const { data, error } = await resend.inboxes.threads.emails.list({
inboxId: 'b3e2b2b6-3f0e-4c8e-9ad3-2f43a1e2c7f1',
threadId: '4d8e2a1c-9b3f-4c6d-8a21-3e5f7c9c0d12',
});
curl -X GET 'https://api.resend.com/inboxes/b3e2b2b6-3f0e-4c8e-9ad3-2f43a1e2c7f1/threads/4d8e2a1c-9b3f-4c6d-8a21-3e5f7c9c0d12/emails' \
-H 'Authorization: Bearer re_xxxxxxxxx'
resend inboxes threads emails list b3e2b2b6-3f0e-4c8e-9ad3-2f43a1e2c7f1 4d8e2a1c-9b3f-4c6d-8a21-3e5f7c9c0d12
{
"object": "list",
"has_more": false,
"data": [
{
"id": "5b1a9f47-2c8d-4e6f-9a03-1d2e3f4a5b60",
"direction": "inbound",
"from": "Ada Lovelace <ada@example.org>",
"to": ["support@example.com"],
"cc": [],
"bcc": [],
"reply_to": ["replies@example.org"],
"subject": "Refund for order 1041",
"message_id": "<1041@example.org>",
"html": "<p>Could I get a refund for order 1041?</p>",
"text": "Could I get a refund for order 1041?",
"attachments": [
{
"id": "9d4f2b81-6c3a-4e7d-8b12-0a5c6d7e8f90",
"filename": "receipt.pdf",
"size": 20841
}
],
"read": false,
"received_at": "2026-08-05T14:03:11.229Z"
}
]
}
Was this page helpful?
⌘I