Reply to Inbox Email
Send the user's reply OUT to the original recruiter from the user's relay alias, so the recruiter only ever sees the alias and the user's real address stays private. Accepts canonical plaintext plus optional rich HTML; the server sanitizes the HTML and derives the guarded plaintext from it before SES. The reply carries RFC822 threading headers (In-Reply-To / References / fresh Message-ID) + an Re: subject so it lands inside the recruiter's original thread, and both sent parts are persisted on a relay synced_email row (signalType outbound, shared threadId) so both directions appear in the Inbox thread. ABUSE-GATED (fail-closed): recipient validity, body-size cap, per-user hourly burst bucket, and a plan-gated daily cap - over-limit returns 429; an invalid/bulk/suppressed recipient or oversized body returns 400. Gated on RELAY_EMAIL_DOMAIN alone (the sole relay kill-switch) - when the domain is unset, returns 200 with status relay_disabled (nothing sent) so the UI can show it is pending go-live.
Request
- Base URL: https://api.aiapplyd.com/api/v1
- URL: https://api.aiapplyd.com/api/v1/relay-inbox/{id}/reply
- Auth: HTTP bearer
Path parameters
synced_email row id (the inbox message)
Request body
Example request
{
"clientRequestId": "894540e0-1066-4a24-9fc4-0ece5cda3e6f",
"message": "Thanks for reaching out - Tuesday at 2pm works for me.",
"messageHtml": "<p>Thanks for reaching out - <strong>Tuesday at 2pm</strong> works for me.</p>"
}Response
Reply sent (or skipped with status when relay disabled)
Example response
{
"data": {
"fromAlias": "sarah-a1b2c3d@relay.aiapplyd.com",
"outboundEmailId": 9002,
"sentAt": "2026-08-30T12:00:00.000Z",
"toEmail": "recruiter@acme.com"
},
"meta": {
"duration": 150,
"requestId": "req_abc123",
"timestamp": "2026-10-13T10:27:20.268Z",
"version": "v1"
}
}Changes
No recorded changes to this operation across all 1 revision of this API.