Skip to content

Get Layout

GET
/api/v1/workspaces/{workspace_id}/layouts/{id}
curl --request GET \
--url https://example.com/%7B%7Bapp_url%7D/api/v1/workspaces/1/layouts/1 \
--header 'Authorization: Bearer <token>'

Retrieves a layout.

workspace_id
required
integer

Workspace ID

id
required
integer

Layout ID

Successful

Media typeapplication/json
object
id
required
integer
name
required
string
content
required
object
container_component_instance
required
object
id
required
string format: uuid
name
string
component_name
required

The name of the component definition this instance is based on.

string
conditional_id

The ID of a saved conditional applied to this component instance. When set, inline_conditional must not be set. The component renders a separate variant for each branch of the conditional.

integer | null
inline_conditional
One of:

A conditional definition owned by a single component instance in an email.

object
default_syntax
required
object
closing
required

The closing syntax tag for the conditional block.

string
branch_values

Key-value pairs where the key is the branch key and the value is the opening syntax for that branch.

object
key
additional properties
string
branches
required
Array<object>
object
key
required
string
label
required
string
dynamic_content_profile_syntaxes
required
object
key
additional properties

A per-DynamicContentProfile syntax entry on a Conditional. Either a manually-authored {closing, branch_values} pair or a picker-authored {uses_ui_picker, ui_picker_state} pair — the two modes are mutually exclusive.

object
closing

Manual mode only. The closing syntax tag for the conditional block.

string
branch_values

Manual mode only. Key-value pairs where the key is the branch key and the value is the opening syntax for that branch.

object
key
additional properties
string
uses_ui_picker

When true, the syntax for this dynamic content profile was authored via the UI picker for the profile’s template engine preset. When false or absent, it was defined manually.

boolean
ui_picker_state
One of:

State authored via the conditional UI picker. Rendered on read (by the template engine preset) into a {closing, branch_values} syntax.

object
include_else_branch
required

When true, the final branch of the parent Conditional is rendered as an else branch and its key is omitted from branches below.

boolean
branches
required

Picker state keyed by branch key. Includes one entry per non-else branch; when include_else_branch is true the final branch key is omitted.

object
key
additional properties

Picker-authored state for a single non-else branch of a conditional.

object
joiner
required

How multiple conditions combine (e.g. “and”, “or”). Always present for a stable shape; only semantically meaningful when conditions has more than one entry. Must be one of the joiners allowed by the preset — see template_engine_preset_schema.joiners.

string
conditions
required

Conditions that must all (or any, depending on joiner) hold for this branch to match. At least one entry required.

Array<object>
>= 1 items

A single condition within a picker branch. Validated server-side against the profile’s template engine preset capabilities.

object
field
required

The reference the template engine reads when evaluating this condition (e.g. “profile.tier”).

string
type
required

Declared value type. Drives the allowed operators and the shape of value.

string
Allowed values: string number boolean
operator
required

One of the operators the preset allows for the declared type. See template_engine_preset_schema.operators_by_type[type] on the associated DynamicContentProfile.

string
value

The value being compared against. Always a string on the wire; the preset renderer decides how to format it based on type (quoted for “string”, raw for “number”/“boolean”). Required when the operator’s definition has requires_value=true; null (or absent) when requires_value=false.

string | null
field_values

Field values organized by branch key.

object
key
additional properties

Field values organized by locale code.

object
key
additional properties

Field values keyed by liquid variable name.

object
key
additional properties
object
value
required
One of:
string
link_tracking_parameters

Link tracking parameter values specific to this field.

object
key
additional properties
string
hidden_from_locales

A map of locale codes to boolean values indicating whether this component instance is hidden for that locale.

object
key
additional properties
boolean
link_tracking_parameters
object
branch_content

Per-component-instance link tracking parameter values, organized by branch key, then by locale code.

object
key
additional properties
object
key
additional properties

A map of link tracking parameter names to their values for this component instance.

object
key
additional properties
string
component_instances
required
Array<object>
object
id
required
string format: uuid
name
string
component_name
required

The name of the component definition this instance is based on.

string
conditional_id

The ID of a saved conditional applied to this component instance. When set, inline_conditional must not be set. The component renders a separate variant for each branch of the conditional.

integer | null
inline_conditional
One of:

A conditional definition owned by a single component instance in an email.

object
default_syntax
required
object
closing
required

The closing syntax tag for the conditional block.

string
branch_values

Key-value pairs where the key is the branch key and the value is the opening syntax for that branch.

object
key
additional properties
string
branches
required
Array<object>
object
key
required
string
label
required
string
dynamic_content_profile_syntaxes
required
object
key
additional properties

A per-DynamicContentProfile syntax entry on a Conditional. Either a manually-authored {closing, branch_values} pair or a picker-authored {uses_ui_picker, ui_picker_state} pair — the two modes are mutually exclusive.

object
closing

Manual mode only. The closing syntax tag for the conditional block.

string
branch_values

Manual mode only. Key-value pairs where the key is the branch key and the value is the opening syntax for that branch.

object
key
additional properties
string
uses_ui_picker

When true, the syntax for this dynamic content profile was authored via the UI picker for the profile’s template engine preset. When false or absent, it was defined manually.

boolean
ui_picker_state
One of:

State authored via the conditional UI picker. Rendered on read (by the template engine preset) into a {closing, branch_values} syntax.

object
include_else_branch
required

When true, the final branch of the parent Conditional is rendered as an else branch and its key is omitted from branches below.

boolean
branches
required

Picker state keyed by branch key. Includes one entry per non-else branch; when include_else_branch is true the final branch key is omitted.

object
key
additional properties

Picker-authored state for a single non-else branch of a conditional.

object
joiner
required

How multiple conditions combine (e.g. “and”, “or”). Always present for a stable shape; only semantically meaningful when conditions has more than one entry. Must be one of the joiners allowed by the preset — see template_engine_preset_schema.joiners.

string
conditions
required

Conditions that must all (or any, depending on joiner) hold for this branch to match. At least one entry required.

Array<object>
>= 1 items

A single condition within a picker branch. Validated server-side against the profile’s template engine preset capabilities.

object
field
required

The reference the template engine reads when evaluating this condition (e.g. “profile.tier”).

string
type
required

Declared value type. Drives the allowed operators and the shape of value.

string
Allowed values: string number boolean
operator
required

One of the operators the preset allows for the declared type. See template_engine_preset_schema.operators_by_type[type] on the associated DynamicContentProfile.

string
value

The value being compared against. Always a string on the wire; the preset renderer decides how to format it based on type (quoted for “string”, raw for “number”/“boolean”). Required when the operator’s definition has requires_value=true; null (or absent) when requires_value=false.

string | null
field_values

Field values organized by branch key.

object
key
additional properties

Field values organized by locale code.

object
key
additional properties

Field values keyed by liquid variable name.

object
key
additional properties
object
value
required
One of:
string
link_tracking_parameters

Link tracking parameter values specific to this field.

object
key
additional properties
string
hidden_from_locales

A map of locale codes to boolean values indicating whether this component instance is hidden for that locale.

object
key
additional properties
boolean
link_tracking_parameters
object
branch_content

Per-component-instance link tracking parameter values, organized by branch key, then by locale code.

object
key
additional properties
object
key
additional properties

A map of link tracking parameter names to their values for this component instance.

object
key
additional properties
string
email_design_system_id
required
integer
brand_profile_id
required
integer | null
locales
required
Array<string>
created_at
required
string format: date-time
updated_at
required
string format: date-time
Example
{
"id": 12345,
"name": "Admin",
"content": {
"container_component_instance": {
"id": "bd1c1b82-1a7b-4f0f-b079-30c1d4189bed",
"name": "My Component",
"component_name": "Headline",
"conditional_id": 1,
"inline_conditional": {
"default_syntax": {
"closing": "{% endif %}",
"branch_values": {
"gold_membership": "{% if membership == 'gold' %}",
"silver_membership": "{% elsif membership == 'silver' %}"
}
},
"branches": [
{
"key": "gold_membership",
"label": "Gold Membership"
}
],
"dynamic_content_profile_syntaxes": {
"additionalProperty": {
"closing": "{% endif %}",
"branch_values": {
"gold_membership": "{% if membership == 'gold' %}",
"silver_membership": "{% elsif membership == 'silver' %}"
},
"uses_ui_picker": false,
"ui_picker_state": {
"include_else_branch": false,
"branches": {
"gold": {
"joiner": "and",
"conditions": [
{
"field": "profile.tier",
"type": "string",
"operator": "equals",
"value": "gold"
}
]
}
}
}
}
}
},
"hidden_from_locales": {
"additionalProperty": true
}
},
"component_instances": [
{
"id": "bd1c1b82-1a7b-4f0f-b079-30c1d4189bed",
"name": "My Component",
"component_name": "Headline",
"conditional_id": 1,
"inline_conditional": {
"default_syntax": {
"closing": "{% endif %}",
"branch_values": {
"gold_membership": "{% if membership == 'gold' %}",
"silver_membership": "{% elsif membership == 'silver' %}"
}
},
"branches": [
{
"key": "gold_membership",
"label": "Gold Membership"
}
],
"dynamic_content_profile_syntaxes": {
"additionalProperty": {
"closing": "{% endif %}",
"branch_values": {
"gold_membership": "{% if membership == 'gold' %}",
"silver_membership": "{% elsif membership == 'silver' %}"
},
"uses_ui_picker": false,
"ui_picker_state": {
"include_else_branch": false,
"branches": {
"gold": {
"joiner": "and",
"conditions": [
{
"field": "profile.tier",
"type": "string",
"operator": "equals",
"value": "gold"
}
]
}
}
}
}
}
},
"hidden_from_locales": {
"additionalProperty": true
}
}
]
},
"email_design_system_id": 12345,
"brand_profile_id": 12345,
"locales": [
"en-GB"
],
"created_at": "2023-08-23T10:30:00.000Z",
"updated_at": "2023-08-23T10:30:00.000Z"
}

Unauthorized

Media typeapplication/json
object
message
required
string
Example
{
"message": "Record not found"
}

Forbidden

Media typeapplication/json
object
message
required
string
Example
{
"message": "Record not found"
}

Not Found

Media typeapplication/json
object
message
required
string
Example
{
"message": "Record not found"
}