A template’s versions
const url = 'https://api.sloose.com/orgs/org_9f3c/templates/b3f1c8a2/versions?limit=50';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://api.sloose.com/orgs/org_9f3c/templates/b3f1c8a2/versions?limit=50' \ --header 'Authorization: Bearer <token>'Its history, newest first: one version for every change to its configuration — made by a person, an API token, an agent over MCP or a configuration repo’s push — each with the recipe it held, migrated to the current schema version on read, and the import it was saved from when it was. The template’s own version is the newest. A page at a time — limit and cursor, answering nextCursor.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”The org id the session was issued for. A token for one org can never read another.
Example
org_9f3cThe org id the session was issued for. A token for one org can never read another.
The template id.
Example
b3f1c8a2The template id.
Query Parameters
Section titled “Query Parameters”How many to return, at most 200; 50 when absent. Anything but a whole number above zero — 0, negative, a fraction, not a number — is the default, never an error.
Example
50How many to return, at most 200; 50 when absent. Anything but a whole number above zero — 0, negative, a fraction, not a number — is the default, never an error.
The nextCursor of the page before this one; absent for the first page. Opaque: it names a place in the list’s version order, and a malformed one is 400 INVALID_CURSOR.
The nextCursor of the page before this one; absent for the first page. Opaque: it names a place in the list’s version order, and a malformed one is 400 INVALID_CURSOR.
Responses
Section titled “Responses”A page of its versions, newest first.
object
object
The recipe at this version, migrated to the current schema version on read. Null when it could not be migrated.
Why config could not be migrated, when it could not.
The configuration version the recipe was built against, as its save REPORTED it (#616): an agent’s save over MCP stamps the version it checked the recipe against, and a repository’s push the version it wrote (none when another write landed while it wrote the configuration, which it checks before its templates; one landing while the templates are saved is outside that check, and the stamp stays, #650); any other save, the registryVersion it sent — a label the server stores for any version the org has reached, not one it checked. null when the save said none.
Who made it: a person, a person’s API token, an agent over MCP, or a configuration repo’s push. History, not a lock — only managedBy on the template refuses changes.
The person, or the person a token or an agent acted for.
Their name, or their address when they have cleared it — including somebody who has since left the org. A deleted person reads as one.
The import it was saved from. Null for a version that came from no import, or once that import has gone.
Pass as cursor for the next page; null when this was the last.
Example
{ "versions": [ { "madeBy": "user" } ]}cursor is malformed (code: INVALID_CURSOR).
The error envelope every non-2xx answer uses.
object
Human-readable explanation.
Machine-readable reason. Absent on a few legacy 400s.
Examplegenerated
{ "error": "example", "code": "example"}No bearer, or one that is expired, revoked or no longer resolves to a member.
The error envelope every non-2xx answer uses.
object
Human-readable explanation.
Machine-readable reason. Absent on a few legacy 400s.
Examplegenerated
{ "error": "example", "code": "example"}The bearer’s role is too low, or it was issued for a different org.
The error envelope every non-2xx answer uses.
object
Human-readable explanation.
Machine-readable reason. Absent on a few legacy 400s.
Examplegenerated
{ "error": "example", "code": "example"}No such template, or it is not visible to this session.
The error envelope every non-2xx answer uses.
object
Human-readable explanation.
Machine-readable reason. Absent on a few legacy 400s.
Examplegenerated
{ "error": "example", "code": "example"}