This endpoint allows you to reply to emails received through Inbound,
maintaining proper email threading with In-Reply-To and References headers.
Authentication
This endpoint requires authentication via:- API key auth: Bearer token in Authorization header
Path Parameters
The unique identifier of the email or thread you want to reply to.Can be either:
- An email ID (e.g.,
inbnd_abc123def456ghi) - Replies to that specific email - A thread ID (e.g.,
thread_xyz789) - Replies to the latest message in the thread
When providing a thread ID, the system automatically replies to the most recent email in that thread, ensuring proper conversation continuity.
Request Body
The sender email address.Must be in the format
"Name <email@domain.com>" or "email@domain.com".The domain must be verified in your account.You cannot use
agent@inbnd.dev for replies. This email is only available for sending new emails, not for replying to received emails.Optional sender name for display. If provided, this will be used as the
display name for the sender address.
The recipient email address(es). If not provided, the reply will be sent to
the original sender. Can be a single email string or an array of email
strings.
The email subject. If not provided, “Re: ” will be prepended to the original
email’s subject.
Carbon copy recipient(s). Can be a single email string or an array of email
strings.
Blind carbon copy recipient(s). Can be a single email string or an array of
email strings.
Reply-to address(es). Can be a single email string or an array of email strings.
The
reply_to method will be deprecated in a future version.Reply-to address(es). Can be a single email string or an array of email
strings.
The plain text version of the email body. Either
text or html must be provided.If you only provide html the text will be generated automatically from the HTML.The HTML version of the email body.
Custom email headers as key-value pairs. These will be added to the email in addition to the standard headers.
Headers are merged with threading headers (In-Reply-To, References) and standard email headers (Message-ID, Date, etc.). Custom headers take precedence over defaults but cannot override required threading headers.
Array of file attachments to include with the email.
Whether to include the original message as a quoted reply. When true, the
original message will be appended to your reply with appropriate formatting.
Also accepts
includeOriginal (camelCase) for Resend compatibility.Whether to reply to all recipients (Reply All behavior).When
true:- Includes the original sender in the
tofield - Includes all original CC recipients (excluding yourself)
- Does NOT include BCC recipients (as per email standards)
false (default):- Only replies to the original sender
The current user’s email address is automatically excluded from the recipient list to prevent self-replies.
Array of tags for email categorization and tracking (Resend-compatible).
Whether to use simplified reply mode for faster processing. When
true
(default), uses a lightweight reply mode that’s faster and has less overhead.
Set to false to force full mode when you need advanced features or custom
threading.Simple mode is automatically disabled when attachments are present.
Headers
Bearer token for API authentication.
Add an idempotency key to prevent duplicate replies. * Should be unique per
API request * Idempotency keys expire after 24 hours * Have a maximum
length of 256 characters
Specify a historical API version to maintain backward compatibility.Available versions:
reply-10-01-25- Legacy reply endpoint from January 1, 2025
Omit this header to use the current API version with the latest features (recommended).
Response
Unique identifier for the sent reply email in Inbound’s system
The Inbound message ID used for email threading (appears in Message-ID header)
AWS SES Message ID for tracking the email through AWS infrastructure. Only
present when the email is successfully sent through AWS SES.
The actual email ID that was replied to. This is always an email ID, even if you provided a thread ID in the request.
The thread ID associated with the email, if the reply is part of a conversation thread.
Indicates whether the reply was made to a thread ID (
true) or directly to an email ID (false).When
true, the system automatically resolved the thread ID to the latest email in that thread.Email Threading
This endpoint automatically handles email threading by:- Setting the In-Reply-To header with the Message-ID of the original email
- Building the References header to maintain the full conversation thread
- Formatting the subject with “Re: ” prefix if not already present
- Quoting the original message (when
include_originalis true) with proper attribution
Email clients like Gmail, Outlook, and Apple Mail will recognize these
threading headers and group the emails into a conversation.
API Versioning
The reply endpoint supports API versioning to maintain backward compatibility while introducing new features.Current Version (Recommended)
The current version includes:- Thread ID support - Reply to threads or specific emails
- Reply All functionality - Include all original recipients
- Enhanced response data - Detailed information about what was replied to
- Automatic thread resolution - Seamlessly works with both email and thread IDs
API-Version header.
Historical Versions
Access previous API implementations by including theAPI-Version header:
Historical versions are maintained for backward compatibility only. New integrations should use the current version to access the latest features and improvements.
Version Differences
| Feature | reply-10-01-25 | Current |
|---|---|---|
| Thread ID support | ❌ Email IDs only | ✅ Email or Thread IDs |
| Reply All | ❌ Not available | ✅ Available |
| Response includes thread info | ❌ Basic response | ✅ Full thread details |
| Simplified mode | ✅ Available | ✅ Available |
| Attachments | ✅ Supported | ✅ Supported |
| Custom headers | ✅ Supported | ✅ Supported |
Examples
Basic Reply
Reply to an email with minimal configuration:Advanced Reply with Custom Recipients
Reply with custom recipients, subject, HTML content, and tags:Reply All to Include CC Recipients
Use Reply All to include all original recipients in your response:Reply All automatically:
- Includes the original sender
- Includes all CC recipients from the original email
- Excludes your own email address to prevent self-replies
- Does NOT include BCC recipients (per email standards)
Reply to a Thread
Reply to an entire conversation thread by using the thread ID:When you provide a thread ID, the system automatically finds the most recent email in that thread and replies to it, ensuring your response appears at the correct position in the conversation.
Reply Without Quoting Original
Send a reply without including the original message:Reply with Attachments
Include attachments in your reply:Error Responses
Error message describing what went wrong
Common Errors
| Status Code | Error Message | Description |
|---|---|---|
| 400 | ”Valid email ID or thread ID is required” | The ID parameter is missing or invalid |
| 400 | ”From address is required” | The from field is missing from the request |
| 400 | ”Either html or text content must be provided” | No email body content was provided |
| 400 | ”Cannot determine recipient email address” | No to field provided and cannot extract from original email |
| 400 | ”agent@inbnd.dev cannot be used for replies. Please use a verified domain email address.” | Attempted to use agent email for replies |
| 400 | ”Invalid email format: “ | One of the email addresses is malformed |
| 400 | ”Invalid JSON in request body” | Request body contains malformed JSON |
| 400 | ”Unknown API version: “ | Invalid API version specified in header |
| 401 | ”Unauthorized” | Invalid or missing API key |
| 403 | ”You don’t have permission to send from domain: “ | The sender domain is not verified in your account |
| 404 | ”Email or thread not found” | The email/thread ID does not exist or belongs to another user |
| 404 | ”API version '' not found or unavailable” | The requested API version doesn’t exist |
| 429 | ”Email sending limit reached. Please upgrade your plan to send more emails.” | You have exceeded your plan’s email sending limit |
| 500 | ”Email service not configured. Please contact support.” | AWS SES configuration issue |
| 500 | ”Failed to send reply. Please try again later.” | AWS SES or other service error occurred |
| 500 | ”Internal server error” | An unexpected error occurred |
Idempotency
This endpoint supports idempotency to prevent duplicate sends. Include anIdempotency-Key header with a unique value:
Basic Idempotency Usage
Webhook Handler with Idempotency
Perfect for preventing duplicate auto-replies when webhooks are retried:Idempotency Key Best Practices
1
Make keys unique and descriptive
Include action type, email ID, and context:
reply-{emailId}-{userId}-v12
Use for webhook handlers
Prevent duplicate auto-replies when webhooks are retried due to failures
3
Include version suffixes
Add
-v1, -v2 when you need to update email content for the same operation4
Consider time windows
For time-sensitive operations, include timestamp to allow periodic updates
Idempotency Behavior: If you make multiple requests with the same
idempotency key, only the first request will send an email. Subsequent
requests return the same response without sending a duplicate. Keys expire
after 24 hours.
Best Practices
1
Verify sender domain
Always ensure the
from domain is verified in your account before attempting to send replies.2
Include both text and HTML
For best compatibility, include both
text and html versions of your email
content.3
Use idempotency keys
When sending replies programmatically, use idempotency keys to prevent
accidental duplicate sends.
4
Handle quoted content carefully
Consider whether including the original message is appropriate for your use
case. Automated responses might not need it.
5
Test threading
Test your replies with various email clients to ensure threading works as expected.
Rate Limits
Reply sending is subject to the same rate limits as the Send Email endpoint. Your plan determines how many emails you can send per month.Check your current usage and limits in your account
dashboard.