Skip to main content
Outbound

Duplicate an Outbound draft

Creates one new draft from the source campaign. Requires name only; revision and idempotencyKey are optional. Copies content, audience and recurring settings, not activation state, delivery history, recipients or tags. Absolute startsAt and endsAt are cleared so past dates cannot block the new draft. The source must otherwise have a complete valid definition. Set new dates before activation when needed.

POST
/v2/outbound/messages/{outboundMessageId}/duplicate

Optional protections: idempotencyKey enables safe retries; revision on existing campaigns rejects stale changes. Neither is required, and they can be used independently. Without a key, each request is a new operation and does not create an operation receipt; do not blindly retry an uncertain create or send. Without a revision, a change can overwrite a concurrent edit. With a key, keep the exact request on retries. Completed results replay for at least 7 days. Changed input returns idempotency_conflict; a concurrent retry returns operation_pending. For operation_outcome_unknown, inspect the Outbound-Operation-Id receipt before another operation. Schedule synchronization stays durable with or without these fields.

Authorizationstringheaderrequired

API key as Bearer token. Use: Authorization: Bearer sk_...

outboundMessageIdstringrequired

Outbound message ID

Example: 6457e3ff70afca5d8c27dccc
Featurebase-Versionenum<string>header

API version for this request. Defaults to your organization's configured API version if not specified.

Available options: 2026-09-03.pulsar, 2026-08-19.orbit, 2026-01-01.nova, 2025-12-12.clover
Example: 2026-09-03.pulsar

Body

application/json
idempotencyKeystring

Optional retry protection. Keep the same key and request when retrying. Without a key, each request is a new operation.

Required string length: 8 - 128
Pattern: ^[a-zA-Z0-9_.:-]+$
Example: welcome-campaign-2026-10-01
namestringrequired
Required string length: 1 - 200
revisioninteger

Campaign version returned by GET. Optionally send it with a mutation to reject stale changes.

Required range: 0 <= x

Response

application/json

Created

conversationTagIdsstring[]required

Conversation tag IDs applied to conversations started from this message

createdAtstringrequired

ISO 8601 timestamp when created

Example: 2026-09-01T09:30:00.000Z
createdBystringrequired

Admin ID that created the message

Example: 6438a1efda3640f8feb72121
definitionobjectrequired

Editable definition. A dashboard draft or template can have no survey choices yet. The write and validation endpoints require a complete definition.

firstActivatedAtstring | nullrequired

When the message first went live or was sent

idstringrequired

Unique identifier

Example: 6457e3ff70afca5d8c27dccc
lastActivatedAtstring | nullrequired

When the message most recently went live or was sent

objectenum<string>required

Object type identifier

Available options: outbound_message
Example: outbound_message
revisionintegerrequired

Campaign version returned by GET. Optionally send it with a mutation to reject stale changes.

Required range: 0 <= x
scheduleSyncPendingbooleanrequired

The schedule is saved. Timer synchronization is queued or pending recovery. It does not require another activation request.

stateenum<string>required

Lifecycle state of the message. Use the state endpoint to change it.

Available options: draft, live, paused, scheduled, suspended, sent
Example: draft
updatedAtstringrequired

ISO 8601 timestamp when last updated

Example: 2026-09-03T12:00:00.000Z
updatedBystringrequired

Admin ID that last updated the message

Example: 6438a1efda3640f8feb72121