Optimizely Transactional mails API
Manage transactional mails that are triggered by a recipient action or event
Manage transactional mails that are triggered by a recipient action or event
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/optimizely-transactional-mails-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
openapi: 3.2.0
info:
title: Optimizely Campaign REST Transactional mails API
description: 'This documentation lists all available resources and endpoints of the Optimizely Campaign REST API. The REST API lets you integrate Optimizely Campaign with your business applications and third-party software. Use Optimizely Campaign features and functionalities remotely to manage your recipient data, campaigns and mailings.<br><br>To use the REST API, set up your Optimizely Campaign client first. See <a href="https://docs.developers.optimizely.com/optimizely-campaign/docs/getting-started#client-setup" target="_blank">Client setup</a> on Optimizely World.<br><br>The base URL for all API requests is as follows: <i>https://api.campaign.episerver.net/rest/{clientId}/{component}/{path}?{parameters}</i><br><br><b>Try it out</b><br>The "Try it out" feature lets you test the API before you implement it in the target system. To perform real API requests against your client, authorize with your Base64-encoded credentials. See <a href="https://docs.developers.optimizely.com/optimizely-campaign/docs/getting-started#authenticate" target="_blank">Authentication</a> on Optimizely World.<br><br>To learn more about the Optimizely Campaign REST API, see <a href="https://docs.developers.optimizely.com/optimizely-campaign/docs/rest-api" target="_blank">Optimizely World</a>.<br><br><br>If you want to import the API definition in Postman, download the <a href="https://api.campaign.episerver.net/rest/openapi.json" target="_blank" download> source file</a> and import it in Postman as a collection.'
version: '1'
servers:
- url: https://api.campaign.episerver.net/rest
tags:
- name: Transactional mails
description: Manage transactional mails that are triggered by a recipient action or event
paths:
/{clientId}/transactionalmail:
get:
tags:
- Transactional mails
summary: Get information about all transactional mails
description: Get detailed information about all transactional mails, such as status, type, starting date, successor node or grid location. You can filter for mailings assigned to a folder or limit the number of retrieved mailings.
operationId: selectTransactionalCampaigns
parameters:
- name: clientId
in: path
description: Client ID
required: true
schema:
type: string
- name: offset
in: query
description: Mailings offset <p><i>Default value :</i> 0</p>
schema:
type: integer
format: int32
- name: limit
in: query
description: 'Maximum number of transactional mails <p><i>Default value</i>: 100</p>'
schema:
type: integer
format: int32
- name: mediaType
in: query
description: 'Filter mailings by media type<p><i>Available values</i> : email, sms, letter, push</p>'
schema:
type: string
- name: resultView
in: query
description: Choose whether to retrieve a DETAILED view including all nodes (messages, recipient lists, target groups) or a SUMMARY of metadata.<p><b>Note:</b> The more campaigns you have, the more time the detailed view takes to load.</p>
schema:
type: string
default: SUMMARY
enum:
- SUMMARY
- DETAILED
- name: status
in: query
description: 'Filter mailings by status<p><i>Available values</i> : invalid, activationRequired, activated, canceled, paused, running, finished</p>'
schema:
type: string
- name: sort
in: query
description: Sort result by specific criteria
schema:
type: string
default: created
enum:
- id
- name
- description
- status
- created
- modified
- started
- finished
- name: folderId
in: query
description: Filter mailings assigned to a folder
schema:
type: integer
format: int64
- name: direction
in: query
description: Sort order
schema:
type: string
enum:
- ASC
- DESC
responses:
'200':
description: A list of transactional mails of a client was retrieved (empty if none exists).
content:
application/json:
schema:
$ref: '#/components/schemas/RestSmartCampaignStreamingCollection'
application/vnd.optivo.broadmail.v1+json:
schema:
$ref: '#/components/schemas/RestSmartCampaignStreamingCollection'
'400':
description: Invalid limit request. Change the limit to less than 10000.
security:
- Authorization: []
post:
tags:
- Transactional mails
summary: Create a transactional mail
description: Create a transactional mail and add information such as subjects for target groups, media code or successor and predecessor node.
operationId: createTransactionalMailing
parameters:
- name: clientId
in: path
description: Client ID
required: true
schema:
type: string
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/EventBasedMailingRequestData'
responses:
'201':
description: The transactional mail was created successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/RestSmartCampaign'
application/vnd.optivo.broadmail.v1+json:
schema:
$ref: '#/components/schemas/RestSmartCampaign'
'400':
description: The transactional mail could not be created. Ensure that the required parameters such as "recipientListIds", "mediaType", "subject", "senderAddress" or "content" are correctly added to the request.
security:
- Authorization: []
/{clientId}/transactionalmail/{transactionalMailId}:
get:
tags:
- Transactional mails
summary: Get information about a transactional mail
description: Get detailed information about a transactional mail, such as status, type or date and time of creation.
operationId: getTransactionalMailing
parameters:
- name: clientId
in: path
description: Client ID
required: true
schema:
type: string
- name: transactionalMailId
in: path
description: Transactional mail ID
required: true
schema:
type: integer
format: int64
responses:
'200':
description: The transactional mail was retrieved successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/RestSmartCampaign'
application/vnd.optivo.broadmail.v1+json:
schema:
$ref: '#/components/schemas/RestSmartCampaign'
security:
- Authorization: []
delete:
tags:
- Transactional mails
summary: Delete a transactional mail
operationId: deleteTransactionalMailing
parameters:
- name: clientId
in: path
description: Client ID
required: true
schema:
type: string
- name: transactionalMailId
in: path
description: Transactional mail ID
required: true
schema:
type: integer
format: int64
responses:
'204':
description: The transactional mail was deleted successfully.
'409':
description: The transactional mail could not be deleted because it contains started messages.
security:
- Authorization: []
/{clientId}/transactionalmail/{transactionalMailId}/message:
post:
tags:
- Transactional mails
summary: Update a mailing
description: Update information of a mailing, such as name, subject or content.
operationId: updateCampaignMessage_3
parameters:
- name: clientId
in: path
description: Client ID
required: true
schema:
type: integer
format: int64
- name: transactionalMailId
in: path
description: Transactional mail ID
required: true
schema:
type: integer
format: int64
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/MessageRequestData'
responses:
'200':
description: The mailing was updated successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/RestMessageNode'
application/vnd.optivo.broadmail.v1+json:
schema:
$ref: '#/components/schemas/RestMessageNode'
security:
- Authorization: []
/{clientId}/transactionalmail/{transactionalMailId}/message/attachments:
post:
tags:
- Transactional mails
summary: Add attachments into a campaign message. Only applicable for campaign message of type email
description: Add attachments into a campaign message. With this operation you can add a single, or multiple attachments into a campaign message.
operationId: addAttachments_2
parameters:
- name: clientId
in: path
description: Client ID
required: true
schema:
type: integer
format: int64
- name: transactionalMailId
in: path
description: Transactional mail ID
required: true
schema:
type: integer
format: int64
requestBody:
content:
application/x-www-form-urlencoded:
schema:
type: object
properties:
attachmentIds:
type: array
description: A comma separated list of attachment ids to be added
items:
type: integer
format: int64
encoding:
attachmentIds:
explode: false
responses:
'200':
description: The attachments were successfully added into campaign message.
'400':
description: The "attachmentIds" parameter is either empty or invalid, or the campaign mailing is of type FAX.
'404':
description: The campaign mailing was not found.
'405':
description: The campaign message is not of type EMAIL.
security:
- Authorization: []
delete:
tags:
- Transactional mails
summary: Delete attachments of a campaign message. Only applicable for campaign message of type email
operationId: deleteAttachments_2
parameters:
- name: clientId
in: path
description: Client ID
required: true
schema:
type: integer
format: int64
- name: attachmentIds
in: query
description: A comma separated list of attachment ids to be deleted
required: true
explode: false
schema:
type: array
items:
type: integer
format: int64
- name: transactionalMailId
in: path
description: Transactional mail ID
required: true
schema:
type: integer
format: int64
responses:
'204':
description: The attachments were successfully deleted from campaign message.
'400':
description: The "attachmentIds" parameter is empty, or the campaign mailing is of type FAX.
'404':
description: The campaign mailing was not found.
'405':
description: The campaign message is not of type EMAIL.
security:
- Authorization: []
/{clientId}/transactionalmail/{transactionalMailId}/message/content:
get:
tags:
- Transactional mails
summary: Get the content of a mailing (email)
description: Get the content of a mailing (email) and define the content type to be delivered.
operationId: getCampaignMessageContent_2
parameters:
- name: clientId
in: path
description: Client ID
required: true
schema:
type: string
- name: Accept
in: header
description: 'Controls which content type is used <p><i>Available values</i> : text/plain, text/html<p><i>Default value</i> : text/plain</p><p>Does not work with the "Try it out" feature.</p>'
schema:
type: string
- name: source
in: query
schema:
type: string
default: message
enum:
- EDITOR
- MESSAGE
- name: transactionalMailId
in: path
description: Transactional mail ID
required: true
schema:
type: integer
format: int64
responses:
'200':
description: The content of the mailing (in the indicated content type) was retrieved successfully.
'404':
description: No content could be found for the indicated content type. Ensure that the "Accept" parameter has the correct content type and the content exists.
'406':
description: The content type is not supported. Ensure that the "Accept" parameter has the correct content type.
security:
- Authorization: []
post:
tags:
- Transactional mails
summary: Update the content of a mailing
description: 'Update the content of a mailing. You can transmit plain text, html, or multipart content that consists of HTML and plain text. See <a href="https://world.episerver.com/blogs/philipp-gaska/dates/2021/6/updating-mailing-content-via-rest-api" target="_blank">Updating mailing content via REST API</a> on Optimizely World. <b>Note</b>: You can only update the content of mailings created via REST API. This operation is also not suitable for confirmation mailings.'
operationId: storeCampaignMessageContent_2
parameters:
- name: clientId
in: path
description: Client ID
required: true
schema:
type: string
- name: transactionalMailId
in: path
description: Transactional mail ID
required: true
schema:
type: integer
format: int64
requestBody:
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/MultiRequest'
responses:
'200':
description: The mailing content was updated successfully.
'409':
description: The mailing content could not be updated because of a general error.
security:
- Authorization: []
/{clientId}/transactionalmail/{transactionalMailId}/message/test/{testMailingId}:
get:
tags:
- Transactional mails
summary: Get information about the sending status of all recipients of a test mailing
description: Get detailed information about the sending status of all recipients of a test mailing, such as enqueued, sending, sent or failed.
operationId: getTestMailingReport_3
parameters:
- name: clientId
in: path
description: Client ID
required: true
schema:
type: integer
format: int64
- name: testMailingId
in: path
description: Test mailing ID
required: true
schema:
type: integer
format: int32
- name: transactionalMailId
in: path
description: Transactional mail ID
required: true
schema:
type: integer
format: int64
responses:
'200':
description: The report was retrieved successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/TestMailingReport'
application/vnd.optivo.broadmail.v1+json:
schema:
$ref: '#/components/schemas/TestMailingReport'
security:
- Authorization: []
/{clientId}/transactionalmail/{transactionalMailId}/message/tracking/links/{trackingLinkId}:
get:
tags:
- Transactional mails
summary: Get information about a tracking link of a mailing
description: Get detailed information about a tracking link of a mailing, such as ID, URL or link occurrences in the text version.
operationId: getTrackingLink_2
parameters:
- name: clientId
in: path
description: Client ID
required: true
schema:
type: integer
format: int64
- name: trackingLinkId
in: path
description: Tracking link ID
required: true
schema:
type: integer
format: int64
- name: transactionalMailId
in: path
description: Transactional mail ID
required: true
schema:
type: integer
format: int64
responses:
'200':
description: The tracking link was retrieved successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/RestTrackingLink'
application/vnd.optivo.broadmail.v1+json:
schema:
$ref: '#/components/schemas/RestTrackingLink'
security:
- Authorization: []
post:
tags:
- Transactional mails
summary: Update the tracking link configuration of a mailing
operationId: updateLinkTracking_2
parameters:
- name: clientId
in: path
description: Client ID
required: true
schema:
type: integer
format: int64
- name: trackingLinkId
in: path
description: Tracking link ID
required: true
schema:
type: integer
format: int64
- name: transactionalMailId
in: path
description: Transactional mail ID
required: true
schema:
type: integer
format: int64
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/TrackingLinkConfigurationRequestData'
responses:
'200':
description: The tracking link configuration was updated successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/RestTrackingLink'
application/vnd.optivo.broadmail.v1+json:
schema:
$ref: '#/components/schemas/RestTrackingLink'
security:
- Authorization: []
/{clientId}/transactionalmail/{transactionalMailId}/message/tracking/links:
get:
tags:
- Transactional mails
summary: Get information about all tracking links of a mailing
description: Get detailed information about all tracking links of a mailing, such as ID, URL or link occurrences in the text version.
operationId: getTrackingLinks_2
parameters:
- name: clientId
in: path
description: Client ID
required: true
schema:
type: integer
format: int64
- name: transactionalMailId
in: path
description: Transactional mail ID
required: true
schema:
type: integer
format: int64
responses:
'200':
description: The tracking links were retrieved successfully.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/RestTrackingLink'
application/vnd.optivo.broadmail.v1+json:
schema:
type: array
items:
$ref: '#/components/schemas/RestTrackingLink'
'400':
description: The number of tracking links exceeded the maximum of 3000.
security:
- Authorization: []
/{clientId}/transactionalmail/{transactionalMailId}/message/tracking:
get:
tags:
- Transactional mails
summary: Get information about the tracking configuration of a mailing
operationId: getTrackingConfiguration_2
parameters:
- name: clientId
in: path
description: Client ID
required: true
schema:
type: integer
format: int64
- name: transactionalMailId
in: path
description: Transactional mail ID
required: true
schema:
type: integer
format: int64
responses:
'200':
description: The tracking configuration was retrieved successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/RestTrackingConfiguration'
application/vnd.optivo.broadmail.v1+json:
schema:
$ref: '#/components/schemas/RestTrackingConfiguration'
security:
- Authorization: []
post:
tags:
- Transactional mails
summary: Update the tracking configuration of a mailing
operationId: updateTrackingConfiguration_2
parameters:
- name: clientId
in: path
description: Client ID
required: true
schema:
type: integer
format: int64
- name: transactionalMailId
in: path
description: Transactional mail ID
required: true
schema:
type: integer
format: int64
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/TrackingConfigurationRequestData'
responses:
'200':
description: The tracking configuration was updated successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/RestTrackingConfiguration'
application/vnd.optivo.broadmail.v1+json:
schema:
$ref: '#/components/schemas/RestTrackingConfiguration'
security:
- Authorization: []
/{clientId}/transactionalmail/{transactionalMailId}/recipientLists:
get:
tags:
- Transactional mails
summary: Get information about a "Recipients" node
description: Get detailed information about a "Recipients" node, such as node ID, successor node ID or grid location.
operationId: getRecipientListsNodeForSCMailing_2
parameters:
- name: clientId
in: path
description: Client ID
required: true
schema:
type: string
- name: transactionalMailId
in: path
description: Transactional mail ID
required: true
schema:
type: integer
format: int64
responses:
'200':
description: The "Recipients" node was retrieved successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/RestRecipientListsNode'
application/vnd.optivo.broadmail.v1+json:
schema:
$ref: '#/components/schemas/RestRecipientListsNode'
'404':
description: 'The "Recipients" node could not be found. Ensure that the required parameters such as "campaignId" or "nodeId" are correct and the "Recipients" node exists. '
security:
- Authorization: []
post:
tags:
- Transactional mails
summary: Create or update a "Recipients" node
description: Create or update a "Recipients" node. The "recipientListIds" parameter is only required for updating.
operationId: createOrUpdateRecipientListsNode_2
parameters:
- name: clientId
in: path
description: Client ID
required: true
schema:
type: string
- name: transactionalMailId
in: path
description: Transactional mail ID
required: true
schema:
type: integer
format: int64
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/RecipientListsRequestData'
responses:
'200':
description: The "Recipient" node was updated successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/RestRecipientListsNode'
application/vnd.optivo.broadmail.v1+json:
schema:
$ref: '#/components/schemas/RestRecipientListsNode'
'201':
description: The "Recipient" node was created successfully.
'404':
description: The "Recipient" node could not be found. Ensure that the required parameters such as "campaignId" or "recipientListIds" are correct and the "Recipients" node exists.
security:
- Authorization: []
/{clientId}/transactionalmail/{transactionalMailId}/test/{testMailingId}:
get:
tags:
- Transactional mails
summary: Get information about the sending status of all recipients of a test mailing
description: Get detailed information about the sending status of all recipients of a test mailing, such as enqueued, sending, sent or failed.
operationId: getTestMailingReport_4
parameters:
- name: clientId
in: path
description: Client ID
required: true
schema:
type: integer
format: int64
- name: testMailingId
in: path
description: Test mailing ID
required: true
schema:
type: integer
format: int32
- name: transactionalMailId
in: path
description: Transactional mail ID
required: true
schema:
type: integer
format: int64
responses:
'200':
description: The report was retrieved successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/TestMailingReport'
application/vnd.optivo.broadmail.v1+json:
schema:
$ref: '#/components/schemas/TestMailingReport'
security:
- Authorization: []
/{clientId}/transactionalmail/{transactionalMailId}/test:
post:
tags:
- Transactional mails
summary: Send a test mailing
description: Send a test mailing to check content, layout or target groups before sending the actual mailing.
operationId: startTestMailing_4
parameters:
- name: clientId
in: path
description: Client ID
required: true
schema:
type: integer
format: int64
- name: transactionalMailId
in: path
description: Transactional mail ID
required: true
schema:
type: integer
format: int64
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/TestMailingRequestData'
responses:
'202':
description: The test message was sent successfully. The response contains a report on the recipients included in the test mailing (check "validRecipientAddresses" field).
content:
application/json:
schema:
$ref: '#/components/schemas/TestMailingStartedReport'
application/vnd.optivo.broadmail.v1+json:
schema:
$ref: '#/components/schemas/TestMailingStartedReport'
'400':
description: At least one request parameter is not valid
security:
- Authorization: []
/{clientId}/transactionalmail/{transactionalMailId}/send:
post:
tags:
- Transactional mails
summary: Send a transactional mail
description: Send a transactional mail. You can specify attachment token or recipient data.
operationId: sendTransactionalMailing
parameters:
- name: clientId
in: path
description: Client ID
required: true
schema:
type: string
- name: transactionalMailId
in: path
description: Transactional mail ID
required: true
schema:
type: integer
format: int64
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/SendTransactionalMailingRequestData'
responses:
'202':
description: The transactional mail was accepted and is sent asynchronously. To retrieve the sending status of the transactional mail, use the returned mailId and the GET status operation.
content:
application/json:
schema:
$ref: '#/components/schemas/RestMailId'
application/vnd.optivo.broadmail.v1+json:
schema:
$ref: '#/components/schemas/RestMailId'
'400':
description: The required recipientId/recipientListId is not provided and the recipient list is not assigned to the mailing. Add the required parameters and try again.
security:
- Authorization: []
/{clientId}/transactionalmail/{transactionalMailId}/report:
get:
tags:
- Transactional mails
summary: Get a campaign report
description: Get a detailed campaign report containing information such as number of recipients, opens, clicks, bounces or unsubscribes.
operationId: getReport_2
parameters:
- name: clientId
in: path
description: Client ID
required: true
schema:
type: string
- name: transactionalMailId
in: path
description: Transactional mail ID
required: true
schema:
type: integer
format: int64
responses:
'200':
description: The report was retrieved successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/CampaignMailingRestReport'
application/vnd.optivo.broadmail.v1+json:
schema:
$ref: '#/components/schemas/CampaignMailingRestReport'
security:
- Authorization: []
/{clientId}/transactionalmail/{transactionalMailId}/start:
post:
tags:
- Transactional mails
summary: Start a transactional mail
operationId: startTransactionalMailing
parameters:
- name: clientId
in: path
description: Client ID
required: true
schema:
type: string
- name: transactionalMailId
in: path
description: Transactional mail ID
required: true
schema:
type: integer
format: int64
responses:
'200':
description: The transactional mail was started successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/RestSmartCampaign'
application/vnd.optivo.broadmail.v1+json:
schema:
$ref: '#/components/schemas/RestSmartCampaign'
'409':
description: The transactional mail could not be started because it must be in status "Activated". Please check the status of the mailing.
security:
- Authorization: []
/{clientId}/transactionalmail/{transactionalMailId}/stop:
post:
tags:
- Transactional mails
summary: Stop a transactional mail
operationId: stopTransactionalMailing
parameters:
- name: clientId
in: path
description: Client ID
required: true
schema:
type: string
- name: transactionalMailId
in: path
description: Transactional mail ID
required: true
schema:
type: integer
format: int64
responses:
'200':
description: The transactional mail was stopped successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/RestSmartCampaign'
application/vnd.optivo.broadmail.v1+json:
schema:
$ref: '#/components/schemas/RestSmartCampaign'
'409':
# --- truncated at 32 KB (63 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/optimizely/refs/heads/main/openapi/optimizely-transactional-mails-api-openapi.yml