openapi: 3.0.3
info:
title: MoEngage Content Block API
version: '1.0'
description: >
Content blocks allow marketers to reuse the same content across multiple campaigns. For example, a block might be a repeatedly used header, footer, or designed call-to-action button.
This API enables you to fetch, create, and update content blocks on your MoEngage dashboard. [Read more about Content blocks in MoEngage](/user-guide/content/content-blocks/content-blocks).
tags:
- name: Content Blocks
description: Use these operations to programmatically fetch, create, and update reusable content blocks.
servers:
- url: 'https://api-{dc}.moengage.com/v1/external/campaigns'
description: MoEngage Content Blocks API Server
variables:
dc:
default: '01'
description: 'The ''dc'' in the API Endpoint URL refers to the MoEngage Data Center (DC). MoEngage hosts each customer in a different DC. You can find your DC number and replace the value of ''dc'' in the URL by referring to the DC and API endpoint mapping [here](/api/introduction#data-centers). Your MoEngage Data Center (DC) can be 01, 02, 03, 04, 05, 06, or 101.'
security:
- BasicAuth: []
paths:
/content-blocks:
post:
tags:
- Content Blocks
summary: Create Content Block
description: >
This API creates a content block in MoEngage.
Use the `source` field in the request body to specify the communication type for the content block:
- `"source": "ENGAGE"`: Creates a content block for use in Engage campaigns.
- `"source": "INFORM"`: Creates a content block for use in Inform alerts.
x-mint-groups:
- Management
parameters:
- name: MOE-APPKEY
in: header
required: true
schema:
type: string
description: |
This is the Workspace ID of your MoEngage account that must be passed with the request. You can find it in the MoEngage dashboard at **Settings** > **Account** > **APIs** > **Workspace ID (earlier app id)**.
example: 'YOUR_WORKSPACE_ID_XXXX'
requestBody:
required: true
description: The details of the content block to be created.
content:
application/json:
schema:
$ref: '#/components/schemas/CreateContentBlockRequest'
examples:
engage:
summary: Create content block for Engage
value:
name: "Summer_Sale_Header"
label: "summer_sale_header_2025"
description: "Header for all summer sale communications"
content_type: "HTML"
raw_content: "
Huge Summer Sale!
"
images_used: []
status: "ACTIVE"
created_by: "marketing@example.com"
content_block_used: []
source: "ENGAGE"
inform:
summary: Create content block for Inform
value:
name: "Order_Status_Update"
label: "order_status_update"
description: "Reusable alert copy for order status notifications"
content_type: "TEXT"
raw_content: "Your order {{order_id}} has shipped."
images_used: []
status: "ACTIVE"
created_by: "alerts@example.com"
content_block_used: []
source: "INFORM"
responses:
'200':
description: |
Success. The response body is empty. To retrieve the ID of the newly created content block, use the Search Content Blocks API.
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
title: "Invalid Field Value"
description: "app_key - Some of the field values are invalid: app_key : None"
code: "nGpUNpDQ"
'5XX':
description: Failure. Server issue
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
title: "Internal Server Error"
description: "An unexpected error occurred on the server."
code: "SRV_ERR_123"
put:
tags:
- Content Blocks
summary: Update Content Block
description: >
This API updates the content blocks in MoEngage.
parameters:
- name: MOE-APPKEY
in: header
required: true
schema:
type: string
description: |
This is the Workspace ID of your MoEngage account that must be passed with the request. You can find it in the MoEngage dashboard at **Settings** > **Account** > **APIs** > **Workspace ID (earlier app id)**.
example: 'YOUR_WORKSPACE_ID_XXXX'
requestBody:
required: true
description: The updated details for the content block.
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateContentBlockRequest'
example:
id: "634fdf4db9c206ba55b8223b"
name: "Summer_Sale_Header_Updated"
status: "ACTIVE"
raw_content: "Massive Summer Sale!
"
updated_by: "abc@gmail.com"
content_block_used: []
responses:
'200':
description: |
Success. The response body is empty.
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
title: "Invalid Field Value"
description: "app_key - Some of the field values are invalid: app_key : None"
code: "nGpUNpDQ"
'5XX':
description: Failure. Server issue
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
title: "Internal Server Error"
description: "An unexpected error occurred on the server."
code: "SRV_ERR_123"
/content-blocks/get-by-ids:
post:
tags:
- Content Blocks
summary: Get Specific Content Blocks
description: >
This API retrieves specific content blocks from the available content blocks in your MoEngage account.
parameters:
- name: MOE-APPKEY
in: header
required: true
schema:
type: string
description: |
This is the Workspace ID of your MoEngage account that must be passed with the request. You can find it in the MoEngage dashboard at **Settings** > **Account** > **APIs** > **Workspace ID (earlier app id)**.
example: 'YOUR_WORKSPACE_ID_XXXX'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/GetByIdsRequest'
example:
ids: ["634fdf4db9c206ba55b8223b"]
is_raw_content_required: true
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/GetByIdsListResponse'
example:
data:
- id: "634fdf4db9c206ba55b8223ab"
name: "Contentblocktest2"
label: "Contentblocktest2"
description: ""
content_type: "TEXT"
content: "aa"
raw_content: "aa"
status: "ACTIVE"
created_by: "user@email.com"
created_at: "2022-10-19T11:28:13.925000"
updated_by: "test"
updated_at: "2022-10-21T08:38:51.419000"
tag_ids: ["0"]
team_ids: ["test"]
images_used: []
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
title: "Invalid Field Value"
description: "app_key - Some of the field values are invalid: app_key : None"
code: "nGpUNpDQ"
'5XX':
description: Failure. Server issue
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
title: "Internal Server Error"
description: "An unexpected error occurred on the server."
code: "SRV_ERR_123"
/content-blocks/search:
post:
tags:
- Content Blocks
summary: Search Content Blocks
description: >
This API searches for the available content blocks in your MoEngage account.
parameters:
- name: MOE-APPKEY
in: header
required: true
schema:
type: string
description: |
This is the Workspace ID of your MoEngage account that must be passed with the request. You can find it in the MoEngage dashboard at **Settings** > **Account** > **APIs** > **Workspace ID (earlier app id)**.
example: 'YOUR_WORKSPACE_ID_XXXX'
requestBody:
required: true
description: A set of filters to apply to the search.
content:
application/json:
schema:
$ref: '#/components/schemas/SearchContentBlockRequest'
example:
filters:
content_type: ["TEXT"]
team_ids: ["0"]
tag_ids: ["6141c7ec9b4cbd0b57c872e5"]
status: ["ACTIVE"]
updated_by: ["geetima@moengage.com"]
search_text: "BT_non_personaliation"
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/SearchContentBlockListResponse'
example:
data:
- id: "61dd90a4cdfd67a8d48ef681"
name: "BT_non_personaliation"
label: "BT_non_personaliation"
description: "BT_non_personaliation"
content_type: "TEXT"
status: "ACTIVE"
created_by: "geetima@moengage.com"
created_at: "2022-01-11T14:13:56.063000"
updated_by: "geetima@moengage.com"
updated_at: "2022-01-11T14:15:31.254000"
tag_ids: ["6141c7ec9b4cbd0b57c872e5", "61409d091202397cc82f8356"]
team_ids: ["0"]
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
title: "Invalid Field Value"
description: "app_key - Some of the field values are invalid: app_key : None"
code: "nGpUNpDQ"
'5XX':
description: Failure. Server issue
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
title: "Internal Server Error"
description: "An unexpected error occurred on the server."
code: "SRV_ERR_123"
components:
securitySchemes:
BasicAuth:
type: http
scheme: basic
description: |
Authentication is done via Basic Auth. This requires a base64-encoded string of your credentials in the format 'username:password'.
- **Username**: Use your MoEngage workspace ID (also known as the App ID). You can find it in the MoEngage dashboard at **Settings** > **Account** > **APIs** > **Workspace ID (earlier app id)**.
- **Password**: Use your API Key, which you can find within the **Campaign report/Business events/Custom templates/Catalog API/Inform Report** tile.
For more information on authentication and getting your credentials, refer [here](https://www.moengage.com/docs/api/introduction#getting-your-credentials).
schemas:
ErrorResponse:
type: object
properties:
title:
type: string
example: "Invalid Field Value"
description:
type: string
example: "app_key - Some of the field values are invalid: app_key : None"
code:
type: string
example: "nGpUNpDQ"
CreateContentBlockRequest:
title: Create Content Block Attribute Mapping
type: object
required:
- name
- label
- raw_content
- content_type
- created_by
- content_block_used
properties:
name:
type: string
description: Name of the content block
label:
type: string
description: Label to uniquely identify your content block
status:
type: string
enum: [ACTIVE, DRAFT]
description: Shows the status of the content block
raw_content:
type: string
description: Content of the content block
content_type:
type: string
enum: [HTML, TEXT]
description: Type of the content block - HTML/ Plain Text
description:
type: string
description: Description of the content block
created_by:
type: string
format: email
description: Email id of the user who is creating the content block
tag_ids:
type: array
items:
type: string
description: Tags associated with the content block
team_ids:
type: array
items:
type: string
description: >
Teams for which the content block should be available. Passing team id is mandatory if you are using multiple teams.
For more information, refer to [Teams](/user-guide/settings/account/team-management/teams-in-moengage).
content_block_used:
type: array
items:
type: string
description: >
In case, you are using nested content blocks, provide the names of the other content blocks used in this content block.
If you are not using nested content blocks, you can pass this as an empty array: `content_block_used : []`
images_used:
type: array
items:
type: string
format: uri
description: Images used in content block
source:
type: string
enum: [ENGAGE, INFORM]
description: >
Communication type for the content block. Supported values are:
* `ENGAGE`: Creates a content block for use in Engage campaigns.
* `INFORM`: Creates a content block for use in Inform alerts.
You cannot change the communication type after the content block is created.
UpdateContentBlockRequest:
title: Update Content Block Attribute Mapping
type: object
required:
- id
- name
- status
- raw_content
- updated_by
- content_block_used
properties:
id:
type: string
description: ID of the content block that you want to update
name:
type: string
description: Name of the content block
status:
type: string
enum: [ACTIVE, DRAFT]
description: Status of the content block - DRAFT/ACTIVE
raw_content:
type: string
description: Content of the content block
description:
type: string
description: Description of the content block
updated_by:
type: string
format: email
description: Email id of the user who is updating the content block
tag_ids:
type: array
items:
type: string
description: Tags associated to the content block
team_ids:
type: array
items:
type: string
description: >
Teams for which the content block should be available. Passing team id is mandatory if you are using multiple Teams.
For more information, refer to [Teams](/user-guide/settings/account/team-management/teams-in-moengage).
content_block_used:
type: array
items:
type: string
description: >
In case, you are using nested content blocks, provide the names of the other content blocks used in this content block.
If you are not using nested content blocks, you can pass this as an empty array: `content_block_used : []`
images_used:
type: array
items:
type: string
format: uri
description: Images used in content block
GetByIdsRequest:
type: object
required:
- ids
properties:
ids:
type: array
items:
type: string
description: Comma-separated list of the content block ids
is_raw_content_required:
type: boolean
description: >
Boolean Flag used to control whether we need to show raw content or not.
* `True`: Returns Non-Personalized content which was given during creation.
* `False`: Does not return Personalized content
default: false
SearchContentBlockRequest:
type: object
properties:
filters:
type: object
description: |
A set of filters to apply to the search.
You can send empty filters if you want all the content blocks: `{ "filters" : {} }`
properties:
content_type:
type: array
items:
type: string
enum: [HTML, TEXT]
description: Type of the content block - HTML/Text
team_ids:
type: array
items:
type: string
description: >
Name of the teams for which the content block is enabled. This is only applicable to the accounts where Teams is enabled. For more information, refer to [Teams](/user-guide/settings/account/team-management/teams-in-moengage).
tag_ids:
type: array
items:
type: string
description: Ids of the tags
status:
type: array
items:
type: string
enum: [ACTIVE, ARCHIVED]
description: Status of the content block
updated_by:
type: array
items:
type: string
format: email
description: Email id of the user who updated the content block
search_text:
type: string
description: You can use this to search content block by content block name
SearchResponseContentBlock:
type: object
description: Attribute Mapping for Search Response
properties:
id:
type: string
description: Content block id that was passed in the request
name:
type: string
description: Name of the content block
description:
type: string
description: Description of the content block
content_type:
type: string
description: Type of the content block - HTML/Text
content:
type: string
description: Content of the content block
created_by:
type: string
description: Email id of the user who created the content block
created_at:
type: string
description: Date Time of the content block creation
updated_by:
type: string
description: Email id of the user who updates the content block
updated_at:
type: string
description: Date Time of the content block update
tag_ids:
type: array
items:
type: string
description: Tags associated with the content block
team_ids:
type: array
items:
type: string
description: >
Name of the teams for which the content block is enabled. This is only applicable to the accounts where Teams is enabled. For more information, refer to [Teams](/user-guide/settings/account/team-management/teams-in-moengage).
GetByIdsResponseContentBlock:
type: object
description: Attribute Mapping for Get Specific Content Blocks Response
properties:
id:
type: string
description: Content block id that was passed in the request
name:
type: string
description: Name of the content block
description:
type: string
description: Description of the content block
label:
type: string
description: Label of the content block
content_type:
type: string
description: Type of the content block - HTML/Text
content:
type: string
description: Content of the content block
raw_content:
type: string
description: Raw content of the content block. This is returned when is_raw_content_required=true is passed in the request.
created_by:
type: string
description: Email id of the user who created the content block
status:
type: string
description: Shows the status of the content block
created_at:
type: string
description: Date Time of the content block creation
updated_by:
type: string
description: Email id of the user who updates the content block
updated_at:
type: string
description: Date Time of the content block update
tag_ids:
type: array
items:
type: string
description: Tags associated with the content block
team_ids:
type: array
items:
type: string
description: >
Name of the teams for which the content block is enabled. This is only applicable to the accounts where Teams is enabled. For more information, refer to [Teams](/user-guide/settings/account/team-management/teams-in-moengage).
images_used:
type: array
items:
type: string
description: Images used in content block
SearchContentBlockListResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/SearchResponseContentBlock'
GetByIdsListResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/GetByIdsResponseContentBlock'