Skip to main content
Outbound

Update an Outbound message

PATCH changed fields only. Required: type (unchanged). revision and idempotencyKey are optional. Content, options, and schedule merge by key. Arrays replace; audience and trigger replace as whole expressions. Null clears nullable fields; trigger:null removes browser conditions. A discriminated object replaces the old object if its type changes (for example admin sender to fibi). Translation maps merge by locale; a string replaces the map with English only. Unknown keys are rejected. The merged definition is fully validated. Email has no browser trigger. Example: {"type":"chat","content":{"text":"Updated welcome"}}. A supplied stale revision returns 409 revision_conflict; GET and review the current campaign before another edit.

PATCH
/v2/outbound/messages/{outboundMessageId}

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

Response

application/json

Success

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