Signage templates API

Signage templates endpoints in the Brix REST API: 6 operations (GET, POST, PATCH, DELETE). Each lists its path, auth, required permission and a curl example.

View as Markdown · For AI agents: the full docs index is at /llms.txt

Base URL https://api.brixsignage.com. Send Authorization: Bearer $BRIX_API_KEY unless an operation says Auth: none or Auth: no API key. The Permission line names what the key must hold. See Authentication and scopes, Errors and rate limits and Pagination.

Every 4xx and 5xx response below returns this body:

FieldTypeDescription
errorstringMachine-readable code: unauthorized, forbidden, not_found, validation_error, conflict, rate_limited, internal_error, …
messagestringHuman-readable explanation. Safe to show an operator.
requestIdstringPresent on 5xx: quote it to support.

GET /v1/signage-templates

Auth: Bearer token. Permission: creative.view.

Return the signage template instances in this workspace.

ParameterInTypeRequiredDescription
limitqueryintegernoPage size. Omit to get every row; pass it to page by cursor.
cursorquerystringnoThe nextCursor of the previous page.
countquery"1"noWith limit: also return total, the number of matching rows.
usableAtquerystringnoLocation id: only rows usable at that location (homed there, at the workspace root, or shared to it).
curl "https://api.brixsignage.com/v1/signage-templates" \
  -H "Authorization: Bearer $BRIX_API_KEY"

Response 200: Success.

FieldTypeDescription
dataarray of SignageTemplate
data[].idstringSignage template id.
data[].spaceIdstring
data[].namestring
data[].configobjectThe template configuration: archetype, style, palette, orientation, content, and the schemaVersion the API stamps on every write.
data[].nodeIdstring | null
data[].masterIdstring | nullThe master template it was copied from, if any.
data[].createdAtstringISO-8601 timestamp (UTC).
data[].updatedAtstringISO-8601 timestamp (UTC).
data[].deletedAtstring | nullAlways null on these reads: deleted rows are not listed.
nextCursorstring | nullPresent when ?limit was passed. Send it back as ?cursor= for the next page; null on the last page.
totalintegerTotal matching rows, when the route computes it.

Response 401: Missing, expired or revoked bearer token.

Response 403: The token lacks the permission this operation needs (see x-brix-permission).

Response 5XX: Server error. The body carries a requestId to quote to support.

POST /v1/signage-templates

Auth: Bearer token. Permission: creative.create.

Create a signage template instance from a configuration object containing archetype, style, palette, orientation, and content. Notes. - The 201 body is the row as written, not re-read from the database, so columns the create does not set (for example lastSnapshotAt) are absent rather than null. GET returns every column.

Request body: application/json

FieldTypeRequiredDescription
namestringyes
configobject | stringnoA configuration object, or the same as a JSON string. Default {}.
nodeIdstring | nullnoHome location. Default: the caller's own location.
masterIdstring | nullnoAn id from GET /v1/signage-master-templates.
curl -X POST "https://api.brixsignage.com/v1/signage-templates" \
  -H "Authorization: Bearer $BRIX_API_KEY" \
  -H "Content-Type: application/json"

Response 201: Success.

FieldTypeDescription
dataobject
data.idstringSignage template id.
data.spaceIdstring
data.namestring
data.configobjectThe template configuration: archetype, style, palette, orientation, content, and the schemaVersion the API stamps on every write.
data.nodeIdstring | null
data.masterIdstring | null
data.createdAtstringISO-8601 timestamp (UTC).
data.updatedAtstringISO-8601 timestamp (UTC).
data.deletedAtstring | nullAlways null on these reads: deleted rows are not listed.

Response 401: Missing, expired or revoked bearer token.

Response 403: The token lacks the permission this operation needs (see x-brix-permission).

Response 422: Missing name, invalid JSON, or a location outside this workspace.

Response 5XX: Server error. The body carries a requestId to quote to support.

GET /v1/signage-templates/{id}

Auth: Bearer token. Permission: creative.view.

Return one signage template instance.

ParameterInTypeRequiredDescription
idpathstringyesSignage template id.
curl "https://api.brixsignage.com/v1/signage-templates/{id}" \
  -H "Authorization: Bearer $BRIX_API_KEY"

Response 200: Success.

FieldTypeDescription
dataSignageTemplateA signage template instance in this workspace.
data.idstringSignage template id.
data.spaceIdstring
data.namestring
data.configobjectThe template configuration: archetype, style, palette, orientation, content, and the schemaVersion the API stamps on every write.
data.nodeIdstring | null
data.masterIdstring | nullThe master template it was copied from, if any.
data.createdAtstringISO-8601 timestamp (UTC).
data.updatedAtstringISO-8601 timestamp (UTC).
data.deletedAtstring | nullAlways null on these reads: deleted rows are not listed.

Response 401: Missing, expired or revoked bearer token.

Response 403: The token lacks the permission this operation needs (see x-brix-permission).

Response 404: No such signage template in this workspace.

Response 5XX: Server error. The body carries a requestId to quote to support.

PATCH /v1/signage-templates/{id}

Auth: Bearer token. Permission: creative.edit.

Edit a signage template instance's configuration or name. Screens currently playing it receive an updated manifest reflecting the change. Notes. - When the PATCH does not send config, the response carries the stored config as it is: an old row is not brought to the current schemaVersion here (GET does that).

ParameterInTypeRequiredDescription
idpathstringyesSignage template id.

Request body: application/json

FieldTypeRequiredDescription
namestringno
configobject | stringnoA configuration object, or the same as a JSON string. Default {}.
nodeIdstring | nullnoHome location. Default: the caller's own location.
masterIdstring | nullnoAn id from GET /v1/signage-master-templates.
baseUpdatedAtstringnoOptimistic concurrency: the updatedAt you read. A stale value is refused with 409 conflict and the current row.
curl -X PATCH "https://api.brixsignage.com/v1/signage-templates/{id}" \
  -H "Authorization: Bearer $BRIX_API_KEY" \
  -H "Content-Type: application/json"

Response 200: Success.

FieldTypeDescription
dataSignageTemplateA signage template instance in this workspace.
data.idstringSignage template id.
data.spaceIdstring
data.namestring
data.configobjectThe template configuration: archetype, style, palette, orientation, content, and the schemaVersion the API stamps on every write.
data.nodeIdstring | null
data.masterIdstring | nullThe master template it was copied from, if any.
data.createdAtstringISO-8601 timestamp (UTC).
data.updatedAtstringISO-8601 timestamp (UTC).
data.deletedAtstring | nullAlways null on these reads: deleted rows are not listed.

Response 401: Missing, expired or revoked bearer token.

Response 403: Moving it to a location where you lack creative.edit.

Response 404: No such signage template in this workspace.

Response 409: conflict: the row changed since baseUpdatedAt; the body carries current.

Response 422: Invalid JSON.

Response 5XX: Server error. The body carries a requestId to quote to support.

DELETE /v1/signage-templates/{id}

Auth: Bearer token. Permission: creative.delete.

Move a signage template instance to the recycle bin.

ParameterInTypeRequiredDescription
idpathstringyesSignage template id.
forcequery"true"noDelete even when it is shared into other places; the shares go with it.
curl -X DELETE "https://api.brixsignage.com/v1/signage-templates/{id}" \
  -H "Authorization: Bearer $BRIX_API_KEY"

Response 200: Success.

FieldTypeDescription
dataobject
data.idstring
data.deletedtrue
data.sharesRemovedintegerShares removed with it.

Response 401: Missing, expired or revoked bearer token.

Response 403: The token lacks the permission this operation needs (see x-brix-permission).

Response 404: No such signage template in this workspace.

Response 409: content_shared: it is shared into other places; shareCount, crossSpaceShares, contentShares say where. Repeat with ?force=true to delete it and those shares.

Response 5XX: Server error. The body carries a requestId to quote to support.

POST /v1/signage-templates/{id}/restore

Auth: Bearer token. Permission: creative.delete.

Bring back a deleted signage template instance from the recycle bin.

ParameterInTypeRequiredDescription
idpathstringyesSignage template id.
curl -X POST "https://api.brixsignage.com/v1/signage-templates/{id}/restore" \
  -H "Authorization: Bearer $BRIX_API_KEY"

Response 200: Success.

FieldTypeDescription
dataobject
data.idstring
data.restoredtrue

Response 401: Missing, expired or revoked bearer token.

Response 403: The token lacks the permission this operation needs (see x-brix-permission).

Response 404: No such signage template in this workspace, or it was purged.

Response 409: not_deleted: it is not in the recycle bin.

Response 5XX: Server error. The body carries a requestId to quote to support.