Appearance
Backend API
The Stripo Plugin Backend API allows for various operations related to compiling and managing email templates, including inlining CSS styles into HTML tags to provide the final HTML code ready to be sent to recipients. Please take a look at the available methods below.
Compiling Email Templates
This API call allows inlining CSS styles into HTML tags and provides the final HTML code of email templates that are ready to be sent to recipients.
OpenAPI Specification
Reference
yaml
openapi: 3.0.3
info:
title: Compiling Email Templates
description: |
This API call allows inlining CSS styles into HTML tags and provides the final HTML code of email templates that are ready to be sent to recipients.
version: 1.0.0
servers:
- url: https://plugins.stripo.email
description: Stripo API server
paths:
/coediting/v1/email/compilation:
get:
tags:
- Methods
summary: Get compiled email
description: Get compiled inline CSS into HTML email templates.
parameters:
- name: minimize
in: query
required: false
description: >-
If true then html code will be in a format of a single line without
line breaks
schema:
type: boolean
example: false
- name: inlineCss
in: query
required: false
description: >
Allows you to select the type of code in the received compiled
email.
inlineCss: true - by default. This means that we will see CSS placed inside tags when we make a compiled form of HTML.
inlineCss: false - editor will not inline the CSS in the tags, but rather write it at the head of the email.
schema:
type: boolean
example: false
- name: ES-PLUGIN-AUTH
in: header
required: true
description: Stripo plugin auth token in the format - Bearer ${AUTH_TOKEN}
schema:
type: string
- name: ES-PLUGIN-UI-DATA
in: header
required: true
description: >
JSON string with parameters to identify email (Same as metadata param in UI editor). For example: {"emailId": "id1"}
schema:
type: string
responses:
'200':
description: Compiled email
content:
application/json:
schema:
$ref: '#/components/schemas/CompiledEmail'
components:
schemas:
CompiledEmail:
type: object
properties:
html:
type: string
description: Compiled HTML
ampHtml:
type: string
description: Compiled AMP version of HTML
ampErrors:
type: array
description: List of AMP errors inside AMP HTML email template
items:
type: string
syncModules:
type: array
description: List of IDs of sync modules what was found in the HTML
items:
type: integer
format: int64
conditions:
type: array
description: List of AMP errors inside AMP HTML email template
items:
$ref: '#/components/schemas/Condition'
Condition:
type: object
properties:
id:
type: string
description: Condition ID
name:
type: string
description: Condition name
description:
type: string
description: Condition description
beforeScript:
type: string
description: Content of beforeScript section
afterScript:
type: string
description: Content of afterScript sectionRetrieving HTML and CSS (Legacy Compatibility)
This API call allows you to retrieve HTML and CSS from the “reference email” in Stripo’s database. This is particularly useful for maintaining compatibility with older versions of the Stripo editor.
OpenAPI Specification
Reference
yaml
openapi: 3.0.3
info:
title: Retrieving HTML and CSS (Legacy Compatibility)
description: |
Returns HTML with developer markup and classes, along with CSS, to be stored within your database. This method ensures that when a customer wants to open an email with the editor (old plugin) next time, the stored HTML and CSS can be sent to the editor, maintaining compatibility with legacy systems and preserving the email's design and structure.
version: 1.0.0
servers:
- url: https://plugins.stripo.email
description: Stripo API server
paths:
/coediting/v1/email/html-css:
get:
tags:
- Methods
summary: Get HTML and CSS of email template
description: Get HTML with developer markup and classes, along with CSS
parameters:
- name: ES-PLUGIN-AUTH
in: header
required: true
description: Stripo plugin auth token in the format - Bearer ${AUTH_TOKEN}
schema:
type: string
- name: ES-PLUGIN-UI-DATA
in: header
required: true
description: >
JSON string with parameters to identify email (Same as metadata param in UI editor). For example: {"emailId": "id1"}
schema:
type: string
responses:
'200':
description: HTML and CSS of email template
content:
application/json:
schema:
$ref: '#/components/schemas/HtmlCss'
components:
schemas:
HtmlCss:
type: object
properties:
html:
type: string
description: HTML of email template
css:
type: string
description: CSS of email template
emailId:
type: integer
format: int64
description: ID of email
syncModules:
type: array
description: List of IDs of sync modules what was found in the HTML (only in case you've activated the Synchronized Modules)
items:
type: integer
format: int64
utm:
$ref: '#/components/schemas/UtmParams'
description: UTM params of email template
UtmParams:
type: object
properties:
source:
type: string
description: UTM source
medium:
type: string
description: UTM medium
campaign:
type: string
description: UTM campaign
content:
type: string
description: UTM content
term:
type: string
description: UTM term
custom:
description: UTM custom properties
additionalProperties:
type: string
nullable: trueRetrieving Plugin Modules
This API call allows you to retrieve a list of email template modules (also known as custom blocks) created within your Stripo Plugin environment.
You can use this endpoint to fetch all modules associated with your plugin, including their metadata, icons, HTML/CSS content, categories, and synchronization status.
For faster response, modules are returned without HTML/CSS content by default. If you need to include it, set the withContent parameter to true
OpenAPI Specification
Reference
yaml
openapi: 3.0.3
info:
title: Modules API
description: |
This API specification describes the endpoint for retrieving plugin modules
from the Stripo Email Editor plugin backend service.
The endpoint allows authenticated plugins to list and filter their custom email
template modules (blocks) with advanced filtering, pagination, and sorting capabilities.
**Authentication**: Plugin-based authentication using the `ES-PLUGIN-AUTH` header.
The authentication token must have the role set to "API" to access this endpoint.
**Authorization**: Only modules belonging to the authenticated plugin are returned.
Cross-plugin access is not permitted.
**Performance Optimization**: Use the `withContent` parameter to include HTML and CSS
content in responses. By default, content is excluded for optimal performance.
**Filtering Capabilities**: Support for filtering by key, category, tags, synchronization
status, and full-text search on module names.
**Pagination**: Flexible pagination using either offset-based or page-based approaches
with configurable page sizes.
version: 1.0.0
contact:
name: Stripo Support
url: https://stripo.email
servers:
- url: https://plugins.stripo.email
description: Plugin Backend Service
security:
- pluginAuth: []
paths:
/api/v1/customblocks/v4/modules/list:
get:
summary: List plugin modules
tags:
- modules
operationId: getModulesList
description: |
Retrieve a paginated and filterable list of all plugin modules belonging to
the authenticated plugin.
**Authorization**: Only modules associated with the plugin identified by the
provided authentication token are returned. The token must have "API" role.
**Performance**: By default, HTML and CSS content are excluded for optimal performance.
Set `withContent=true` to include HTML and CSS content in the response.
**Filtering**: Combine multiple filters (key, query, categories, tags, id,
synchronizable) to narrow down results. All filters are applied with AND logic.
**Sorting**: Results can be sorted by `id` or `name` in ascending or descending order.
**Pagination**: Use either `offset` for cursor-based pagination or `page` for
page-based pagination. The `limit` parameter controls the page size (default: 20).
security:
- pluginAuth: []
parameters:
- in: header
name: ES-PLUGIN-AUTH
description: |
Plugin authentication token with "API" role. Must be in Bearer token format.
required: true
schema:
type: string
example: Bearer YOUR_AUTH_TOKEN
- in: query
name: key
description: |
Filter by module key (folder name). Returns modules matching the specified key.
required: false
schema:
type: string
example: "header-templates"
- in: query
name: query
description: |
Full-text search query for module name.
required: false
schema:
type: string
example: "newsletter"
- in: query
name: categories
description: |
Filter by one or more category IDs. Returns modules belonging to any of the
specified categories.
required: false
schema:
type: array
items:
type: integer
format: int64
example: [1, 2, 5]
- in: query
name: tags
description: |
Filter by one or more tag values. Returns modules that have any of the
specified tags.
required: false
schema:
type: array
items:
type: string
example: ["promotional", "seasonal"]
- in: query
name: id
description: |
Filter by specific module ID. When provided, returns only the module with
this exact ID (if it belongs to the authenticated plugin).
required: false
schema:
type: integer
format: int64
example: 12345
- in: query
name: synchronizable
description: |
Filter by synchronizable status. Set to `true` for synchronizable modules only,
`false` for non-synchronizable modules only, or omit for all modules.
required: false
schema:
type: boolean
example: true
- in: query
name: withContent
description: |
Performance optimization flag. When set to `true`, the `html` and `css` fields
will be included in the response. By default (`false`), content is excluded
to reduce response size when only module metadata is needed.
required: false
schema:
type: boolean
default: false
example: false
- in: query
name: sortingColumn
description: |
Column to sort results by. Options are `id` (module ID) or `name` (module name).
required: false
schema:
type: string
enum: [id, name]
default: id
example: "name"
- in: query
name: sortingAsc
description: |
Sort direction. Set to `true` for ascending order, `false` for descending order.
required: false
schema:
type: boolean
default: false
example: true
- in: query
name: offset
description: |
Zero-based pagination offset. Specifies the starting position in the result set.
Takes precedence over the `page` parameter when both are provided.
required: false
schema:
type: integer
minimum: 0
default: 0
example: 0
- in: query
name: page
description: |
One-based page number for pagination. Used only if `offset` is not provided.
Calculated as: offset = (page - 1) * limit
required: false
schema:
type: integer
minimum: 1
example: 1
- in: query
name: limit
description: |
Maximum number of modules to return per page. Controls the page size for pagination.
required: false
schema:
type: integer
minimum: 1
maximum: 100
default: 20
example: 20
responses:
'200':
description: |
Modules list retrieved successfully. Returns a paginated list of modules
with metadata and optionally HTML/CSS content.
content:
application/json:
schema:
$ref: '#/components/schemas/ModulesListResponseDto'
examples:
basicList:
summary: Basic module list with content (withContent=true)
value:
modules:
- id: 12345
key: "header-templates"
name: "Modern Header"
html: "<table>...</table>"
css: ".header { padding: 20px; }"
blockType: "BASIC"
scope: "HEADER"
icon: "https://example.com/icon.png"
croppedIcon: "https://example.com/icon-cropped.png"
description: "A modern header template"
synchronizable: true
tags: ["modern", "responsive"]
tagObjects:
- id: 1
value: "modern"
- id: 2
value: "responsive"
category:
key: 1
name: "Headers"
createdOn: "2024-01-15T10:30:00Z"
updatedOn: "2024-01-20T14:45:00Z"
total: 1
offset: 0
limit: 20
metadataOnly:
summary: Module list without content (default, withContent=false)
value:
modules:
- id: 12345
key: "header-templates"
name: "Modern Header"
html: null
css: null
blockType: "BASIC"
scope: "HEADER"
icon: "https://example.com/icon.png"
croppedIcon: "https://example.com/icon-cropped.png"
description: "A modern header template"
synchronizable: true
tags: ["modern", "responsive"]
category:
key: 1
name: "Headers"
createdOn: "2024-01-15T10:30:00Z"
updatedOn: "2024-01-20T14:45:00Z"
total: 1
offset: 0
limit: 20
emptyList:
summary: Empty result set
value:
modules: []
total: 0
offset: 0
limit: 20
'401':
description: |
Unauthorized - Authentication failed. This can occur when:
- The authentication token is missing or invalid
- The token has expired
- The token does not have "API" role
content:
application/json:
schema:
type: object
'403':
description: |
Forbidden - The authenticated plugin does not have permissions to access modules.
This typically indicates an authorization configuration issue.
content:
application/json:
schema:
type: object
components:
securitySchemes:
pluginAuth:
type: apiKey
in: header
name: ES-PLUGIN-AUTH
description: |
Plugin authentication using Bearer token in the ES-PLUGIN-AUTH header.
The token must have "API" role to access this endpoint.
schemas:
ModulesListResponseDto:
type: object
description: Response containing a paginated list of plugin modules with metadata
properties:
modules:
type: array
items:
$ref: '#/components/schemas/ModuleListItemDto'
description: |
Array of module objects. Each module contains metadata and optionally
HTML/CSS content (depending on the `withContent` parameter).
total:
type: integer
format: int64
description: |
Total count of modules matching the filter criteria (across all pages).
Used for calculating pagination metadata.
minimum: 0
example: 42
offset:
type: integer
description: |
Current pagination offset (starting position in the result set).
Corresponds to the `offset` parameter from the request.
minimum: 0
example: 0
limit:
type: integer
description: |
Maximum number of modules returned in this page.
Corresponds to the `limit` parameter from the request.
minimum: 1
example: 20
ModuleListItemDto:
type: object
description: Represents a single plugin module with all its metadata and optional content
properties:
id:
type: integer
format: int64
description: |
Unique identifier of the module within the plugin.
example: 12345
key:
type: string
description: |
Module key (folder name). Used for organizing modules into logical groups.
example: "header-templates"
name:
type: string
description: |
Human-readable name of the module. Displayed in the editor's module library.
example: "Modern Header"
html:
type: string
nullable: true
description: |
HTML content of the module. Contains the email template markup.
This field will be `null` when `withContent=false` (default) or not specified.
example: "<table>...</table>"
css:
type: string
nullable: true
description: |
CSS styles for the module. Applied to the HTML content when rendered.
This field will be `null` when `withContent=false` (default) or not specified.
example: ".header { padding: 20px; }"
blockType:
type: string
description: |
Type of block. Determines how the module behaves in the editor.
example: "STRUCTURE"
scope:
type: string
description: |
Defines the section of the email where this module can be used.
Modules are organized by scope in the editor's module library.
enum: [INFO_AREA, HEADER, MENU, CONTENT, FOOTER]
example: "HEADER"
icon:
type: string
description: |
URL to the module's icon image. Displayed as thumbnail in the module library.
example: "https://example.com/icons/header-modern.png"
croppedIcon:
type: string
description: |
URL to the cropped version of the module's icon. Used for optimized display.
example: "https://example.com/icons/header-modern-cropped.png"
description:
type: string
description: |
Textual description of the module. Provides additional context about the
module's purpose and design.
example: "A modern, responsive header template with logo and navigation"
synchronizable:
type: boolean
description: |
Indicates whether this module supports synchronization. Synchronized modules
can be updated across multiple email templates automatically.
example: true
tags:
type: array
items:
type: string
description: |
List of tag values associated with the module. Tags provide additional
categorization and filtering capabilities. This is a simplified array
of string values.
example: ["modern", "responsive", "promotional"]
tagObjects:
type: array
items:
type: object
properties:
id:
type: integer
format: int64
description: Unique identifier of the tag
example: 1
value:
type: string
description: Tag value (name)
example: "modern"
description: |
List of tag objects with full details including tag IDs. Provides more
complete information than the `tags` array.
category:
type: object
properties:
key:
type: integer
format: int64
description: |
Unique identifier of the category.
example: 1
name:
type: string
description: |
Human-readable name of the category.
example: "Headers"
description: |
Category information for the module. Categories provide high-level
organization of modules in the editor's library.
createdOn:
type: string
format: date-time
description: |
ISO 8601 timestamp indicating when the module was created.
example: "2024-01-15T10:30:00Z"
updatedOn:
type: string
format: date-time
description: |
ISO 8601 timestamp indicating when the module was last updated.
example: "2024-01-20T14:45:00Z"
tags:
- name: modules
description: Plugin module management operationsUpdating Timer Block Links
This API call allows you to update timer links in the HTML code when copying an email template outside the Stripo editor. It ensures that the timers are correctly cloned and updated in the new template.
OpenAPI Specification
Reference
yaml
openapi: 3.0.1
info:
title: Timer Clone API
description: This API call allows you to update timer links in the HTML code when copying an email template outside the Stripo editor. It ensures that the timers are correctly cloned and updated in the new template.
version: 1.0.0
servers:
- url: https://plugins.stripo.email
paths:
/api/v1/timers/clone:
post:
tags:
- Methods
summary: Updating Timer Block Links
description: Clone timers and update timer links in HTML
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
html:
type: string
description: HTML code containing timer links
example: 'Timer link: ...'
required:
- html
parameters:
- in: header
name: ES-PLUGIN-AUTH
required: true
schema:
type: string
description: Authorization token
example: Bearer YOUR_AUTH_TOKEN
responses:
'200':
description: Successful response with updated HTML and timer mapping
content:
application/json:
schema:
type: object
properties:
html:
type: string
description: HTML code with updated timer links
example: 'Timer link: ...'
timersMap:
type: object
description: Mapping of old timer IDs to new timer IDs and URLs
additionalProperties:
type: objectAccess to Stripo Templates
Stripo provides access to a variety of email templates that you can use based on your subscription plan. If you have registered your account and integrated your plugin application, you can access these templates.
Template Access Based on Plan:
- FREE Plan: Access to basic templates only.
- STARTUP Plan: Access to basic templates and those marked as FREE.
- BUSINESS and ENTERPRISE Plans: Access to basic, free, and PREMIUM templates.
How to Access Templates
After making the initial request to get an array of the available templates, you will need to make individual calls for each template to retrieve its HTML and CSS.
Step-by-Step Process
- Get List of Templates: Make a request to retrieve an array of available templates based on your plan.
Endpoint:GET /bapi/plugin-templates/v1/templates - Get HTML and CSS for Each Template: For each template in the array, make separate requests to retrieve its HTML and CSS.
Endpoint:GET /bapi/plugin-templates/v1/templates/{templateId}
OpenAPI Specification
Reference
yaml
openapi: 3.0.0
info:
title: Stripo Email Template API
description: |
Stripo provides access to a variety of email templates that you can use based on your subscription plan. If you have registered your account and integrated your plugin application, you can access these templates.
After making the initial request to get an array of the available templates, you will need to make individual calls for each template to retrieve its HTML and CSS.
version: 1.0.0
servers:
- url: https://my.stripo.email/bapi/plugin-templates
paths:
/v1/templates:
get:
tags:
- Methods
summary: Get Templates
description: Get templates matching the specified search criteria.
parameters:
- name: type
in: query
required: true
schema:
type: string
enum: [BASIC, FREE, PREMIUM]
description: Specifies the variety of templates to be returned.
- name: sort
in: query
schema:
type: string
enum: [NEW, ACTUAL]
default: ACTUAL
description: Defines how the templates are sorted in response.
- name: limit
in: query
schema:
type: integer
description: Regulates how many items should be returned per page (suggested limit of no more than 50).
- name: page
in: query
schema:
type: integer
description: Defines the number of the page.
- name: templateTypes
in: query
schema:
type: array
items:
type: integer
description: Filters templates that specifically pertain to relevant categories.
- name: templateSeasons
in: query
schema:
type: array
items:
type: integer
description: Restricts the selection of templates to those associated with seasonal events categories.
- name: templateFeatures
in: query
schema:
type: array
items:
type: integer
description: Ensures that only templates related to specific feature categories are retrieved.
- name: templateIndustries
in: query
schema:
type: array
items:
type: integer
description: Narrows down template selection to include only those featuring industry-specific categories.
responses:
'200':
description: A list of templates matching the search criteria.
content:
application/json:
schema:
type: object
properties:
total:
type: integer
data:
type: array
items:
type: object
properties:
templateId:
type: integer
name:
type: string
logo:
type: string
premium:
type: boolean
hasAmp:
type: boolean
updatedAt:
type: integer
createdTime:
type: integer
templateTypes:
type: array
items:
type: object
properties:
id:
type: integer
name:
type: string
templateSeasons:
type: array
items:
type: object
properties:
id:
type: integer
name:
type: string
templateFeatures:
type: array
items:
type: object
properties:
id:
type: integer
name:
type: string
templateIndustries:
type: array
items:
type: object
properties:
id:
type: integer
name:
type: string
security:
- ES-PLUGIN-AUTH: []
/v1/templates/{templateId}:
get:
tags:
- Methods
summary: Get Template Details
description: Get the metadata, HTML, and CSS code for a specific template by ID.
parameters:
- name: templateId
in: path
required: true
schema:
type: integer
responses:
'200':
description: Metadata, HTML, and CSS code for the specified template.
content:
application/json:
schema:
type: object
properties:
templateId:
type: integer
name:
type: string
logo:
type: string
premium:
type: boolean
hasAmp:
type: boolean
updatedAt:
type: integer
createdTime:
type: integer
templateTypes:
type: array
items:
type: object
properties:
id:
type: integer
name:
type: string
templateSeasons:
type: array
items:
type: object
properties:
id:
type: integer
name:
type: string
templateFeatures:
type: array
items:
type: object
properties:
id:
type: integer
name:
type: string
templateIndustries:
type: array
items:
type: object
properties:
id:
type: integer
name:
type: string
html:
type: string
css:
type: string
security:
- ES-PLUGIN-AUTH: []
/v1/templates/types:
get:
tags:
- Methods
summary: Get Template Types
description: Get available values for the templateTypes parameter.
responses:
'200':
description: Array of available values for the templateTypes parameter.
content:
application/json:
schema:
type: array
items:
type: object
properties:
id:
type: integer
name:
type: string
security:
- ES-PLUGIN-AUTH: []
/v1/templates/seasons:
get:
tags:
- Methods
summary: Get Template Seasons
description: Get available values for the templateSeasons parameter.
responses:
'200':
description: Array of available values for the templateSeasons parameter.
content:
application/json:
schema:
type: array
items:
type: object
properties:
id:
type: integer
name:
type: string
security:
- ES-PLUGIN-AUTH: []
/v1/templates/features:
get:
tags:
- Methods
summary: Get Template Features
description: Get available values for the templateFeatures parameter.
responses:
'200':
description: Array of available values for the templateFeatures parameter.
content:
application/json:
schema:
type: array
items:
type: object
properties:
id:
type: integer
name:
type: string
security:
- ES-PLUGIN-AUTH: []
/v1/templates/industries:
get:
tags:
- Methods
summary: Get Template Industries
description: Get available values for the templateIndustries parameter.
responses:
'200':
description: Array of available values for the templateIndustries parameter.
content:
application/json:
schema:
type: array
items:
type: object
properties:
id:
type: integer
name:
type: string
security:
- ES-PLUGIN-AUTH: []
components:
securitySchemes:
ES-PLUGIN-AUTH:
type: apiKey
in: header
name: ES-PLUGIN-AUTH
description: Bearer YOUR_AUTH_TOKENDetailed Explanation
Get Templates
/v1/templates?type=BASIC
Summary: Get templates matching the specified search criteria.
Parameters:
type(required, query): Specifies the variety of templates to be returned (BASIC,FREE,PREMIUM).sort(query): Defines how the templates are sorted in response (NEW,ACTUAL).limit(query): Regulates how many items should be returned per page (suggested limit of no more than 50).page(query): Defines the number of the page.templateTypes(query): Filters templates that specifically pertain to relevant categories.templateSeasons(query): Restricts the selection of templates to those associated with seasonal events categories.templateFeatures(query): Ensures that only templates related to specific feature categories are retrieved.templateIndustries(query): Narrows down template selection to include only those featuring industry-specific categories.
Get Template Details
/v1/templates/{templateId}
Summary: Get the metadata, HTML, and CSS code for a specific template by ID.
Parameters:
templateId(required, path): The ID of the template.
Get Template Types
/v1/templates/types
- Summary: Get available values for the
templateTypesparameter.
Get Template Seasons
/v1/templates/seasons
- Summary: Get available values for the
templateSeasonsparameter.
Get Template Features
/v1/templates/features
- Summary: Get available values for the
templateFeaturesparameter.
Get Template Industries
/v1/templates/industries
- Summary: Get available values for the
templateIndustriesparameter.