Brix Shared With Me API

The shared-with-me API from Brix — 3 operation(s) for shared-with-me.

Operations 4

GET /v1/shared-with-me List airtime shared with me #
POST /v1/shared-with-me/{allocationId}/fill Create a fill playlist #
PUT /v1/shared-with-me/{allocationId}/fill Set the fill playlist #
GET /v1/shared-with-me/{allocationId}/source Read the playlist a slice belongs to #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/brixsignage-com:brixsignage-com-shared-with-me-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

brixsignage-com-shared-with-me-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Brix Shared With Me API
  version: '1'
  summary: 'Control plane for Brix digital signage: screens, content, playlists, schedules, casts and emergencies.'
  description: 'Generated from the route table the API actually mounts

    (`apps/api/routes.snapshot.json`), the description each route is required to

    carry (`tests/contracts/route-registry.json`), and request/response schemas

    (`apps/api/src/openapi/`). CI enforces all three, so this document cannot list a

    route that does not exist or omit one that does.


    **Schemas.** 447 operations carry request and response schemas

    (`x-brix-schema: verified`). Each is checked in CI against the response the

    real handler returns — a missing, mistyped or undeclared field fails the build.

    The remaining operations are route-level only (`x-brix-schema: none`): their

    path, method, permission and purpose are exact, but the shape of `data` is not

    yet modelled, and we would rather say so than publish a schema that validates

    against nothing. Objects are open: a new field is not a breaking change.


    **Envelope.** Success bodies are `{ "data": … }`. Failures are

    `{ "error": "", "message": "…" }`, plus `requestId` on a 5xx.

    Many list routes page opt-in (see each operation): pass `?limit=` and

    follow `nextCursor` via `?cursor=` until it is null.


    **Authentication.** `Authorization: Bearer ` with an API key

    (`ak_…`, created in the console under Settings → API & MCP) or a user session. An

    API key carries a creator-chosen set of `resource.verb` permissions and may be

    pinned to one location''s subtree; a key can never be granted a permission its

    creator does not hold. The permission an operation needs is in

    `x-brix-permission` and in its security requirement.


    **Tenancy.** Every request resolves to one workspace. A resource belonging to

    another tenant returns 404, never 403, so a response never confirms that an

    account exists.


    **Rate limits.** A 429 carries `Retry-After`; a 503 `database_busy` means retry

    after the `Retry-After` interval.'
servers:
- url: https://api.brixsignage.com
  description: Production
security:
- bearerAuth: []
tags:
- name: shared-with-me
paths:
  /v1/shared-with-me:
    get:
      operationId: getSharedWithMe
      tags:
      - shared-with-me
      summary: List airtime shared with me
      description: 'List airtime slices that other teams have reserved and made available for the caller''s team to fill.


        **Notes.**

        - Only slices the caller can fill are listed. Besides `playlist.view`, the caller needs `playlist.edit` at the location the slice is reserved for.'
      x-brix-permission: playlist.view
      x-brix-schema: verified
      x-brix-notes:
      - Only slices the caller can fill are listed. Besides `playlist.view`, the caller needs `playlist.edit` at the location the slice is reserved for.
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        allocationId:
                          type: string
                        label:
                          type: string
                        reservedForNodeId:
                          type: string
                          description: The location the slice is reserved for.
                        reservedForName:
                          type: string
                        kind:
                          type: string
                          enum:
                          - percent
                          - every-nth
                          - daypart
                          description: Only `percent` and `every-nth` slices are listed.
                        value:
                          type: number
                          description: The share of airtime (a percentage, or every Nth item).
                        requiresApproval:
                          type: boolean
                        sourcePlaylist:
                          type: object
                          properties:
                            id:
                              type: string
                            name:
                              type: string
                            nodeId:
                              anyOf:
                              - type: string
                              - type: 'null'
                          required:
                          - id
                          - name
                          - nodeId
                        fill:
                          anyOf:
                          - type: object
                            properties:
                              id:
                                type: string
                              name:
                                type: string
                              approvalState:
                                type: string
                                enum:
                                - draft
                                - pending
                                - approved
                                - rejected
                                description: Where the fill stands in review. With `requiresApproval`, only `approved` plays.
                            required:
                            - id
                            - name
                            - approvalState
                          - type: 'null'
                          description: The playlist that fills the slice; null when none is bound.
                      required:
                      - allocationId
                      - label
                      - reservedForNodeId
                      - reservedForName
                      - kind
                      - value
                      - requiresApproval
                      - sourcePlaylist
                      - fill
                required:
                - data
        '401':
          description: Missing, expired or revoked bearer token.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: The token lacks the permission this operation needs (see `x-brix-permission`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        5XX:
          description: Server error. The body carries a `requestId` to quote to support.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - bearerAuth:
        - playlist.view
  /v1/shared-with-me/{allocationId}/fill:
    post:
      operationId: createSharedWithMeFill
      tags:
      - shared-with-me
      summary: Create a fill playlist
      description: 'Create a new playlist and attach it as the fill for an airtime slice reserved for the caller''s team.


        **Notes.**

        - Besides `playlist.view`, the caller needs `playlist.edit` at the location the slice is reserved for.

        - The new playlist is empty and is placed at the reserved location.'
      x-brix-permission: playlist.view
      x-brix-schema: verified
      x-brix-notes:
      - Besides `playlist.view`, the caller needs `playlist.edit` at the location the slice is reserved for.
      - The new playlist is empty and is placed at the reserved location.
      parameters:
      - name: allocationId
        in: path
        required: true
        schema:
          type: string
        description: Slice (allocation) id.
        example: alloc_7a8b9c0d1e2f3a4b
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  description: Default `<location> slice`.
                  type: string
      responses:
        '200':
          description: 'Success: A fill playlist is already bound: it is returned (`created: false`) and nothing is created.'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      allocationId:
                        type: string
                      fillPlaylistId:
                        type: string
                      name:
                        type: string
                      created:
                        type: boolean
                    required:
                    - allocationId
                    - fillPlaylistId
                    - name
                    - created
                required:
                - data
        '201':
          description: Success.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      allocationId:
                        type: string
                      fillPlaylistId:
                        type: string
                      name:
                        type: string
                      created:
                        type: boolean
                    required:
                    - allocationId
                    - fillPlaylistId
                    - name
                    - created
                required:
                - data
        '401':
          description: Missing, expired or revoked bearer token.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: You cannot fill this slice.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: No such fillable slice in this workspace.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        5XX:
          description: Server error. The body carries a `requestId` to quote to support.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - bearerAuth:
        - playlist.view
    put:
      operationId: replaceSharedWithMeFill
      tags:
      - shared-with-me
      summary: Set the fill playlist
      description: 'Attach an existing playlist as the fill for an airtime slice reserved for the caller''s team. Send `playlistId` as `null` to remove it.


        **Notes.**

        - Besides `playlist.view`, the caller needs `playlist.edit` at the location the slice is reserved for.'
      x-brix-permission: playlist.view
      x-brix-schema: verified
      x-brix-notes:
      - Besides `playlist.view`, the caller needs `playlist.edit` at the location the slice is reserved for.
      parameters:
      - name: allocationId
        in: path
        required: true
        schema:
          type: string
        description: Slice (allocation) id.
        example: alloc_7a8b9c0d1e2f3a4b
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                playlistId:
                  anyOf:
                  - type: string
                  - type: 'null'
                  description: A playlist you can edit; null unbinds.
              required:
              - playlistId
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      allocationId:
                        type: string
                      fillPlaylistId:
                        anyOf:
                        - type: string
                        - type: 'null'
                    required:
                    - allocationId
                    - fillPlaylistId
                required:
                - data
        '401':
          description: Missing, expired or revoked bearer token.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: You cannot fill this slice, or cannot edit that playlist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: No such fillable slice, or no such playlist in this workspace.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: The playlist is the one the slice belongs to.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        5XX:
          description: Server error. The body carries a `requestId` to quote to support.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - bearerAuth:
        - playlist.view
  /v1/shared-with-me/{allocationId}/source:
    get:
      operationId: getSharedWithMeSource
      tags:
      - shared-with-me
      summary: Read the playlist a slice belongs to
      description: 'Get the owner playlist around an airtime slice shared with your team: its name, whether it shuffles, its items in play order (name, kind, thumbnail, duration), and the share itself (kind, value, whether approval is required, and your fill playlist). Read only. Besides `playlist.view`, you need `playlist.edit` at the location the slice is reserved for. Other locations’ shares and the owner’s settings are not returned.


        **Notes.**

        - Besides `playlist.view`, the caller needs `playlist.edit` at the location the slice is reserved for.

        - Read only. Other locations'' shares and the owner''s settings are not returned.'
      x-brix-permission: playlist.view
      x-brix-schema: verified
      x-brix-notes:
      - Besides `playlist.view`, the caller needs `playlist.edit` at the location the slice is reserved for.
      - Read only. Other locations' shares and the owner's settings are not returned.
      parameters:
      - name: allocationId
        in: path
        required: true
        schema:
          type: string
        description: Slice (allocation) id.
        example: alloc_7a8b9c0d1e2f3a4b
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      playlist:
                        type: object
                        properties:
                          id:
                            type: string
                          name:
                            type: string
                          shuffle:
                            type: boolean
                        required:
                        - id
                        - name
                        - shuffle
                      items:
                        type: array
                        items:
                          type: object
                          properties:
                            name:
                              type: string
                            kind:
                              type: string
                            thumbnailUrl:
                              anyOf:
                              - type: string
                              - type: 'null'
                            durationSec:
                              type: number
                          required:
                          - name
                          - kind
                          - thumbnailUrl
                          - durationSec
                        description: 'The owner''s items in order: what plays around your share.'
                      share:
                        type: object
                        properties:
                          kind:
                            type: string
                            enum:
                            - percent
                            - every-nth
                            - daypart
                          value:
                            type: number
                          requiresApproval:
                            type: boolean
                          reservedForName:
                            type: string
                          fillPlaylistId:
                            anyOf:
                            - type: string
                            - type: 'null'
                        required:
                        - kind
                        - value
                        - requiresApproval
                        - reservedForName
                        - fillPlaylistId
                    required:
                    - playlist
                    - items
                    - share
                required:
                - data
        '401':
          description: Missing, expired or revoked bearer token.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: You cannot fill this slice.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: No such fillable slice in this workspace.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        5XX:
          description: Server error. The body carries a `requestId` to quote to support.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - bearerAuth:
        - playlist.view
components:
  schemas:
    Error:
      type: object
      properties:
        error:
          type: string
          description: 'Machine-readable code: `unauthorized`, `forbidden`, `not_found`, `validation_error`, `conflict`, `rate_limited`, `internal_error`, …'
        message:
          description: Human-readable explanation. Safe to show an operator.
          type: string
        requestId:
          description: 'Present on 5xx: quote it to support.'
          type: string
      required:
      - error
      additionalProperties: {}
      description: Error envelope returned by every failing request.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: An API key (`ak_…`) or a user session token. API keys carry `resource.verb` permissions.