---
title: "Get email content"
method: GET
path: "/email-content/{id}"
tags: ["Email Content"]
---

# Get email content

`GET /email-content/{id}`

## Request

- Base URL: `https://api.omnisend.com/api`
- URL: `https://api.omnisend.com/api/email-content/{id}`
- Auth: one of:
  - OAuth 2
    - Client credentials
    - Token URL: `https://app.omnisend.com/oauth2/token` scopes: `email-templates.read`
  - API key in header `Authorization`

With this endpoint you can get email content by ID.
Content of a campaign that has started sending is locked: its universal layout sections keep the layout content the email was sent with, and it cannot be updated.

**Scopes:**
`email-templates.read`

**Rate Limiting:**
This endpoint is rate limited to 400 requests per minute.

## Path parameters

- `id` string, required

## Headers

- `Omnisend-Version` string, required

## Response `200`

Content

- Content: Email content
  - `createdAt` string: Content created at (read-only)
  - `generalSettings` GeneralSettings: General settings for the template
    - `body` Body, required: Body settings for the template
      - `backgroundColor` string, required: Body background color - hex color
      - `backgroundImageID` string: Body background image ID - must be present in Image API
      - `backgroundRepeat` 'repeat' | 'no-repeat': Body background repeat
      - `backgroundSize` 'contain' | 'cover' | 'auto': Body background size
    - `buttonPresets` ButtonPreset[]: Button presets
      - `id` string, required: Button preset unique identifier
      - `name` string: Button preset name
      - `styles` ButtonStyle, required: Button preset style properties
        - `backgroundColor` string: Button background color - hex color or transparent
        - `border` string: Button border style
        - `borderRadius` string, required: Button border radius - from 0px to 200px
        - `color` string, required: Button font color - hex color
        - `fontFamily` string, required: Button font family
        - `fontSize` string, required: Button font size - from 3px to 100px
        - `fontStyle` 'normal' | 'italic': Button font style
        - `fontWeight` string: Button font weight
        - `letterSpacing` string: Button letter spacing - spacing between letters, from -1px to 120px
        - `paddingBottom` string: Button padding bottom - from 0px to 240px
        - `paddingLeft` string: Button padding left - from 0px to 120px
        - `paddingRight` string: Button padding right - from 0px to 120px
        - `paddingTop` string: Button padding top - from 0px to 240px
        - `textDecoration` 'underline' | 'line-through': Button text decoration - omit for no decoration
    - `content` ContentSettings, required: Content settings for the template
      - `backgroundColor` string, required: Content background color - hex color
      - `color` string, required: Content text color - hex color
      - `fontFamily` string, required: Content font family
      - `fontSize` string, required: Content font size - from 3px to 100px
      - `width` string, required: Content width - from 300px to 2000px
    - `gmail` Gmail: Gmail specific settings for email.
      - `annotation` Annotation: Gmail annotation settings
        - `discountDescription` string: Gmail discount description - description of the discount or promotion to display in Gmail promotion tab together with the discount code.
        - `isEnabled` boolean: Gmail annotation enabled
    - `logo` LogoSettings: Logo settings for the template
      - `altText` string: Logo alt text - alternative text for the logo for accessibility
      - `height` integer: Logo height in pixels
      - `id` string: Logo unique identifier
      - `isCustom` boolean: Logo custom - whether the logo is a custom uploaded logo
      - `name` string: Logo name
      - `size` integer: Logo size - in bytes, up to 5MB
      - `source` string: Logo source - image URL (max 2083 characters) or personalisation tag
      - `type` 'image/jpg' | 'image/jpeg' | 'image/png' | 'image/gif': Logo type - one of: image/jpg, image/jpeg, image/png, image/gif
      - `width` integer: Logo width in pixels - required when height is set
    - `textPresets` TextPreset[]: Text presets
      - `id` string, required: Text preset unique identifier - must be unique within the template
      - `name` string: Text preset name
      - `styles` TextStyle, required: Text preset style properties
        - `color` string, required: Text preset color - hex color
        - `fontFamily` string, required: Text preset font family
        - `fontSize` string, required: Text preset font size - from 3px to 100px
        - `letterSpacing` string: Text preset letter spacing - spacing between letters, from -1px to 120px
        - `lineHeight` string, required: Text preset line height - unitless from 1 to 2 or percentage from 100% to 200%
  - `id` string: Content unique identifier (read-only)
  - `sections` Section[]: Content sections
    - `id` string: Section unique identifier - must be unique within the template
    - `productRecommender` ProductRecommender: Product recommender settings for the product recommendations section
      - `excludeCategories` string[]: Categories to exclude from recommendations
      - `excludeProducts` string[]: Products to exclude from recommendations
      - `fallbackType` string: Product recommender fallback type
      - `includeCategories` string[]: Categories to include in recommendations
      - `isOutOfStockIncluded` boolean: Whether to include out-of-stock products in recommendations
      - `priceFrom` number: Minimum price filter for product recommendations
      - `purchaseExclusionDays` integer: Number of days to exclude recently purchased products
      - `recencyMonths` integer: Number of months to consider for recency-based recommendations
      - `type` string: Product recommender type
    - `rows` Row[], nullable: Section rows - used to group content into logical sections. Null for a section that references a universal layout, and must be null or empty when sent for one. Locked email content (a campaign that has started sending) is the exception: its universal layout sections keep the layout rows the email was sent with.
      - `columns` Column[]: Row columns - used to group content into logical columns
        - `blocks` Block[]: Column blocks - used to group content into logical blocks
          - `button` Button: Button block settings
            - `isFullWidth` boolean: Button is full width
            - `link` string: Button link
            - `text` string: Button text
            - `translationKey` string: Button translation key - used for internationalization support
          - `components` BlockComponent[]: Components - the parts a block renders that are not covered by its own content field. Some blocks tag each part with a 'role', and which roles they need is decided by their 'type': a 'discount' block holds the code, the redeem button and the expiry date, a 'menu' block holds its items, a 'product' block holds the product's image, title, description, prices and button. A countdown nests one un-roled image component whose source is generated by the server. Other blocks nest components without a role, and blocks that render everything from a dedicated content field have no components at all. See BlockComponent.
            - `button` Button: Button block settings
              - …
            - `components` BlockComponent[]: Components nested inside this component. Only role 'product_prices' uses them.
            - `html` string: Deprecated: use Text instead. Read-only, will be removed in future versions.
            - `id` string: Component unique identifier - must be unique within the template
            - `image` Image: Image block for displaying images in the email
              - …
            - `role` 'discount_code' | 'discount_button' | 'discount_expiration_date' | 'menu_text' | 'product_image' | 'product_title' | 'product_description' | 'product_prices' | 'product_button' | 'product_current_price' | 'product_old_price': Role the component plays inside its parent block - set only where the parent block assigns roles to its parts, and omitted otherwise.
            - `stylePresetID` string: Style preset ID - ID of the style preset. ID must be present in template General Settings.
            - `styleProperties` StyleProperties: Style properties for the section
              - …
            - `text` string: Text content of the component - supports HTML formatting and personalization tags. For role 'discount_code' this is the code the recipient sees; on a platform that issues its own codes it is replaced at send time, so it carries the placeholder XXXX-XXXX-XXXX.
            - `type` 'text' | 'button' | 'image' | 'price': Component type. Only these block types can be nested as a component.
          - `countdown` Countdown: Countdown block settings. The timer is identified by timerID; src is generated and signed by Omnisend.
            - `alt` string: Alternative text for the countdown image
            - `link` string: Destination URL opened when the countdown is clicked
            - `src` string: Signed countdown image URL. Read-only; derived from timerID.
            - `timerID` string, required: Timer identifier returned by the timer API
          - `discount` Discount: Discount block settings. This object configures the offer only — the parts the recipient sees (code, redeem button, expiry) are separate role-tagged blocks in the parent block's 'components'. See the notes on the Block 'type' field for the roles each discount block type requires. An offer needs 'discountType', the value that matches it ('valuePercentage' for a percentage, 'valueFixed' for an amount off), 'discountConditions', and 'endsIn' for how long it stays valid. 'staticDiscount' and 'dynamicDiscount' blocks require 'code', 'discountType', 'valuePercentage' and 'discountConditions'.
            - `appliesToCustomCollectionID` integer: ID of the custom collection that the discount applies to
            - `appliesToID` integer: ID of the specific resource (product, collection) that the discount applies to
            - `appliesToResource` string: Type of resource the discount applies to
            - `appliesToSmartCollectionID` integer: ID of the smart collection that the discount applies to
            - `code` string: Discount code customers use to apply the discount. In 'discount' (Shopify, BigCommerce) and 'dynamicDiscount' (WooCommerce) blocks the code is not taken from here: the store issues a unique code per recipient when the email is sent, and it replaces both this value and the text of the 'discount_code' component. Use the placeholder XXXX-XXXX-XXXX in both places — a literal code written here is not created in the store, so it is either replaced at send time or, for a brand with automatic discount creation switched off, delivered as a code the recipient cannot redeem. In 'staticDiscount' blocks (WooCommerce) this is instead the real, fixed code that already exists in the store.
            - `combinesWith` DiscountCombinesWith: Discount combines with settings
              - …
            - `discountConditions` string: Conditions that must be met for the discount to apply
            - `discountType` string: Type of discount: percentage off, fixed amount off, or shipping discount
            - `endsIn` string: Number of days until the discount ends
            - `isAppliedOncePerCustomer` boolean: When generating a discount code in integrated platforms, the discount can only be used once per customer
            - `isButtonHidden` boolean: Whether the redeem button is hidden in the discount block
            - `isDiscountApplied` boolean: Whether the discount should be automatically applied to the order
            - `isItemsOnSaleExcluded` boolean: Whether the discount should exclude items that are already on sale
            - `link` string: URL link for the discount
            - `minimumOrderAmount` string: Minimum order amount required for the discount to apply
            - `offerText` string: Text displayed to customers when they apply the discount
            - `title` string: Title of the discount
            - `usageLimit` string: Maximum number of times the discount can be used
            - `validUntil` string: Date and time when the discount expires
            - `validUntilFormat` string: Format of the expiration date
            - `validUntilFormatted` string: Formatted expiration date
            - `valueFixed` string: Fixed value of the discount
            - `valuePercentage` string: Percentage value of the discount
          - `dynamicDiscount` Discount: Discount block settings. This object configures the offer only — the parts the recipient sees (code, redeem button, expiry) are separate role-tagged blocks in the parent block's 'components'. See the notes on the Block 'type' field for the roles each discount block type requires. An offer needs 'discountType', the value that matches it ('valuePercentage' for a percentage, 'valueFixed' for an amount off), 'discountConditions', and 'endsIn' for how long it stays valid. 'staticDiscount' and 'dynamicDiscount' blocks require 'code', 'discountType', 'valuePercentage' and 'discountConditions'.
            - `appliesToCustomCollectionID` integer: ID of the custom collection that the discount applies to
            - `appliesToID` integer: ID of the specific resource (product, collection) that the discount applies to
            - `appliesToResource` string: Type of resource the discount applies to
            - `appliesToSmartCollectionID` integer: ID of the smart collection that the discount applies to
            - `code` string: Discount code customers use to apply the discount. In 'discount' (Shopify, BigCommerce) and 'dynamicDiscount' (WooCommerce) blocks the code is not taken from here: the store issues a unique code per recipient when the email is sent, and it replaces both this value and the text of the 'discount_code' component. Use the placeholder XXXX-XXXX-XXXX in both places — a literal code written here is not created in the store, so it is either replaced at send time or, for a brand with automatic discount creation switched off, delivered as a code the recipient cannot redeem. In 'staticDiscount' blocks (WooCommerce) this is instead the real, fixed code that already exists in the store.
            - `combinesWith` DiscountCombinesWith: Discount combines with settings
              - …
            - `discountConditions` string: Conditions that must be met for the discount to apply
            - `discountType` string: Type of discount: percentage off, fixed amount off, or shipping discount
            - `endsIn` string: Number of days until the discount ends
            - `isAppliedOncePerCustomer` boolean: When generating a discount code in integrated platforms, the discount can only be used once per customer
            - `isButtonHidden` boolean: Whether the redeem button is hidden in the discount block
            - `isDiscountApplied` boolean: Whether the discount should be automatically applied to the order
            - `isItemsOnSaleExcluded` boolean: Whether the discount should exclude items that are already on sale
            - `link` string: URL link for the discount
            - `minimumOrderAmount` string: Minimum order amount required for the discount to apply
            - `offerText` string: Text displayed to customers when they apply the discount
            - `title` string: Title of the discount
            - `usageLimit` string: Maximum number of times the discount can be used
            - `validUntil` string: Date and time when the discount expires
            - `validUntilFormat` string: Format of the expiration date
            - `validUntilFormatted` string: Formatted expiration date
            - `valueFixed` string: Fixed value of the discount
            - `valuePercentage` string: Percentage value of the discount
          - `html` string: Deprecated: use HTMLCode instead. Read-only, will be removed in future versions.
          - `htmlCode` HTMLCode: HTML code block with separate style and body content
            - `body` string: HTML body content that will be embedded in the email.
            - `style` string: CSS styles for the HTML content that will be embedded in the HTML header.
          - `id` string: Block unique identifier - must be unique within the template
          - `image` Image: Image block for displaying images in the email
            - `altSource` string: Image alt source - used as a fallback image if the original image fails to load
            - `altText` string: Image alt text for accessibility
            - `height` integer: Image original height
            - `id` string: Image ID retrieved from Image API
            - `isDynamic` boolean: Whether the image is dynamic - used to identify whether the image is dynamically generated
            - `isExternalSource` boolean: Whether the image is an external source - used to identify whether the image has an external source
            - `link` string: Image destination path - where the image will redirect on click
            - `maxHeight` integer: Image max height in pixels - absolute pixel height constraint for dynamic images (0-1000)
            - `maxHeightPercentage` integer: Image max height percentage - used to identify the maximum height of the image as a percentage of the container
            - `name` string: Image name displayed in the email
            - `resizeHeight` number: Resized image height - used when the image is resized to a different width or height than the original
            - `resizeWidth` integer: Resized image width - used when the image is resized to a different width than the original
            - `size` integer: Image size in bytes
            - `source` string: Image source URL.
            - `state` string: Image state - used to identify the state of the image
            - `type` string: Image type (image/jpg, image/jpeg, image/png, image/gif)
            - `width` integer: Image original width
          - `lineSpace` LineSpace: Horizontal line or space block for layout separation
            - `height` integer: Height of the line or space element in pixels
            - `type` string: type of line or space element
            - `width` integer: Width of the line or space element in pixels
          - `logo` Logo: Logo block for displaying a logo in the email
            - `link` string: Link where the logo will redirect on click
            - `resizeWidth` integer: Resized width of the logo in pixels
          - `orderAddresses` OrderAddresses: Order addresses block displaying billing and shipping information
            - `billing` OrderAddress: Postal address for billing or shipping
              - …
            - `hiddenFields` OrderAddressesHiddenFields: Visibility toggles for the order addresses section
              - …
            - `shipping` OrderAddress: Postal address for billing or shipping
              - …
            - `shippingMethods` OrderShipping[]: Shipping methods used for the order
              - …
            - `title` string: Section title
            - `transactions` OrderTransaction[]: Payment transactions for the order
              - …
          - `orderProducts` OrderProducts: Order products block displaying ordered items
            - `hiddenFields` OrderProductsHiddenFields: Visibility toggles for order product fields
              - …
            - `products` OrderProduct[]: List of ordered products. Placeholder data — actual products are injected at render time.
              - …
          - `orderSummary` OrderSummary: Order summary block displaying order identification details
            - `date` string: Order date
            - `dateFormat` string: Date display format
            - `hiddenFields` OrderSummaryHiddenFields: Visibility toggles for order summary fields
              - …
            - `orderID` string: Order identifier
            - `title` string: Summary section title
          - `orderTotal` OrderTotal: Order total block displaying pricing breakdown
            - `currency` string: Currency code
            - `discountTotal` string: Total discount amount
            - `discounts` OrderTotalDiscount[]: Applied discount details
              - …
            - `hiddenFields` OrderTotalHiddenFields: Visibility toggles for order total fields
              - …
            - `isSubTotalTaxIncluded` boolean: Whether the subtotal includes tax
            - `orderTotal` string: Final order total
            - `shippingPrice` string: Shipping price
            - `subTotal` string: Subtotal amount before tax and shipping
            - `taxTotal` string: Total tax amount
            - `taxes` OrderTax[]: Applied tax details
              - …
          - `preheader` Preheader: Preheader block to setup View in Browser link text formattings Text is formatted as ```Text<a href="https://view-inbrowser-link">LinkText</a>```
            - `linkText` string: Preheader link text
            - `text` string: Preheader text
          - `product` Product: Product block for displaying product information
            - `buttonText` string: Product button text - text of the button that will redirect to the product page
            - `description` string: Product description - displayed in the email
            - `id` string: Product ID - Omnisend product ID - can be retrieved from the Product API
            - `imageID` string: Product image ID - Omnisend image ID - can be retrieved from the Image API
            - `imageUrl` string: Product image URL - URL of the product image
            - `link` string: Product link - where the product will redirect on click
            - `oldPrice` string: Product price before discount
            - `originalTitle` string: Product original title - original title of the product
            - `price` string: Product price
            - `productID` string: ID of connected platform product (e.g. Shopify product ID)
            - `title` string: Product title - displayed in the email
          - `role` 'product_image' | 'product_title' | 'product_description' | 'product_prices' | 'product_button' | 'discount_code' | 'discount_button' | 'discount_expiration_date' | 'product_current_price' | 'product_old_price' | 'menu_text': Block role
          - `secondaryStylePresetID` string: Secondary style preset ID - ID of the secondary style preset. Used for order blocks styling as smaller text style.
          - `social` Social: Social block for displaying social media icons and links
            - `icons` Icon[]: Icons of the social media platforms
              - …
            - `shape` string: Shape of the social media icons
            - `size` string: Size of the social media icons
          - `staticDiscount` Discount: Discount block settings. This object configures the offer only — the parts the recipient sees (code, redeem button, expiry) are separate role-tagged blocks in the parent block's 'components'. See the notes on the Block 'type' field for the roles each discount block type requires. An offer needs 'discountType', the value that matches it ('valuePercentage' for a percentage, 'valueFixed' for an amount off), 'discountConditions', and 'endsIn' for how long it stays valid. 'staticDiscount' and 'dynamicDiscount' blocks require 'code', 'discountType', 'valuePercentage' and 'discountConditions'.
            - `appliesToCustomCollectionID` integer: ID of the custom collection that the discount applies to
            - `appliesToID` integer: ID of the specific resource (product, collection) that the discount applies to
            - `appliesToResource` string: Type of resource the discount applies to
            - `appliesToSmartCollectionID` integer: ID of the smart collection that the discount applies to
            - `code` string: Discount code customers use to apply the discount. In 'discount' (Shopify, BigCommerce) and 'dynamicDiscount' (WooCommerce) blocks the code is not taken from here: the store issues a unique code per recipient when the email is sent, and it replaces both this value and the text of the 'discount_code' component. Use the placeholder XXXX-XXXX-XXXX in both places — a literal code written here is not created in the store, so it is either replaced at send time or, for a brand with automatic discount creation switched off, delivered as a code the recipient cannot redeem. In 'staticDiscount' blocks (WooCommerce) this is instead the real, fixed code that already exists in the store.
            - `combinesWith` DiscountCombinesWith: Discount combines with settings
              - …
            - `discountConditions` string: Conditions that must be met for the discount to apply
            - `discountType` string: Type of discount: percentage off, fixed amount off, or shipping discount
            - `endsIn` string: Number of days until the discount ends
            - `isAppliedOncePerCustomer` boolean: When generating a discount code in integrated platforms, the discount can only be used once per customer
            - `isButtonHidden` boolean: Whether the redeem button is hidden in the discount block
            - `isDiscountApplied` boolean: Whether the discount should be automatically applied to the order
            - `isItemsOnSaleExcluded` boolean: Whether the discount should exclude items that are already on sale
            - `link` string: URL link for the discount
            - `minimumOrderAmount` string: Minimum order amount required for the discount to apply
            - `offerText` string: Text displayed to customers when they apply the discount
            - `title` string: Title of the discount
            - `usageLimit` string: Maximum number of times the discount can be used
            - `validUntil` string: Date and time when the discount expires
            - `validUntilFormat` string: Format of the expiration date
            - `validUntilFormatted` string: Formatted expiration date
            - `valueFixed` string: Fixed value of the discount
            - `valuePercentage` string: Percentage value of the discount
          - `stylePresetID` string: Style preset ID - ID of the style preset. Used for Button or Text block styling. ID must be present in template General Settings.
          - `styleProperties` StyleProperties: Style properties for the section
            - `alignment` string: Alignment - used to align the content horizontally
            - `backgroundColor` string: Background color - used to set the background color of the content
            - `backgroundImageID` string: Background image ID - ID of the background image asset. Must be present in Image API
            - `backgroundPosition` string: Background position - used to position the background image
            - `backgroundRepeat` string: Background repeat - used to repeat the background image
            - `backgroundSize` string: Background size - used to size the background image
            - `border` string: Border - used to add a border to the content
            - `borderRadius` string: Border radius
            - `color` string: Text color
            - `dividerColor` string: Divider color
            - `fontFamily` string: Font family
            - `fontSize` string: Font size
            - `fontStyle` string: Font style
            - `fontWeight` string: Font weight
            - `innerPadding` string: Inner padding
            - `innerPaddingBottom` string: Inner padding bottom
            - `innerPaddingLeft` string: Inner padding left
            - `innerPaddingRight` string: Inner padding right
            - `innerPaddingTop` string: Inner padding top
            - `isBackgroundPaddingsExcluded` boolean: Whether to exclude background paddings - used to exclude paddings from the background image
            - `letterSpacing` string: Letter spacing - spacing between letters
            - `lineHeight` string: Line height
            - `linkColor` string: Link color
            - `padding` string: Padding
            - `paddingBottom` string: Padding bottom
            - `paddingLeft` string: Padding left
            - `paddingRight` string: Padding right
            - `paddingTop` string: Padding top
            - `priceColor` string: Price color - used to color the price text
            - `secondaryColor` string: Secondary color - used to color the secondary text
            - `textBackgroundColor` string: Text Background color - used to set the text background color
            - `textDecoration` string: Text decoration
            - `verticalAlign` string: Vertical alignment - used to align the content vertically
          - `text` string: Text content of the block - supports HTML formatting and personalization tags
          - `type` 'html' | 'htmlCode' | 'text' | 'image' | 'video' | 'logo' | 'menu' | 'social' | 'button' | 'product' | 'discount' | 'staticDiscount' | 'dynamicDiscount' | 'orderSummary' | 'orderProducts' | 'orderTotal' | 'orderAddresses' | 'lineSpace' | 'preheader' | 'price' | 'countdown': Block type. Notes: - 'html' is read-only and cannot be set on create/update. - 'menu' is a container block with no dedicated content field — items must be provided via 'components' as text blocks with role 'menu_text', and styling is configured through 'stylePresetID' and 'styleProperties'. - 'discount' is the block for an offer. The offer is configured in the 'discount' object, and everything the recipient sees must be provided via 'components' as role-tagged blocks — a text block with role 'discount_code' (required, exactly one), plus an optional button with role 'discount_button' and an optional text block with role 'discount_expiration_date'. The store issues a code per recipient when the email is sent, so 'discount.code' carries the placeholder XXXX-XXXX-XXXX. Writing the offer as plain text instead leaves a code that was never created in the store, so the recipient cannot redeem it. - 'dynamicDiscount' is the WooCommerce equivalent of 'discount' — same object, same components and placeholder, except that the 'discount_button' component is required. A 'discount' block on a WooCommerce store is skipped when the email is sent, so it ships the placeholder to the recipient as the code. - 'staticDiscount' (WooCommerce) instead carries one fixed code that already exists in the store, and gets no code at send time. It does not accept a 'discount_button'. Use it only when the brand explicitly asked for a fixed code. - 'countdown' requires one un-roled image component. Its image source and countdown.src are generated from countdown.timerID and cannot be supplied by the client.
          - `video` Video: Video block for displaying a video in the email
            - `altText` string: Video alt text - alternative text for the video for accessibility
            - `id` string: Video ID - Omnisend video ID - can be retrieved from the Video API
            - `image` Image: Image block for displaying images in the email
              - …
            - `link` string: Video link - where the video will redirect on click
        - `id` string: Column unique identifier - must be unique within the template
        - `styleProperties` StyleProperties: Style properties for the section
          - `alignment` string: Alignment - used to align the content horizontally
          - `backgroundColor` string: Background color - used to set the background color of the content
          - `backgroundImageID` string: Background image ID - ID of the background image asset. Must be present in Image API
          - `backgroundPosition` string: Background position - used to position the background image
          - `backgroundRepeat` string: Background repeat - used to repeat the background image
          - `backgroundSize` string: Background size - used to size the background image
          - `border` string: Border - used to add a border to the content
          - `borderRadius` string: Border radius
          - `color` string: Text color
          - `dividerColor` string: Divider color
          - `fontFamily` string: Font family
          - `fontSize` string: Font size
          - `fontStyle` string: Font style
          - `fontWeight` string: Font weight
          - `innerPadding` string: Inner padding
          - `innerPaddingBottom` string: Inner padding bottom
          - `innerPaddingLeft` string: Inner padding left
          - `innerPaddingRight` string: Inner padding right
          - `innerPaddingTop` string: Inner padding top
          - `isBackgroundPaddingsExcluded` boolean: Whether to exclude background paddings - used to exclude paddings from the background image
          - `letterSpacing` string: Letter spacing - spacing between letters
          - `lineHeight` string: Line height
          - `linkColor` string: Link color
          - `padding` string: Padding
          - `paddingBottom` string: Padding bottom
          - `paddingLeft` string: Padding left
          - `paddingRight` string: Padding right
          - `paddingTop` string: Padding top
          - `priceColor` string: Price color - used to color the price text
          - `secondaryColor` string: Secondary color - used to color the secondary text
          - `textBackgroundColor` string: Text Background color - used to set the text background color
          - `textDecoration` string: Text decoration
          - `verticalAlign` string: Vertical alignment - used to align the content vertically
        - `width` string: Column width - used to set the width of the column
      - `id` string: Row unique identifier - must be unique within the template
      - `styleProperties` StyleProperties: Style properties for the section
        - `alignment` string: Alignment - used to align the content horizontally
        - `backgroundColor` string: Background color - used to set the background color of the content
        - `backgroundImageID` string: Background image ID - ID of the background image asset. Must be present in Image API
        - `backgroundPosition` string: Background position - used to position the background image
        - `backgroundRepeat` string: Background repeat - used to repeat the background image
        - `backgroundSize` string: Background size - used to size the background image
        - `border` string: Border - used to add a border to the content
        - `borderRadius` string: Border radius
        - `color` string: Text color
        - `dividerColor` string: Divider color
        - `fontFamily` string: Font family
        - `fontSize` string: Font size
        - `fontStyle` string: Font style
        - `fontWeight` string: Font weight
        - `innerPadding` string: Inner padding
        - `innerPaddingBottom` string: Inner padding bottom
        - `innerPaddingLeft` string: Inner padding left
        - `innerPaddingRight` string: Inner padding right
        - `innerPaddingTop` string: Inner padding top
        - `isBackgroundPaddingsExcluded` boolean: Whether to exclude background paddings - used to exclude paddings from the background image
        - `letterSpacing` string: Letter spacing - spacing between letters
        - `lineHeight` string: Line height
        - `linkColor` string: Link color
        - `padding` string: Padding
        - `paddingBottom` string: Padding bottom
        - `paddingLeft` string: Padding left
        - `paddingRight` string: Padding right
        - `paddingTop` string: Padding top
        - `priceColor` string: Price color - used to color the price text
        - `secondaryColor` string: Secondary color - used to color the secondary text
        - `textBackgroundColor` string: Text Background color - used to set the text background color
        - `textDecoration` string: Text decoration
        - `verticalAlign` string: Vertical alignment - used to align the content vertically
    - `settings` Settings: Settings for the section
      - `backgroundType` string: Background type - determines whether the section background is a color or image
      - `customFonts` CustomFont[]: Custom fonts used in this section
        - `id` string: ID of the custom font
      - `dynamicList` DynamicList: Dynamic list settings for repeating content blocks
        - `columnCount` integer: Number of columns in the list layout
        - `layout` string: Layout type for the list items
        - `listPath` string: Data path for the list items source
        - `repetitionCount` integer: Maximum number of items to display
      - `excludeProducts` string[]: Products to exclude from display when abandoned products section is used. Products are excluded from display if they are in the list of products that were abandoned by the contact.
      - `filter` Filter: Filter for conditional display of content
        - `operator` string: Filter operator - logical operator to combine multiple filter rules
        - `rules` Rule[]: Filter rules - array of filter rules
          - `operator` string: Filter operator - comparison operator for the filter condition
          - `property` FilterProperty: Filter property for conditional display of content
            - `id` string: Filter property unique identifier
            - `isSystem` boolean: Indicates whether the property is a built-in system property (true) or a user-defined custom property (false).
            - `name` string: Filter property name
            - `type` string: Filter property type
          - `value` string: Filter value - value to compare against the property
      - `isColumnStackDisabled` boolean: Whether to disable column stacking - used to display content in a single column
      - `isOutOfStockHidden` boolean: Whether to hide out of stock products from product sections
      - `isProductImagesFitted` boolean: Whether to fit product images to the container - used to display product images in a single line
      - `sideBySideProductLayout` string: Side by side product layout
      - `universalLayoutID` string: Universal layout ID - ID of the universal layout the section references. If present, the section is a universal_layout reference whatever its type: it is returned with rows null, its content comes from the universal layout, and rows sent with it are rejected. Locked email content (a campaign that has started sending) instead returns the layout content the email was sent with.
    - `styleProperties` StyleProperties: Style properties for the section
      - `alignment` string: Alignment - used to align the content horizontally
      - `backgroundColor` string: Background color - used to set the background color of the content
      - `backgroundImageID` string: Background image ID - ID of the background image asset. Must be present in Image API
      - `backgroundPosition` string: Background position - used to position the background image
      - `backgroundRepeat` string: Background repeat - used to repeat the background image
      - `backgroundSize` string: Background size - used to size the background image
      - `border` string: Border - used to add a border to the content
      - `borderRadius` string: Border radius
      - `color` string: Text color
      - `dividerColor` string: Divider color
      - `fontFamily` string: Font family
      - `fontSize` string: Font size
      - `fontStyle` string: Font style
      - `fontWeight` string: Font weight
      - `innerPadding` string: Inner padding
      - `innerPaddingBottom` string: Inner padding bottom
      - `innerPaddingLeft` string: Inner padding left
      - `innerPaddingRight` string: Inner padding right
      - `innerPaddingTop` string: Inner padding top
      - `isBackgroundPaddingsExcluded` boolean: Whether to exclude background paddings - used to exclude paddings from the background image
      - `letterSpacing` string: Letter spacing - spacing between letters
      - `lineHeight` string: Line height
      - `linkColor` string: Link color
      - `padding` string: Padding
      - `paddingBottom` string: Padding bottom
      - `paddingLeft` string: Padding left
      - `paddingRight` string: Padding right
      - `paddingTop` string: Padding top
      - `priceColor` string: Price color - used to color the price text
      - `secondaryColor` string: Secondary color - used to color the secondary text
      - `textBackgroundColor` string: Text Background color - used to set the text background color
      - `textDecoration` string: Text decoration
      - `verticalAlign` string: Vertical alignment - used to align the content vertically
    - `type` 'products_listing' | 'product_recommender' | 'product_cart_recovery' | 'product_back_in_stock' | 'badge' | 'preheader' | 'dynamic_list' | 'universal_layout' | '': Section type - determines the section functionality and available content options. products_listing: manually selected products. product_recommender: personalized recommendations (requires productRecommender). product_cart_recovery: abandoned cart items. product_back_in_stock: restocked items. preheader: inbox preview text. badge: free-plan branding badge. dynamic_list: repeats content over a list. universal_layout: references a saved universal layout through settings.universalLayoutID. The layout content is resolved when the email is rendered or sent, so the section is returned with rows null and rows sent with it are rejected; change the layout itself through the universal layouts endpoints. Empty string (or field omitted): plain layout section with no special functionality.
    - `visibility` Visibility: Visibility settings for the template
      - `isDesktopVisible` boolean: Whether the template is visible on desktop devices
      - `isMobileVisible` boolean: Whether the template is visible on mobile devices
  - `updatedAt` string: Content updated at (read-only)

## Other responses

- `400`: Invalid content ID or missing brand ID
- `401`: Authentication is missing or invalid
- `403`: Insufficient permissions for this operation
- `404`: Content not found
- `410`: API version has been retired
- `429`: Rate limit exceeded
- `500`: Unexpected error occurred

---

[API](https://skmtc.dev/omnisend/apis/email-content-api.md) - [All operations](https://skmtc.dev/omnisend/apis/email-content-api/llms.txt) - [OpenAPI document](https://skmtc.dev/omnisend/apis/email-content-api/revisions/4f249eb0de04?raw)
