Web recorder API

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

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/web-recorder/{sid}

Bearer token media.edit

Return the steps recorded so far in an in-progress sign-in recording session.

ParameterInTypeRequiredDescription
sidpathstringyesRecording session id, from `start`.
curl "https://api.brixsignage.com/v1/web-recorder/{sid}" \
  -H "Authorization: Bearer $BRIX_API_KEY"

Response 200 Success.

FieldTypeDescription
dataobject
data.urlstringThe page the recording is on now.
data.stepsarray of RecordedStep
data.steps[].kindstring`navigate`, `click`, `enter-text`, `scroll`, `accept-cookies`, `wait`, or a picker step.
data.steps[].urlstring
data.steps[].selectorstring
data.steps[].labelstring
data.steps[].valuestringTyped text that is not secret.
data.steps[].valueRefstringFor secret text: a reference; the value is never recorded. Send it in `finalize`'s `secrets`.
data.steps[].pixelsnumber
data.steps[].msnumber
data.startedAtintegerMilliseconds since the Unix epoch (not an ISO timestamp).
data.spaceIdstring

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 404 No active session with this id in this workspace (it expired, was finished, or never started).

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 Recording is not available in this environment.

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/web-recorder/{sid}/abort

Bearer token media.edit

Discard an in-progress sign-in recording session without changing the associated media asset. **Notes.** - Always answers { ok: true }, for an unknown session too.

ParameterInTypeRequiredDescription
sidpathstringyesRecording session id, from `start`.
curl -X POST "https://api.brixsignage.com/v1/web-recorder/{sid}/abort" \
  -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 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/web-recorder/{sid}/action

Bearer token media.edit

Append one recorded interaction, such as a click, typed text, or a wait, to an open sign-in recording session.

ParameterInTypeRequiredDescription
sidpathstringyesRecording session id, from `start`.

Request body application/json

FieldTypeRequiredDescription
kind"click" | "type" | "scroll" | "navigate" | "accept-cookies" | "wait" | "pick"yes
selectorstringno
labelstringno
textstringnoFor `type`: the typed text (not stored when `isSecret`).
isSecretbooleannoFor `type`: store a reference instead of the text.
urlstringno
dynumberno
msnumberno
modestringno
xnumberno
ynumberno
curl -X POST "https://api.brixsignage.com/v1/web-recorder/{sid}/action" \
  -H "Authorization: Bearer $BRIX_API_KEY" \
  -H "Content-Type: application/json"

Response 200 Success.

FieldTypeDescription
dataobject
data.urlstringThe page the recording is on now.
data.stepsarray of RecordedStep
data.steps[].kindstring`navigate`, `click`, `enter-text`, `scroll`, `accept-cookies`, `wait`, or a picker step.
data.steps[].urlstring
data.steps[].selectorstring
data.steps[].labelstring
data.steps[].valuestringTyped text that is not secret.
data.steps[].valueRefstringFor secret text: a reference; the value is never recorded. Send it in `finalize`'s `secrets`.
data.steps[].pixelsnumber
data.steps[].msnumber
data.startedAtintegerMilliseconds since the Unix epoch (not an ISO timestamp).
data.spaceIdstring

Response 400 The body is not JSON.

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 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 404 No active session with this id in this workspace (it expired, was finished, or never started).

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 Recording is not available in this environment.

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/web-recorder/{sid}/finalize

Bearer token media.edit

Save a completed recording to a web asset, using mediaId and optional secrets. The recorded steps are stored on the asset's web configuration, secrets are encrypted and referenced by name, and the session ends. **Notes.** - The asset's sign-in is replayed later to refresh its cookies; call links/:mediaId/verify to test it now.

ParameterInTypeRequiredDescription
sidpathstringyesRecording session id, from `start`.

Request body application/json

FieldTypeRequiredDescription
mediaIdstringyesThe web page asset to save the steps to.
secretsobjectno`valueRef` → secret value. Encrypted; never returned. Null or empty removes one.
curl -X POST "https://api.brixsignage.com/v1/web-recorder/{sid}/finalize" \
  -H "Authorization: Bearer $BRIX_API_KEY" \
  -H "Content-Type: application/json"

Response 200 Success.

FieldTypeDescription
dataobject
data.oktrue
data.stepCountinteger
data.secretRefsarray of objectEvery secret step, so you can send values you have not sent yet.
data.secretRefs[].refstring
data.secretRefs[].labelstring

Response 400 `mediaId` is missing.

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 `media.edit` where the asset lives.

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 The session expired or never started, or no such asset.

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 Recording is not available in this environment.

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/web-recorder/links/{mediaId}/verify

Bearer token media.edit

Run the finalized sign-in recording for a web asset and report whether the resulting session looks successfully logged in. This lets a caller confirm the recording works right after capturing it, rather than waiting until the content plays on a screen. **Notes.** - Runs the sign-in in a headless browser now (this can take 30 seconds or more). Answers 200 with ok: false when it fails.

ParameterInTypeRequiredDescription
mediaIdpathstringyesWeb page asset id.
curl -X POST "https://api.brixsignage.com/v1/web-recorder/links/{mediaId}/verify" \
  -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 `media.edit` where the asset lives.

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 The headless browser is not available.

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/web-recorder/start

Bearer token media.edit

Begin a sign-in recording session for a web asset, given a url. Returns a session id, the url, and the steps recorded so far, which starts empty. Steps are then submitted using the Brix Recorder browser extension. **Notes.** - The recorder browser extension then sends each step with action. Invalid input answers 400, not 422.

Request body application/json

FieldTypeRequiredDescription
urlstringyesThe sign-in page (http or https, a public host).
curl -X POST "https://api.brixsignage.com/v1/web-recorder/start" \
  -H "Authorization: Bearer $BRIX_API_KEY" \
  -H "Content-Type: application/json"

Response 200 Success.

FieldTypeDescription
dataobject
data.urlstringThe page the recording is on now.
data.stepsarray of RecordedStep
data.steps[].kindstring`navigate`, `click`, `enter-text`, `scroll`, `accept-cookies`, `wait`, or a picker step.
data.steps[].urlstring
data.steps[].selectorstring
data.steps[].labelstring
data.steps[].valuestringTyped text that is not secret.
data.steps[].valueRefstringFor secret text: a reference; the value is never recorded. Send it in `finalize`'s `secrets`.
data.steps[].pixelsnumber
data.steps[].msnumber
data.startedAtintegerMilliseconds since the Unix epoch (not an ISO timestamp).
data.spaceIdstring
data.sidstring
data.oktrue

Response 400 `url` is not http(s), or not a public address.

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 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 503 Recording is not available in this environment.

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.