Resend a message

POST/api/v1/email-logs/{event}/resend
Requires anorganization API keywith the scopemessages:send

Submits the stored copy of this message again. Requires messages:send, not events:read — it puts mail back on the wire.

Pass to to send it somewhere else. That is the usual reason to resend: the customer gave the wrong address, and reconstructing the message by hand to send it to the right one loses whatever the original actually said.

A redirected resend is not a privileged path — the new recipient is checked against your suppression list and counted against your rate limit exactly like a fresh send.

Parameters

NameInTypeDescription
eventrequiredpathstringThe event identifier.

Request body

  • toany

    Send to this address instead of the original recipient. Omit to resend to whoever it went to the first time.

Request

POST/api/v1/email-logs/{event}/resend
curl -X POST 'https://app.mailyte.com/api/v1/email-logs/01JBT8XQ2M9WYC3K4F6R7S8T9V/resend' \
  -H 'Authorization: Bearer mk_live_YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "to": "corrected@example.com"
  }'
The key names its own organization, so no X-Organization-ID header is needed.

Response

Success.

  • dataobject
    • objectstringmessage
    • idstring

      Mailyte's ID for this message: a ULID such as 01JBT8XQ2M9WYC3K4F6R7S8T9V, without angle brackets. Look it up right away with GET /email-logs/messages/{id}. It is not the Message-ID header.

    • message_idstring

      The Message-ID header as sent, angle brackets included, such as <01JBT8XQ2M…@example.com>. Use it, percent-encoded, with GET /domains/{domain}/messages/{messageId}. It is not the same as id.

    • recipientstring

      The first recipient's address, without a display name. Read recipients for everyone the message was sent to.

    • recipientsobject

      Everyone the message was addressed to. Bcc recipients are never listed here; they appear only in your delivery log.

      • toarray<string>

        As accepted, including any display name.

      • ccarray<string>

        Empty when there were no cc recipients.

      • countinteger

        To plus Cc. Excludes Bcc, which is not published here; the limit of 50 counts all three together.

    • reply_tostring

      The Reply-To address sent. Null when none was set; replies then go to from.

    • attachment_countinteger

      How many files were attached.

    • fromobject

      The sender. An object here, and everywhere else a sender appears, so one piece of caller code reads all of them.

      • emailstring

        The address the message was sent from.

      • namestring

        The display name in the From: header. Null when the sender has no display name, so the message went out as a bare address.

    • subjectstring

      The subject as sent, with {{ }} variables filled in. An empty subject is "", never null.

    • submitted_atstring

      When we accepted the message. This is not delivery: a 200 means queued, and the outcome arrives as a delivery event or a webhook.

    • modestringlive | test

      live for a real send. test when the request used a test API key (mk_test_…): the message was checked and built like a real one, then stored in your Sandbox instead of being delivered. Read it with GET /sandbox/messages/{id}. Test sends skip suppression and rate limits, and fire no live webhooks.

    • sandboxobject

      Where a test send was stored. Null for a live send.

      • message_idstring

        The sandbox message id, for GET /sandbox/messages/{id}. Not the same as id: that is the Message-ID local part the message carries, this is the sandbox's own record of it.

      • inbox_idstring

        The inbox it landed in: your default sandbox inbox, created for you on the first test send if you had none.

Returned inside the standard envelope.

Errors

StatusWhen
401The API key is missing, unknown, revoked or expired. All four answer identically, on purpose: distinguishing them would confirm which keys exist.
403The key is valid but may not do this: it lacks the required scope, its IP allowlist does not include you, or this endpoint does not accept API keys.
404No such resource in this organization.
422The request was understood but the values were not acceptable.
429Too many requests, or the organization has spent its sending allowance. `Retry-After` says how long to wait.

Every status, with what causes it and what to do, is on the error reference.