MoEngage Content Blocks API

Use these operations to programmatically fetch, create, and update reusable content blocks.

Business capability
Content Marketing Management BC-400.70

Operations 4

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

POST /content-blocks Create a new content block · Create Content Block #
Ask an LLM
“How do I create a reusable content block for campaigns?”
“Can a new content block be made for Inform alerts instead of Engage campaigns?”
Tell an agent
Create a new content block named {name} labelled {label} with content {raw_content}.
Create a {content_type} content block {name} for source {source}.
PUT /content-blocks Update an existing content block · Update Content Block #
Ask an LLM
“How do I edit the HTML of a content block that already exists?”
“Can I change a saved content block's status or rename it?”
Tell an agent
Update content block {id} with new content {raw_content}.
Rename existing content block {id} to {name} and set its status to {status}.
POST /content-blocks/get-by-ids Fetch specific content blocks by ID · Get Specific Content Blocks #
Ask an LLM
“How do I fetch several content blocks when I already know their IDs?”
“Can I get the raw content of particular content blocks by ID?”
Tell an agent
Get the content blocks with IDs {ids}.
Fetch content blocks {ids} including their raw content.
POST /content-blocks/search Search content blocks · Search Content Blocks #
Ask an LLM
“Which content blocks exist in my MoEngage account?”
“Can I filter my content blocks to find the ones I need?”
Tell an agent
Search my content blocks using filters {filters}.
List all the content blocks in my account.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/moengage-content-blocks-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

moengage-content-blocks-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: MoEngage Content Block Content Blocks 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.'
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: []
tags:
- name: Content Blocks
  description: Use these operations to programmatically fetch, create, and update reusable content blocks.
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: <h1>Huge Summer Sale!</h1>
                  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
      operationId: postContentBlocks
      x-operation-id-source: derived
    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: <h1>Massive Summer Sale!</h1>
              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
      operationId: putContentBlocks
      x-operation-id-source: derived
  /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
      operationId: postContentBlocksGetByIds
      x-operation-id-source: derived
  /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
      operationId: postContentBlocksSearch
      x-operation-id-source: derived
components:
  schemas:
    SearchContentBlockRequest:
      type: object
      properties:
        filters:
          type: object
          description: 'A set of filters to apply to the search.

            <Note>You can send empty filters if you want all the content blocks: `{ "filters" : {} }`</Note>

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

            <Note>For more information, refer to [Teams](/user-guide/settings/account/team-management/teams-in-moengage).</Note>

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

            <Note>If you are not using nested content blocks, you can pass this as an empty array: `content_block_used : []`</Note>

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

            <Note>You cannot change the communication type after the content block is created.</Note>

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

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

            <Note>For more information, refer to [Teams](/user-guide/settings/account/team-management/teams-in-moengage).</Note>

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

            <Note>If you are not using nested content blocks, you can pass this as an empty array: `content_block_used : []`</Note>

            '
        images_used:
          type: array
          items:
            type: string
            format: uri
          description: Images used in content block
    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
    GetByIdsListResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/GetByIdsResponseContentBlock'
    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
    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
    SearchContentBlockListResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/SearchResponseContentBlock'
  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).

        '