Mailactor
API reference

Reply to a message

Required scope: mailbox:send.

POST/v1/threads/{threadId}/replies

Authorization

tenantApiKey
x-api-key<token>

A scoped tenant key returned once by an operator. Never place it in URLs, logs, prompts, or client-side application code.

In: header

Path Parameters

threadId*string
Match^thr_[a-f0-9]{24}$

Header Parameters

idempotency-key*string
Match^[A-Za-z0-9._:-]+$
Length8 <= length <= 200

Request Body

application/json

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

# Set the API key and replace resource IDs with your saved IDs.# Generate once per logical action; preserve this key for retries.export IDEMPOTENCY_KEY="request-$(uuidgen)"curl --fail-with-body --silent --show-error -X POST \  "https://api.mailactor.com/v1/threads/$THREAD_ID/replies" \  -H "x-api-key: $MAILACTOR_API_KEY" \  -H "idempotency-key: $IDEMPOTENCY_KEY" \  -H "Content-Type: application/json" \  -d '{  "targetMessageId": "msg_0123456789abcdef01234567",  "text": "Thanks, Alex. I have everything I need."}'

Response examples

Illustrative values; save the IDs and limits returned by your own requests.

HTTP 202

{
  "message": {
    "id": "msg_2123456789abcdef01234567",
    "inboxId": "inb_0123456789abcdef01234567",
    "threadId": "thr_0123456789abcdef01234567",
    "direction": "outbound",
    "internetMessageId": "<research-43@inbox.mailactor.com>",
    "inReplyTo": "<alex-reply@example.com>",
    "references": [
      "<research-42@inbox.mailactor.com>",
      "<alex-reply@example.com>"
    ],
    "from": {
      "email": "research-agent@inbox.mailactor.com",
      "name": "Research Agent"
    },
    "to": [
      {
        "email": "you@example.com",
        "name": "Alex"
      }
    ],
    "subject": "Re: Your research update",
    "text": "Thanks, Alex. I have everything I need.",
    "metadata": {},
    "delivery": {
      "submissionId": "00000000-0000-4000-8000-000000000002",
      "status": "submitted",
      "failureCode": null
    },
    "createdAt": "2026-09-08T12:01:00.000Z",
    "updatedAt": "2026-09-08T12:01:00.000Z"
  },
  "submission": {
    "id": "00000000-0000-4000-8000-000000000002",
    "from": {
      "email": "research-agent@inbox.mailactor.com",
      "name": "Research Agent"
    },
    "recipients": [
      {
        "email": "you@example.com",
        "status": "pending",
        "response": null,
        "updatedAt": "2026-09-08T12:00:00.000Z"
      }
    ],
    "subject": "Re: Your research update",
    "metadata": {},
    "status": "pending",
    "queueId": null,
    "response": null,
    "failureCode": null,
    "createdAt": "2026-09-08T12:01:00.000Z",
    "updatedAt": "2026-09-08T12:01:00.000Z"
  },
  "replayed": false
}

HTTP 410

{
  "error": "idempotency_result_expired",
  "message": "The original mailbox result was deleted; this idempotency key cannot be reused"
}