Reusable message content with Liquid rendering, and the dynamic-content tables a send looks values up in. Both are resolved per device at send time.
Create or replace a dynamic content table
Writes a whole lookup table under name, replacing any table already
there — this is a replace, not a merge. The body is either {"data": {...}} or the grid
itself: an object of row key → object of columns, where every row must carry the same
column names as the first.
One table may not exceed 200 KB, and one app's tables may not exceed 2 MB in total;
either ceiling is a 413.
path Parameters
app_idnameCreate or replace a dynamic content table › Request Body
Row key to a consistent object of column values.
Create or replace a dynamic content table › Responses
The stored table with its size
Delete a dynamic content table
Deletes one lookup table. Messages and templates that still reference it by name are not rewritten — they will fail validation the next time they are saved or sent.
path Parameters
app_idnameDelete a dynamic content table › Responses
The name of the deleted table
Export a dynamic content table as CSV
Streams one lookup table back as a CSV attachment — the same round trip
the import route reads. Cells are escaped against spreadsheet formula injection, so a value
beginning with =, +, - or @ comes back with a leading apostrophe.
path Parameters
app_idnameExport a dynamic content table as CSV › Responses
A CSV attachment of the table
Import a dynamic content table from CSV
Replaces the table under name from an uploaded CSV, sent as a multipart
field called file. The header row is a key column followed by one or more value columns;
duplicate column names, duplicate row keys and empty keys are all refused with the line
number.
The CSV may not exceed 200 KB, and the app's 2 MB dynamic-content quota still applies;
either is a 413.
path Parameters
app_idnameImport a dynamic content table from CSV › Request Body
fileCSV lookup table with a key column followed by one or more value columns.
Import a dynamic content table from CSV › Responses
The stored table with its size
Create a template
Saves a reusable push template. name, title and body are
required. Optional fields include image_url, deep_link, data, localized
languages, default_language, and validated platform_options.
Liquid in every field is validated up front, and any dynamic-content table it references
must already exist — an unknown table is a 400 rather than a template that fails at send
time. There is no API route that uploads an image: image_url must be an HTTPS URL, or
a /media/... path produced by uploading through the console.
path Parameters
app_idCreate a template › Request Body
bodyNotification body; Liquid is supported.
nameTemplate display name.
titleNotification title; Liquid is supported.
Custom payload object.
Tap destination.
Fallback language; defaults to en.
HTTPS image URL or an OpenPush /media path.
Localized title and body by language code.
Default iOS and Android presentation options.
Create a template › Responses
The stored template row
Delete a template
Deletes a saved template. Messages already sent from it keep the content they were sent with, but a scheduled message that still resolves this template by id will fail when it comes to send.
path Parameters
app_idtpl_idDelete a template › Responses
The template id and confirmation of deletion
Update a template
Updates content, localized languages, default language or platform
presentation defaults on a saved template. The merged result is revalidated, so a Liquid reference that only breaks
once combined with the untouched fields is caught here. A patch with none of those keys is a
400.
Messages already created from this template retain their content snapshot, including scheduled messages.
path Parameters
app_idtpl_idUpdate a template › Request Body
Replacement body.
Replacement custom payload.
Replacement tap destination.
Replacement fallback language.
Replacement image URL.
Replacement localized content map.
Replacement display name.
Replacement platform presentation defaults.
Replacement title.
Update a template › Responses
The template id and confirmation of the update