Docs API reference
Releases
In a workspace that publishes manually, screens play the newest release, never the working copies. Publish the working copies as a release (now, at a time, or to some stages first), read the history, and roll back — a rollback is a new release equal to an old one. Live operations and data records never wait for a release.
Every call needs an API key in the Authorization header. New to the API? Start with
the API overview.
List releases
/releases publishingThe release history, newest first.
Parameters
limitinteger queryPage size, 1–200.
1–200. Default
50cursorstring queryThe
next_cursorof the previous page.
Responses
- 200 A page of releases.
- 401 Missing or invalid API key.
- 403 The key lacks the scope, or the role is read-only.
Response fields (200)
itemsobject[] required9 fields in
itemsnumberinteger requirednotestring requiredscopestring or object requiredall, or only these stages.valid_frominteger or null requiredA scheduled publish: epoch ms it takes effect.
rollback_ofinteger or nullcanceledbooleandocumentsintegerHow many documents it holds.
created_atinteger requiredcreated_bystring required
next_cursorstring or null requiredPass as
cursorfor the next page;nullon the last page.
curl "https://www.wunderframe.com/api/v1/releases?limit=50" \
-H "Authorization: Bearer $WUNDERFRAME_API_KEY"{
"items": [
{
"number": 43,
"note": "Lunch menu for Friday",
"scope": "all",
"valid_from": null,
"rollback_of": null,
"canceled": false,
"documents": 212,
"created_at": 1790000000000,
"created_by": "Ana Muster"
}
],
"next_cursor": null
}Error example
{
"error": {
"code": "unauthorized",
"message": "Missing or invalid API key."
}
}Publish
/releases publishingPublish the working copies as a new release. stage_ids limits it to those stages (the others keep theirs); at (ISO 8601) schedules it — screens download ahead and switch exactly then.
Request body
notestringUp to 500 characters
stage_idsstring[]atstring (date-time)
Responses
- 201 The release.
- 400 The request is invalid —
details.fieldnames the field when there is one. - 401 Missing or invalid API key.
- 403 The key lacks the scope, or the role is read-only.
Response fields (201)
releaseobject required9 fields in
releasenumberinteger requirednotestring requiredscopestring or object requiredall, or only these stages.valid_frominteger or null requiredA scheduled publish: epoch ms it takes effect.
rollback_ofinteger or nullcanceledbooleandocumentsintegerHow many documents it holds.
created_atinteger requiredcreated_bystring required
changesinteger requiredDocuments changed since the previous release.
stage_idsstring[] requiredStages the changes reach.
curl -X POST "https://www.wunderframe.com/api/v1/releases" \
-H "Authorization: Bearer $WUNDERFRAME_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"note": "Lunch menu for Friday",
"at": "2026-09-20T11:00:00+02:00"
}'{
"release": {
"number": 43,
"note": "Lunch menu",
"scope": "all",
"valid_from": null,
"created_at": 1790000000000,
"created_by": "Ana Muster"
},
"changes": 3,
"stage_ids": [
"stg_lobby",
"stg_bar"
]
}Error example
{
"error": {
"code": "invalid",
"message": "The request is invalid — `details.field` names the field when there is one."
}
}Roll back to a release
/releases/{id}/rollback publishingA new release equal to release id; history is never rewritten.
Parameters
idstring required pathThe release number to go back to.
Responses
- 201 The new release.
- 401 Missing or invalid API key.
- 403 The key lacks the scope, or the role is read-only.
- 404 Not found in this workspace.
Response fields (201)
numberinteger requirednotestring requiredscopestring or object requiredall, or only these stages.valid_frominteger or null requiredA scheduled publish: epoch ms it takes effect.
rollback_ofinteger or nullcanceledbooleandocumentsintegerHow many documents it holds.
created_atinteger requiredcreated_bystring required
curl -X POST "https://www.wunderframe.com/api/v1/releases/wkFRBzMq6POZ_qYJHvgQf/rollback" \
-H "Authorization: Bearer $WUNDERFRAME_API_KEY"{
"number": 43,
"note": "Lunch menu for Friday",
"scope": "all",
"valid_from": null,
"rollback_of": null,
"canceled": false,
"documents": 212,
"created_at": 1790000000000,
"created_by": "Ana Muster"
}Error example
{
"error": {
"code": "unauthorized",
"message": "Missing or invalid API key."
}
}