Mapp Marketing Cloud Draft Message API

The Draft Message API from Mapp Marketing Cloud — 6 operation(s) for draft message.

Operations 6

POST /draftmessage/create Create a draft message #
DELETE /draftmessage/delete Delete a draft message #
POST /draftmessage/find Find draft messages #
GET /draftmessage/get Get a draft message #
GET /draftmessage/saveAsPreparedMessage Save a draft message as a prepared message #
POST /draftmessage/update Update a draft message #

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/mapp-draft-message-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 email required.

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

OpenAPI Specification

mapp-draft-message-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Mapp Engage public Draft Message API
  version: '1'
  description: 'Mapp Engage REST API (REST 2.0, incremental version v19). Assembled verbatim from the per-operation OpenAPI fragments Mapp publishes on each endpoint page of https://docs.mapp.com/apidocs/. The base URL is tenant-specific: take your Mapp Engage login host and append /api/rest/v19.'
  contact:
    name: Mapp Technical Support
    url: https://mapp.com/tech-support/
servers:
- url: /api/rest/v19
security:
- basicAuth: []
tags:
- name: Draft Message
paths:
  /draftmessage/create:
    post:
      tags:
      - Draft Message
      summary: Create a draft message
      description: 'Creates a new message as a draft.<br>Request body example:<br><br><pre>{<br>    "name": "Test Draft Message",<br>    "externalId": null,<br>    "messageCategoryId": null,<br>    "message":<br>    {<br>        "subject": "This is draft test",<br>        "emailBodyText": null,<br>        "emailBodyHtml": "Test",<br>        "smsText": null,<br>        "faxText": null,<br>        "emailHeaders":<br>        [<br>        ],<br>        "attachments":<br>        [<br>        ],<br>        "attachmentReferences": null,<br>        "encoding": "ISO-8859-1",<br>        "encodingSMS": "ISO-8859-1",<br>        "imageHandlingMode": "none"<br>    }<br>}</pre><br><br>Example body with from and Reply-to headers:<br><br><br><pre>{<br>    "name": "Test Draft Message",<br>    "externalId": null,<br>    "messageCategoryId": null,<br>    "message":<br>    {<br>        "subject": "This is draft test",<br>        "emailBodyText": null,<br>        "emailBodyHtml": "Test",<br>        "smsText": null,<br>        "faxText": null,<br>        "emailHeaders":<br>        [{"name":"from","value":"John<info@qamanual.staging11.shortest-route.com>"},<br>         {"name":"Reply-to","value":"Bob <info@qamanual.staging11.shortest-route.com>"}],       <br>        "attachments":[],<br>        "attachmentReferences": null,<br>        "encoding": "ISO-8859-1",<br>        "encodingSMS": "ISO-8859-1",<br>        "imageHandlingMode": "none"<br>    }<br>}</pre><br>ImageHandlingMode values:<br><pre>"none" - Image links are unchanged <br>"inline" - Image are inlined (Offline HTML) <br>"host" - Image are Hosted in Mapp Engage (Online HTML)<br></pre>'
      operationId: CreateDraftMessage
      responses:
        '200':
          description: 'Example response when dmarcTrue=true and domain not matching: <br><br>{<br>   "errorActor": null,<br>   "errorCode": "INVALID_PARAMETER",<br>   "message": "reply-to email must contain valid email domain",<br>   "parameterName": null,<br>   "propertyName": null,<br>   "value": null<br>}'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DraftMessage'
            application/xml:
              schema:
                $ref: '#/components/schemas/DraftMessage'
        '400':
          description: ''
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DraftMessage'
  /draftmessage/delete:
    delete:
      tags:
      - Draft Message
      summary: Delete a draft message
      description: Deletes a draft message identified by the specified draft message ID.
      operationId: DeleteDraftMessage
      parameters:
      - name: draftMessageId
        in: query
        description: ID of draft message
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '204':
          description: ''
        '404':
          description: ''
  /draftmessage/find:
    post:
      tags:
      - Draft Message
      summary: Find draft messages
      description: 'Finds draft messages specified by a draft message filter. Note: required date format "YYYY-DD-MM"'
      operationId: FindDraftMessage
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
            application/xml:
              schema:
                type: array
                items:
                  type: object
        '400':
          description: ''
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DraftMessageFilter'
  /draftmessage/get:
    get:
      tags:
      - Draft Message
      summary: Get a draft message
      description: Returns a draft message identified by the specified draft message ID.
      operationId: GetDraftMessage
      parameters:
      - name: draftMessageId
        in: query
        description: ID of draft message
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: 'Example response: <br><br>{<br>    "id": 18060600,<br>    "name": "Test",<br>    "externalId": null,<br>    "messageCategoryId": null,<br>    "message": {<br>        "subject": "Test",<br>        "emailBodyText": null,<br>        "emailBodyHtml": "<html><body>Test</body></html>",<br>        "smsText": null,<br>        "faxText": null,<br>        "emailHeaders": [],<br>        "attachments": [],<br>        "attachmentReferences": null,<br>        "encoding": "ISO-8859-1",<br>        "encodingSMS": "ISO-8859-1",<br>        "imageHandlingMode": "none"<br>    }<br>}'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DraftMessage'
            application/xml:
              schema:
                $ref: '#/components/schemas/DraftMessage'
        '400':
          description: ''
        '404':
          description: 'Error response: {<br>"errorActor": "CLIENT",<br>"errorCode": "INVALID_REQUEST",<br>"message": "Not Found"<br>}'
  /draftmessage/saveAsPreparedMessage:
    get:
      tags:
      - Draft Message
      summary: Save a draft message as a prepared message
      description: Saves draft message as a prepared message. The channel ID is available at the "Information" panel for each channel, at "Administration > Channels".
      operationId: saveAsPreparedMessage
      parameters:
      - name: draftMessageId
        in: query
        description: The draft message to be used in creating the prepared message
        required: true
        schema:
          type: integer
          format: int64
      - name: groupId
        in: query
        description: The id of the group to perform sendout on
        required: true
        schema:
          type: integer
          format: int64
      - name: channelId
        in: query
        description: The channel id associated with the message
        required: false
        schema:
          type: integer
          format: int64
      - name: senderProfileName
        in: query
        description: TLS sender profile. Requires a Feature Switch and setting up a profile name in Mapp Engage. (optional)
        required: true
        schema:
          type: string
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                type: string
            application/xml:
              schema:
                type: string
        '204':
          description: ''
        '400':
          description: ''
  /draftmessage/update:
    post:
      tags:
      - Draft Message
      summary: Update a draft message
      description: 'Updates a message draft.<br>Request body example:<br><br><pre>{<br>    "id": 18060600,<br>    "name": "Test Draft Message",<br>    "externalId": null,<br>    "messageCategoryId": null,<br>    "message":<br>    {<br>        "subject": "This is draft test",<br>        "emailBodyText": null,<br>        "emailBodyHtml": "Test",<br>        "smsText": null,<br>        "faxText": null,<br>        "emailHeaders":<br>        [<br>        ],<br>        "attachments":<br>        [<br>        ],<br>        "attachmentReferences": null,<br>        "encoding": "ISO-8859-1",<br>        "encodingSMS": "ISO-8859-1",<br>        "imageHandlingMode": "none"<br>    }<br>}</pre>'
      operationId: UpdateDraftMessage
      responses:
        '200':
          description: ''
        '400':
          description: ''
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DraftMessage'
components:
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: HTTP Basic authentication with a Mapp Engage system user of type API (or Hybrid).
x-apievangelist-provenance:
  method: searched
  generated: '2026-08-12'
  source: https://docs.mapp.com/apidocs/ (per-endpoint OpenAPI fragments)
  note: Union of the OpenAPI JSON fragments Mapp publishes on each endpoint page. Mapp does not serve one consolidated document at a public URL; the tenant-served Swagger lives at https://<your-engage-host>/apidoc/swagger.json and requires a tenant. Operation bodies, parameters, responses, tags, summaries and descriptions are verbatim from Mapp. The swagger/basePath/schemes/securityDefinitions envelope is added by API Evangelist from the published Getting Started guide; no operation content was authored.
  duplicate_operation_ids_suffixed: 30