---
title: "Replay Order"
method: POST
path: "/orders/{orderId}/replay"
tags: ["Orders"]
---

# Replay Order

`POST /orders/{orderId}/replay`

## Request

- Base URL: `https://api.thanks.io/api/v2`
- URL: `https://api.thanks.io/api/v2/orders/{orderId}/replay`
- Auth: HTTP bearer

Submit a copy of a previously placed order as a brand-new order. The same creative is charged and mailed again, and the original order is left untouched. By default the replay is sent to the recipients the original actually reached (failed items are excluded). Supply a `recipients` array to send the same creative to a different audience instead.

Only settled, non-cancelled orders can be replayed. The replay is a fresh order that runs through the normal fulfillment pipeline, including Address Verification, Duplicate Prevention and suppression lists.

## Path parameters

- `orderId` integer, required

## Request body

- object
  - `recipients` object[]: Optional override. When supplied, the replay mails the original's creative to these recipients instead of the ones the original reached. Each recipient requires an `address`; unlike the send endpoints, an address-less recipient is not accepted.
    - `name` string
    - `company` string
    - `address` string, required
    - `address2` string
    - `city` string
    - `province` string: State or Province
    - `postal_code` string
    - `country` string
  - `schedule_for` string, date: Optional send date for the replay. Any format Carbon can parse is accepted; the date-only portion is stored.
  - `metadata` object, nullable: Optional metadata for the replay. Same shape and limits as the send endpoints — returned unchanged by the order endpoints and included in every webhook event for the order as `order.metadata`. When omitted, the original order's metadata is carried over.

## Response `200`

Replay submitted. The response body mirrors the send endpoints' order-submitted shape, with an added `replayed_from_order_id` pointing back to the source order.

- object: Response when an Order is successfully submitted to Send Mailer
  - `id` integer: Unique identifier for the order
  - `user_id` integer: User ID for the order
  - `sub_account` SubAccount
    - `id` integer
    - `user_id` integer
    - `title` string
    - `return_name` string
    - `return_address` string
    - `return_address2` string
    - `return_city` string
    - `return_state` string
    - `return_postal_code` string
  - `sub_account_id` integer, nullable: Sub account ID for the order
  - `total_estimated_recipients` integer: Total estimated recipients for the order
  - `authorization_total` integer: Total authorization amount for the order in cents
  - `leads_fee` integer: Total leads fee for the order in cents
  - `mailing_list_ids_used` string: Mailing lists used for the order. Can be null if recipients or radius search is used.
  - `recipients` RecipientNoMailinglist[]: List of recipients for the order
    - `name` string
    - `company` string
    - `address` string
    - `address2` string
    - `city` string
    - `province` string: State or Province
    - `postal_code` string
    - `country` string
    - `dob` string: Date of Birth in ISO 8601 format (YYYY-MM-DD) or null if not set. If provided as MM/DD/YYYY in requests, it will be converted to ISO 8601 format.
    - `anniversary` string: Can be used for house purchase anniversaries, move-in dates, or any recurring annual milestone. Anniversary date in ISO 8601 format (YYYY-MM-DD) or null if not set. If provided as MM/DD/YYYY in requests, it will be converted to ISO 8601 format.
    - `email` string
    - `phone` string
    - `custom1` string: Custom field for additional information about the recipient
    - `custom2` string: Custom field for additional information about the recipient
    - `custom3` string: Custom field for additional information about the recipient
    - `custom4` string: Custom field for additional information about the recipient
    - `custom5` string: Custom field for additional information about the recipient
    - `custom6` string: Custom field for additional information about the recipient
    - `custom7` string: Custom field for additional information about the recipient
    - `custom8` string: Custom field for additional information about the recipient
    - `custom9` string: Custom field for additional information about the recipient
    - `custom10` string: Custom field for additional information about the recipient
    - `absentee_address` string, nullable: The property (absentee) address the absentee image template and message variables use. Present only on recipients sent with an absentee address. Mail is delivered to `address`, not here.
  - `front_image` string: Front image URL for the order
  - `image_template_id` integer, nullable: Image template ID for the order
  - `custom_background_url` string, nullable: Custom background URL for the order. Only valid for postcard backs and the interior background of notecards and giftcards.
  - `message` string: Message content for the order
  - `message_template_id` integer, nullable: Message template ID for the order
  - `handwriting_color` string: Handwriting color to use
  - `font_size` 'auto' | 'small' | 'medium' | 'large': Font size for the order
  - `style` integer: Handwriting style ID for the order
  - `append_or_current_resident` boolean: Appended "Or Current Resident" for the order. This is helpful if you want to ensure delivery.
  - `return_name` string, nullable: Return name for the order
  - `return_address` string, nullable: Return address line 1 for the order
  - `return_address2` string, nullable: Return address line 2 for the order
  - `return_city` string, nullable: Return city for the order
  - `return_province` string, nullable: Return state/province for the order
  - `return_postal_code` string, nullable: Return postal code for the order
  - `type` 'postcard' | 'postcard6x9' | 'postcard6x11' | 'letter' | 'notecard' | 'giftcard' | 'windowlessletter': Type of the order
  - `size` '4x6' | '6x9' | '6x11': Size of the order (valid for postcards only)
  - `method` 'api' | 'cardbuilder' | 'drip' | 'email' | 'zapier': Method for the order
  - `status` 'reviewing' | 'processing' | 'fulfilled' | 'cancelled' | 'printed' | 'shipped' | 'paused' | 'delivered': Status of the order
  - `display_status` string: Display status for the order
  - `display_trigger` string: Display trigger for the order
  - `display_type` string: Display type for the order
  - `addons` object, nullable: Add-ons for the order
    - `standardmail` 'on' | 'off': Standard mail add-on status
  - `qrcode_url` string, nullable: QR code URL for the order
  - `giftcard_brand` string, nullable: Gift card brand for the order (valid for Giftcard orders only)
  - `giftcard_image` string, nullable: Gift card image URL for the order (valid for Giftcard orders only)
  - `giftcard_amount` integer, nullable: Gift card amount for the order in cents (valid for Giftcard orders only)
  - `giftcard_brand_longname` string: Gift card brand long name for the order (valid for Giftcard orders only)
  - `metadata` object, nullable: The metadata object submitted with the order, returned exactly as it was sent. Null when the order was created without metadata.
  - `updated_at` string, date-time: Last updated timestamp for the order
  - `created_at` string, date-time: Creation timestamp for the order
  - `replayed_from_order_id` integer: ID of the source order this replay was copied from.

## Other responses

- `400`: The order cannot be replayed. This includes a cancelled order, an order that has not settled yet, an order with no successfully mailed recipients (when `recipients` is not supplied), a charge failure, or a concurrent replay of the same order.
- `401`: The authenticated account does not own this order.
- `402`: API access has been temporarily disabled due to repeated payment failures.
- `422`: Validation failed on the request body — most commonly a recipient without an `address`, or an empty `recipients` array.

## Changes

- **2026-10-19** `bbe02ffe74f3`: 1 info
  - added the optional property `allOf[subschema #1: Send Mailer Order Submitted Response]/recipients/items/absentee_address` to the response with the `200` status
- **2026-10-18** `c10cfeb34552`: 1 warning
  - removed the optional property `allOf[subschema #1: Send Mailer Order Submitted Response]/recipients/items/absentee_address` from the response with the `200` status
- **2026-10-17** `10023a95b079`: 1 info
  - added the optional property `allOf[subschema #1: Send Mailer Order Submitted Response]/recipients/items/absentee_address` to the response with the `200` status
- **2026-10-03** `91e51cdec675`: 6 info
  - added the optional property `allOf[subschema #1: Send Mailer Order Submitted Response]/recipients/items/custom10` to the response with the `200` status
  - added the optional property `allOf[subschema #1: Send Mailer Order Submitted Response]/recipients/items/custom5` to the response with the `200` status
  - added the optional property `allOf[subschema #1: Send Mailer Order Submitted Response]/recipients/items/custom6` to the response with the `200` status
  - added the optional property `allOf[subschema #1: Send Mailer Order Submitted Response]/recipients/items/custom7` to the response with the `200` status
  - …2 more
- **2026-10-01** `02de08ab2a47`: 1 warning
  - added the new `postcard6x9` enum value to the `allOf[subschema #1: Send Mailer Order Submitted Response]/type` response property for the response status `200`

[Operation history](https://skmtc.dev/thanks-io/apis/thanks-io-api/changes/orders/:orderId/replay/post.md)

---

[API](https://skmtc.dev/thanks-io/apis/thanks-io-api.md) · [All operations](https://skmtc.dev/thanks-io/apis/thanks-io-api/llms.txt) · [OpenAPI document](https://skmtc.dev/thanks-io/apis/thanks-io-api/revisions/c403fbf3dc0f?raw)
