POST
POST /inboxes/{inbox_id}/threads/{thread_id}/emails/{email_id}/forward — Resend API
Resend APIForward a thread email
- Base URL
- https://api.resend.com
- Auth
- Authorization: Bearer <RESEND_API_KEY>
- Last verified
- 2026-10-20 · upstream hash matched
Actions Try in browser→
Agents: curl -H "Accept: text/markdown" this URL
→ 202 tokens · Vary: Accept
→ 202 tokens · Vary: Accept
Critical gotchas
All requests must include a User-Agent header (e.g. User-Agent: my-app/1.0) or the API returns HTTP 403.
The to field accepts either a single recipient email address string or an array of strings for multiple recipients (max 50).
cURL
curl -X POST 'https://api.resend.com/inboxes/inbox-id/threads/thread-id/emails/email-id/forward' \ -H "Authorization: Bearer $RESEND_API_KEY" \ -H 'User-Agent: my-app/1.0' \ -H 'Content-Type: application/json' \ -d '{ "to": [ "[email protected]" ], "cc": [ "[email protected]" ], "bcc": [ "[email protected]" ], "html": "<p>Flagging this refund request for you.</p>", "text": "Flagging this refund request for you.", "subject": "Fwd: Refund for order 1041", "attachments": [ { "content": "example-content", "filename": "example-filename", "path": "example-path", "content_type": "example-content-type", "content_id": "example-content-id" } ], "headers": { "X-Ticket-Id": "4821" }}'
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| inbox_id | path | string | Yes | The Inbox ID or the inbox email address, such as `[email protected]`. A value that contains `@` must be a valid email address, and any other value must be a UUID, or the request returns a 422. The address match is case-insensitive and never falls back to the inbox `name`. An address that matches no inbox returns a 404. |
| thread_id | path | string | Yes | The Thread ID. |
| email_id | path | string | Yes | The Email ID of the message to forward, as returned in `data[].id` by the list thread emails endpoint. |
| to | body | string | Yes | Recipient email address. For multiple addresses, send as an array of strings. Must name at least one address. `to`, `cc` and `bcc` combined cannot exceed 50 recipients. Each address is `[email protected]` or `Name <[email protected]>`. An address that is not valid returns a 422. |
| cc | body | string | No | CC recipient email address. For multiple addresses, send as an array of strings. Counts toward the 50-recipient limit. Each address is `[email protected]` or `Name <[email protected]>`. An address that is not valid returns a 422. |
| bcc | body | string | No | BCC recipient email address. For multiple addresses, send as an array of strings. Counts toward the 50-recipient limit. Each address is `[email protected]` or `Name <[email protected]>`. An address that is not valid returns a 422. |
| html | body | string | No | An HTML note sent above the quoted original. |
| text | body | string | No | A plain-text note sent above the quoted original. |
| subject | body | string | No | The subject of the forward. Cannot be only whitespace or contain a line break. When omitted, the thread subject is used, prefixed with `Fwd:` if it does not already start with it. |
| attachments | body | object[] | No | Files to attach, as on `POST /emails`. Each one needs `content` or `path`. They share one limit with the attachments of the original message, which the forward also sends. Together they can have at most 25 MB of `content`. A `path` file does not count toward the 25 MB, because it is fetched when the email is sent. An empty file, a blocked file type, a `path` that does not start with `http` or that starts with `http://localhost:`, or a `content_type` that is not a valid MIME type returns a 422. Other `path` problems fail the email when it is sent, not the request. |
| headers | body | object | No | Custom headers to add to the email. The `In-Reply-To`, `References` and `Reply-To` headers are set by Resend and cannot be set here. Sending one of them, in any letter case, returns a 422. Header names cannot be empty, and names and values cannot contain line breaks or null characters, or the request returns a 422. `null` means no custom headers. |
Response 200 OK
{
"id": "6a0c8e58-3d9e-4f7a-8b14-2e3f4a5b6c71"
} Get a free Resend API key → sponsored Affiliate link - we may earn a commission, at no extra cost to you.