Creative overrides API
Creative overrides endpoints in the Brix REST API: 3 operations (GET, PUT, PATCH). 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.
GET /v1/creative-overrides/{creativeId}PUT /v1/creative-overrides/{creativeId}PATCH /v1/creative-overrides/{creativeId}
Every 4xx and 5xx response below returns this body:
| Field | Type | Description |
|---|---|---|
error | string | Machine-readable code: unauthorized, forbidden, not_found, validation_error, conflict, rate_limited, internal_error, … |
message | string | Human-readable explanation. Safe to show an operator. |
requestId | string | Present on 5xx: quote it to support. |
GET /v1/creative-overrides/{creativeId}
Return the edits a location has made to a creative that was shared with it, the merged result of applying those edits, and any edits that have stopped applying.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
creativeId | path | string | yes | Creative id: one of yours, or one shared into this workspace. |
node | query | string | no | Location id. Default: the workspace root. |
view | query | "values" | no | values: leave out creative and base (the two full designs) and add editable. For setting prices from a script or an AI tool. |
curl "https://api.brixsignage.com/v1/creative-overrides/{creativeId}" \
-H "Authorization: Bearer $BRIX_API_KEY" Response 200: Success.
| Field | Type | Description |
|---|---|---|
data | object | |
data.creativeId | string | |
data.nodeId | string | The location the edits apply at. |
data.values | object | The location's edits: box id → the box fields it changes (for example { "price": { "text": "13.00" } }). |
data.overrideId | string | null | Id of the stored edits (what an approval request is opened against); null before the first save. |
data.approvalState | "draft" | "pending" | "approved" | "rejected" | Review state of the edits (not of the design). |
data.requiresApproval | boolean | The location requires approval before the edits air. |
data.skipsApproval | boolean | The author waived that review for this design. |
data.creative | OverrideCreative | A creative's design: the boxes and scenes with their settings. |
data.creative.id | string | |
data.creative.nodeId | string | null | |
data.creative.name | string | |
data.creative.backgroundUrl | string | null | |
data.creative.boxes | array of object | |
data.creative.scenes | array of object | |
data.creative.dataSourceId | string | null | |
data.creative.stage | string | Absent when not set. |
data.creative.shareLockDefault | any | null | |
data.creative.shareEditsSkipApproval | boolean | |
data.creative.stageWidth | integer | |
data.creative.stageHeight | integer | |
data.creative.touchEnabled | boolean | |
data.creative.approvalState | "draft" | "pending" | "approved" | "rejected" | Review state. Editing an approved row returns it to draft. |
data.creative.updatedAt | string | ISO-8601 timestamp (UTC). |
data.orphanedBoxIds | array of string | Edited box ids the design no longer has. |
data.sharedFrom | string | null | The workspace that owns the design, when it was shared in from another workspace. |
data.base | OverrideCreative | A creative's design: the boxes and scenes with their settings. |
data.base.id | string | |
data.base.nodeId | string | null | |
data.base.name | string | |
data.base.backgroundUrl | string | null | |
data.base.boxes | array of object | |
data.base.scenes | array of object | |
data.base.dataSourceId | string | null | |
data.base.stage | string | Absent when not set. |
data.base.shareLockDefault | any | null | |
data.base.shareEditsSkipApproval | boolean | |
data.base.stageWidth | integer | |
data.base.stageHeight | integer | |
data.base.touchEnabled | boolean | |
data.base.approvalState | "draft" | "pending" | "approved" | "rejected" | Review state. Editing an approved row returns it to draft. |
data.base.updatedAt | string | ISO-8601 timestamp (UTC). |
data.editable | array of object | With view=values: every text box the author left editable, with the text it shows now. |
data.editable[].boxId | string | |
data.editable[].name | string | null | |
data.editable[].text | string | |
data.rejectedFields | array of string | boxId.field edits that no longer apply because the author locked the field. |
data.updatedAt | string | null | When the edits were last saved; null before the first save. |
Response 401: Missing, expired or revoked bearer token.
Response 403: The token lacks the permission this operation needs (see x-brix-permission).
Response 404: Unknown location, no such creative, or the creative is not usable at that location.
Response 5XX: Server error. The body carries a requestId to quote to support.
PUT /v1/creative-overrides/{creativeId}
Replace a location's edits to a shared creative. If the creative's author has locked a field against editing, the request is rejected with a 422 error for that field.
Notes.
- The response has no sharedFrom, base or rejectedFields (GET has them). A save returns approved edits to draft.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
creativeId | path | string | yes | Creative id: one of yours, or one shared into this workspace. |
node | query | string | no | Location id. Default: the workspace root. |
Request body: application/json
| Field | Type | Required | Description |
|---|---|---|---|
values | object | yes | Every edit to keep, at most 300 boxes. Edits left out are removed. |
curl -X PUT "https://api.brixsignage.com/v1/creative-overrides/{creativeId}" \
-H "Authorization: Bearer $BRIX_API_KEY" \
-H "Content-Type: application/json" Response 200: Success.
| Field | Type | Description |
|---|---|---|
data | object | |
data.creativeId | string | |
data.nodeId | string | The location the edits apply at. |
data.values | object | The location's edits: box id → the box fields it changes (for example { "price": { "text": "13.00" } }). |
data.overrideId | string | null | Id of the stored edits (what an approval request is opened against); null before the first save. |
data.approvalState | "draft" | "pending" | "approved" | "rejected" | Review state of the edits (not of the design). |
data.requiresApproval | boolean | The location requires approval before the edits air. |
data.skipsApproval | boolean | The author waived that review for this design. |
data.creative | OverrideCreative | A creative's design: the boxes and scenes with their settings. |
data.creative.id | string | |
data.creative.nodeId | string | null | |
data.creative.name | string | |
data.creative.backgroundUrl | string | null | |
data.creative.boxes | array of object | |
data.creative.scenes | array of object | |
data.creative.dataSourceId | string | null | |
data.creative.stage | string | Absent when not set. |
data.creative.shareLockDefault | any | null | |
data.creative.shareEditsSkipApproval | boolean | |
data.creative.stageWidth | integer | |
data.creative.stageHeight | integer | |
data.creative.touchEnabled | boolean | |
data.creative.approvalState | "draft" | "pending" | "approved" | "rejected" | Review state. Editing an approved row returns it to draft. |
data.creative.updatedAt | string | ISO-8601 timestamp (UTC). |
data.orphanedBoxIds | array of string | Edited box ids the design no longer has. |
data.updatedAt | string | ISO-8601 timestamp (UTC). |
Response 401: Missing, expired or revoked bearer token.
Response 403: You lack creative.edit at that location.
Response 404: Unknown location, no such creative, or the creative is not usable at that location.
Response 422: validation_error (bad values, more than 300 boxes, unknown box ids in unknownBoxes) or locked (fields the author locked, in violations).
Response 5XX: Server error. The body carries a requestId to quote to support.
PATCH /v1/creative-overrides/{creativeId}
Change only the edits you name on a creative shared with a location, keeping every other edit. Send null for a box to remove its edits. Fields the creative's author locked are rejected with a 422 error.
Notes.
- Use this to set one price without resending the others. values in the response is every stored edit after the change. A save returns approved edits to draft.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
creativeId | path | string | yes | Creative id: one of yours, or one shared into this workspace. |
node | query | string | no | Location id. Default: the workspace root. |
Request body: application/json
| Field | Type | Required | Description |
|---|---|---|---|
values | object | yes | Only the boxes to change, keyed by box id. A box's fields are layered over its stored edits; null removes that box's edits. Boxes left out keep their edits. |
curl -X PATCH "https://api.brixsignage.com/v1/creative-overrides/{creativeId}" \
-H "Authorization: Bearer $BRIX_API_KEY" \
-H "Content-Type: application/json" Response 200: Success.
| Field | Type | Description |
|---|---|---|
data | object | |
data.creativeId | string | |
data.nodeId | string | The location the edits apply at. |
data.values | object | The location's edits: box id → the box fields it changes (for example { "price": { "text": "13.00" } }). |
data.overrideId | string | null | Id of the stored edits (what an approval request is opened against); null before the first save. |
data.approvalState | "draft" | "pending" | "approved" | "rejected" | Review state of the edits (not of the design). |
data.requiresApproval | boolean | The location requires approval before the edits air. |
data.skipsApproval | boolean | The author waived that review for this design. |
data.creative | OverrideCreative | A creative's design: the boxes and scenes with their settings. |
data.creative.id | string | |
data.creative.nodeId | string | null | |
data.creative.name | string | |
data.creative.backgroundUrl | string | null | |
data.creative.boxes | array of object | |
data.creative.scenes | array of object | |
data.creative.dataSourceId | string | null | |
data.creative.stage | string | Absent when not set. |
data.creative.shareLockDefault | any | null | |
data.creative.shareEditsSkipApproval | boolean | |
data.creative.stageWidth | integer | |
data.creative.stageHeight | integer | |
data.creative.touchEnabled | boolean | |
data.creative.approvalState | "draft" | "pending" | "approved" | "rejected" | Review state. Editing an approved row returns it to draft. |
data.creative.updatedAt | string | ISO-8601 timestamp (UTC). |
data.orphanedBoxIds | array of string | Edited box ids the design no longer has. |
data.updatedAt | string | ISO-8601 timestamp (UTC). |
Response 401: Missing, expired or revoked bearer token.
Response 403: You lack creative.edit at that location.
Response 404: Unknown location, no such creative, or the creative is not usable at that location.
Response 422: validation_error (bad values, more than 300 boxes in total, unknown box ids in unknownBoxes) or locked (fields the author locked, in violations).
Response 5XX: Server error. The body carries a requestId to quote to support.