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.
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/marketo-emails-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
openapi: 3.2.0
info:
description: Marketo Engage Rest API
version: '1.0'
title: Marketo Engage Rest Emails API
termsOfService: https://www.adobe.com/legal.html
contact:
name: Adobe Developer Relations
url: https://experienceleague.adobe.com/en/docs/marketo-developer/marketo/home
email: ''
license:
name: API License Agreement
url: https://experienceleague.adobe.com/en/docs/marketo-developer/marketo/api-license
servers:
- url: https://localhost:8080/
tags:
- name: Emails
description: Email Controller
paths:
/rest/asset/v1/email/byName.json:
get:
tags:
- Emails
summary: Get Email by Name
description: 'Returns email records based on the given name. Required Permissions: Read-Only Assets, Read-Write Assets'
operationId: getEmailByNameUsingGET
parameters:
- name: name
in: query
description: Name of the email
required: true
schema:
type: string
- name: status
in: query
description: Status filter for draft or approved versions
required: false
schema:
type: string
enum:
- approved
- draft
- name: folder
in: query
description: JSON representation of parent folder, with members 'id', and 'type' which may be 'Folder' or 'Program'
required: false
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseOfEmailResponse'
/rest/asset/v1/email/{id}.json:
get:
tags:
- Emails
summary: Get Email By Id
description: 'Returns an email record by its id. Required Permissions: Read-Only Assets, Read-Write Assets'
operationId: getEmailByIdUsingGET
parameters:
- name: id
in: path
description: id
required: true
schema:
type: integer
format: int32
- name: status
in: query
description: Status filter for draft or approved versions
required: false
schema:
type: string
enum:
- approved
- draft
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseOfEmailResponse'
post:
tags:
- Emails
summary: Update Email Metadata
description: 'Updates the metadata of an email asset. Required Permissions: Read-Write Assets'
operationId: updateEmailUsingPOST
parameters:
- name: id
in: path
description: id
required: true
schema:
type: integer
format: int32
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseOfEmailResponse'
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/UpdateEmailMetaDataRequest'
description: updateEmailRequest
required: true
/rest/asset/v1/email/{id}/approveDraft.json:
post:
tags:
- Emails
summary: Approve Email Draft
description: 'Approves the current draft of an email. Required Permissions: Approve Assets'
operationId: approveDraftUsingPOST
parameters:
- name: id
in: path
description: id
required: true
schema:
type: integer
format: int32
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseOfIdResponse'
/rest/asset/v1/email/{id}/clone.json:
post:
tags:
- Emails
summary: Clone Email
description: 'Clones the target email. Required Permissions: Read-Write Assets'
operationId: cloneEmailUsingPOST
parameters:
- name: id
in: path
description: id
required: true
schema:
type: integer
format: int32
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseOfEmailResponse'
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/CloneEmailRequest'
description: cloneEmailRequest
required: true
/rest/asset/v1/email/{id}/content.json:
get:
tags:
- Emails
summary: Get Email Content
description: 'Returns the content of the designated email. Required Permissions: Read-Only Assets, Read-Write Assets'
operationId: getEmailContentByIdUsingGET
parameters:
- name: id
in: path
description: id
required: true
schema:
type: integer
format: int32
- name: status
in: query
description: Status filter for draft or approved versions
required: false
schema:
type: string
enum:
- approved
- draft
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseOfEmailContentResponse'
post:
tags:
- Emails
summary: Update Email Content
description: 'Updates the content of an email. Required Permissions: Read-Write Assets'
operationId: updateEmailContentUsingPOST
parameters:
- name: id
in: path
description: id
required: true
schema:
type: integer
format: int32
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseOfIdResponse'
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/UpdateEmailComponentDataRequest'
description: updateEmailRequest
required: true
/rest/asset/v1/email/{id}/content/rearrange.json:
post:
tags:
- Emails
summary: Rearrange Email Modules
description: 'Rearranges the modules in an email. Required Permissions: Read-Write Assets'
operationId: rearrangeModulesUsingPOST
parameters:
- name: id
in: path
description: id
required: true
schema:
type: integer
format: int32
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseOfEmailModuleResponse'
requestBody:
content:
application/x-www-form-urlencoded:
schema:
type: string
description: JSON array of module positions. Each position must be a JSON object with members 'index' and a 'moduleId'
/rest/asset/v1/email/{id}/content/{htmlId}.json:
post:
tags:
- Emails
summary: Update Email Content Section
description: 'Updates the content in the given section. Required Permissions: Read-Write Assets'
operationId: updateEmailComponentContentUsingPOST
parameters:
- name: id
in: path
description: id
required: true
schema:
type: integer
format: int32
- name: htmlId
in: path
description: htmlId
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseOfIdResponse'
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/UpdateEmailComponentContentRequest'
description: request
required: true
/rest/asset/v1/email/{id}/content/{moduleId}/add.json:
post:
tags:
- Emails
summary: Add Email Module
description: 'Adds a new module to an email, with the given id. Required Permissions: Read-Write Assets'
operationId: addModuleUsingPOST
parameters:
- name: id
in: path
description: id
required: true
schema:
type: integer
format: int32
- name: moduleId
in: path
description: moduleId
required: true
schema:
type: string
- name: name
in: query
description: Name of the module
required: true
schema:
type: string
- name: index
in: query
description: Index of the module. Determines the order of the module in the email.
required: true
schema:
type: integer
format: int32
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseOfEmailModuleResponse'
/rest/asset/v1/email/{id}/content/{moduleId}/delete.json:
post:
tags:
- Emails
summary: Delete Module
description: 'Deletes the given module from the email. Required Permissions: Read-Write Assets'
operationId: deleteModuleUsingPOST
parameters:
- name: id
in: path
description: id
required: true
schema:
type: integer
format: int32
- name: moduleId
in: path
description: moduleId
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseOfEmailModuleResponse'
/rest/asset/v1/email/{id}/content/{moduleId}/duplicate.json:
post:
tags:
- Emails
summary: Duplicate Email Module
description: 'Creates a copy of the designated module in an email. Required Permissions: Read-Write Assets'
operationId: duplicateModuleUsingPOST
parameters:
- name: id
in: path
description: id
required: true
schema:
type: integer
format: int32
- name: moduleId
in: path
description: moduleId
required: true
schema:
type: string
- name: name
in: query
description: Name of the new module
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseOfEmailModuleResponse'
/rest/asset/v1/email/{id}/content/{moduleId}/rename.json:
post:
tags:
- Emails
summary: Rename Email Module
description: 'Renames a module. Required Permissions: Read-Write Assets'
operationId: renameUsingPOST
parameters:
- name: id
in: path
description: id
required: true
schema:
type: integer
format: int32
- name: moduleId
in: path
description: moduleId
required: true
schema:
type: string
- name: name
in: query
description: New module name
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseOfEmailModuleResponse'
/rest/asset/v1/email/{id}/delete.json:
post:
tags:
- Emails
summary: Delete Email
description: 'Deletes the target email. Required Permissions: Read-Write Assets'
operationId: deleteEmailUsingPOST
parameters:
- name: id
in: path
description: id
required: true
schema:
type: integer
format: int32
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseOfIdResponse'
/rest/asset/v1/email/{id}/discardDraft.json:
post:
tags:
- Emails
summary: Discard Email Draft
description: 'Discards the current draft of an email. Required Permissions: Read-Write Assets'
operationId: discardDraftUsingPOST
parameters:
- name: id
in: path
description: id
required: true
schema:
type: integer
format: int32
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseOfIdResponse'
/rest/asset/v1/email/{id}/dynamicContent/{contentId}.json:
get:
tags:
- Emails
summary: Get Email Dynamic Content
description: 'Retrieves the dynamic content record for the given section. Required Permissions: Read-Only Assets, Read-Write Assets'
operationId: getEmailDynamicContentUsingGET
parameters:
- name: id
in: path
description: Id of email
required: true
schema:
type: integer
format: int32
- name: contentId
in: path
description: Id of email dynamic content section
required: true
schema:
type: string
- name: status
in: query
description: Status filter for draft or approved versions
required: false
schema:
type: string
enum:
- approved
- draft
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseOfEmailDynamicContentResponse'
post:
tags:
- Emails
summary: Update Email Dynamic Content Section
description: 'Updates dynamic content in the given section. Required Permissions: Read-Write Assets'
operationId: updateEmailDynamicContentUsingPOST
parameters:
- name: id
in: path
description: Id of email
required: true
schema:
type: integer
format: int32
- name: contentId
in: path
description: Id of email dynamic content section
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseOfIdResponse'
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/UpdateEmailDynamicContentRequest'
description: Content properties
required: true
/rest/asset/v1/email/{id}/sendSample.json:
post:
tags:
- Emails
summary: Send Sample Email
description: 'Sends a sample email to the given email address. Leads may be impersonated to populate data for tokens and dynamic content. Required Permissions: Read-Write Assets'
operationId: sendSampleEmailUsingPOST
parameters:
- name: id
in: path
description: Id of the email
required: true
schema:
type: integer
format: int32
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseOfSendSampleResponse'
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/SendSampleEmailRequest'
description: sendSampleEmailRequest
required: true
/rest/asset/v1/email/{id}/unapprove.json:
post:
tags:
- Emails
summary: Unapprove Email
description: 'Unapproves the email and reverts it to a draft-only state. Required Permissions: Approve Assets'
operationId: unapproveDraftUsingPOST
parameters:
- name: id
in: path
description: id
required: true
schema:
type: integer
format: int32
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseOfIdResponse'
/rest/asset/v1/email/{id}/variable/{name}.json:
post:
tags:
- Emails
summary: Update Email Variable
description: 'Updates the value of a given variable in an email. Required Permissions: Read-Write Assets'
operationId: updateVariableUsingPOST
parameters:
- name: id
in: path
description: id
required: true
schema:
type: integer
format: int32
- name: name
in: path
description: name
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseOfEmailVariableResponse'
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/UpdateVariableRequest'
description: updateVariableRequest
/rest/asset/v1/email/{id}/variables.json:
get:
tags:
- Emails
summary: Get Email Variables
description: 'Returns a list of the available variables in an email. Required Permissions: Read-Only Assets, Read-Write Assets'
operationId: getEmailVariablesUsingGET
parameters:
- name: id
in: path
description: id
required: true
schema:
type: integer
format: int32
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseOfEmailVariableResponse'
/rest/asset/v1/email/ccFields.json:
get:
tags:
- Emails
summary: Get Email CC Fields
description: 'Returns the set of fields enabled for Email CC in the target instance. Required Permissions: Read-Only Assets, Read-Write Assets'
operationId: getEmailCCFieldsUsingGET
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseOfEmailCCFieldsResponse'
/rest/asset/v1/emails.json:
get:
tags:
- Emails
summary: Get Emails
description: 'Returns a list of emails matching the given filter parameters. Required Permissions: Read-Only Assets, Read-Write Assets.
Note: Emails created with the new email designer may appear in this API''s response, but some of the fields may be null or incomplete. For complete and reliable details of these assets, use the Emails (New) APIs; refer to the <a href="https://developer.adobe.com/marketo-apis/api/asset#operation/filterContentUsingGET_email">List Emails</a> endpoint.'
operationId: getEmailUsingGET
parameters:
- name: status
in: query
description: Status filter for draft or approved versions
required: false
schema:
type: string
enum:
- approved
- draft
- name: folder
in: query
description: JSON representation of parent folder, with members 'id', and 'type' which may be 'Folder' or 'Program'
required: false
schema:
type: string
- name: offset
in: query
description: Integer offset for paging
required: false
schema:
type: integer
format: int32
- name: maxReturn
in: query
description: Maximum number of emails to return. Max 200, default 20
required: false
schema:
type: integer
format: int32
- name: earliestUpdatedAt
in: query
description: Exclude emails prior to this date. Must be valid ISO-8601 string. See <a href="http://developers.marketo.com/rest-api/lead-database/fields/field-types/">Datetime</a> field type description.
schema:
type: string
- name: latestUpdatedAt
in: query
description: Exclude emails after this date. Must be valid ISO-8601 string. See <a href="http://developers.marketo.com/rest-api/lead-database/fields/field-types/">Datetime</a> field type description.
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseOfEmailResponse'
post:
tags:
- Emails
summary: Create Email
description: 'Creates a new email asset. Required Permissions: Read-Write Assets'
operationId: createEmailUsingPOST
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseOfEmailResponse'
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/CreateEmailRequest'
description: createEmailRequest
required: true
/rest/asset/v1/email/{id}/fullContent.json:
get:
tags:
- Emails
summary: Get Email Full Content
description: 'Returns the serialized HTML version of the email. Required Permissions: Read-Only Assets, Read-Write Assets. If leadId is passed in the request: Read-Only Lead, Read-Write Lead.'
operationId: getEmailFullContentUsingGET
parameters:
- name: id
in: path
description: Id of the email
required: true
schema:
type: integer
format: int32
- name: status
in: query
description: Status filter for draft or approved versions. Defaults to approved if asset is approved, draft if not.
required: false
schema:
type: string
enum:
- approved
- draft
- name: leadId
in: query
description: The lead id to impersonate. Email is rendered as though it was received by this lead.
required: false
schema:
type: integer
format: int32
- name: type
in: query
description: Email content type to return. Default is HTML.
required: false
schema:
type: string
enum:
- Text
- HTML
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseOfGetEmailFullContentResponse'
post:
tags:
- Emails
summary: Update Email Full Content
description: 'Replaces the HTML of an Email that has had its relationship broken from its template. Required Permissions: Read-Write Assets'
operationId: createEmailFullContentUsingPOST
parameters:
- name: id
in: path
description: Id of the email
required: true
schema:
type: integer
format: int32
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseOfUpdateEmailFullContentResponse'
requestBody:
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/UpdateEmailFullContentRequest'
description: Content is multipart file parameter
required: true
components:
schemas:
ResponseOfEmailContentResponse:
type: object
properties:
errors:
type: array
items:
$ref: '#/components/schemas/Error'
requestId:
type: string
result:
type: array
items:
$ref: '#/components/schemas/EmailContentResponse'
success:
type: boolean
warnings:
type: array
items:
type: string
UpdateEmailFullContentResponse:
type: object
required:
- id
properties:
id:
type: integer
format: int32
description: Unique integer id of the email
EmailResponse:
type: object
required:
- folder
- fromEmail
- fromName
- operational
- publishToMSI
- replyEmail
- status
- subject
- template
- textOnly
- webView
- autoCopyToText
- preHeader
properties:
createdAt:
type: string
format: date-time
description: Datetime the asset was created
description:
type: string
description: Description of the asset
folder:
description: JSON representation of parent folder, with members 'id', and 'type' which may be 'Folder' or 'Program'
$ref: '#/components/schemas/Folder'
fromEmail:
description: From-address of the Email
$ref: '#/components/schemas/EmailHeaderField'
fromName:
description: From-name of the Email
$ref: '#/components/schemas/EmailHeaderField'
id:
type: integer
format: int64
description: Id of the asset
name:
type: string
description: Name of the asset
operational:
type: boolean
description: Whether the email is operational. Operational emails bypass unsubscribe status. Defaults to false
publishToMSI:
type: boolean
description: Whether the email is published to Marketo Sales Insight
replyEmail:
description: Reply-To address of the Email
$ref: '#/components/schemas/EmailHeaderField'
status:
type: string
description: Status filter for draft or approved versions
subject:
description: Subject Line of the Email
$ref: '#/components/schemas/EmailHeaderField'
template:
type: integer
format: int32
description: Id of the parent template
textOnly:
type: boolean
description: Setting to include text-only version of email when sent
updatedAt:
type: string
format: date-time
description: Datetime the asset was most recently updated
url:
type: string
description: Url of the asset in the Marketo UI
version:
type: integer
format: int32
description: The type version of the email
enum:
- 1
- 2
webView:
type: boolean
description: Whether 'View as Webpage' function is enabled for the email
workspace:
type: string
description: Name of the workspace
autoCopyToText:
type: boolean
description: Setting to automatically copy HTML version to Text version
preHeader:
type: string
description: The email preheader text (max 1024 characters)
ccFields:
type: array
items:
$ref: '#/components/schemas/EmailCCFields'
ResponseOfEmailVariableResponse:
type: object
properties:
errors:
type: array
items:
$ref: '#/components/schemas/Error'
requestId:
type: string
result:
type: array
items:
$ref: '#/components/schemas/EmailVariableResponse'
success:
type: boolean
warnings:
type: array
items:
type: string
ResponseOfGetEmailFullContentResponse:
type: object
properties:
errors:
type: array
items:
$ref: '#/components/schemas/Error'
requestId:
type: string
result:
type: array
items:
$ref: '#/components/schemas/GetEmailFullContentResponse'
success:
type: boolean
warnings:
type: array
items:
type: string
Error:
type: object
required:
- code
- message
properties:
code:
type: string
description: Error code of the error. See full list of error codes <a href="https://developers.marketo.com/rest-api/error-codes/">here</a>
message:
type: string
description: Message describing the cause of the error
UpdateEmailComponentDataRequest:
type: object
properties:
fromEmail:
description: From-address of the Email
$ref: '#/components/schemas/EmailHeaderField'
fromName:
description: From-name of the Email
$ref: '#/components/schemas/EmailHeaderField'
replyTO:
description: Reply-To address of the Email
$ref: '#/components/schemas/EmailHeaderField'
subject:
description: Subject Line of the Email
$ref: '#/components/schemas/EmailHeaderField'
UpdateEmailComponentContentRequest:
type: object
required:
- type
- value
properties:
altText:
type: string
description: Sets the value of the alt parameter for the resulting img element
externalUrl:
type: string
height:
type: integer
format: int32
description: Overrides naitve height of the image. The resulting file will be resized to the given height
image:
type: string
description: Multipart file that allows you to load an image from your computer
linkUrl:
type: string
overWrite:
type: boolean
description: Allows overwriting of the existing image content section
style:
type: string
description: Sets the value of the style parameter for the content section
textValue:
type: string
type:
type: string
description: Type of content to set for the section.
enum:
- Text
- DynamicContent
- Snippet
value:
type: string
description: Value to set for the section. For type Text, the HTML content of the section. For type DynamicContent, the id of the segmentation to use for the content. For type Snippet, the id of the snippet to embed
videoUrl:
type: string
description: Sets the Url of the video element. Videos must be either from YouTube or Vimeo
width:
type: integer
format: int32
description: Overrides native width of the image. The resulting file will be resized to the given width
EmailHeaderField:
type: object
required:
- type
- value
properties:
type:
type: string
description: Field type
value:
type: string
description: Value of field
EmailContentResponse:
type: object
required:
- contentType
- htmlId
- value
properties:
contentType:
type: string
description: Type of content to set for the section.
htmlId:
type: string
description: HTML id of the content section
index:
type: integer
format: int32
isLocked:
type: boolean
parentHtmlId:
type: string
value:
type: object
description: Contents of the section
ResponseOfEmailDynamicContentResponse:
type: object
properties:
errors:
type: array
items:
$ref: '#/components/schemas/Error'
requestId:
type: string
result:
type: array
items:
$ref: '#/components/schemas/EmailDynamicContentResponse'
success:
# --- truncated at 32 KB (44 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/marketo/refs/heads/main/openapi/marketo-emails-api-openapi.yml