Mapp Marketing Cloud Draft Message API

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

Operations 6

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 /draftmessage/create Create a draft message · Create a draft message #
Ask an LLM
“How do I start a new email or SMS as a draft?”
“Can I set a subject and HTML body when creating a message draft?”
Tell an agent
Create a draft message named Spring Sale with subject Our spring offers.
Start a new SMS draft with this text.
DELETE /draftmessage/delete Delete a draft message · Delete a draft message #
Ask an LLM
“Can I throw away a draft message I no longer need?”
“How do I delete a message draft by its ID?”
Tell an agent destructive · confirm first
Delete draft message {draftMessageId}.
Discard the draft with ID {draftMessageId}.
POST /draftmessage/find Search draft messages · Find draft messages #
Ask an LLM
“Which draft messages were created in the last week?”
“What date format does the draft message filter expect?”
Tell an agent
Find draft messages matching the name Newsletter.
Search our drafts created since the start of the month.
GET /draftmessage/get Get a draft message · Get a draft message #
Ask an LLM
“What subject and body does a specific draft currently have?”
“Can I open one draft message by its ID?”
Tell an agent
Get draft message {draftMessageId}.
Show me the content of draft {draftMessageId}.
GET /draftmessage/saveAsPreparedMessage Turn a draft into a prepared message · Save a draft message as a prepared message #
Ask an LLM
“How do I convert a draft into a prepared message for a group?”
“Where do I find the channel ID needed to save a draft as prepared?”
Tell an agent
Save draft {draftMessageId} as a prepared message in group {groupId} with sender profile {senderProfileName}.
Prepare draft {draftMessageId} for group {groupId} on channel {channelId} using sender {senderProfileName}.
POST /draftmessage/update Update a draft message · Update a draft message #
Ask an LLM
“Can I change the subject line of a draft I already created?”
“How do I edit the HTML body of an existing message draft?”
Tell an agent
Update draft 18060600 with a new subject line.
Replace the HTML body of my existing draft.

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

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.

        Request body example:


        {

        "name": "Test Draft Message",

        "externalId": null,

        "messageCategoryId": null,

        "message":

        {

        "subject": "This is draft test",

        "emailBodyText": null,

        "emailBodyHtml": "Test",

        "smsText": null,

        "faxText": null,

        "emailHeaders":

        [

        ],

        "attachments":

        [

        ],

        "attachmentReferences": null,

        "encoding": "ISO-8859-1",

        "encodingSMS": "ISO-8859-1",

        "imageHandlingMode": "none"

        }

        }


        Example body with from and Reply-to headers:


        {

        "name": "Test Draft Message",

        "externalId": null,

        "messageCategoryId": null,

        "message":

        {

        "subject": "This is draft test",

        "emailBodyText": null,

        "emailBodyHtml": "Test",

        "smsText": null,

        "faxText": null,

        "emailHeaders":

        [{"name":"from","value":"John"},

        {"name":"Reply-to","value":"Bob "}],

        "attachments":[],

        "attachmentReferences": null,

        "encoding": "ISO-8859-1",

        "encodingSMS": "ISO-8859-1",

        "imageHandlingMode": "none"

        }

        }


        ImageHandlingMode values:


        "none" - Image links are unchanged

        "inline" - Image are inlined (Offline HTML)

        "host" - Image are Hosted in Mapp Engage (Online HTML)'
      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.

        Request body example:


        {

        "id": 18060600,

        "name": "Test Draft Message",

        "externalId": null,

        "messageCategoryId": null,

        "message":

        {

        "subject": "This is draft test",

        "emailBodyText": null,

        "emailBodyHtml": "Test",

        "smsText": null,

        "faxText": null,

        "emailHeaders":

        [

        ],

        "attachments":

        [

        ],

        "attachmentReferences": null,

        "encoding": "ISO-8859-1",

        "encodingSMS": "ISO-8859-1",

        "imageHandlingMode": "none"

        }

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