Skip to content

Preview Sequence

GET
/sequences/{sequence_id}/preview

Load a sequence with its steps and channels, including RESOLVED copy. No enrollment.

Each step carries both:

  • step_data: the stored template, exactly as written, spintax braces and all.
  • rendered: the same copy with spintax collapsed to one real variant, plus total_combinations and up to three sample variants.

Use rendered to answer “is my spintax working?”. If variants differ from each other, per-contact variation is live and each lead gets a different email. {{variables}} stay visible in rendered on purpose; they fill in at send time from contact data, and a preview has no contact to fill them from.

rendered is null for ON_DEMAND steps, whose copy the AI writes per contact at send time rather than reading from step_data.

Authorizations

Parameters

Path Parameters

sequence_id
required

Sequence ID

string

Sequence ID

Header Parameters

X-Target-Org-Id
Any of:
string

Responses

200

Successful Response

object
data
required
object
channels
Array<object>
object
channel_id
Any of:
integer
channel_type
Any of:
string
channel_value
Any of:
string
id
required
string
description
Any of:
string
id
required
string
name
Any of:
string
status
Any of:
string
steps
Array<object>
object
id
required
string
input_type
required
string
rendered
Any of:

What a step’s copy actually looks like once spintax is resolved.

Exists because step_data is the stored TEMPLATE, not the delivered email. A caller reading raw {{a|b|c}} back out of a field called “preview” has no way to tell working spintax from broken spintax, which is precisely how a working feature got reported as broken (see the PR that added this).

object
body
required

Body with spintax resolved to one variant

string
content_issues

Findings from the same content-syntax validator that blocks launch, so a caller sees them here instead of discovering them as a 400 on run (or worse, as missing text in a delivered email). Each entry carries code, severity, message, field and snippet. An error-severity entry will block POST /sequences/{id}/run.

Array<object>
object
key
additional properties
any
spintax_blocks
required

Count of top-level spintax blocks across subject + body. 0 means this step contains no spintax at all, which distinguishes ‘nothing to vary’ from ‘spintax failed to resolve’.

integer
subject
required

Subject with spintax resolved to one variant

string
total_combinations
required

Distinct emails this step can produce. Always >= 1; a value of exactly 1 means the copy is too templated to vary, which is a legitimate outcome and not an error.

integer
variables_resolved

False for this endpoint. Spintax is resolved but {{variables}} are left visible on purpose, because a preview has no contact and resolving against an empty contact would delete the token and show a hole in the copy. Variables fill in at send time.

boolean
variants

Up to 3 distinct body renderings under different selection seeds. This is the proof that spintax works: if these differ, per-contact variation is functioning. Fewer than 3 entries means the copy cannot produce more.

Array<string>
will_send_as_shown

True when the rendered copy above is what a recipient actually gets. False means content_issues contains errors that make the delivered email differ from this preview, because malformed tokens are silently DELETED at send rather than raising. Do not launch on a false.

boolean
default: true
step_data
Any of:
object
key
additional properties
any
step_order
required
integer
step_type
required
string
time_interval
Any of:
integer
pagination
Any of:
object
has_next
required

Whether there are more pages

boolean
limit
required

Items per page

integer
next_cursor
Any of:
string
page
required

Current page number (1-indexed)

integer
total
required

Total number of items

integer

422

Validation Error

object
detail
Array<object>
object
loc
required
Array
msg
required
string
type
required
string