SparkPost Templates API
Create, retrieve, update, delete, and preview stored email templates. Templates support dynamic substitution data and support both text and HTML parts.
Create, retrieve, update, delete, and preview stored email templates. Templates support dynamic substitution data and support both text and HTML parts.
openapi: 3.0.3
info:
title: SparkPost Templates API
description: Create, retrieve, update, delete, and preview stored email templates. Templates support dynamic substitution data and both text and HTML parts.
version: 1.0.0
contact:
name: SparkPost Developer Support
url: https://developers.sparkpost.com/api/templates/
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0
servers:
- url: https://api.sparkpost.com/api/v1
description: SparkPost Production API
security:
- ApiKeyAuth: []
paths:
/templates:
post:
operationId: createTemplate
summary: Create a Template
description: Create a new email template with HTML, text, and AMP HTML parts.
tags:
- Templates
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TemplateRequest'
responses:
'200':
description: Template created
content:
application/json:
schema:
$ref: '#/components/schemas/TemplateCreateResponse'
'422':
description: Validation error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
get:
operationId: listTemplates
summary: List All Templates
description: Retrieve a list of all stored templates.
tags:
- Templates
parameters:
- name: draft
in: query
required: false
description: If true, returns drafts in addition to published templates
schema:
type: boolean
- name: shared_with_subaccounts
in: query
required: false
description: Filter by templates shared with subaccounts
schema:
type: boolean
responses:
'200':
description: List of templates
content:
application/json:
schema:
$ref: '#/components/schemas/TemplateListResponse'
/templates/{id}:
get:
operationId: getTemplate
summary: Retrieve a Template
description: Retrieve a stored template by its ID.
tags:
- Templates
parameters:
- name: id
in: path
required: true
description: Template ID
schema:
type: string
- name: draft
in: query
required: false
description: If true, returns the draft version
schema:
type: boolean
responses:
'200':
description: Template details
content:
application/json:
schema:
$ref: '#/components/schemas/TemplateResponse'
put:
operationId: updateTemplate
summary: Update a Template
description: Update a draft or published template. Use update_published=true to update a published template directly.
tags:
- Templates
parameters:
- name: id
in: path
required: true
description: Template ID
schema:
type: string
- name: update_published
in: query
required: false
description: If true, updates the published version directly
schema:
type: boolean
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TemplateUpdateRequest'
responses:
'200':
description: Template updated
delete:
operationId: deleteTemplate
summary: Delete a Template
description: Delete a stored template.
tags:
- Templates
parameters:
- name: id
in: path
required: true
description: Template ID
schema:
type: string
responses:
'200':
description: Template deleted
'409':
description: Template is in use by an active transmission
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/templates/{id}/preview:
post:
operationId: previewTemplate
summary: Preview a Template
description: Render a template with substitution data to preview the output.
tags:
- Templates
parameters:
- name: id
in: path
required: true
description: Template ID
schema:
type: string
- name: draft
in: query
required: false
description: If true, previews the draft version
schema:
type: boolean
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
substitution_data:
type: object
additionalProperties: true
description: Variables to substitute into the template
responses:
'200':
description: Rendered template preview
content:
application/json:
schema:
$ref: '#/components/schemas/TemplatePreviewResponse'
/utils/content-previewer:
post:
operationId: previewInlineTemplate
summary: Preview Inline Template
description: Preview an inline template with substitution data without saving it.
tags:
- Templates
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
substitution_data:
type: object
additionalProperties: true
content:
$ref: '#/components/schemas/TemplateContent'
responses:
'200':
description: Rendered inline template preview
components:
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: Authorization
schemas:
TemplateContent:
type: object
properties:
html:
type: string
description: HTML part of the email
text:
type: string
description: Plain text part of the email
amp_html:
type: string
description: AMP HTML part of the email
subject:
type: string
description: Email subject line (supports substitution variables)
from:
oneOf:
- type: string
- type: object
properties:
email:
type: string
name:
type: string
description: Sender address
reply_to:
type: string
description: Reply-to address
headers:
type: object
additionalProperties:
type: string
description: Additional email headers
TemplateOptions:
type: object
properties:
transactional:
type: boolean
open_tracking:
type: boolean
click_tracking:
type: boolean
TemplateRequest:
type: object
properties:
id:
type: string
description: Unique alphanumeric ID (auto-generated if not provided)
name:
type: string
description: Display name for the template
description:
type: string
description: Template description
content:
$ref: '#/components/schemas/TemplateContent'
options:
$ref: '#/components/schemas/TemplateOptions'
shared_with_subaccounts:
type: boolean
description: Whether this template is shared with subaccounts
TemplateUpdateRequest:
type: object
properties:
name:
type: string
description:
type: string
content:
$ref: '#/components/schemas/TemplateContent'
options:
$ref: '#/components/schemas/TemplateOptions'
shared_with_subaccounts:
type: boolean
published:
type: boolean
description: Set to true to publish the draft
TemplateCreateResponse:
type: object
properties:
results:
type: object
properties:
id:
type: string
TemplateResponse:
type: object
properties:
results:
type: object
properties:
id:
type: string
name:
type: string
description:
type: string
published:
type: boolean
content:
$ref: '#/components/schemas/TemplateContent'
options:
$ref: '#/components/schemas/TemplateOptions'
shared_with_subaccounts:
type: boolean
last_update_time:
type: string
format: date-time
TemplateListResponse:
type: object
properties:
results:
type: array
items:
$ref: '#/components/schemas/TemplateResponse'
TemplatePreviewResponse:
type: object
properties:
results:
type: object
properties:
subject:
type: string
html:
type: string
text:
type: string
amp_html:
type: string
from:
type: string
ErrorResponse:
type: object
properties:
errors:
type: array
items:
type: object
properties:
message:
type: string
code:
type: string
description:
type: string