Skip to main content
POST
/
content-blocks
Create Content Block
curl --request POST \
  --url https://api-0{dc}.moengage.com/v1/external/campaigns/content-blocks \
  --header 'Authorization: Basic <encoded-value>' \
  --header 'Content-Type: application/json' \
  --header 'MOE-APPKEY: <moe-appkey>' \
  --data '
{
  "name": "Summer_Sale_Header",
  "label": "summer_sale_header_2025",
  "description": "Header for all summer sale communications",
  "content_type": "HTML",
  "raw_content": "<h1>Huge Summer Sale!</h1>",
  "images_used": [],
  "status": "ACTIVE",
  "created_by": "[email protected]",
  "content_block_used": []
}
'
{
  "title": "Invalid Field Value",
  "description": "app_key - Some of the field values are invalid: app_key : None",
  "code": "nGpUNpDQ"
}

Authorizations

Authorization
string
header
required

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.

Headers

MOE-APPKEY
string
required

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).

Body

application/json

The details of the content block to be created.

name
string
required

Name of the content block

label
string
required

Label to uniquely identify your content block

raw_content
string
required

Content of the content block

content_type
enum<string>
required

Type of the content block - HTML/ Plain Text

Available options:
HTML,
TEXT
created_by
string<email>
required

Email id of the user who is creating the content block

content_block_used
string[]
required

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 : []

status
enum<string>

Shows the status of the content block

Available options:
ACTIVE,
DRAFT
description
string

Description of the content block

tag_ids
string[]

Tags associated with the content block

team_ids
string[]

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.

images_used
string<uri>[]

Images used in content block

Response

Success