relay-inbox

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.

post/relay-inbox/{id}/reply

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

idstring required

synced_email row id (the inbox message)

Example:1

Request body

clientRequestIdstring uuid

Stable client-generated UUID for this authored reply. Native clients reuse it across a manual Retry so the server can atomically dedupe an ambiguous prior delivery. Optional only for legacy clients.

messagestring required

Canonical plain-text reply body. Required for legacy clients and the text email part; when messageHtml is present, the server derives this value again from the sanitized HTML before every guard and send.

messageHtmlstring nullable

Optional rich reply body. The client sends allowlisted HTML, but the server always sanitizes it again and derives the guarded canonical plaintext from the sanitized result. Null or omission sends the plain message only.

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)

successtrue required

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.