---
title: "List approval requests"
method: GET
path: "/v1/approvals"
tags: ["approvals"]
---

# List approval requests

`GET /v1/approvals`

## Request

- Base URL: `https://api.brixsignage.com`
- URL: `https://api.brixsignage.com/v1/approvals`
- Auth: HTTP bearer

List approval requests the caller is allowed to see, newest first. Use `?state=` to narrow the list to requests still awaiting a decision. The response is capped because approval history only grows over time.

Newest first. The route needs `screen.view`, but each request is listed only if the caller can also view (or approve) that content kind at its location — e.g. `playlist.view` for a playlist. A `screen.view`-only key gets an empty list.

## Query parameters

- `state` 'pending' | 'approved' | 'rejected' | 'withdrawn'
- `limit` integer

## Response `200`

Success.

- object
  - `data` ApprovalRequest[], required
    - `id` string, required: Approval request id.
    - `contentKind` string, required: `playlist`, `schedule`, `creative`, `layout`, `creative-override`, `media`, `app`, …
    - `contentId` string, required
    - `contentName` string, required
    - `thumbnailUrl` string, nullable, required
    - `nodeId` string, required: The content's home location; empty string for the workspace root.
    - `nodeName` string, required
    - `requestedByName` string, required
    - `requestedAt` string, required: ISO-8601 timestamp (UTC).
    - `note` string, nullable, required
    - `changes` unknown[], required: What changed since the last approved version: `{kind, label, detail, thumbnailUrl?}` items for kinds the server diffs; for other kinds, whatever the requester sent.
      - unknown
    - `state` 'pending' | 'approved' | 'rejected' | 'withdrawn', required
    - `requestedById` string, required: User id, or `apikey:<id>` for a key.
    - `levels` object[], required: The approval chain, one entry per tier.
      - `nodeId` string, required
      - `nodeName` string, required
      - `approverIds` string[], required
      - `approverNames` string[], required
    - `currentLevel` integer, required: Index into `levels` awaiting a decision while pending.
    - `decisions` object[], required
      - `level` integer, required
      - `decidedById` string, required
      - `decidedByName` string, nullable, required
      - `decidedAt` string, required: ISO-8601 timestamp (UTC).
      - `note` string, nullable, required
    - `decidedByName` string, nullable, required
    - `decidedAt` string, nullable, required: ISO-8601 timestamp (UTC).
    - `decisionNote` string, nullable, required

## Other responses

- `401`: Missing, expired or revoked bearer token.
- `403`: The token lacks the permission this operation needs (see `x-brix-permission`).
- `5XX`: Server error. The body carries a `requestId` to quote to support.

---

[API](https://skmtc.dev/brixsignage/apis/brix-api.md) · [All operations](https://skmtc.dev/brixsignage/apis/brix-api/llms.txt) · [OpenAPI document](https://skmtc.dev/brixsignage/apis/brix-api/revisions/02fd3665dc7d?raw)
