Braze Templates > Email Templates API
The Templates > Email Templates API from Braze — 4 operation(s) for templates > email templates.
The Templates > Email Templates API from Braze — 4 operation(s) for templates > email templates.
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/braze-templates-email-templates-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: 3.2.0
info:
title: Braze Templates > Email Templates API
description: The Braze and Radar integration allows you to access sophisticated location-based campaign triggers and user profile enrichment with rich, first-party location data.
version: 1.0.0
servers:
- url: https://rest.iad-01.braze.com
description: REST endpoint for instance US-01
- url: https://rest.iad-01.braze.com
description: REST endpoint for instance US-01
- url: https://rest.iad-02.braze.com
description: REST endpoint for instance US-02
- url: https://rest.iad-03.braze.com
description: REST endpoint for instance US-03
- url: https://rest.iad-04.braze.com
description: REST endpoint for instance US-04
- url: https://rest.iad-05.braze.com
description: REST endpoint for instance US-05
- url: https://rest.iad-06.braze.com
description: REST endpoint for instance US-06
- url: https://rest.iad-08.braze.com
description: REST endpoint for instance US-08
- url: https://rest.fra-01.braze.eu
description: REST endpoint for instance EU-01
- url: https://rest.fra-02.braze.eu
description: REST endpoint for instance EU-02
security:
- BearerAuth: []
tags:
- name: Templates > Email Templates
paths:
/templates/email/update:
post:
tags:
- Templates > Email Templates
summary: Update Email Template
description: '> Use this endpoint to update email templates on the Braze dashboard.
To use this endpoint, youll need to generate an API key with the `templates.email.update` permission.
You can access an email templates `email_template_id` by navigating to it on the **Templates & Media** page. The Create email template endpoint will also return an `email_template_id` reference.
All fields other than the `email_template_id` are optional, but you must specify at least one field to update.
### Rate limit
We apply the default Braze rate limit of 250,000 requests per hour to this endpoint, as documented in API rate limits.
### Request parameters
| Parameter | Required | Data Type | Description |
| --- | --- | --- | --- |
| `email_template_id` | Required | String | Your email template''s API identifier. |
| `template_name` | Optional | String | Name of your email template. |
| `subject` | Optional | String | Email template subject line. |
| `body` | Optional | String | Email template body that may include HTML. |
| `plaintext_body` | Optional | String | A plaintext version of the email template body. |
| `preheader` | Optional | String | Email preheader used to generate previews in some clients. |
| `tags` | Optional | String | Tags must already exist. |
| `should_inline_css` | Optional | Boolean | Enables or disables the `inline_css` feature per template. If not provided, Braze will use the default setting for the AppGroup. One of `true` or `false` is expected. |
### Possible errors
The following table lists possible returned errors and their associated troubleshooting steps, if applicable.
| Error | Troubleshooting |
| --- | --- |
| Template name is required | |
| Tags must be an array | Tags must be formatted as an array of strings, for example `["marketing", "promotional", "transactional"]`. |
| All tags must be strings | Make sure your tags are encapsulated in quotes (`""`). |
| Some tags could not be found | To add a tag when creating an email template, the tag must already exist in Braze. |
| Invalid value for `should_inline_css`. One of `true` or `false` was expected | This parameter only accepts boolean values (true or false). Make sure the value for `should_inline_css` is not encapsulated in quotes (`""`), which causes the value to be sent as a string instead. |'
requestBody:
content:
application/json:
schema:
type: object
example:
email_template_id: email_template_id
template_name: Weekly Newsletter
subject: This Week's Styles
body: Check out this week's digital lookbook to inspire your outfits. Take a look at https://www.braze.com/
plaintext_body: This is the updated text within my email body and here is a link to https://www.braze.com/.
preheader: We want you to have the best looks this Summer
tags:
- Tag1
- Tag2
properties:
email_template_id:
type: string
template_name:
type: string
subject:
type: string
body:
type: string
plaintext_body:
type: string
preheader:
type: string
tags:
type: array
items:
type: string
parameters:
- name: Content-Type
in: header
schema:
type: string
example: application/json
- name: Authorization
in: header
schema:
type: string
example: Bearer {{api_key}}
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
'201':
description: Successful response
content:
application/json:
schema:
type: object
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
operationId: postTemplatesEmailUpdate
x-operation-id-source: derived
/templates/email/list:
get:
tags:
- Templates > Email Templates
summary: List Available Email Templates
description: '> Use this endpoint to get a list of available templates in your Braze account.
To use this endpoint, youll need to generate an API key with the `templates.email.list` permission.
### Rate limit
We apply the default Braze rate limit of 250,000 requests per hour to this endpoint, as documented in API rate limits.
### Response
> **Important:** Templates built using the Drag & Drop Editor for email are not provided in this response.
``` json
{
"count": number of templates returned
"templates": [template with the following properties]:
"email_template_id": (string) your email template''s API Identifier,
"template_name": (string) the name of your email template,
"created_at": (string, in ISO 8601),
"updated_at": (string, in ISO 8601),
"tags": (array of strings) tags appended to the template
}
```'
parameters:
- name: Authorization
in: header
schema:
type: string
example: Bearer {{api_key}}
- name: modified_after
in: query
schema:
type: string
description: '(Optional) String in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)
Retrieve only templates updated at or after the given time.'
example: '2020-01-01T01:01:01.000000'
- name: modified_before
in: query
schema:
type: string
description: '(Optional) String in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)
Retrieve only templates updated at or before the given time.'
example: '2020-02-01T01:01:01.000000'
- name: limit
in: query
schema:
type: integer
description: '(Optional) Positive Number
Maximum number of templates to retrieve. Default to 100 if not provided, with a maximum acceptable value of 1000.'
example: 1
- name: offset
in: query
schema:
type: integer
description: '(Optional) Positive Number
Number of templates to skip before returning rest of the templates that fit the search criteria.'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
operationId: getTemplatesEmailList
x-operation-id-source: derived
/templates/email/info:
get:
tags:
- Templates > Email Templates
summary: See Email Template Information
description: '> Use this endpoint to get information on your email templates.
To use this endpoint, youll need to generate an API key with the `templates.email.info` permission.
> **Important:** Templates built using the drag-and-drop editor for email are not accepted.
### Rate limit
We apply the default Braze rate limit of 250,000 requests per hour to this endpoint, as documented in API rate limits.
### Response
``` json
Content-Type: application/json
Authorization: Bearer YOUR-REST-API-KEY
{
"email_template_id": (string) your email template''s API Identifier,
"template_name": (string) the name of your email template,
"description": (string) email template description,
"subject": (string) the email template subject line,
"preheader": (optional, string) the email preheader used to generate previews in some clients),
"body": (optional, string) the email template body that may include HTML,
"plaintext_body": (optional, string) a plaintext version of the email template body,
"should_inline_css": (optional, boolean) whether there is inline CSS in the body of the template - defaults to the css inlining value for the App Group,
"tags": (string) tag names,
"created_at": (string, in ISO 8601),
"updated_at": (string, in ISO 8601)
}
```
Images in this response will show in the `body` variable as HTML.'
parameters:
- name: Authorization
in: header
schema:
type: string
example: Bearer {{api_key}}
- name: email_template_id
in: query
schema:
type: string
description: '(Required) String
See [email template''s API identifier](https://www.braze.com/docs/api/identifier_types/).'
example: '{{email_template_id}}'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
operationId: getTemplatesEmailInfo
x-operation-id-source: derived
/templates/email/create:
post:
tags:
- Templates > Email Templates
summary: Create Email Template
description: '> Use this endpoint to create email templates on the Braze dashboard.
To use this endpoint, youll need to generate an API key with the `templates.email.create` permission.
These templates will be available on the **Templates & Media** page. The response from this endpoint will include a field for `email_template_id`, which can be used to update the template in subsequent API calls.
Users email subscription status can be updated and retrieved via Braze using a RESTful API. You can use the API to set up bi-directional sync between Braze and other email systems or your own database. All API requests are made over HTTPS.
### Rate limit
We apply the default Braze rate limit of 250,000 requests per hour to this endpoint, as documented in API rate limits.
### Request parameters
| Parameter | Required | Data Type | Description |
| --- | --- | --- | --- |
| `template_name` | Required | String | Name of your email template. |
| `subject` | Required | String | Email template subject line. |
| `body` | Required | String | Email template body that may include HTML. |
| `plaintext_body` | Optional | String | A plaintext version of the email template body. |
| `preheader` | Optional | String | Email preheader used to generate previews in some clients. |
| `tags` | Optional | String | Tags must already exist. |
| `should_inline_css` | Optional | Boolean | Enables or disables the `inline_css` feature per template. If not provided, Braze will use the default setting for the app group. One of `true` or `false` is expected. |
### Possible errors
The following table lists possible returned errors and their associated troubleshooting steps, if applicable.
| Error | Troubleshooting |
| --- | --- |
| Template name is required | Enter a template name. |
| Tags must be an array | Tags must be formatted as an array of strings, for example `["marketing", "promotional", "transactional"]`. |
| All tags must be strings | Make sure your tags are encapsulated in quotes (`""`). |
| Some tags could not be found | To add a tag when creating an email template, the tag must already exist in Braze. |
| Email must have valid Content Block names | The email contains Content Blocks that don''t exist in this environment. |
| Invalid value for `should_inline_css`. One of `true` or `false` was expected | This parameter only accepts boolean values (true or false). Make sure the value for `should_inline_css` is not encapsulated in quotes (`""`), which causes the value to be sent as a string instead. |'
requestBody:
content:
application/json:
schema:
type: object
example:
template_name: email_template_name
subject: Welcome to my email template!
body: This is the text within my email body and https://www.braze.com/ here is a link to Braze.com.
plaintext_body: This is the text within my email body and here is a link to https://www.braze.com/.
preheader: My preheader is pretty cool.
tags:
- Tag1
- Tag2
properties:
template_name:
type: string
subject:
type: string
body:
type: string
plaintext_body:
type: string
preheader:
type: string
tags:
type: array
items:
type: string
parameters:
- name: Content-Type
in: header
schema:
type: string
example: application/json
- name: Authorization
in: header
schema:
type: string
example: Bearer {{api_key}}
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
'201':
description: Successful response
content:
application/json:
schema:
type: object
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
operationId: postTemplatesEmailCreate
x-operation-id-source: derived
components:
responses:
Unauthorized:
description: 401 Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
BadRequest:
description: 400 Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
NotFound:
description: 404 Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Forbidden:
description: 403 Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
InternalServerError:
description: 500 Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
TooManyRequests:
description: 429 Rate Limited
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
schemas:
Error:
type: object
properties:
message:
type: string
errors:
type: array
items:
type: string
securitySchemes:
BearerAuth:
type: http
scheme: bearer