Skip to the documentation
API

List versions

Every revision, newest first and a page at a time, with the declared keys each one expects.

GET/templates/{id}/versions

Runs the real call on your workspace.

GET /templates/{id}/versions

Every revision, newest first and a page at a time, with the declared keys each one expects.

Example

Needs templates:read. Takes limit (1 to 100, 25 by default) and cursor, and answers with hasMore and nextCursor: every publish adds a version, so follow nextCursor while hasMore is true to reach version 1. Bodies are left out here. Read one version with its body at GET /templates/{id}/versions/{version}.

curl
curl "$OE/templates/order-shipped/versions?limit=1" -H "$AUTH"
Response
{  "object": "list",  "data": [    {      "object": "template_version",      "id": "tplv_5d31c2a8…",      "templateId": "tpl_9c1f0a4b7e05d3862c1f0a44",      "version": 4,      "state": "draft",      "engine": "html",      "subject": "Order {{orderId}} is on its way",      "slots": [],      "props": [{ "key": "orderId", "kind": "text", "required": true, "default": null }],      "publishedAt": null,      "createdAt": "2026-08-28T16:03:10.000Z"    }  ],  "hasMore": true,  "nextCursor": "WzRd"}

This is the call that answers "what did we actually send in June". props is versioned with the body, so an old message can be read against the keys that were declared at the time rather than against today’s.

Reference