---
title: "Get transactional email"
method: GET
path: "/transactional/{idOrSlug}"
tags: ["Transactional"]
---

# Get transactional email

`GET /transactional/{idOrSlug}`

Gets details of a transactional email template by ID or slug, including linked body content and available template variables.

## Path parameters

- `idOrSlug` string, required

## Response `200`

Successful response

- object
  - `success` boolean
  - `transactional` TransactionalEmailDetails
    - `id` string
    - `name` string
    - `slug` string
    - `emailId` string
    - `enabled` boolean
    - `createdAt` string, date-time
    - `updatedAt` string, date-time
    - `variables` string[]
    - `subject` string, nullable
    - `previewText` string, nullable
    - `emailPreset` 'branded' | 'minimal', nullable — Per-email Style > Format, derived from the stored blocks. `branded` renders the company logo and the full footer; `minimal` renders no logo and the simple footer. Null when the entire email is a single raw HTML block, which has no Sequenzy format. Sequence steps, campaigns, transactional templates, and saved templates all report this field, so chrome can be compared across emails without rendering them.
    - `blocks` EmailBlock[]
      - `id` string
      - `type` 'text' | 'html' | 'heading' | 'list' | 'button' | 'spacer' | 'divider' | 'image' | 'columns' | 'group' | 'conditional-group' | 'repeat' | 'card' | 'cta' | 'social' | 'logo' | 'header' | 'footer' | 'video' | 'product' | 'discount-code' | 'code' | 'countdown' | 'hero' | 'testimonial' | 'gallery' | 'badge' | 'table' | 'features' | 'image-card' | 'pricing' | 'author' | 'article' | 'rating' | 'stats' | 'steps' | 'product-grid' | 'poll', required
      - `content` string — Content for text, html, and heading-like blocks.
      - `label` string — Editor label for a structural group block.
      - `layout` 'stack' | 'row' | 'grid' | 'overlay' — Direct-child layout for a structural group block.
      - `columns` integer — Number of columns used by a group with grid layout.
      - `gap` integer — Gap in pixels between direct group children.
      - `padding` integer — Uniform group padding in pixels; per-side styles.padding* fields override it.
      - `overlayColor` string — Opaque fallback and shade color for an overlay group.
      - `overlayShade` integer — Overlay shade intensity as a percentage.
      - `overlayPosition` 'top' | 'center' | 'bottom' — Vertical position of overlay foreground content.
      - `children` EmailBlock[] — Recursive child blocks for group and repeat containers.
      - `styles` object — Per-block visual styles. For compatibility, style fields such as backgroundColor, backgroundOpacity, borderColor, borderWidth, and borderRadius can also be supplied at the block top level and are normalized into this object.
        - `paddingTop` number
        - `paddingBottom` number
        - `paddingLeft` number
        - `paddingRight` number
        - `backgroundColor` string
        - `backgroundOpacity` number — Background opacity percentage from 0 to 100.
        - `textColor` string
        - `textAlign` 'left' | 'center' | 'right'
        - `borderRadius` number
        - `borderColor` string
        - `borderWidth` number
        - `bleed` boolean — Stretch the block edge-to-edge across the email container. Top-level blocks only.
      - `conditions` object[] — Optional per-block display rules. The block renders only when every rule matches. The same shape is used for a conditional-group block's top-level `conditions`.
        - `id` string, required
        - `field` 'variable' | 'attribute' | 'email' | 'firstName' | 'lastName', required — `variable` resolves a merge-tag path from the transactional send `variables` or an automation `event` payload (nested paths like `order.total` or `event.plan` work). `attribute` reads a stored subscriber attribute. `email`, `firstName`, and `lastName` read core subscriber fields.
        - `operator` 'is' | 'is_not' | 'contains' | 'not_contains' | 'gt' | 'gte' | 'lt' | 'lte' | 'is_empty' | 'is_not_empty', required
        - `value` string, required — For `variable` and `attribute`, use `name:value` - the part before the colon is the variable path or attribute name, and the part after it is the comparison value. For `email`, `firstName`, and `lastName`, provide the plain comparison string.
    - `email` Email
      - `id` string
      - `companyId` string
      - `name` string
      - `subject` string
      - `previewText` string, nullable
      - `blocks` EmailBlock[]
        - `id` string
        - `type` 'text' | 'html' | 'heading' | 'list' | 'button' | 'spacer' | 'divider' | 'image' | 'columns' | 'group' | 'conditional-group' | 'repeat' | 'card' | 'cta' | 'social' | 'logo' | 'header' | 'footer' | 'video' | 'product' | 'discount-code' | 'code' | 'countdown' | 'hero' | 'testimonial' | 'gallery' | 'badge' | 'table' | 'features' | 'image-card' | 'pricing' | 'author' | 'article' | 'rating' | 'stats' | 'steps' | 'product-grid' | 'poll', required
        - `content` string — Content for text, html, and heading-like blocks.
        - `label` string — Editor label for a structural group block.
        - `layout` 'stack' | 'row' | 'grid' | 'overlay' — Direct-child layout for a structural group block.
        - `columns` integer — Number of columns used by a group with grid layout.
        - `gap` integer — Gap in pixels between direct group children.
        - `padding` integer — Uniform group padding in pixels; per-side styles.padding* fields override it.
        - `overlayColor` string — Opaque fallback and shade color for an overlay group.
        - `overlayShade` integer — Overlay shade intensity as a percentage.
        - `overlayPosition` 'top' | 'center' | 'bottom' — Vertical position of overlay foreground content.
        - `children` EmailBlock[] — Recursive child blocks for group and repeat containers.
        - `styles` object — Per-block visual styles. For compatibility, style fields such as backgroundColor, backgroundOpacity, borderColor, borderWidth, and borderRadius can also be supplied at the block top level and are normalized into this object.
          - `paddingTop` number
          - `paddingBottom` number
          - `paddingLeft` number
          - `paddingRight` number
          - `backgroundColor` string
          - `backgroundOpacity` number — Background opacity percentage from 0 to 100.
          - `textColor` string
          - `textAlign` 'left' | 'center' | 'right'
          - `borderRadius` number
          - `borderColor` string
          - `borderWidth` number
          - `bleed` boolean — Stretch the block edge-to-edge across the email container. Top-level blocks only.
        - `conditions` object[] — Optional per-block display rules. The block renders only when every rule matches. The same shape is used for a conditional-group block's top-level `conditions`.
          - `id` string, required
          - `field` 'variable' | 'attribute' | 'email' | 'firstName' | 'lastName', required — `variable` resolves a merge-tag path from the transactional send `variables` or an automation `event` payload (nested paths like `order.total` or `event.plan` work). `attribute` reads a stored subscriber attribute. `email`, `firstName`, and `lastName` read core subscriber fields.
          - `operator` 'is' | 'is_not' | 'contains' | 'not_contains' | 'gt' | 'gte' | 'lt' | 'lte' | 'is_empty' | 'is_not_empty', required
          - `value` string, required — For `variable` and `attribute`, use `name:value` - the part before the colon is the variable path or attribute name, and the part after it is the comparison value. For `email`, `firstName`, and `lastName`, provide the plain comparison string.
      - `createdAt` string, date-time
      - `updatedAt` string, date-time

## Other responses

- `401` — Unauthorized
- `404` — Transactional email not found
- `500` — Internal server error
- `503` — The database was temporarily unavailable. The request may be retried after the delay in Retry-After.

## Changes

> 121 revisions in range; 10 could not be searched.

- **2026-08-18** `8fbabe82a04d` — 1 info
  - added the non-success response with the status `503`
- **2026-08-16** `6fd2903b91ce` — 3 info
  - added the optional property `code` to the response with the `401` status
  - added the optional property `code` to the response with the `404` status
  - added the optional property `code` to the response with the `500` status
- **2026-08-08** `af1cf9620482` — 1 info
  - added the optional property `transactional/allOf[subschema #2]/emailPreset` to the response with the `200` status
- **2026-08-02** `36f92fc0caa2` — 3 breaking
  - the response property `success` became optional for the status `401`
  - the response property `success` became optional for the status `404`
  - the response property `success` became optional for the status `500`
- …earlier changes not shown

[Full history](https://skmtc.dev/sequenzy/apis/sequenzy-api/changes/transactional/:idOrSlug/get.md)

---

[API](https://skmtc.dev/sequenzy/apis/sequenzy-api.md) · [All operations](https://skmtc.dev/sequenzy/apis/sequenzy-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/sequenzy/sequenzy-api/revisions/73f826277d9a/schema)
