---
title: "List every dashboard banner (platform admin)"
method: GET
path: "/v1/admin/banners"
tags: ["Internal"]
---

# List every dashboard banner (platform admin)

`GET /v1/admin/banners`

Every banner row on the config table, enabled or not, for the Toolbox /banners editor. Banners are operator-authored dashboard notices: message is rendered as plain text (never HTML) and ctaUrl is validated to an https:/mailto: allowlist. Capped at 50 rows; retire a banner with DELETE.

## Response `200`

Banners

- BannerList
  - `items` Banner[], required
    - `audience` 'all' | 'orgs', required — "all" targets every org; "orgs" targets exactly orgIds.
    - `contentVersion` string, required
    - `createdAt` string
    - `createdBy` string
    - `ctaLabel` string
    - `ctaUrl` string — https: or mailto: only.
    - `dismissible` boolean, required
    - `enabled` boolean, required
    - `enabledEpoch` integer, required
    - `excludePaths` string[]
    - `id` string, required
    - `message` string, required — Rendered as plain text.
    - `name` string, required — Operator-facing label; not shown to customers.
    - `orgIds` string[]
    - `pathPrefixes` string[]
    - `scope` 'all' | 'paths', required — "all" shows everywhere; "paths" shows only under pathPrefixes.
    - `tone` 'info' | 'warn' | 'danger', required
    - `updatedAt` string
    - `updatedBy` string

## Other responses

- `401` — Missing or invalid API key
- `403` — API key lacks the required scope
- `503` — A required integration (e.g. payments) is not configured

## Changes

- **2026-09-04** `4a338e447d39` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/openrelay/apis/openrelay-api/changes/v1/admin/banners/get.md)

---

[API](https://skmtc.dev/openrelay/apis/openrelay-api.md) · [All operations](https://skmtc.dev/openrelay/apis/openrelay-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/openrelay/openrelay-api/revisions/4a338e447d39/schema)
