Account API

Account endpoints in the Brix REST API: 44 operations (GET, PUT, POST, PATCH, DELETE), with auth, permissions and curl examples.

View as Markdown

Base URL https://api.brixsignage.com. Send Authorization: Bearer $BRIX_API_KEY unless an operation says No auth. The permission chip names what the key must hold. See Authentication and scopes, Errors and rate limits and Pagination.

GET/v1/account

Bearer token billing.view

Returns the workspace plan, subscription status, screen pool size, trial or paid status, and onboarding progress. **Notes.** - email, emailVerifiedAt and verificationEmailLastSentAt describe the CALLING user; they are null for an API key. - On a workspace created before the onboarding step existed, a null prefs.onboardingCompletedAt is filled with the workspace's creation time (and saved).

curl "https://api.brixsignage.com/v1/account" \
  -H "Authorization: Bearer $BRIX_API_KEY"

Response 200 Success.

FieldTypeDescription
dataAccount
data.scheduledScreenPoolobject | nullA screen plan reduction queued for the renewal.
data.contractBillingTerm | null
data.idstringWorkspace id (the account id support asks for).
data.whiteLabelbooleanA partner bills this workspace; Brix billing does not apply.
data.status"active" | "cancel_scheduled" | "paused" | "past_due" | "suspended" | "cancelled"
data.pauseUntilstring | null
data.cancelEffectiveAtstring | null
data.cancelReason"provider" | "trial_expired" | "voluntary" | "nonpayment" | null
data.everPaidboolean
data.deletionRequestedAtstring | null
data.billingBannerBillingBanner | null
data.surveyanyThe last cancellation survey (`{ reason, competitor, returnLikelihood, comment }`), or null.
data.prefsWorkspacePrefsWorkspace preferences. Every key is present (defaults filled in).
data.prefs.timeFormat"12h" | "24h"
data.prefs.weekStart"mon" | "sun"
data.prefs.dateFormat"mdy" | "dmy" | "ymd"
data.prefs.tempUnits"f" | "c"
data.prefs.timeZonestringIANA time zone. Screens without their own zone use it, and so do schedules timed by the workspace.
data.prefs.languagestringBCP 47 language tag.
data.prefs.multinationalbooleanShows the per-location and per-screen language settings.
data.prefs.navExtrasarray of stringConsole pages switched on that the workspace size hides by default.
data.prefs.appBrandingobjectThe look of the on-screen apps.
data.prefs.appBranding.accentstring
data.prefs.appBranding.accent2string
data.prefs.appBranding.theme"dark" | "light"
data.prefs.appBranding.backdrop"brand" | "wash" | "plain" | "aurora" | "dots" | "grid" | "solid"
data.prefs.appBranding.intensitynumber
data.prefs.audioobjectDefault screen volume and a master mute.
data.prefs.audio.volumenumber0–100.
data.prefs.audio.mutedboolean
data.prefs.brandobject
data.prefs.brand.companyNamestring
data.prefs.brand.logoUrlstring
data.prefs.requireAltTextboolean
data.prefs.showScreenLogoboolean
data.prefs.standbyContentKindstring | nullWhat a screen with nothing to play shows; null = the default card.
data.prefs.standbyContentIdstring | null
data.prefs.tier"simple" | "team" | "enterprise"Workspace size. It sets console defaults, not access.
data.prefs.industrystring | null
data.prefs.onboardingCompletedAtstring | null
data.prefs.setupStepstring | nullWalkthrough position (`s1`…`s5`, `l1`…`l6`, `done`).
data.prefs.orgNameSetboolean
data.prefs.tiersarray of integerLocation tree levels in use.
data.prefs.tierLabelsobjectCustom names for the location tree levels.
data.prefs.requireTwoFactorboolean
data.prefs.requireSsoboolean
data.prefs.requireSsoPendingbooleanSingle sign-on was required, and turns on after the first sign-in through the connection.
data.prefs.requireSsoPendingSincestring | null
data.prefs.aiobject
data.prefs.ai.enabledboolean
data.prefs.ai.featuresobjectPer feature (`tags`, `alt-text`, `moderation`, `transcription`, `translation`, `focal-region`, `embedding`); an absent feature follows `enabled`.
data.prefs.ai.dailyCallLimitinteger | null
data.prefs.ai.redactPersonalDataboolean
data.prefs.retentionobjectDays kept per stream, only for the streams the workspace has set. An absent stream uses the platform window.
data.prefs.retention.offlinenumber
data.prefs.retention.screenshotsnumber
data.prefs.retention.playbacknumber
data.prefs.retention.deviceLogsnumber
data.prefs.retention.vitalsnumber
data.prefs.retention.replaysnumber
data.prefs.retention.aiEventsnumber
data.prefs.warehouseobjectData warehouse feed. Set by Brix; not writable here.
data.prefs.warehouse.enabledboolean
data.prefs.warehouse.bucketBindingstringSet by Brix when the data warehouse feed is provisioned.
data.prefs.warehouse.tablesarray of string
data.prefs.warehouse.lookbackDaysinteger
data.prefs.supportAccessSupportAccessPolicy
data.prefs.supportAccess.mode"open" | "notify" | "approve"`open`: Brix support may open the workspace. `notify`: it may, and the owners are emailed. `approve`: a person here must approve each request.
data.prefs.supportAccess.grantMinutesintegerHow long an approval lasts.
data.prefs.supportAccess.requestTtlMinutesintegerHow long a request waits for an answer before it expires.
data.prefs.kioskHasGlobalPinbooleanA workspace Screen Lock PIN is set. The PIN and its hash are never returned.
data.region"us" | "eu" | "oc" | "apac"Where the workspace's data is stored.
data.billingProvider"chargebee" | "brix"`brix`: Brix invoices the account (see `payment`). `chargebee`: a card subscription.
data.paymentAccountPayment | nullOnly when `billingProvider` is `brix`.
data.subscriptionStatusstring | null
data.cadence"monthly" | "annual" | null
data.billableScreensintegerScreens that count toward the bill now.
data.licensedScreensinteger | nullScreens bought (the plan quantity or the term's screens).
data.trialEndsAtstring | null
data.nextBillingAtstring | null
data.currentTermEndsAtstring | null
data.emailVerifiedAtstring | nullThe calling user's; null for an API key.
data.verificationEmailLastSentAtstring | null
data.emailstring | nullThe calling user's email; null for an API key.

Response 401 Missing, expired or revoked bearer token.

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.

Response 403 You do not hold the permission for the whole workspace (a grant at one location is not enough).

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.

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

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/account/billing-address

Bearer token billing.view

Returns the billing address on file with the billing provider: the country used to determine invoice tax, and, for the United States and Canada, the state and postal code. The response includes configured: false when no billing address has been set yet.

curl "https://api.brixsignage.com/v1/account/billing-address" \
  -H "Authorization: Bearer $BRIX_API_KEY"

Response 200 Success.

FieldTypeDescription
dataobject | object

Response 401 Missing, expired or revoked bearer token.

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.

Response 403 You do not hold the permission for the whole workspace (a grant at one location is not enough).

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.

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

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.

PUT/v1/account/billing-address

Bearer token billing.edit

Sets the workspace billing address. country is required and validated against the ISO 3166-1 country list. For the United States and Canada, stateCode and zip are also required. This replaces the entire address on file; you cannot update a single field. **Notes.** - Answers 400 (not 422) for an invalid address, unlike most validation errors.

Request body application/json

FieldTypeRequiredDescription
countrystringyesCountry code or name.
stateCodestringnoRequired for US and Canada. Stored in upper case.
zipstringnoRequired for US and Canada.
citystringno
line1stringno
curl -X PUT "https://api.brixsignage.com/v1/account/billing-address" \
  -H "Authorization: Bearer $BRIX_API_KEY" \
  -H "Content-Type: application/json"

Response 200 Success.

FieldTypeDescription
dataobject
data.configuredtrue
data.addressobject
data.address.countrystring | nullISO 3166-1 alpha-2.
data.address.stateCodestring | nullState or province, without the country prefix (`CA`, `ON`).
data.address.zipstring | null
data.address.citystring | null
data.address.line1string | null
data.needsStateboolean

Response 400 `invalid_country` or `state_required` (400, not 422).

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.

Response 401 Missing, expired or revoked bearer token.

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.

Response 403 You do not hold the permission for the whole workspace (a grant at one location is not enough).

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.

Response 409 `no_customer`: billing is not set up yet.

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.

Response 502 The billing provider did not answer; nothing changed.

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.

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

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.

POST/v1/account/billing-mode

Bearer token billing.edit

Switches the workspace between automatic card charging (auto) and invoice billing (invoice). Switching to invoice billing requires a signed-in user with a verified work email address, so an API key can only switch to automatic charging.

Request body application/json

FieldTypeRequiredDescription
mode"auto" | "invoice"yes
curl -X POST "https://api.brixsignage.com/v1/account/billing-mode" \
  -H "Authorization: Bearer $BRIX_API_KEY" \
  -H "Content-Type: application/json"

Response 200 Success.

FieldTypeDescription
dataobject
data.mode"auto" | "invoice"

Response 401 Missing, expired or revoked bearer token.

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.

Response 403 `user_required`: switching to `invoice` needs a signed-in user with a verified work email, so an API key can switch only to `auto`. Also: You do not hold the permission for the whole workspace (a grant at one location is not enough).

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.

Response 409 `email_unverified`, `work_email_required`, `billing_not_configured`, or `under_contract`.

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.

Response 422 `mode` is not `auto` or `invoice`.

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.

Response 502 The billing provider did not answer; nothing changed.

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.

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

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.

POST/v1/account/cancel

Bearer token billing.edit

Submits a cancellation request with a reason. Choosing the reason "Seasonal Business" together with a restartDate pauses the account instead of cancelling it. Any other reason schedules cancellation for a fixed number of days after the request. Cancellation can be reversed at any time before it takes effect by calling the reactivate operation.

Request body application/json

FieldTypeRequiredDescription
reasonstringyesSurvey answer. `Seasonal Business` pauses the account instead of cancelling it.
restartDatestringnoRequired for `Seasonal Business`: when the account comes back (future, at most 12 months).
competitorstringno
returnLikelihoodnumberno
commentstringno
curl -X POST "https://api.brixsignage.com/v1/account/cancel" \
  -H "Authorization: Bearer $BRIX_API_KEY" \
  -H "Content-Type: application/json"

Response 200 Success.

FieldTypeDescription
dataobject | object

Response 401 Missing, expired or revoked bearer token.

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.

Response 403 You do not hold the permission for the whole workspace (a grant at one location is not enough).

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.

Response 404 No such workspace.

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.

Response 409 `payment_required` (unpaid invoice), `already_cancelled`, or `under_contract` (an agreed term; contact Brix).

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.

Response 422 `reason` missing, or a bad `restartDate`.

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.

Response 502 The billing provider did not answer; nothing changed.

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.

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

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.

POST/v1/account/cancel-deletion

Bearer token billing.edit

Stops a scheduled permanent deletion of the workspace before it happens. Call this any time before the deletion date to keep the account and its data. **Notes.** - The account stays cancelled; reactivate it separately.

curl -X POST "https://api.brixsignage.com/v1/account/cancel-deletion" \
  -H "Authorization: Bearer $BRIX_API_KEY"

Response 200 Success.

FieldTypeDescription
dataobject
data.status"active" | "cancel_scheduled" | "paused" | "past_due" | "suspended" | "cancelled"
data.deletionRequestedAtnull

Response 401 Missing, expired or revoked bearer token.

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.

Response 403 You do not hold the permission for the whole workspace (a grant at one location is not enough).

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.

Response 409 `not_pending_deletion`.

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.

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

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.

PATCH/v1/account/contract/renewal

Bearer token billing.edit

Sets whether the workspace's current contract term renews automatically or ends at term expiry. Choosing not to renew voids any unpaid renewal invoice; choosing to renew allows Brix to invoice the next term automatically. Returns 409 if the workspace has no fixed term, and 404 for white-label workspaces, where this setting does not apply. **Notes.** - Turning auto-renew off voids an unpaid renewal invoice.

Request body application/json

FieldTypeRequiredDescription
renewal"renew" | "non_renewing"yes
curl -X PATCH "https://api.brixsignage.com/v1/account/contract/renewal" \
  -H "Authorization: Bearer $BRIX_API_KEY" \
  -H "Content-Type: application/json"

Response 200 Success.

FieldTypeDescription
dataobject
data.oktrue
data.contractBillingTermAn agreed billing term (a fixed number of screens at a fixed rate for a fixed period).
data.contract.idstring
data.contract.status"active" | "cancelled" | "awaiting_payment" | "ended"
data.contract.rail"chargebee" | "brix"Who invoices the term: `brix` (Brix invoices) or `chargebee` (the card subscription).
data.contract.activateOn"now" | "paid"
data.contract.poNumberstring | null
data.contract.invoiceNumberstring | null
data.contract.invoicePaidboolean | null
data.contract.activatedAtstring | null
data.contract.screensinteger
data.contract.rateCentsPerScreenMonthinteger
data.contract.termMonthsinteger
data.contract.schedule"upfront" | "monthly" | "annual"
data.contract.collect"card" | "invoice"
data.contract.currencystring
data.contract.startsAtstringDate (YYYY-MM-DD).
data.contract.endsAtstringDate (YYYY-MM-DD).
data.contract.totalCentsinteger
data.contract.monthlyCentsinteger
data.contract.termLabelstring
data.contract.scheduleLabelstring
data.contract.invoiceIdstring | null
data.contract.notesstring | null
data.contract.createdBystring | null
data.contract.priorobject | nullThe plan before the term started.
data.contract.createdAtstringISO-8601 timestamp (UTC).
data.contract.endedAtstring | null
data.contract.renewal"renew" | "non_renewing"
data.contract.renewalInvoiceIdstring | null
data.changedboolean

Response 401 Missing, expired or revoked bearer token.

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.

Response 403 You do not hold the permission for the whole workspace (a grant at one location is not enough).

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.

Response 404 A workspace billed by a partner.

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.

Response 409 `no_term` (no agreed term), or a term that cannot change here.

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.

Response 422 `renewal` is not `renew` or `non_renewing`.

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.

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

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/account/data-inventory

Bearer token settings.view

Returns, for every category of data Brix holds about the workspace, what it is, whether it identifies a person, how long it is kept, whether it is included in a data export, and whether it is deleted when the account is closed. Pass ?counts=1 to include a row count for each category.

ParameterInTypeRequiredDescription
countsquery"1"no`1` adds a row count per table (slower).
curl "https://api.brixsignage.com/v1/account/data-inventory" \
  -H "Authorization: Bearer $BRIX_API_KEY"

Response 200 Success.

FieldTypeDescription
dataobject
data.generatedAtstringISO-8601 timestamp (UTC).
data.countedboolean
data.categoriesarray of object
data.categories[].idstring
data.categories[].labelstring
data.categories[].whatstring
data.categories[].personalstring
data.categories[].retentionstring
data.categories[].rowsinteger | null
data.categories[].tablesarray of object
data.categories[].tables[].tablestring
data.categories[].tables[].rowsinteger | null
data.categories[].tables[].inExportboolean
data.categories[].tables[].exportNotestring | null
data.categories[].tables[].erasedOnCloseboolean
data.categories[].tables[].retainedNotestring | null
data.categories[].tables[].strippedFieldsarray of string
data.residencyobject | nullWhere the workspace's data is stored. `database`, `media` and `backups` are internal store names.
data.notesarray of string

Response 401 Missing, expired or revoked bearer token.

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.

Response 403 You do not hold the permission for the whole workspace (a grant at one location is not enough).

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.

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

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.

POST/v1/account/downgrade-monthly

Bearer token billing.edit

Switches the workspace from annual to monthly billing at the end of the current annual term. Nothing is charged or refunded now.

curl -X POST "https://api.brixsignage.com/v1/account/downgrade-monthly" \
  -H "Authorization: Bearer $BRIX_API_KEY"

Response 200 Success.

FieldTypeDescription
dataobject
data.cadence"annual"Unchanged until the annual term ends.
data.scheduledCadence"monthly"

Response 401 Missing, expired or revoked bearer token.

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.

Response 403 You do not hold the permission for the whole workspace (a grant at one location is not enough).

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.

Response 409 `no_subscription`, `already_monthly`, or `under_contract`.

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.

Response 502 The switch could not be scheduled.

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.

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

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/account/encryption-key

Bearer token settings.view

Returns whether the workspace can use its own encryption key in Azure Key Vault, what that key covers, its identifier, its status, and the progress of re-encrypting existing data under it.

curl "https://api.brixsignage.com/v1/account/encryption-key" \
  -H "Authorization: Bearer $BRIX_API_KEY"

Response 200 Success.

FieldTypeDescription
dataobject
data.availablebooleanCustomer-managed keys can be used on this platform.
data.coversstring
data.doesNotCoverstring
data.keyobject | null

Response 401 Missing, expired or revoked bearer token.

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.

Response 403 You do not hold the permission for the whole workspace (a grant at one location is not enough).

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.

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

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.

PUT/v1/account/encryption-key

Bearer token settings.edit

Enables encryption with the workspace's own key in Azure Key Vault. Brix verifies the key, generates and wraps a data key, and starts re-encrypting existing secrets under it. Every new secret created after this call is protected with the customer's key.

Request body application/json

FieldTypeRequiredDescription
tenantIdstringyesYour Microsoft Entra tenant id (a UUID).
keyIdstringyes`https://<vault>.vault.azure.net/keys/<name>/<version>`.
curl -X PUT "https://api.brixsignage.com/v1/account/encryption-key" \
  -H "Authorization: Bearer $BRIX_API_KEY" \
  -H "Content-Type: application/json"

Response 201 Success.

FieldTypeDescription
dataobject
data.availablebooleanCustomer-managed keys can be used on this platform.
data.coversstring
data.doesNotCoverstring
data.keyobject | null
data.firstPassobjectThe first re-encryption pass, run inside the request; the rest runs hourly.
data.firstPass.statusstring
data.firstPass.remaininginteger

Response 401 Missing, expired or revoked bearer token.

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.

Response 403 You do not hold the permission for the whole workspace (a grant at one location is not enough).

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.

Response 409 `conflict` (a key is already set; turn it off first) or `key_check_failed`.

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.

Response 422 Bad `tenantId` or `keyId`.

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.

Response 503 `not_available` on this platform.

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.

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

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.

DELETE/v1/account/encryption-key

Bearer token settings.edit

Disables the workspace's customer-managed encryption key. Every secret currently protected by that key is first moved back under the Brix-managed key, so nothing becomes unreadable, and only then is the key record removed. Returns 409 if the customer-managed key can no longer be reached. **Notes.** - key is null when the first pass moved every secret back; otherwise it shows disabling until the hourly pass finishes.

curl -X DELETE "https://api.brixsignage.com/v1/account/encryption-key" \
  -H "Authorization: Bearer $BRIX_API_KEY"

Response 200 Success.

FieldTypeDescription
dataobject
data.availablebooleanCustomer-managed keys can be used on this platform.
data.coversstring
data.doesNotCoverstring
data.keyobject | null
data.firstPassobjectThe first re-encryption pass, run inside the request; the rest runs hourly.
data.firstPass.statusstring
data.firstPass.remaininginteger

Response 401 Missing, expired or revoked bearer token.

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.

Response 403 You do not hold the permission for the whole workspace (a grant at one location is not enough).

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.

Response 404 No key is set.

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.

Response 409 `key_unavailable`: the vault did not answer, so secrets cannot be moved back.

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.

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

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.

POST/v1/account/encryption-key/verify

Bearer token settings.edit

Performs a dry run against the workspace's own encryption key: it wraps and unwraps a random test value to confirm the key still works. Nothing is stored or changed.

Request body application/json

FieldTypeRequiredDescription
tenantIdstringyesYour Microsoft Entra tenant id (a UUID).
keyIdstringyes`https://<vault>.vault.azure.net/keys/<name>/<version>`.
curl -X POST "https://api.brixsignage.com/v1/account/encryption-key/verify" \
  -H "Authorization: Bearer $BRIX_API_KEY" \
  -H "Content-Type: application/json"

Response 200 Success.

FieldTypeDescription
dataobject
data.oktrue

Response 401 Missing, expired or revoked bearer token.

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.

Response 403 You do not hold the permission for the whole workspace (a grant at one location is not enough).

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.

Response 409 `key_check_failed`: the vault refused (`kind` says why).

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.

Response 422 Bad `tenantId` or `keyId`.

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.

Response 503 `not_available` on this platform.

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.

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

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/account/export

Bearer token billing.edit

Returns a data export of the workspace as one downloadable file: the workspace record, its members, nine content tables and the last 365 days of activity-log events. Credentials are never included. Because the file holds every member's personal data, it requires permission to edit billing for the whole workspace. Brix does not email or store the export. For every table and the complete activity log, use the export manifest and its parts. **Notes.** - No { data } envelope: the body is the export file (Content-Disposition: attachment). - Credentials are never exported: their columns are kept with null or a [secret; not exported] / [encrypted; not exported] marker. - generatedBy.kind is user even when an API key made the export (and then userId is absent). - The complete export (every table, the whole audit log) is GET /v1/account/export/manifest and its parts.

curl "https://api.brixsignage.com/v1/account/export" \
  -H "Authorization: Bearer $BRIX_API_KEY"

Response 200 Success.

FieldTypeDescription
schemaVersion1
generatedAtstringISO-8601 timestamp (UTC).
generatedByobjectAlways `user`; `userId` is absent for an API key.
generatedBy.kind"user"
generatedBy.userIdstring
workspaceobjectThe workspace record (every column; the Screen Lock PIN hash replaced by `kioskHasGlobalPin` inside `prefs`).
peoplearray of object
people[].idstring
people[].namestring
people[].emailstring
people[].statusstring
people[].lastLoginAtstring | null
people[].createdAtstringISO-8601 timestamp (UTC).
contentobjectNine content tables, one object per row (all columns).
content.screensarray of object
content.mediaAssetsarray of object
content.playlistsarray of object
content.schedulesarray of object
content.layoutsarray of object
content.creativesarray of object
content.appInstancesarray of object
content.dataSourcesarray of object
content.bannersarray of object
auditEventsarray of objectThe last 365 days only.
limitsobject
limits.auditEventsstring
limits.completenessstring

Response 401 Missing, expired or revoked bearer token.

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.

Response 403 You do not hold the permission for the whole workspace (a grant at one location is not enough).

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.

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

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/account/export/manifest

Bearer token billing.edit

Describes the contents of a full data export without downloading it: every table of workspace data with its row count, which tables are excluded from the export and why, and which fields are redacted and why. Use this to confirm what an export will and will not contain before downloading it.

curl "https://api.brixsignage.com/v1/account/export/manifest" \
  -H "Authorization: Bearer $BRIX_API_KEY"

Response 200 Success.

FieldTypeDescription
dataobject
data.schemaVersioninteger
data.generatedAtstringISO-8601 timestamp (UTC).
data.partsarray of object
data.parts[].partstringPass to `/export/part/:part`.
data.parts[].tablestring
data.parts[].rowsinteger
data.excludedarray of object
data.excluded[].tablestring
data.excluded[].reasonstring
data.redactedColumnsarray of string`table.column` values withheld from every part.
data.notesarray of string

Response 401 Missing, expired or revoked bearer token.

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.

Response 403 You do not hold the permission for the whole workspace (a grant at one location is not enough).

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.

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

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/account/export/part/{part}

Bearer token billing.edit

Downloads one part of a full data export. Results are paged with a cursor rather than an offset, so rows are not skipped or duplicated if data changes while the export is running. Secret values are replaced with a marker rather than removed, so a withheld value can be told apart from one that was never set. Pass ?format=csv to receive the same data as CSV, encoded with a UTF-8 byte-order mark for compatibility with Excel and guarded against spreadsheet formula injection. Use the x-brix-next-cursor response header to fetch the next page. **Notes.** - Credentials are never exported: their columns are kept with null or a [secret; not exported] / [encrypted; not exported] marker (the manifest lists them in redactedColumns). - ?format=csv answers text/csv instead, with the cursor in the X-Brix-Next-Cursor header.

ParameterInTypeRequiredDescription
partpathstringyesA `part` from the manifest (a table name).
cursorquerystringno`nextCursor` of the previous page.
curl "https://api.brixsignage.com/v1/account/export/part/{part}" \
  -H "Authorization: Bearer $BRIX_API_KEY"

Response 200 Success.

FieldTypeDescription
dataarray of objectRows of the table, all columns (withheld ones marked).
nextCursorstring | nullNull on the last page.

Response 401 Missing, expired or revoked bearer token.

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.

Response 403 You do not hold the permission for the whole workspace (a grant at one location is not enough).

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.

Response 404 No such part.

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.

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

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/account/invoices

Bearer token billing.view

Returns the workspace's invoice history, newest first: invoices Brix issued for an agreed term and invoices of the card subscription. The response includes configured: false when billing has not been set up yet.

curl "https://api.brixsignage.com/v1/account/invoices" \
  -H "Authorization: Bearer $BRIX_API_KEY"

Response 200 Success.

FieldTypeDescription
dataobject
data.configuredboolean
data.invoicesarray of object | objectNewest first. Amounts are in currency units, not cents.
data.reasonstringPresent when the card subscription's invoices could not be read.

Response 401 Missing, expired or revoked bearer token.

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.

Response 403 You do not hold the permission for the whole workspace (a grant at one location is not enough).

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.

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

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/account/invoices/{id}/file

Bearer token billing.view

Downloads the PDF file for one invoice belonging to the calling workspace. **Notes.** - For an invoice Brix issued, when the PDF cannot be drawn the route answers 302 to the invoice's web page instead.

ParameterInTypeRequiredDescription
idpathstringyesInvoice id from the list.
inlinequerystringnoAny value: `Content-Disposition: inline`.
curl "https://api.brixsignage.com/v1/account/invoices/{id}/file" \
  -H "Authorization: Bearer $BRIX_API_KEY"

Response 401 Missing, expired or revoked bearer token.

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.

Response 403 You do not hold the permission for the whole workspace (a grant at one location is not enough).

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.

Response 404 Not an invoice of this workspace.

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.

Response 502 The billing provider did not answer; nothing changed.

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.

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

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.

POST/v1/account/invoices/{id}/pay-link

Bearer token billing.edit

Creates a shareable payment link for one invoice, which can be paid by card or ACH bank transfer. The link can optionally be emailed directly, for example to forward to a finance team. **Notes.** - For an invoice Brix issued, email is ignored and emailed is always false.

ParameterInTypeRequiredDescription
idpathstringyesInvoice id from the list.

Request body application/json

FieldTypeRequiredDescription
ttlDaysnumbernoLink lifetime in days, 1–180 (clamped). Default 30.
emailstringnoAlso email the link to this address (card subscription invoices only).
curl -X POST "https://api.brixsignage.com/v1/account/invoices/{id}/pay-link" \
  -H "Authorization: Bearer $BRIX_API_KEY" \
  -H "Content-Type: application/json"

Response 200 Success.

FieldTypeDescription
dataobject
data.urlstringA web page where anyone with the link can see and pay the invoice.
data.emailedboolean

Response 401 Missing, expired or revoked bearer token.

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.

Response 403 You do not hold the permission for the whole workspace (a grant at one location is not enough).

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.

Response 404 Not an invoice of this workspace.

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.

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

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/account/invoices/{id}/pdf

Bearer token billing.view

Returns a short-lived download URL for one invoice's PDF. Brix confirms the invoice belongs to the calling workspace before returning the link.

ParameterInTypeRequiredDescription
idpathstringyesInvoice id (a card subscription invoice).
inlinequerystringnoAny value: the link opens in the browser instead of downloading.
curl "https://api.brixsignage.com/v1/account/invoices/{id}/pdf" \
  -H "Authorization: Bearer $BRIX_API_KEY"

Response 200 Success.

FieldTypeDescription
dataobject
data.urlstringA short-lived download link.

Response 401 Missing, expired or revoked bearer token.

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.

Response 403 You do not hold the permission for the whole workspace (a grant at one location is not enough).

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.

Response 404 Not an invoice of this workspace (invoices Brix issued have no link here; use `/file`).

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.

Response 502 The billing provider did not answer; nothing changed.

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.

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

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.

POST/v1/account/invoices/pay-all-link

Bearer token billing.edit

Creates one shareable link that lets whoever receives it pay all of the workspace's outstanding invoices at once.

Request body application/json

FieldTypeRequiredDescription
ttlDaysnumbernoLink lifetime in days, 1–180 (clamped). Default 30.
curl -X POST "https://api.brixsignage.com/v1/account/invoices/pay-all-link" \
  -H "Authorization: Bearer $BRIX_API_KEY" \
  -H "Content-Type: application/json"

Response 200 Success.

FieldTypeDescription
dataobject
data.urlstringOne web page that lists and pays every open invoice.
data.ttlDaysinteger

Response 401 Missing, expired or revoked bearer token.

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.

Response 403 You do not hold the permission for the whole workspace (a grant at one location is not enough).

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.

Response 409 `billing_not_configured`.

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.

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

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.

POST/v1/account/invoices/pay-links-outstanding

Bearer token billing.edit

Creates a separate hosted payment link for every invoice currently outstanding on the workspace. **Notes.** - Covers the card subscription's invoices only, not invoices Brix issued.

Request body application/json

FieldTypeRequiredDescription
ttlDaysnumbernoLink lifetime in days, 1–180 (clamped). Default 30.
curl -X POST "https://api.brixsignage.com/v1/account/invoices/pay-links-outstanding" \
  -H "Authorization: Bearer $BRIX_API_KEY" \
  -H "Content-Type: application/json"

Response 200 Success.

FieldTypeDescription
dataobject
data.linksarray of object
data.links[].invoiceIdstring
data.links[].numberstring
data.links[].amountDuenumber
data.links[].currencyCodestring
data.links[].urlstring
data.ttlDaysinteger

Response 401 Missing, expired or revoked bearer token.

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.

Response 403 You do not hold the permission for the whole workspace (a grant at one location is not enough).

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.

Response 409 `billing_not_configured`.

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.

Response 502 The billing provider did not answer; nothing changed.

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.

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

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/account/limits

Bearer token settings.view

Returns the workspace's API usage limits: the number of requests allowed per minute, the time window, and confirmation that the limit is counted per workspace across all API keys rather than per key. Also returns the RateLimit-* response headers to expect, and the delivery, retry, and retention behavior for webhooks. Use this before building an integration to size your request rate correctly.

curl "https://api.brixsignage.com/v1/account/limits" \
  -H "Authorization: Bearer $BRIX_API_KEY"

Response 200 Success.

FieldTypeDescription
dataobject
data.apiobject
data.api.perMinuteinteger
data.api.windowSecondsinteger
data.api.scopestring`workspace`: all keys of the workspace share one budget.
data.api.appliesTostring
data.api.headersarray of string
data.api.onBreachstring
data.webhooksobject
data.webhooks.maxConsecutiveFailuresinteger
data.webhooks.deliveryLogRetentionDaysinteger
data.webhooks.deliverystring
data.webhooks.retrystring

Response 401 Missing, expired or revoked bearer token.

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.

Response 403 You do not hold the permission for the whole workspace (a grant at one location is not enough).

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.

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

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/account/me-prefs

Bearer token billing.view

Returns preferences in three layers: workspace (the shared defaults), user (only the values the calling user has changed; empty for an API key), and effective (the merged result to use for display). **Notes.** - user is returned as saved: the per-user write does not check its keys or values.

curl "https://api.brixsignage.com/v1/account/me-prefs" \
  -H "Authorization: Bearer $BRIX_API_KEY"

Response 200 Success.

FieldTypeDescription
dataobject
data.workspaceWorkspacePrefsWorkspace preferences. Every key is present (defaults filled in).
data.workspace.timeFormat"12h" | "24h"
data.workspace.weekStart"mon" | "sun"
data.workspace.dateFormat"mdy" | "dmy" | "ymd"
data.workspace.tempUnits"f" | "c"
data.workspace.timeZonestringIANA time zone. Screens without their own zone use it, and so do schedules timed by the workspace.
data.workspace.languagestringBCP 47 language tag.
data.workspace.multinationalbooleanShows the per-location and per-screen language settings.
data.workspace.navExtrasarray of stringConsole pages switched on that the workspace size hides by default.
data.workspace.appBrandingobjectThe look of the on-screen apps.
data.workspace.appBranding.accentstring
data.workspace.appBranding.accent2string
data.workspace.appBranding.theme"dark" | "light"
data.workspace.appBranding.backdrop"brand" | "wash" | "plain" | "aurora" | "dots" | "grid" | "solid"
data.workspace.appBranding.intensitynumber
data.workspace.audioobjectDefault screen volume and a master mute.
data.workspace.audio.volumenumber0–100.
data.workspace.audio.mutedboolean
data.workspace.brandobject
data.workspace.brand.companyNamestring
data.workspace.brand.logoUrlstring
data.workspace.requireAltTextboolean
data.workspace.showScreenLogoboolean
data.workspace.standbyContentKindstring | nullWhat a screen with nothing to play shows; null = the default card.
data.workspace.standbyContentIdstring | null
data.workspace.tier"simple" | "team" | "enterprise"Workspace size. It sets console defaults, not access.
data.workspace.industrystring | null
data.workspace.onboardingCompletedAtstring | null
data.workspace.setupStepstring | nullWalkthrough position (`s1`…`s5`, `l1`…`l6`, `done`).
data.workspace.orgNameSetboolean
data.workspace.tiersarray of integerLocation tree levels in use.
data.workspace.tierLabelsobjectCustom names for the location tree levels.
data.workspace.requireTwoFactorboolean
data.workspace.requireSsoboolean
data.workspace.requireSsoPendingbooleanSingle sign-on was required, and turns on after the first sign-in through the connection.
data.workspace.requireSsoPendingSincestring | null
data.workspace.aiobject
data.workspace.ai.enabledboolean
data.workspace.ai.featuresobjectPer feature (`tags`, `alt-text`, `moderation`, `transcription`, `translation`, `focal-region`, `embedding`); an absent feature follows `enabled`.
data.workspace.ai.dailyCallLimitinteger | null
data.workspace.ai.redactPersonalDataboolean
data.workspace.retentionobjectDays kept per stream, only for the streams the workspace has set. An absent stream uses the platform window.
data.workspace.retention.offlinenumber
data.workspace.retention.screenshotsnumber
data.workspace.retention.playbacknumber
data.workspace.retention.deviceLogsnumber
data.workspace.retention.vitalsnumber
data.workspace.retention.replaysnumber
data.workspace.retention.aiEventsnumber
data.workspace.warehouseobjectData warehouse feed. Set by Brix; not writable here.
data.workspace.warehouse.enabledboolean
data.workspace.warehouse.bucketBindingstringSet by Brix when the data warehouse feed is provisioned.
data.workspace.warehouse.tablesarray of string
data.workspace.warehouse.lookbackDaysinteger
data.workspace.supportAccessSupportAccessPolicy
data.workspace.supportAccess.mode"open" | "notify" | "approve"`open`: Brix support may open the workspace. `notify`: it may, and the owners are emailed. `approve`: a person here must approve each request.
data.workspace.supportAccess.grantMinutesintegerHow long an approval lasts.
data.workspace.supportAccess.requestTtlMinutesintegerHow long a request waits for an answer before it expires.
data.workspace.kioskHasGlobalPinbooleanA workspace Screen Lock PIN is set. The PIN and its hash are never returned.
data.userobjectThe calling user's own overrides, as saved. Empty for an API key.
data.effectiveWorkspacePrefsWorkspace preferences. Every key is present (defaults filled in).
data.effective.timeFormat"12h" | "24h"
data.effective.weekStart"mon" | "sun"
data.effective.dateFormat"mdy" | "dmy" | "ymd"
data.effective.tempUnits"f" | "c"
data.effective.timeZonestringIANA time zone. Screens without their own zone use it, and so do schedules timed by the workspace.
data.effective.languagestringBCP 47 language tag.
data.effective.multinationalbooleanShows the per-location and per-screen language settings.
data.effective.navExtrasarray of stringConsole pages switched on that the workspace size hides by default.
data.effective.appBrandingobjectThe look of the on-screen apps.
data.effective.appBranding.accentstring
data.effective.appBranding.accent2string
data.effective.appBranding.theme"dark" | "light"
data.effective.appBranding.backdrop"brand" | "wash" | "plain" | "aurora" | "dots" | "grid" | "solid"
data.effective.appBranding.intensitynumber
data.effective.audioobjectDefault screen volume and a master mute.
data.effective.audio.volumenumber0–100.
data.effective.audio.mutedboolean
data.effective.brandobject
data.effective.brand.companyNamestring
data.effective.brand.logoUrlstring
data.effective.requireAltTextboolean
data.effective.showScreenLogoboolean
data.effective.standbyContentKindstring | nullWhat a screen with nothing to play shows; null = the default card.
data.effective.standbyContentIdstring | null
data.effective.tier"simple" | "team" | "enterprise"Workspace size. It sets console defaults, not access.
data.effective.industrystring | null
data.effective.onboardingCompletedAtstring | null
data.effective.setupStepstring | nullWalkthrough position (`s1`…`s5`, `l1`…`l6`, `done`).
data.effective.orgNameSetboolean
data.effective.tiersarray of integerLocation tree levels in use.
data.effective.tierLabelsobjectCustom names for the location tree levels.
data.effective.requireTwoFactorboolean
data.effective.requireSsoboolean
data.effective.requireSsoPendingbooleanSingle sign-on was required, and turns on after the first sign-in through the connection.
data.effective.requireSsoPendingSincestring | null
data.effective.aiobject
data.effective.ai.enabledboolean
data.effective.ai.featuresobjectPer feature (`tags`, `alt-text`, `moderation`, `transcription`, `translation`, `focal-region`, `embedding`); an absent feature follows `enabled`.
data.effective.ai.dailyCallLimitinteger | null
data.effective.ai.redactPersonalDataboolean
data.effective.retentionobjectDays kept per stream, only for the streams the workspace has set. An absent stream uses the platform window.
data.effective.retention.offlinenumber
data.effective.retention.screenshotsnumber
data.effective.retention.playbacknumber
data.effective.retention.deviceLogsnumber
data.effective.retention.vitalsnumber
data.effective.retention.replaysnumber
data.effective.retention.aiEventsnumber
data.effective.warehouseobjectData warehouse feed. Set by Brix; not writable here.
data.effective.warehouse.enabledboolean
data.effective.warehouse.bucketBindingstringSet by Brix when the data warehouse feed is provisioned.
data.effective.warehouse.tablesarray of string
data.effective.warehouse.lookbackDaysinteger
data.effective.supportAccessSupportAccessPolicy
data.effective.supportAccess.mode"open" | "notify" | "approve"`open`: Brix support may open the workspace. `notify`: it may, and the owners are emailed. `approve`: a person here must approve each request.
data.effective.supportAccess.grantMinutesintegerHow long an approval lasts.
data.effective.supportAccess.requestTtlMinutesintegerHow long a request waits for an answer before it expires.
data.effective.kioskHasGlobalPinbooleanA workspace Screen Lock PIN is set. The PIN and its hash are never returned.

Response 401 Missing, expired or revoked bearer token.

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.

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

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.

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

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.

POST/v1/account/onboarding

Bearer token billing.edit

Finishes workspace onboarding in a single call: renames the workspace to the given name, records the industry and complexity tier, marks onboarding as complete, and seeds a starter set of ready-to-play content tailored to the chosen industry. Combining these into one call ensures the completion flag and the seeded content are never out of sync. **Notes.** - Every call adds the starter content again; it is not idempotent. - tier is stored as sent without a check.

Request body application/json

FieldTypeRequiredDescription
workspaceNamestringnoRenames the workspace and sets the brand company name (cut at 120).
industrystring | nullnoIndustry id (`cafe`, `qsr`, `gym`, …); picks the starter designs.
tier"simple" | "team" | "enterprise"no
setupStepstringnoWalkthrough position to save with the answers.
curl -X POST "https://api.brixsignage.com/v1/account/onboarding" \
  -H "Authorization: Bearer $BRIX_API_KEY" \
  -H "Content-Type: application/json"

Response 200 Success.

FieldTypeDescription
dataobject
data.prefsWorkspacePrefsWorkspace preferences. Every key is present (defaults filled in).
data.prefs.timeFormat"12h" | "24h"
data.prefs.weekStart"mon" | "sun"
data.prefs.dateFormat"mdy" | "dmy" | "ymd"
data.prefs.tempUnits"f" | "c"
data.prefs.timeZonestringIANA time zone. Screens without their own zone use it, and so do schedules timed by the workspace.
data.prefs.languagestringBCP 47 language tag.
data.prefs.multinationalbooleanShows the per-location and per-screen language settings.
data.prefs.navExtrasarray of stringConsole pages switched on that the workspace size hides by default.
data.prefs.appBrandingobjectThe look of the on-screen apps.
data.prefs.appBranding.accentstring
data.prefs.appBranding.accent2string
data.prefs.appBranding.theme"dark" | "light"
data.prefs.appBranding.backdrop"brand" | "wash" | "plain" | "aurora" | "dots" | "grid" | "solid"
data.prefs.appBranding.intensitynumber
data.prefs.audioobjectDefault screen volume and a master mute.
data.prefs.audio.volumenumber0–100.
data.prefs.audio.mutedboolean
data.prefs.brandobject
data.prefs.brand.companyNamestring
data.prefs.brand.logoUrlstring
data.prefs.requireAltTextboolean
data.prefs.showScreenLogoboolean
data.prefs.standbyContentKindstring | nullWhat a screen with nothing to play shows; null = the default card.
data.prefs.standbyContentIdstring | null
data.prefs.tier"simple" | "team" | "enterprise"Workspace size. It sets console defaults, not access.
data.prefs.industrystring | null
data.prefs.onboardingCompletedAtstring | null
data.prefs.setupStepstring | nullWalkthrough position (`s1`…`s5`, `l1`…`l6`, `done`).
data.prefs.orgNameSetboolean
data.prefs.tiersarray of integerLocation tree levels in use.
data.prefs.tierLabelsobjectCustom names for the location tree levels.
data.prefs.requireTwoFactorboolean
data.prefs.requireSsoboolean
data.prefs.requireSsoPendingbooleanSingle sign-on was required, and turns on after the first sign-in through the connection.
data.prefs.requireSsoPendingSincestring | null
data.prefs.aiobject
data.prefs.ai.enabledboolean
data.prefs.ai.featuresobjectPer feature (`tags`, `alt-text`, `moderation`, `transcription`, `translation`, `focal-region`, `embedding`); an absent feature follows `enabled`.
data.prefs.ai.dailyCallLimitinteger | null
data.prefs.ai.redactPersonalDataboolean
data.prefs.retentionobjectDays kept per stream, only for the streams the workspace has set. An absent stream uses the platform window.
data.prefs.retention.offlinenumber
data.prefs.retention.screenshotsnumber
data.prefs.retention.playbacknumber
data.prefs.retention.deviceLogsnumber
data.prefs.retention.vitalsnumber
data.prefs.retention.replaysnumber
data.prefs.retention.aiEventsnumber
data.prefs.warehouseobjectData warehouse feed. Set by Brix; not writable here.
data.prefs.warehouse.enabledboolean
data.prefs.warehouse.bucketBindingstringSet by Brix when the data warehouse feed is provisioned.
data.prefs.warehouse.tablesarray of string
data.prefs.warehouse.lookbackDaysinteger
data.prefs.supportAccessSupportAccessPolicy
data.prefs.supportAccess.mode"open" | "notify" | "approve"`open`: Brix support may open the workspace. `notify`: it may, and the owners are emailed. `approve`: a person here must approve each request.
data.prefs.supportAccess.grantMinutesintegerHow long an approval lasts.
data.prefs.supportAccess.requestTtlMinutesintegerHow long a request waits for an answer before it expires.
data.prefs.kioskHasGlobalPinbooleanA workspace Screen Lock PIN is set. The PIN and its hash are never returned.
data.seededarray of objectStarter designs added.
data.seeded[].idstring
data.seeded[].namestring
data.libraryintegerStarter library items added (photos, a playlist, a schedule, …). 0 when that step failed.

Response 401 Missing, expired or revoked bearer token.

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.

Response 403 You do not hold the permission for the whole workspace (a grant at one location is not enough).

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.

Response 422 Unknown `industry`.

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.

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

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.

DELETE/v1/account/payment-card

Bearer token billing.edit

Removes the workspace's saved card. If the payment option was set to card, it reverts to invoice billing. **Notes.** - When the payment option was card, it goes back to invoice.

curl -X DELETE "https://api.brixsignage.com/v1/account/payment-card" \
  -H "Authorization: Bearer $BRIX_API_KEY"

Response 200 Success.

FieldTypeDescription
dataobject
data.removedboolean
data.paymentAccountPaymentPayment settings of an account that Brix invoices directly.
data.payment.option"card" | "invoice"How issued invoices are paid: charged to the saved card, or paid from the invoice email.
data.payment.cardobject | null
data.payment.lastPaidobject | nullThe card the last invoice was paid with.
data.payment.cardAvailablebooleanCard payment can be set up for this workspace.

Response 401 Missing, expired or revoked bearer token.

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.

Response 403 You do not hold the permission for the whole workspace (a grant at one location is not enough).

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.

Response 404 A workspace billed by a partner.

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.

Response 409 `not_brix_billed`.

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.

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

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.

POST/v1/account/payment-card/complete

Bearer token billing.edit

Saves the card from a finished hosted card-setup session, given its sessionId. Brix re-reads the session from the payment provider and confirms it belongs to the calling workspace, returning 404 otherwise. The same result also happens automatically when the payment provider notifies Brix that the session completed.

Request body application/json

FieldTypeRequiredDescription
sessionIdstringyesThe `card_session` value from the return URL (`cs_…`).
curl -X POST "https://api.brixsignage.com/v1/account/payment-card/complete" \
  -H "Authorization: Bearer $BRIX_API_KEY" \
  -H "Content-Type: application/json"

Response 200 Success.

FieldTypeDescription
dataobject
data.outcome"saved" | "already_saved" | "incomplete"
data.paymentAccountPaymentPayment settings of an account that Brix invoices directly.
data.payment.option"card" | "invoice"How issued invoices are paid: charged to the saved card, or paid from the invoice email.
data.payment.cardobject | null
data.payment.lastPaidobject | nullThe card the last invoice was paid with.
data.payment.cardAvailablebooleanCard payment can be set up for this workspace.

Response 401 Missing, expired or revoked bearer token.

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.

Response 403 You do not hold the permission for the whole workspace (a grant at one location is not enough).

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.

Response 404 Not a card session of this workspace.

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.

Response 409 `not_brix_billed`.

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.

Response 422 `sessionId` missing or malformed.

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.

Response 502 The session could not be read.

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.

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

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.

POST/v1/account/payment-card/setup

Bearer token billing.edit

Starts adding or replacing the saved card for a workspace billed directly by Brix. Returns a hosted checkout URL where the card is entered, unless useLastPaid: true is passed and the payment provider already holds a card that was last used to pay this workspace, in which case that card is saved directly. Returns 409 if the workspace is not billed directly by Brix, and 404 for white-label workspaces.

Request body application/json

FieldTypeRequiredDescription
useLastPaidbooleannoSave the card the last invoice was paid with, when that is possible, instead of opening a page.
curl -X POST "https://api.brixsignage.com/v1/account/payment-card/setup" \
  -H "Authorization: Bearer $BRIX_API_KEY" \
  -H "Content-Type: application/json"

Response 200 Success.

FieldTypeDescription
dataobject | object

Response 401 Missing, expired or revoked bearer token.

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.

Response 403 You do not hold the permission for the whole workspace (a grant at one location is not enough).

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.

Response 404 A workspace billed by a partner.

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.

Response 409 `not_brix_billed`, or `card_unavailable`.

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.

Response 502 The card page could not be opened.

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.

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

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/account/payment-methods

Bearer token billing.view

Returns the workspace's saved payment methods, including cards and ACH bank accounts. When there are two or more methods and none is the backup, one method that is not the primary is made the backup. **Notes.** - A read that can write: with two or more methods and no backup, the handler makes one non-primary method the backup and records it in the audit log.

curl "https://api.brixsignage.com/v1/account/payment-methods" \
  -H "Authorization: Bearer $BRIX_API_KEY"

Response 200 Success.

FieldTypeDescription
dataobject
data.configuredbooleanFalse when billing is not set up (or could not be read, see `reason`).
data.sourcesarray of object
data.sources[].idstring
data.sources[].typestring`card`, `bank_account`, or a wallet type (`apple_pay`, `paypal_express_checkout`, …).
data.sources[].brandstring | null
data.sources[].last4string | null
data.sources[].walletTypestring | null
data.sources[].gatewaystring | null
data.sources[].expiryMonthinteger | null
data.sources[].expiryYearinteger | null
data.sources[].statusstring
data.sources[].primaryboolean
data.sources[].backupbooleanCharged when the primary fails.
data.reasonstring

Response 401 Missing, expired or revoked bearer token.

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.

Response 403 You do not hold the permission for the whole workspace (a grant at one location is not enough).

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.

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

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.

POST/v1/account/payment-methods/{id}/role

Bearer token billing.edit

Sets a saved payment method as the primary or backup method for the workspace.

ParameterInTypeRequiredDescription
idpathstringyesPayment method id from the list.

Request body application/json

FieldTypeRequiredDescription
role"primary" | "backup"yes
curl -X POST "https://api.brixsignage.com/v1/account/payment-methods/{id}/role" \
  -H "Authorization: Bearer $BRIX_API_KEY" \
  -H "Content-Type: application/json"

Response 200 Success.

FieldTypeDescription
dataobject
data.oktrue
data.idstring
data.role"primary" | "backup"

Response 401 Missing, expired or revoked bearer token.

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.

Response 403 You do not hold the permission for the whole workspace (a grant at one location is not enough).

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.

Response 404 Not one of this workspace's payment methods.

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.

Response 409 `billing_not_configured`.

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.

Response 422 Bad `role`.

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.

Response 502 The billing provider did not answer; nothing changed.

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.

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

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.

POST/v1/account/payment-methods/manage-url

Bearer token billing.edit

Returns a hosted page URL where the workspace can add, replace, or remove a saved card or bank account.

curl -X POST "https://api.brixsignage.com/v1/account/payment-methods/manage-url" \
  -H "Authorization: Bearer $BRIX_API_KEY"

Response 200 Success.

FieldTypeDescription
dataobject
data.urlstringA hosted page to add, replace or remove a card or bank account. Open it in a browser.

Response 401 Missing, expired or revoked bearer token.

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.

Response 403 You do not hold the permission for the whole workspace (a grant at one location is not enough).

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.

Response 409 `billing_not_configured`.

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.

Response 502 The billing provider did not answer; nothing changed.

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.

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

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.

PATCH/v1/account/payment-option

Bearer token billing.edit

Sets how a workspace billed directly by Brix pays: card or invoice. Choosing card requires a saved card and returns 409 if none exists; every invoice Brix issues is then charged to that card automatically. Returns 409 if the workspace is billed through the billing provider instead, and 404 for white-label workspaces.

Request body application/json

FieldTypeRequiredDescription
option"card" | "invoice"yes
curl -X PATCH "https://api.brixsignage.com/v1/account/payment-option" \
  -H "Authorization: Bearer $BRIX_API_KEY" \
  -H "Content-Type: application/json"

Response 200 Success.

FieldTypeDescription
dataobject
data.changedboolean
data.paymentAccountPaymentPayment settings of an account that Brix invoices directly.
data.payment.option"card" | "invoice"How issued invoices are paid: charged to the saved card, or paid from the invoice email.
data.payment.cardobject | null
data.payment.lastPaidobject | nullThe card the last invoice was paid with.
data.payment.cardAvailablebooleanCard payment can be set up for this workspace.

Response 401 Missing, expired or revoked bearer token.

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.

Response 403 You do not hold the permission for the whole workspace (a grant at one location is not enough).

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.

Response 404 A workspace billed by a partner.

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.

Response 409 `not_brix_billed`, or `card_required` (save a card first).

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.

Response 422 Bad `option`.

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.

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

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.

PATCH/v1/account/prefs

Bearer token billing.edit

Updates workspace-level preferences such as locale, time zone, date and number formats, brand kit, and plan tier. Any field you include is overwritten; fields you omit keep their current value.

Request body application/json

FieldTypeRequiredDescription
kioskPinstring | nullnoSet (4–8 digits) or clear (null) the workspace Screen Lock PIN. Stored as a hash.
requireSsobooleannoNeeds a working single sign-on connection with verified domains; until someone signs in through it, the request is held (`requireSsoPending`).
requireTwoFactorbooleannoTurning it on needs the calling user to have two-factor sign-in set up, so an API key cannot turn it on.
curl -X PATCH "https://api.brixsignage.com/v1/account/prefs" \
  -H "Authorization: Bearer $BRIX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"timeFormat":"24h","timeZone":"America/Chicago"}'

Response 200 Success.

FieldTypeDescription
dataWorkspacePrefsWorkspace preferences. Every key is present (defaults filled in).
data.timeFormat"12h" | "24h"
data.weekStart"mon" | "sun"
data.dateFormat"mdy" | "dmy" | "ymd"
data.tempUnits"f" | "c"
data.timeZonestringIANA time zone. Screens without their own zone use it, and so do schedules timed by the workspace.
data.languagestringBCP 47 language tag.
data.multinationalbooleanShows the per-location and per-screen language settings.
data.navExtrasarray of stringConsole pages switched on that the workspace size hides by default.
data.appBrandingobjectThe look of the on-screen apps.
data.appBranding.accentstring
data.appBranding.accent2string
data.appBranding.theme"dark" | "light"
data.appBranding.backdrop"brand" | "wash" | "plain" | "aurora" | "dots" | "grid" | "solid"
data.appBranding.intensitynumber
data.audioobjectDefault screen volume and a master mute.
data.audio.volumenumber0–100.
data.audio.mutedboolean
data.brandobject
data.brand.companyNamestring
data.brand.logoUrlstring
data.requireAltTextboolean
data.showScreenLogoboolean
data.standbyContentKindstring | nullWhat a screen with nothing to play shows; null = the default card.
data.standbyContentIdstring | null
data.tier"simple" | "team" | "enterprise"Workspace size. It sets console defaults, not access.
data.industrystring | null
data.onboardingCompletedAtstring | null
data.setupStepstring | nullWalkthrough position (`s1`…`s5`, `l1`…`l6`, `done`).
data.orgNameSetboolean
data.tiersarray of integerLocation tree levels in use.
data.tierLabelsobjectCustom names for the location tree levels.
data.requireTwoFactorboolean
data.requireSsoboolean
data.requireSsoPendingbooleanSingle sign-on was required, and turns on after the first sign-in through the connection.
data.requireSsoPendingSincestring | null
data.aiobject
data.ai.enabledboolean
data.ai.featuresobjectPer feature (`tags`, `alt-text`, `moderation`, `transcription`, `translation`, `focal-region`, `embedding`); an absent feature follows `enabled`.
data.ai.dailyCallLimitinteger | null
data.ai.redactPersonalDataboolean
data.retentionobjectDays kept per stream, only for the streams the workspace has set. An absent stream uses the platform window.
data.retention.offlinenumber
data.retention.screenshotsnumber
data.retention.playbacknumber
data.retention.deviceLogsnumber
data.retention.vitalsnumber
data.retention.replaysnumber
data.retention.aiEventsnumber
data.warehouseobjectData warehouse feed. Set by Brix; not writable here.
data.warehouse.enabledboolean
data.warehouse.bucketBindingstringSet by Brix when the data warehouse feed is provisioned.
data.warehouse.tablesarray of string
data.warehouse.lookbackDaysinteger
data.supportAccessSupportAccessPolicy
data.supportAccess.mode"open" | "notify" | "approve"`open`: Brix support may open the workspace. `notify`: it may, and the owners are emailed. `approve`: a person here must approve each request.
data.supportAccess.grantMinutesintegerHow long an approval lasts.
data.supportAccess.requestTtlMinutesintegerHow long a request waits for an answer before it expires.
data.kioskHasGlobalPinbooleanA workspace Screen Lock PIN is set. The PIN and its hash are never returned.

Response 401 Missing, expired or revoked bearer token.

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.

Response 403 You do not hold the permission for the whole workspace (a grant at one location is not enough).

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.

Response 422 `sso_not_configured`, `two_factor_not_enrolled`, or a PIN that is not 4–8 digits.

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.

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

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.

POST/v1/account/reactivate

Bearer token billing.edit

Reverses a scheduled cancellation, or resumes an account that was paused for seasonal closure.

curl -X POST "https://api.brixsignage.com/v1/account/reactivate" \
  -H "Authorization: Bearer $BRIX_API_KEY"

Response 200 Success.

FieldTypeDescription
dataobject
data.status"active"

Response 401 Missing, expired or revoked bearer token.

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.

Response 403 You do not hold the permission for the whole workspace (a grant at one location is not enough).

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.

Response 409 `already_active`, `pending_deletion`, `payment_required`, `payment_method_required`, `not_reactivatable`, or `under_contract`.

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.

Response 502 The billing provider did not answer; nothing changed.

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.

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

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/account/retention

Bearer token settings.view

Returns the workspace's data retention schedule: every data stream that can be governed, the retention window currently in effect for it, and the allowed range for that window.

curl "https://api.brixsignage.com/v1/account/retention" \
  -H "Authorization: Bearer $BRIX_API_KEY"

Response 200 Success.

FieldTypeDescription
dataRetentionSchedule
data.policyobjectDays kept per stream, only for the streams the workspace has set. An absent stream uses the platform window.
data.policy.offlinenumber
data.policy.screenshotsnumber
data.policy.playbacknumber
data.policy.deviceLogsnumber
data.policy.vitalsnumber
data.policy.replaysnumber
data.policy.aiEventsnumber
data.effectiveobjectDays kept per stream now.
data.effective.offlineinteger
data.effective.screenshotsinteger
data.effective.playbackinteger
data.effective.deviceLogsinteger
data.effective.vitalsinteger
data.effective.replaysinteger
data.effective.aiEventsinteger
data.boundsobject
data.bounds.offlineobject
data.bounds.offline.mininteger
data.bounds.offline.maxinteger
data.bounds.offline.platformDefaultinteger
data.bounds.offline.labelstring
data.bounds.offline.whatstring
data.bounds.screenshotsobject
data.bounds.screenshots.mininteger
data.bounds.screenshots.maxinteger
data.bounds.screenshots.platformDefaultinteger
data.bounds.screenshots.labelstring
data.bounds.screenshots.whatstring
data.bounds.playbackobject
data.bounds.playback.mininteger
data.bounds.playback.maxinteger
data.bounds.playback.platformDefaultinteger
data.bounds.playback.labelstring
data.bounds.playback.whatstring
data.bounds.deviceLogsobject
data.bounds.deviceLogs.mininteger
data.bounds.deviceLogs.maxinteger
data.bounds.deviceLogs.platformDefaultinteger
data.bounds.deviceLogs.labelstring
data.bounds.deviceLogs.whatstring
data.bounds.vitalsobject
data.bounds.vitals.mininteger
data.bounds.vitals.maxinteger
data.bounds.vitals.platformDefaultinteger
data.bounds.vitals.labelstring
data.bounds.vitals.whatstring
data.bounds.replaysobject
data.bounds.replays.mininteger
data.bounds.replays.maxinteger
data.bounds.replays.platformDefaultinteger
data.bounds.replays.labelstring
data.bounds.replays.whatstring
data.bounds.aiEventsobject
data.bounds.aiEvents.mininteger
data.bounds.aiEvents.maxinteger
data.bounds.aiEvents.platformDefaultinteger
data.bounds.aiEvents.labelstring
data.bounds.aiEvents.whatstring

Response 401 Missing, expired or revoked bearer token.

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.

Response 403 You do not hold the permission for the whole workspace (a grant at one location is not enough).

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.

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

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.

PATCH/v1/account/retention

Bearer token settings.edit

Sets the retention window, in days, for one or more data streams. Sending null for a stream resets it to the platform default. Values are clamped to the allowed range for each stream.

Request body application/json

FieldTypeRequiredDescription
offlinenumber | nullno
screenshotsnumber | nullno
playbacknumber | nullno
deviceLogsnumber | nullno
vitalsnumber | nullno
replaysnumber | nullno
aiEventsnumber | nullno
curl -X PATCH "https://api.brixsignage.com/v1/account/retention" \
  -H "Authorization: Bearer $BRIX_API_KEY" \
  -H "Content-Type: application/json"

Response 200 Success.

FieldTypeDescription
dataRetentionSchedule
data.policyobjectDays kept per stream, only for the streams the workspace has set. An absent stream uses the platform window.
data.policy.offlinenumber
data.policy.screenshotsnumber
data.policy.playbacknumber
data.policy.deviceLogsnumber
data.policy.vitalsnumber
data.policy.replaysnumber
data.policy.aiEventsnumber
data.effectiveobjectDays kept per stream now.
data.effective.offlineinteger
data.effective.screenshotsinteger
data.effective.playbackinteger
data.effective.deviceLogsinteger
data.effective.vitalsinteger
data.effective.replaysinteger
data.effective.aiEventsinteger
data.boundsobject
data.bounds.offlineobject
data.bounds.offline.mininteger
data.bounds.offline.maxinteger
data.bounds.offline.platformDefaultinteger
data.bounds.offline.labelstring
data.bounds.offline.whatstring
data.bounds.screenshotsobject
data.bounds.screenshots.mininteger
data.bounds.screenshots.maxinteger
data.bounds.screenshots.platformDefaultinteger
data.bounds.screenshots.labelstring
data.bounds.screenshots.whatstring
data.bounds.playbackobject
data.bounds.playback.mininteger
data.bounds.playback.maxinteger
data.bounds.playback.platformDefaultinteger
data.bounds.playback.labelstring
data.bounds.playback.whatstring
data.bounds.deviceLogsobject
data.bounds.deviceLogs.mininteger
data.bounds.deviceLogs.maxinteger
data.bounds.deviceLogs.platformDefaultinteger
data.bounds.deviceLogs.labelstring
data.bounds.deviceLogs.whatstring
data.bounds.vitalsobject
data.bounds.vitals.mininteger
data.bounds.vitals.maxinteger
data.bounds.vitals.platformDefaultinteger
data.bounds.vitals.labelstring
data.bounds.vitals.whatstring
data.bounds.replaysobject
data.bounds.replays.mininteger
data.bounds.replays.maxinteger
data.bounds.replays.platformDefaultinteger
data.bounds.replays.labelstring
data.bounds.replays.whatstring
data.bounds.aiEventsobject
data.bounds.aiEvents.mininteger
data.bounds.aiEvents.maxinteger
data.bounds.aiEvents.platformDefaultinteger
data.bounds.aiEvents.labelstring
data.bounds.aiEvents.whatstring

Response 401 Missing, expired or revoked bearer token.

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.

Response 403 You do not hold the permission for the whole workspace (a grant at one location is not enough).

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.

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

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.

POST/v1/account/screen-pool

Bearer token billing.edit

Sets how many screens the workspace pays for. An increase is charged now, prorated, to the payment method on file (a very small amount is added to the renewal instead). A reduction on a paid plan takes effect at the renewal and is not refunded; during the free trial a change takes effect at once. You cannot set the plan below the number of screens that are running. **Notes.** - An increase is charged now (prorated). A reduction on a paid plan is queued for the renewal and answers scheduled: true; in the trial it changes at once.

Request body application/json

FieldTypeRequiredDescription
quantityintegeryes
curl -X POST "https://api.brixsignage.com/v1/account/screen-pool" \
  -H "Authorization: Bearer $BRIX_API_KEY" \
  -H "Content-Type: application/json"

Response 200 Success.

FieldTypeDescription
dataobject | object

Response 401 Missing, expired or revoked bearer token.

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.

Response 402 `card_declined` or `payment_incomplete`: the plan did not change (or needs our team).

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.

Response 403 You do not hold the permission for the whole workspace (a grant at one location is not enough).

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.

Response 409 `screens_in_use` (below the screens running), `no_subscription`, `account_cancelled`, or `under_contract`.

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.

Response 422 `quantity` is not a whole number from 1 to 10000.

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.

Response 502 The change could not be made.

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.

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

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.

POST/v1/account/screen-pool/estimate

Bearer token billing.view

Returns the prorated cost of changing the screen pool before committing to it, including the exact amount that would be charged today and which card would be used. This is read-only and does not change anything; it uses POST rather than GET because the requested quantity must never be cached. **Notes.** - A POST because it takes an argument; it changes nothing.

Request body application/json

FieldTypeRequiredDescription
quantityintegeryes
curl -X POST "https://api.brixsignage.com/v1/account/screen-pool/estimate" \
  -H "Authorization: Bearer $BRIX_API_KEY" \
  -H "Content-Type: application/json"

Response 200 Success.

FieldTypeDescription
dataobject
data.linesarray of objectLine items of the invoice raised today.
data.lines[].descriptionstring
data.lines[].amountnumber
data.creditsAppliednumberCredit for the unused part of the current term.
data.subTotalnumber
data.amountDueNownumberCharged now, after credits (currency units, not cents).
data.currencyCodestring
data.nextBillingAtstring | null
data.payWithstring | nullThe payment method that is charged (`Visa •••• 4242`).
data.currentQuantityinteger
data.newQuantityinteger
data.renewalAmountnumber | nullWhat each term costs after the change.
data.chargedTodaybooleanFalse when the amount is too small to charge today (it is added to the renewal).
data.invoicedbooleanThe account pays by invoice; nothing is charged to a card.
data.decreaseRequiresSupportfalseAlways false. Kept for older clients.
data.scheduledAtRenewalbooleanA reduction on a paid plan: it takes effect at `renewsAt`.
data.renewsAtstring | null
data.inTrialboolean
data.trialEndsAtstring | null
data.minQuantityintegerThe lowest allowed quantity: the screens running now (at least 1).

Response 401 Missing, expired or revoked bearer token.

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.

Response 403 You do not hold the permission for the whole workspace (a grant at one location is not enough).

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.

Response 409 `no_subscription`, `account_cancelled`, or `under_contract`.

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.

Response 422 `quantity` is not a whole number from 1 to 10000.

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.

Response 502 `estimate_unavailable`.

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.

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

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.

DELETE/v1/account/screen-pool/scheduled

Bearer token billing.edit

Cancels a screen-pool reduction that is queued to take effect at renewal, keeping the current plan instead. Calling this when nothing is scheduled has no effect. **Notes.** - Succeeds when nothing is queued too.

curl -X DELETE "https://api.brixsignage.com/v1/account/screen-pool/scheduled" \
  -H "Authorization: Bearer $BRIX_API_KEY"

Response 200 Success.

FieldTypeDescription
dataobject
data.oktrue

Response 401 Missing, expired or revoked bearer token.

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.

Response 403 You do not hold the permission for the whole workspace (a grant at one location is not enough).

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.

Response 409 `no_subscription`, `account_cancelled`, or `under_contract`.

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.

Response 502 The billing provider did not answer; nothing changed.

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.

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

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/account/support-access

Bearer token settings.view

Returns the workspace's current Brix support access policy (always allowed, allowed with notification, or approval required), every access request Brix support has raised along with its decision, and every support session opened on the workspace, with any still in progress marked as live. **Notes.** - A read that can write: pending requests past their expiry are marked expired first.

curl "https://api.brixsignage.com/v1/account/support-access" \
  -H "Authorization: Bearer $BRIX_API_KEY"

Response 200 Success.

FieldTypeDescription
dataobject
data.policySupportAccessPolicy
data.policy.mode"open" | "notify" | "approve"`open`: Brix support may open the workspace. `notify`: it may, and the owners are emailed. `approve`: a person here must approve each request.
data.policy.grantMinutesintegerHow long an approval lasts.
data.policy.requestTtlMinutesintegerHow long a request waits for an answer before it expires.
data.modesarray of object
data.modes[].id"open" | "notify" | "approve"
data.modes[].labelstring
data.modes[].whatstring
data.requestsarray of objectNewest 100.
data.requests[].idstring
data.requests[].staffEmailstringThe Brix support person who asked.
data.requests[].reasonstring
data.requests[].reasonCategorystring | null
data.requests[].status"pending" | "approved" | "denied" | "expired" | "revoked"
data.requests[].requestedAtstringISO-8601 timestamp (UTC).
data.requests[].requestExpiresAtstringISO-8601 timestamp (UTC).
data.requests[].decidedAtstring | null
data.requests[].decidedByEmailstring | null
data.requests[].decidedByNamestring | null
data.requests[].grantExpiresAtstring | null
data.requests[].decisionNotestring | null
data.requests[].grantLiveboolean
data.sessionsarray of objectTimes Brix support opened the workspace, newest 100.
data.sessions[].idstring
data.sessions[].staffEmailstring
data.sessions[].reasonstring
data.sessions[].startedAtstringISO-8601 timestamp (UTC).
data.sessions[].endedAtstring | null
data.sessions[].expiresAtstring | null
data.sessions[].liveboolean
data.sessions[].recordedbooleanThe session was screen-recorded.

Response 401 Missing, expired or revoked bearer token.

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.

Response 403 You do not hold the permission for the whole workspace (a grant at one location is not enough).

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.

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

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.

PATCH/v1/account/support-access/policy

Bearer token settings.edit

Sets whether Brix support may open the workspace: always allowed and recorded, allowed but the workspace is notified as it happens, or only with explicit approval for each request.

Request body application/json

FieldTypeRequiredDescription
mode"open" | "notify" | "approve"no`open`: Brix support may open the workspace. `notify`: it may, and the owners are emailed. `approve`: a person here must approve each request.
grantMinutesintegernoHow long an approval lasts.
requestTtlMinutesintegernoHow long a request waits for an answer before it expires.
curl -X PATCH "https://api.brixsignage.com/v1/account/support-access/policy" \
  -H "Authorization: Bearer $BRIX_API_KEY" \
  -H "Content-Type: application/json"

Response 200 Success.

FieldTypeDescription
dataSupportAccessPolicy
data.mode"open" | "notify" | "approve"`open`: Brix support may open the workspace. `notify`: it may, and the owners are emailed. `approve`: a person here must approve each request.
data.grantMinutesintegerHow long an approval lasts.
data.requestTtlMinutesintegerHow long a request waits for an answer before it expires.

Response 401 Missing, expired or revoked bearer token.

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.

Response 403 A Brix support session cannot change this. Also: You do not hold the permission for the whole workspace (a grant at one location is not enough).

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.

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

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.

POST/v1/account/support-access/revoke

Bearer token settings.edit

Immediately withdraws consent for Brix support access: ends every live support session and cancels any outstanding approval, in that order.

curl -X POST "https://api.brixsignage.com/v1/account/support-access/revoke" \
  -H "Authorization: Bearer $BRIX_API_KEY"

Response 200 Success.

FieldTypeDescription
dataobject
data.sessionsEndedinteger
data.grantsRevokedinteger

Response 401 Missing, expired or revoked bearer token.

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.

Response 403 A Brix support session cannot do this. Also: You do not hold the permission for the whole workspace (a grant at one location is not enough).

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.

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

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.

POST/v1/account/upgrade-annual

Bearer token billing.edit

Switches the workspace's monthly subscription to annual, upfront billing. Returns 409 if the workspace is already on annual billing or has no active subscription.

curl -X POST "https://api.brixsignage.com/v1/account/upgrade-annual" \
  -H "Authorization: Bearer $BRIX_API_KEY"

Response 200 Success.

FieldTypeDescription
dataobject
data.cadence"annual"

Response 401 Missing, expired or revoked bearer token.

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.

Response 403 You do not hold the permission for the whole workspace (a grant at one location is not enough).

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.

Response 409 `no_subscription`, `under_contract`, or `already_annual`.

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.

Response 502 The switch failed.

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.

Response 503 `annual_switch_unavailable`: the switch is not self-serve yet; contact support.

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.

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

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/account/upgrade-annual/estimate

Bearer token billing.view

Returns the prorated cost of switching from monthly to annual billing before committing to it, including which card would be charged.

curl "https://api.brixsignage.com/v1/account/upgrade-annual/estimate" \
  -H "Authorization: Bearer $BRIX_API_KEY"

Response 200 Success.

FieldTypeDescription
dataobject
data.linesarray of objectLine items of the invoice raised today.
data.lines[].descriptionstring
data.lines[].amountnumber
data.creditsAppliednumberCredit for the unused part of the current term.
data.subTotalnumber
data.amountDueNownumberCharged now, after credits (currency units, not cents).
data.currencyCodestring
data.nextBillingAtstring | null
data.payWithstring | nullThe payment method that is charged (`Visa •••• 4242`).

Response 401 Missing, expired or revoked bearer token.

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.

Response 403 You do not hold the permission for the whole workspace (a grant at one location is not enough).

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.

Response 409 `no_subscription` or `under_contract`.

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.

Response 502 `estimate_unavailable`.

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.

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

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.