Iterable Templates API
Manage email, push, SMS, and in-app message templates. Retrieve template content and metadata.
Manage email, push, SMS, and in-app message templates. Retrieve template content and metadata.
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/iterable-templates-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: Iterable Templates API
version: '1.0'
description: 'Operations tagged templates across 2 of this provider''s published API definitions: iterable-api-openapi.json, iterable-rest-api-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.iterable.com/
- url: https://api.iterable.com/api
description: US Data Center (USDC)
- url: https://api.eu.iterable.com/api
description: European Data Center (EDC)
tags:
- name: templates
paths:
/api/templates:
get:
description: 'Get templates for a project. Use <code>page</code> and <code>pageSize</code> parameters to paginate results. If the unpaginated templates API is allowed for your project, then all templates are returned if no pagination parameters are provided. The unpaginated behavior is deprecated and may be removed in the future. <b>Rate limit</b>: 100 requests/second, per project.'
operationId: getTemplates
parameters:
- description: Only retrieve templates associated with this template type
in: query
name: templateType
required: false
schema:
type: string
enum:
- Base
- Blast
- Triggered
- Workflow
default: None
- description: Only retrieve templates associated with this message medium
in: query
name: messageMedium
required: false
schema:
type: string
enum:
- Email
- Push
- InApp
- SMS
default: None
- description: Get templates created at or after this date time (yyyy-MM-dd HH:mm:ss [ZZ])
in: query
name: startDateTime
required: false
schema:
type: string
format: date-time
- description: Get templates created before this date time (yyyy-MM-dd HH:mm:ss [ZZ])
in: query
name: endDateTime
required: false
schema:
type: string
format: date-time
- description: Page number (starting at 1).
in: query
name: page
required: false
x-example: 1
schema:
type: integer
format: int32
default: 1
- description: Number of results to return per page (defaults to 20, maximum of 1000).
in: query
name: pageSize
required: false
x-example: 25
schema:
type: integer
format: int32
default: 20
- description: 'Field to sort templates by, with optional direction prefix. Use - for descending, + or no prefix for ascending. Templates can be sorted by id, name, createdAt, or updatedAt. Examples: -createdAt, +name, id'
in: query
name: sort
required: false
x-example: id
schema:
type: string
default: id
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/GetTemplatesResponse'
'400':
description: Invalid parameters
'401':
description: Invalid API key
summary: Get project templates
tags:
- templates
security:
- api_key: []
servers:
- url: https://api.iterable.com/
/api/templates/bulkDelete:
post:
description: 'This endpoint deletes one or more base templates. Templates which are associated with a campaign will not be deleted. '
operationId: bulk delete templates
responses:
'200':
description: Templates deleted successfully
'400':
description: Invalid request
'401':
description: Unauthorized
'403':
description: Forbidden
'500':
description: Internal server error
summary: Bulk delete templates
tags:
- templates
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BulkDeleteTemplatesRequest'
description: IDs of templates to delete
required: true
security:
- api_key: []
servers:
- url: https://api.iterable.com/
/api/templates/email/get:
get:
description: '<b>Rate limit</b>: 100 requests/second, per project.'
operationId: getEmailTemplate
parameters:
- description: Template ID
in: query
name: templateId
required: true
schema:
type: integer
format: int64
- description: Locale of content to get
in: query
name: locale
required: false
schema:
type: string
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/ApiEmailTemplateModel'
'400':
description: Invalid parameters
'401':
description: Invalid API key
'404':
description: Content does not exist for specified locale
summary: Get an email template by templateId
tags:
- templates
security:
- api_key: []
servers:
- url: https://api.iterable.com/
/api/templates/email/preview:
post:
description: 'Generate a fully rendered HTML preview of an email template using custom data. This endpoint simulates how a template would appear when sent to a user, allowing you to test template rendering with specific data fields and/or data feed data. Use this to preview templates before sending campaigns or to test template logic with different data scenarios. <br/><br/>Note: If a template references a field that is not provided in the request data, that field will be rendered as an empty string, matching the behavior of actual email sends.<br/><br/><b>Rate limit</b>: 10 requests/second, per project.'
operationId: previewEmailTemplate
parameters:
- description: Template ID
in: query
name: templateId
required: true
schema:
type: integer
format: int64
- description: Locale of content to get
in: query
name: locale
required: false
schema:
type: string
default: None
responses:
'200':
description: successful operation
content:
application/json:
schema:
type: string
'400':
description: Invalid parameters. This may occur if the <code>templateId</code> is invalid, if required template data is missing, or if the request body contains malformed JSON.
'401':
description: Invalid API key
'404':
description: Template not found
summary: Preview email template with custom data
tags:
- templates
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/TemplatePreviewRequest'
description: Data to use for template rendering
security:
- api_key: []
servers:
- url: https://api.iterable.com/
/api/templates/email/proof:
post:
description: 'Send a proof of an email template to a specific user. <br/><br/><b>Rate limit</b>: 20 requests/second, per API key.'
operationId: emailProof
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/IterableApiResponse'
'400':
description: Invalid parameters
'401':
description: Invalid API key
summary: Send a proof of an email template
tags:
- templates
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/TemplateProofRequest'
description: Template proof request
required: true
security:
- api_key: []
servers:
- url: https://api.iterable.com/
/api/templates/email/update:
post:
description: ''
operationId: updateEmailTemplate
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/IterableApiResponse'
'400':
description: Invalid parameters
'401':
description: Invalid API key
summary: Update email template
tags:
- templates
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ApiEmailTemplateModel'
description: Only the fields specified will be updated
required: true
security:
- api_key: []
servers:
- url: https://api.iterable.com/
/api/templates/email/upsert:
post:
description: Create email template if it doesn't exist already, otherwise update all email templates that match the name provided.
operationId: upsertEmailTemplate
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/IterableApiResponse'
'400':
description: Invalid parameters
'401':
description: Invalid API key
summary: Create email template
tags:
- templates
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpsertEmailTemplateModel'
description: Only the fields specified will be updated
required: true
security:
- api_key: []
servers:
- url: https://api.iterable.com/
/api/templates/embedded/get:
get:
description: '<b>Rate limit</b>: 100 requests/second, per project.'
operationId: getEmbeddedTemplate
parameters:
- description: Template ID
in: query
name: templateId
required: true
schema:
type: integer
format: int64
- description: Locale of content to get
in: query
name: locale
required: false
schema:
type: string
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/ApiEmbeddedTemplateModel'
'400':
description: Invalid parameters
'401':
description: Invalid API key
'404':
description: Content does not exist for specified locale
summary: Get an embedded message template
tags:
- templates
security:
- api_key: []
servers:
- url: https://api.iterable.com/
/api/templates/embedded/update:
post:
description: ''
operationId: updateEmbeddedTemplate
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/IterableApiResponse'
'400':
description: Invalid parameters
'401':
description: Invalid API key
summary: Update embedded message template
tags:
- templates
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ApiEmbeddedTemplateModel'
description: Only the fields specified will be updated
required: true
security:
- api_key: []
servers:
- url: https://api.iterable.com/
/api/templates/embedded/upsert:
post:
description: Create an embedded message template if it doesn't exist yet, otherwise update all embedded message templates that match the name provided.
operationId: upsertEmbeddedTemplate
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/IterableApiResponse'
'400':
description: Invalid parameters
'401':
description: Invalid API key
summary: Create an embedded message template
tags:
- templates
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpsertEmbeddedTemplateModel'
description: Only the fields specified will be updated
required: true
security:
- api_key: []
servers:
- url: https://api.iterable.com/
/api/templates/getByClientTemplateId:
get:
description: '<b>Rate limit</b>: 100 requests/second, per project.'
operationId: getByClientTemplateId
parameters:
- description: Client Template Id
in: query
name: clientTemplateId
required: true
schema:
type: string
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/ClientTemplateIdResponse'
'400':
description: Invalid parameters
'401':
description: Invalid API key
summary: Get an email template by clientTemplateId
tags:
- templates
security:
- api_key: []
servers:
- url: https://api.iterable.com/
/api/templates/inapp/get:
get:
description: ''
operationId: getInAppTemplate
parameters:
- description: Template ID
in: query
name: templateId
required: true
schema:
type: integer
format: int64
- description: Locale of content to get
in: query
name: locale
required: false
schema:
type: string
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/ApiInAppTemplateModel'
'400':
description: Invalid parameters
'401':
description: Invalid API key
'404':
description: Content does not exit for specified locale
summary: Get an in-app template
tags:
- templates
security:
- api_key: []
servers:
- url: https://api.iterable.com/
/api/templates/inapp/preview:
post:
description: 'Generate a fully rendered HTML preview of an in-app template using custom data. This endpoint simulates how a template would appear when sent to a user, allowing you to test template rendering with specific data fields and/or data feed data. Use this to preview templates before sending campaigns or to test template logic with different data scenarios. <br/><br/>Note: If a template references a field that is not provided in the request data, that field will be rendered as an empty string, matching the behavior of actual email sends.<br/><br/><b>Rate limit</b>: 10 requests/second, per project.'
operationId: previewInAppTemplate
parameters:
- description: Template ID
in: query
name: templateId
required: true
schema:
type: integer
format: int64
- description: Locale of content to get
in: query
name: locale
required: false
schema:
type: string
default: None
responses:
'200':
description: successful operation
content:
application/json:
schema:
type: string
'400':
description: Invalid parameters. This may occur if the <code>templateId</code> is invalid, if required template data is missing, or if the request body contains malformed JSON.
'401':
description: Invalid API key
'404':
description: Template not found
summary: Preview in-app template with custom data
tags:
- templates
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/TemplatePreviewRequest'
description: Data to use for template rendering
security:
- api_key: []
servers:
- url: https://api.iterable.com/
/api/templates/inapp/proof:
post:
description: 'Send a proof of an in-app template to a specific user. <br/><br/><b>Rate limit</b>: 20 requests/second, per API key.'
operationId: inappProof
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/IterableApiResponse'
'400':
description: Invalid parameters
'401':
description: Invalid API key
summary: Send a proof of an in-app template
tags:
- templates
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/TemplateProofRequest'
description: Template proof request
required: true
security:
- api_key: []
servers:
- url: https://api.iterable.com/
/api/templates/inapp/update:
post:
description: ''
operationId: updateInAppTemplate
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/IterableApiResponse'
'400':
description: Invalid parameters
'401':
description: Invalid API key
summary: Update in-app template
tags:
- templates
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ApiInAppTemplateModel'
description: Only the fields specified will be updated
required: true
security:
- api_key: []
servers:
- url: https://api.iterable.com/
/api/templates/inapp/upsert:
post:
description: Create an in-app template if it doesn't exist yet, otherwise update all in-app templates that match the name provided.
operationId: upsertInAppTemplate
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/IterableApiResponse'
'400':
description: Invalid parameters
'401':
description: Invalid API key
summary: Create an in-app template
tags:
- templates
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpsertInAppTemplateModel'
description: Only the fields specified will be updated
required: true
security:
- api_key: []
servers:
- url: https://api.iterable.com/
/api/templates/push/get:
get:
description: '<b>Rate limit</b>: 100 requests/second, per project.'
operationId: getPushTemplate
parameters:
- description: Template ID
in: query
name: templateId
required: true
schema:
type: integer
format: int64
- description: Locale of content to get
in: query
name: locale
required: false
schema:
type: string
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/ApiPushTemplateModel'
'400':
description: Invalid parameters
'401':
description: Invalid API key
'404':
description: Content does not exit for specified locale
summary: Get a push template
tags:
- templates
security:
- api_key: []
servers:
- url: https://api.iterable.com/
/api/templates/push/proof:
post:
description: 'Send a proof of a push template to a specific user. <br/><br/><b>Rate limit</b>: 20 requests/second, per API key.'
operationId: pushProof
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/IterableApiResponse'
'400':
description: Invalid parameters
'401':
description: Invalid API key
summary: Send a proof of a push template
tags:
- templates
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/TemplateProofRequest'
description: Template proof request
required: true
security:
- api_key: []
servers:
- url: https://api.iterable.com/
/api/templates/push/update:
post:
description: ''
operationId: updatePushTemplate
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/IterableApiResponse'
'400':
description: Invalid parameters
'401':
description: Invalid API key
summary: Update push template
tags:
- templates
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ApiPushTemplateModel'
description: Only the fields specified will be updated
required: true
security:
- api_key: []
servers:
- url: https://api.iterable.com/
/api/templates/push/upsert:
post:
description: Create a push template if it doesn't exist, otherwise update all push templates that match the name provided.
operationId: upsertPushTemplate
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/IterableApiResponse'
'400':
description: Invalid parameters
'401':
description: Invalid API key
summary: Create a push template
tags:
- templates
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpsertPushTemplateModel'
description: Only the fields specified will be updated
required: true
security:
- api_key: []
servers:
- url: https://api.iterable.com/
/api/templates/sms/get:
get:
description: '<b>Rate limit</b>: 100 requests/second, per project.'
operationId: getSMSTemplate
parameters:
- description: Template ID
in: query
name: templateId
required: true
schema:
type: integer
format: int64
- description: Locale of content to get
in: query
name: locale
required: false
schema:
type: string
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSMSTemplateModel'
'400':
description: Invalid parameters
'401':
description: Invalid API key
'404':
description: Content does not exit for specified locale
summary: Get an SMS template
tags:
- templates
security:
- api_key: []
servers:
- url: https://api.iterable.com/
/api/templates/sms/proof:
post:
description: 'Send a proof of an SMS template to a specific user. <br/><br/><b>Rate limit</b>: 20 requests/second, per API key.'
operationId: smsProof
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/IterableApiResponse'
'400':
description: Invalid parameters
'401':
description: Invalid API key
summary: Send a proof of an SMS template
tags:
- templates
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/TemplateProofRequest'
description: Template proof request
required: true
security:
- api_key: []
servers:
- url: https://api.iterable.com/
/api/templates/sms/update:
post:
description: ''
operationId: updateSMSTemplate
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/IterableApiResponse'
'400':
description: Invalid parameters
'401':
description: Invalid API key
summary: Update SMS template
tags:
- templates
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ApiSMSTemplateModel'
description: Only the fields specified will be updated
required: true
security:
- api_key: []
servers:
- url: https://api.iterable.com/
/api/templates/sms/upsert:
post:
description: Create an SMS template if it doesn't exist yet, otherwise update all SMS templates that match the name provided.
operationId: upsertSMSTemplate
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/IterableApiResponse'
'400':
description: Invalid parameters
'401':
description: Invalid API key
summary: Create an SMS template
tags:
- templates
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpsertSMSTemplateModel'
description: Only the fields specified will be updated
required: true
security:
- api_key: []
servers:
- url: https://api.iterable.com/
/templates/email/get:
get:
operationId: getEmailTemplate
summary: Get an email template
description: Retrieves the content and metadata of an email template by its template ID.
tags:
- templates
parameters:
- name: templateId
in: query
required: true
description: The ID of the email template to retrieve
schema:
type: integer
responses:
'200':
description: Email template data
content:
application/json:
schema:
$ref: '#/components/schemas/EmailTemplate'
'401':
description: Unauthorized
'404':
description: Template not found
security:
- apiKeyAuth: []
servers:
- url: https://api.iterable.com/api
description: US Data Center (USDC)
- url: https://api.eu.iterable.com/api
description: European Data Center (EDC)
/templates/email/update:
post:
operationId: updateEmailTemplate
summary: Update an email template
description: Updates the content and metadata of an existing email template.
tags:
- templates
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/EmailTemplateUpdate'
responses:
'200':
description: Template updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/IterableResponse'
'400':
description: Bad request
'401':
description: Unauthorized
security:
- apiKeyAuth: []
servers:
- url: https://api.iterable.com/api
description: US Data Center (USDC)
- url: https://api.eu.iterable.com/api
description: European Data Center (EDC)
/templates/push/get:
get:
operationId: getPushTemplate
summary: Get a push notification template
description: Retrieves the content and metadata of a push notification template by its template ID.
tags:
- templates
parameters:
- name: templateId
in: query
required: true
description: The ID of the push template to retrieve
schema:
type: integer
responses:
'200':
description: Push template data
content:
application/json:
schema:
type: object
properties:
templateId:
type: integer
name:
type: string
message:
type: string
sound:
type: string
deeplink:
type: string
'401':
description: Unauthorized
'404':
description: Template not found
security:
- apiKeyAuth: []
servers:
- url: https://api.iterable.com/api
description: US Data Center (USDC)
- url: https://api.eu.iterable.com/api
description: European Data Center (EDC)
/templates/sms/get:
get:
operationId: getSmsTemplate
summary: Get an SMS template
description: Retrieves the content and metadata of an SMS template by its template ID.
tags:
- templates
parameters:
- name: templateId
in: query
required: true
description: The ID of the SMS template to retrieve
schema:
type: integer
responses:
'200':
description: SMS template data
content:
application/json:
schema:
type: object
properties:
templateId:
type: integer
name:
type: string
message:
type: string
'401':
description: Unauthorized
'404':
description: Template not found
security:
- apiKeyAuth: []
servers:
- url: https://api.iterable.com/api
description: US Data Center (USDC)
- url: https://api.eu.iterable.com/api
description: European Data Center (EDC)
/templates/inApp/get:
get:
operationId: getInAppTemplate
summary: Get an in-app message template
description: Retrieves the content and metadata of an in-app message template by its template ID.
tags:
- templates
parameters:
- name: templateId
in: query
required: true
description: The ID of the in-app template to retrieve
schema:
type: integer
responses:
'200':
description: In-app template data
content:
application/json:
schema:
type: object
properties:
templateId:
type: integer
name:
type: string
html:
type: string
'401':
description: Unauthorized
'404':
description: Template not found
security:
- apiKeyAuth: []
servers:
- url: https://api.iterable.com/api
description: US Data Center (USDC)
- url: https://api.eu.iterable.com/api
description: European Data Center (EDC)
components:
schemas:
PushAction:
properties:
data:
description: The URL to open if the type is 'openUrl'
type: string
type:
description: The type of action. Leave empty to open the app, use 'openUrl' to open the url specified in the 'data' field, or enter a custom action handler defined in your app
type: string
type: object
PushActionButton:
properties:
action:
$ref: '#/components/schemas/PushAction'
description: Action to execute on button push
actionIcon:
$ref: '#/components/schemas/ActionIcon'
buttonType:
description: Type of button
enum:
- default
- destructive
- textInput
type: string
identifier:
description: Used
# --- truncated at 32 KB (74 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/iterable/refs/heads/main/openapi/iterable-templates-api-openapi.yml