API
List versions
Every revision, newest first, with the declared keys each one expects.
GETapi.openemail.uk/templates/{id}/versions
Runs the real call against your workspace, with your own key.
GET /templates/{id}/versions
Every revision, newest first, with the declared keys each one expects.
Example
Needs templates:read. Bodies are left out here; read one version through the template itself.
curl "$OE/templates/order-shipped/versions" -H "$AUTH"{ "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" } ]}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.