> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rivi.software/llms.txt
> Use this file to discover all available pages before exploring further.

# List content schemas

> Discover published content types and field definitions before rendering records. Use each field's key and kind; labels are for display. Private and system fields are excluded.



## OpenAPI

````yaml /radiotools/openapi.json get /api/v1/stations/{stationSlug}/schemas
openapi: 3.1.0
info:
  title: RadioTools API
  version: 1.0.0
  description: >-
    RadioTools APIs for listener websites and apps, published media, and
    now-playing metadata ingestion.
servers:
  - url: https://radiotools.rivi.software
    description: radiotools API
security: []
tags:
  - name: Public listener
    description: >-
      Tenant-token published delivery (listener:read; push:register for device
      changes). Published media remains anonymous. OPTIONS allows every origin;
      JSON is no-store with a strong ETag for conditional polling.
  - name: Ingest
    description: >-
      Automation credentials. The credential resolves the station; payloads
      cannot change it.
paths:
  /api/v1/stations/{stationSlug}/schemas:
    get:
      tags:
        - Public listener
      summary: >-
        Delivery-safe schema definitions; historical versions require published
        snapshots
      description: >-
        Discover published content types and field definitions before rendering
        records. Use each field's key and kind; labels are for display. Private
        and system fields are excluded.
      parameters:
        - schema:
            type: string
          required: true
          name: stationSlug
          in: path
          description: >-
            Public station slug from the station settings; distinct from the
            internal station ID.
          example: radio-rivier
        - schema:
            type: string
          required: false
          name: type
          in: query
          description: Stable published content type key returned by the schemas endpoint.
          example: news
        - schema:
            type: integer
            exclusiveMinimum: 0
          required: false
          name: version
          in: query
          description: >-
            Published schema version to retrieve. Omit to use the endpoint's
            default version.
          example: 1
      responses:
        '200':
          description: Safe definitions without private/system metadata
          content:
            application/json:
              schema:
                type: object
                properties:
                  contractVersion:
                    type: number
                    enum:
                      - 1
                    description: >-
                      Public JSON contract version. The current version is 1;
                      tolerate additional fields within this version.
                    example: 1
                  types:
                    type: array
                    items:
                      type: object
                      properties:
                        key:
                          type: string
                          pattern: ^[a-z][a-z0-9_]{0,47}$
                          description: >-
                            Stable machine-readable key; use this value rather
                            than the translated label.
                          example: news
                        label:
                          type: string
                          description: Human-readable label for display.
                          example: News
                        version:
                          type: integer
                          exclusiveMinimum: 0
                          description: Version of this schema or structured document.
                          example: 1
                        archived:
                          type: boolean
                          description: Whether this content type is archived.
                          example: false
                        fields:
                          type: array
                          items:
                            type: object
                            properties:
                              key:
                                type: string
                                pattern: ^[a-z][a-z0-9_]{0,47}$
                                description: >-
                                  Stable machine-readable key; use this value
                                  rather than the translated label.
                                example: headline
                              label:
                                type: string
                                description: Human-readable label for display.
                                example: Headline
                              kind:
                                type: string
                                enum:
                                  - text
                                  - rich_text
                                  - number
                                  - boolean
                                  - datetime
                                  - choices
                                  - media
                                  - content
                                  - group
                                description: >-
                                  Field or media kind. Use the allowed values to
                                  select the appropriate renderer.
                                example: text
                              required:
                                type: boolean
                                description: >-
                                  Whether the content field requires a value in
                                  this schema version.
                                example: true
                              maxLength:
                                type: number
                                description: Maximum permitted text length.
                                example: 160
                              min:
                                type: number
                                description: Minimum permitted numeric value.
                              max:
                                type: number
                                description: Maximum permitted numeric value.
                              choices:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    key:
                                      type: string
                                      pattern: ^[a-z][a-z0-9_]{0,47}$
                                      description: >-
                                        Stable machine-readable key; use this
                                        value rather than the translated label.
                                    label:
                                      type: string
                                      description: Human-readable label for display.
                                  required:
                                    - key
                                    - label
                                description: >-
                                  Allowed choices with stable keys and display
                                  labels.
                              multiple:
                                type: boolean
                                description: >-
                                  Whether a choice field accepts more than one
                                  choice.
                              targetType:
                                type: string
                                pattern: ^[a-z][a-z0-9_]{0,47}$
                                description: Content type key referenced by this field.
                              maxItems:
                                type: number
                                description: Maximum number of entries in a repeated field.
                              fields:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    key:
                                      type: string
                                      pattern: ^[a-z][a-z0-9_]{0,47}$
                                      description: >-
                                        Stable machine-readable key; use this
                                        value rather than the translated label.
                                    label:
                                      type: string
                                      description: Human-readable label for display.
                                    kind:
                                      type: string
                                      enum:
                                        - text
                                        - rich_text
                                        - number
                                        - boolean
                                        - datetime
                                        - choices
                                        - media
                                        - content
                                        - group
                                      description: >-
                                        Field or media kind. Use the allowed
                                        values to select the appropriate
                                        renderer.
                                    required:
                                      type: boolean
                                      description: >-
                                        Whether the content field requires a
                                        value in this schema version.
                                    maxLength:
                                      type: number
                                      description: Maximum permitted text length.
                                    min:
                                      type: number
                                      description: Minimum permitted numeric value.
                                    max:
                                      type: number
                                      description: Maximum permitted numeric value.
                                    choices:
                                      type: array
                                      items:
                                        type: object
                                        properties:
                                          key:
                                            type: string
                                            pattern: ^[a-z][a-z0-9_]{0,47}$
                                            description: >-
                                              Stable machine-readable key; use this
                                              value rather than the translated label.
                                          label:
                                            type: string
                                            description: Human-readable label for display.
                                        required:
                                          - key
                                          - label
                                      description: >-
                                        Allowed choices with stable keys and
                                        display labels.
                                    multiple:
                                      type: boolean
                                      description: >-
                                        Whether a choice field accepts more than
                                        one choice.
                                    targetType:
                                      type: string
                                      pattern: ^[a-z][a-z0-9_]{0,47}$
                                      description: >-
                                        Content type key referenced by this
                                        field.
                                    maxItems:
                                      type: number
                                      description: >-
                                        Maximum number of entries in a repeated
                                        field.
                                    fields:
                                      type: array
                                      items:
                                        type: object
                                        properties:
                                          key:
                                            type: string
                                            pattern: ^[a-z][a-z0-9_]{0,47}$
                                            description: >-
                                              Stable machine-readable key; use this
                                              value rather than the translated label.
                                          label:
                                            type: string
                                            description: Human-readable label for display.
                                          kind:
                                            type: string
                                            enum:
                                              - text
                                              - rich_text
                                              - number
                                              - boolean
                                              - datetime
                                              - choices
                                              - media
                                              - content
                                              - group
                                            description: >-
                                              Field or media kind. Use the allowed
                                              values to select the appropriate
                                              renderer.
                                          required:
                                            type: boolean
                                            description: >-
                                              Whether the content field requires a
                                              value in this schema version.
                                          maxLength:
                                            type: number
                                            description: Maximum permitted text length.
                                          min:
                                            type: number
                                            description: Minimum permitted numeric value.
                                          max:
                                            type: number
                                            description: Maximum permitted numeric value.
                                          choices:
                                            type: array
                                            items:
                                              type: object
                                              properties:
                                                key:
                                                  type: string
                                                  pattern: ^[a-z][a-z0-9_]{0,47}$
                                                  description: >-
                                                    Stable machine-readable key; use this
                                                    value rather than the translated label.
                                                label:
                                                  type: string
                                                  description: Human-readable label for display.
                                              required:
                                                - key
                                                - label
                                            description: >-
                                              Allowed choices with stable keys and
                                              display labels.
                                          multiple:
                                            type: boolean
                                            description: >-
                                              Whether a choice field accepts more than
                                              one choice.
                                          targetType:
                                            type: string
                                            pattern: ^[a-z][a-z0-9_]{0,47}$
                                            description: >-
                                              Content type key referenced by this
                                              field.
                                          maxItems:
                                            type: number
                                            description: >-
                                              Maximum number of entries in a repeated
                                              field.
                                          fields:
                                            type: array
                                            items:
                                              type: object
                                              properties:
                                                key:
                                                  type: string
                                                  pattern: ^[a-z][a-z0-9_]{0,47}$
                                                  description: >-
                                                    Stable machine-readable key; use this
                                                    value rather than the translated label.
                                                label:
                                                  type: string
                                                  description: Human-readable label for display.
                                                kind:
                                                  type: string
                                                  enum:
                                                    - text
                                                    - rich_text
                                                    - number
                                                    - boolean
                                                    - datetime
                                                    - choices
                                                    - media
                                                    - content
                                                    - group
                                                  description: >-
                                                    Field or media kind. Use the allowed
                                                    values to select the appropriate
                                                    renderer.
                                                required:
                                                  type: boolean
                                                  description: >-
                                                    Whether the content field requires a
                                                    value in this schema version.
                                              required:
                                                - key
                                                - label
                                                - kind
                                                - required
                                              additionalProperties: false
                                            maxItems: 0
                                            description: >-
                                              Published field definitions. Private and
                                              system metadata are excluded.
                                        required:
                                          - key
                                          - label
                                          - kind
                                          - required
                                        additionalProperties: false
                                      description: >-
                                        Published field definitions. Private and
                                        system metadata are excluded.
                                  required:
                                    - key
                                    - label
                                    - kind
                                    - required
                                  additionalProperties: false
                                description: >-
                                  Published field definitions. Private and
                                  system metadata are excluded.
                            required:
                              - key
                              - label
                              - kind
                              - required
                            additionalProperties: false
                            example:
                              key: headline
                              label: Headline
                              kind: text
                              required: true
                              maxLength: 160
                          description: >-
                            Published field definitions. Private and system
                            metadata are excluded.
                          example:
                            - key: headline
                              label: Headline
                              kind: text
                              required: true
                              maxLength: 160
                            - key: featured
                              label: Featured
                              kind: boolean
                              required: false
                            - key: reading_minutes
                              label: Reading time
                              kind: number
                              required: false
                              min: 0
                              max: 60
                            - key: category
                              label: Category
                              kind: choices
                              required: true
                              choices:
                                - key: local
                                  label: Local
                                - key: culture
                                  label: Culture
                            - key: event_at
                              label: Event time
                              kind: datetime
                              required: false
                      required:
                        - key
                        - label
                        - version
                        - archived
                        - fields
                      example:
                        key: news
                        label: News
                        version: 1
                        archived: false
                        fields:
                          - key: headline
                            label: Headline
                            kind: text
                            required: true
                            maxLength: 160
                          - key: featured
                            label: Featured
                            kind: boolean
                            required: false
                          - key: reading_minutes
                            label: Reading time
                            kind: number
                            required: false
                            min: 0
                            max: 60
                          - key: category
                            label: Category
                            kind: choices
                            required: true
                            choices:
                              - key: local
                                label: Local
                              - key: culture
                                label: Culture
                          - key: event_at
                            label: Event time
                            kind: datetime
                            required: false
                    maxItems: 100
                    description: >-
                      Published content type definitions available to this
                      listener.
                    example:
                      - key: news
                        label: News
                        version: 1
                        archived: false
                        fields:
                          - key: headline
                            label: Headline
                            kind: text
                            required: true
                            maxLength: 160
                          - key: featured
                            label: Featured
                            kind: boolean
                            required: false
                          - key: reading_minutes
                            label: Reading time
                            kind: number
                            required: false
                            min: 0
                            max: 60
                          - key: category
                            label: Category
                            kind: choices
                            required: true
                            choices:
                              - key: local
                                label: Local
                              - key: culture
                                label: Culture
                          - key: event_at
                            label: Event time
                            kind: datetime
                            required: false
                required:
                  - contractVersion
                  - types
                example:
                  contractVersion: 1
                  types:
                    - key: news
                      label: News
                      version: 1
                      archived: false
                      fields:
                        - key: headline
                          label: Headline
                          kind: text
                          required: true
                          maxLength: 160
                        - key: featured
                          label: Featured
                          kind: boolean
                          required: false
                        - key: reading_minutes
                          label: Reading time
                          kind: number
                          required: false
                          min: 0
                          max: 60
                        - key: category
                          label: Category
                          kind: choices
                          required: true
                          choices:
                            - key: local
                              label: Local
                            - key: culture
                              label: Culture
                        - key: event_at
                          label: Event time
                          kind: datetime
                          required: false
              examples:
                news:
                  summary: Published news schema
                  description: >-
                    Illustrative response using fictional station data. Replace
                    identifiers with values returned by your station.
                  value:
                    contractVersion: 1
                    types:
                      - key: news
                        label: News
                        version: 1
                        archived: false
                        fields:
                          - key: headline
                            label: Headline
                            kind: text
                            required: true
                            maxLength: 160
                          - key: featured
                            label: Featured
                            kind: boolean
                            required: false
                          - key: reading_minutes
                            label: Reading time
                            kind: number
                            required: false
                            min: 0
                            max: 60
                          - key: category
                            label: Category
                            kind: choices
                            required: true
                            choices:
                              - key: local
                                label: Local
                              - key: culture
                                label: Culture
                          - key: event_at
                            label: Event time
                            kind: datetime
                            required: false
                empty:
                  summary: No published types
                  description: >-
                    Illustrative response using fictional station data. Replace
                    identifiers with values returned by your station.
                  value:
                    contractVersion: 1
                    types: []
        '400':
          description: The request contains invalid parameters or input.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        enum:
                          - UNAUTHENTICATED
                          - FORBIDDEN
                          - VALIDATION_ERROR
                          - NOT_FOUND
                          - MODULE_DISABLED
                          - METHOD_NOT_ALLOWED
                          - REVISION_CONFLICT
                          - IDEMPOTENCY_CONFLICT
                          - RATE_LIMITED
                          - PROVIDER_UNAVAILABLE
                          - INTERNAL_ERROR
                        description: >-
                          Machine-readable code. Error codes are stable; road
                          codes identify the watched road.
                        example: VALIDATION_ERROR
                      message:
                        type: string
                        description: >-
                          Human-readable explanation; branch on the stable error
                          code instead of this text.
                        example: The request contains invalid parameters or input.
                      requestId:
                        type: string
                        format: uuid
                        description: >-
                          Request trace identifier. Include this value or the
                          x-request-id header when reporting an issue.
                        example: 28e5d867-1f87-4ca7-bca9-4ebc09b36ba3
                      issues:
                        type: array
                        items:
                          type: object
                          properties:
                            path:
                              type: string
                              description: Path of the input field that failed validation.
                              example: query
                            message:
                              type: string
                              description: >-
                                Human-readable explanation; branch on the stable
                                error code instead of this text.
                              example: >-
                                Check the parameter types and bounds documented
                                for this operation.
                            code:
                              type: string
                              maxLength: 64
                              description: >-
                                Machine-readable code. Error codes are stable;
                                road codes identify the watched road.
                            suggestion:
                              type: string
                              maxLength: 200
                              description: Short suggested fix you can show to the user.
                            retryAfter:
                              type: integer
                              minimum: 1
                              maximum: 86400
                              description: >-
                                Seconds to wait before retrying, when the issue
                                is temporary.
                          required:
                            - path
                            - message
                          example:
                            path: query
                            message: >-
                              Check the parameter types and bounds documented
                              for this operation.
                        description: Optional field validation details.
                        example:
                          - path: query
                            message: >-
                              Check the parameter types and bounds documented
                              for this operation.
                    required:
                      - code
                      - message
                      - requestId
                    description: >-
                      Error details. Listener errors are structured; playback
                      ingest uses a legacy error string.
                    example:
                      code: VALIDATION_ERROR
                      message: The request contains invalid parameters or input.
                      requestId: 28e5d867-1f87-4ca7-bca9-4ebc09b36ba3
                      issues:
                        - path: query
                          message: >-
                            Check the parameter types and bounds documented for
                            this operation.
                required:
                  - error
                example:
                  error:
                    code: VALIDATION_ERROR
                    message: The request contains invalid parameters or input.
                    requestId: 28e5d867-1f87-4ca7-bca9-4ebc09b36ba3
                    issues:
                      - path: query
                        message: >-
                          Check the parameter types and bounds documented for
                          this operation.
              examples:
                error:
                  summary: 400 VALIDATION_ERROR
                  value:
                    error:
                      code: VALIDATION_ERROR
                      message: The request contains invalid parameters or input.
                      requestId: 28e5d867-1f87-4ca7-bca9-4ebc09b36ba3
                      issues:
                        - path: query
                          message: >-
                            Check the parameter types and bounds documented for
                            this operation.
        '401':
          description: A valid station credential with the required scope is needed.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        enum:
                          - UNAUTHENTICATED
                          - FORBIDDEN
                          - VALIDATION_ERROR
                          - NOT_FOUND
                          - MODULE_DISABLED
                          - METHOD_NOT_ALLOWED
                          - REVISION_CONFLICT
                          - IDEMPOTENCY_CONFLICT
                          - RATE_LIMITED
                          - PROVIDER_UNAVAILABLE
                          - INTERNAL_ERROR
                        description: >-
                          Machine-readable code. Error codes are stable; road
                          codes identify the watched road.
                        example: UNAUTHENTICATED
                      message:
                        type: string
                        description: >-
                          Human-readable explanation; branch on the stable error
                          code instead of this text.
                        example: >-
                          A valid station credential with the required scope is
                          needed.
                      requestId:
                        type: string
                        format: uuid
                        description: >-
                          Request trace identifier. Include this value or the
                          x-request-id header when reporting an issue.
                        example: 28e5d867-1f87-4ca7-bca9-4ebc09b36ba3
                      issues:
                        type: array
                        items:
                          type: object
                          properties:
                            path:
                              type: string
                              description: Path of the input field that failed validation.
                            message:
                              type: string
                              description: >-
                                Human-readable explanation; branch on the stable
                                error code instead of this text.
                            code:
                              type: string
                              maxLength: 64
                              description: >-
                                Machine-readable code. Error codes are stable;
                                road codes identify the watched road.
                            suggestion:
                              type: string
                              maxLength: 200
                              description: Short suggested fix you can show to the user.
                            retryAfter:
                              type: integer
                              minimum: 1
                              maximum: 86400
                              description: >-
                                Seconds to wait before retrying, when the issue
                                is temporary.
                          required:
                            - path
                            - message
                        description: Optional field validation details.
                    required:
                      - code
                      - message
                      - requestId
                    description: >-
                      Error details. Listener errors are structured; playback
                      ingest uses a legacy error string.
                    example:
                      code: UNAUTHENTICATED
                      message: >-
                        A valid station credential with the required scope is
                        needed.
                      requestId: 28e5d867-1f87-4ca7-bca9-4ebc09b36ba3
                required:
                  - error
                example:
                  error:
                    code: UNAUTHENTICATED
                    message: >-
                      A valid station credential with the required scope is
                      needed.
                    requestId: 28e5d867-1f87-4ca7-bca9-4ebc09b36ba3
              examples:
                error:
                  summary: 401 UNAUTHENTICATED
                  value:
                    error:
                      code: UNAUTHENTICATED
                      message: >-
                        A valid station credential with the required scope is
                        needed.
                      requestId: 28e5d867-1f87-4ca7-bca9-4ebc09b36ba3
        '403':
          description: The credential does not permit this operation.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        enum:
                          - UNAUTHENTICATED
                          - FORBIDDEN
                          - VALIDATION_ERROR
                          - NOT_FOUND
                          - MODULE_DISABLED
                          - METHOD_NOT_ALLOWED
                          - REVISION_CONFLICT
                          - IDEMPOTENCY_CONFLICT
                          - RATE_LIMITED
                          - PROVIDER_UNAVAILABLE
                          - INTERNAL_ERROR
                        description: >-
                          Machine-readable code. Error codes are stable; road
                          codes identify the watched road.
                        example: FORBIDDEN
                      message:
                        type: string
                        description: >-
                          Human-readable explanation; branch on the stable error
                          code instead of this text.
                        example: The credential does not permit this operation.
                      requestId:
                        type: string
                        format: uuid
                        description: >-
                          Request trace identifier. Include this value or the
                          x-request-id header when reporting an issue.
                        example: 28e5d867-1f87-4ca7-bca9-4ebc09b36ba3
                      issues:
                        type: array
                        items:
                          type: object
                          properties:
                            path:
                              type: string
                              description: Path of the input field that failed validation.
                            message:
                              type: string
                              description: >-
                                Human-readable explanation; branch on the stable
                                error code instead of this text.
                            code:
                              type: string
                              maxLength: 64
                              description: >-
                                Machine-readable code. Error codes are stable;
                                road codes identify the watched road.
                            suggestion:
                              type: string
                              maxLength: 200
                              description: Short suggested fix you can show to the user.
                            retryAfter:
                              type: integer
                              minimum: 1
                              maximum: 86400
                              description: >-
                                Seconds to wait before retrying, when the issue
                                is temporary.
                          required:
                            - path
                            - message
                        description: Optional field validation details.
                    required:
                      - code
                      - message
                      - requestId
                    description: >-
                      Error details. Listener errors are structured; playback
                      ingest uses a legacy error string.
                    example:
                      code: FORBIDDEN
                      message: The credential does not permit this operation.
                      requestId: 28e5d867-1f87-4ca7-bca9-4ebc09b36ba3
                required:
                  - error
                example:
                  error:
                    code: FORBIDDEN
                    message: The credential does not permit this operation.
                    requestId: 28e5d867-1f87-4ca7-bca9-4ebc09b36ba3
              examples:
                error:
                  summary: 403 FORBIDDEN
                  value:
                    error:
                      code: FORBIDDEN
                      message: The credential does not permit this operation.
                      requestId: 28e5d867-1f87-4ca7-bca9-4ebc09b36ba3
        '404':
          description: >-
            The resource is missing, unpublished, disabled, or unavailable for
            this station. A switched-off station module returns MODULE_DISABLED.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        enum:
                          - UNAUTHENTICATED
                          - FORBIDDEN
                          - VALIDATION_ERROR
                          - NOT_FOUND
                          - MODULE_DISABLED
                          - METHOD_NOT_ALLOWED
                          - REVISION_CONFLICT
                          - IDEMPOTENCY_CONFLICT
                          - RATE_LIMITED
                          - PROVIDER_UNAVAILABLE
                          - INTERNAL_ERROR
                        description: >-
                          Machine-readable code. Error codes are stable; road
                          codes identify the watched road.
                        example: NOT_FOUND
                      message:
                        type: string
                        description: >-
                          Human-readable explanation; branch on the stable error
                          code instead of this text.
                        example: >-
                          The resource is missing, unpublished, disabled, or
                          unavailable for this station. A switched-off station
                          module returns MODULE_DISABLED.
                      requestId:
                        type: string
                        format: uuid
                        description: >-
                          Request trace identifier. Include this value or the
                          x-request-id header when reporting an issue.
                        example: 28e5d867-1f87-4ca7-bca9-4ebc09b36ba3
                      issues:
                        type: array
                        items:
                          type: object
                          properties:
                            path:
                              type: string
                              description: Path of the input field that failed validation.
                            message:
                              type: string
                              description: >-
                                Human-readable explanation; branch on the stable
                                error code instead of this text.
                            code:
                              type: string
                              maxLength: 64
                              description: >-
                                Machine-readable code. Error codes are stable;
                                road codes identify the watched road.
                            suggestion:
                              type: string
                              maxLength: 200
                              description: Short suggested fix you can show to the user.
                            retryAfter:
                              type: integer
                              minimum: 1
                              maximum: 86400
                              description: >-
                                Seconds to wait before retrying, when the issue
                                is temporary.
                          required:
                            - path
                            - message
                        description: Optional field validation details.
                    required:
                      - code
                      - message
                      - requestId
                    description: >-
                      Error details. Listener errors are structured; playback
                      ingest uses a legacy error string.
                    example:
                      code: NOT_FOUND
                      message: >-
                        The resource is missing, unpublished, disabled, or
                        unavailable for this station. A switched-off station
                        module returns MODULE_DISABLED.
                      requestId: 28e5d867-1f87-4ca7-bca9-4ebc09b36ba3
                required:
                  - error
                example:
                  error:
                    code: NOT_FOUND
                    message: >-
                      The resource is missing, unpublished, disabled, or
                      unavailable for this station. A switched-off station
                      module returns MODULE_DISABLED.
                    requestId: 28e5d867-1f87-4ca7-bca9-4ebc09b36ba3
              examples:
                error:
                  summary: 404 NOT_FOUND
                  value:
                    error:
                      code: NOT_FOUND
                      message: >-
                        The resource is missing, unpublished, disabled, or
                        unavailable for this station. A switched-off station
                        module returns MODULE_DISABLED.
                      requestId: 28e5d867-1f87-4ca7-bca9-4ebc09b36ba3
        '409':
          description: The request conflicts with the current resource revision.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        enum:
                          - UNAUTHENTICATED
                          - FORBIDDEN
                          - VALIDATION_ERROR
                          - NOT_FOUND
                          - MODULE_DISABLED
                          - METHOD_NOT_ALLOWED
                          - REVISION_CONFLICT
                          - IDEMPOTENCY_CONFLICT
                          - RATE_LIMITED
                          - PROVIDER_UNAVAILABLE
                          - INTERNAL_ERROR
                        description: >-
                          Machine-readable code. Error codes are stable; road
                          codes identify the watched road.
                        example: REVISION_CONFLICT
                      message:
                        type: string
                        description: >-
                          Human-readable explanation; branch on the stable error
                          code instead of this text.
                        example: >-
                          The request conflicts with the current resource
                          revision.
                      requestId:
                        type: string
                        format: uuid
                        description: >-
                          Request trace identifier. Include this value or the
                          x-request-id header when reporting an issue.
                        example: 28e5d867-1f87-4ca7-bca9-4ebc09b36ba3
                      issues:
                        type: array
                        items:
                          type: object
                          properties:
                            path:
                              type: string
                              description: Path of the input field that failed validation.
                            message:
                              type: string
                              description: >-
                                Human-readable explanation; branch on the stable
                                error code instead of this text.
                            code:
                              type: string
                              maxLength: 64
                              description: >-
                                Machine-readable code. Error codes are stable;
                                road codes identify the watched road.
                            suggestion:
                              type: string
                              maxLength: 200
                              description: Short suggested fix you can show to the user.
                            retryAfter:
                              type: integer
                              minimum: 1
                              maximum: 86400
                              description: >-
                                Seconds to wait before retrying, when the issue
                                is temporary.
                          required:
                            - path
                            - message
                        description: Optional field validation details.
                    required:
                      - code
                      - message
                      - requestId
                    description: >-
                      Error details. Listener errors are structured; playback
                      ingest uses a legacy error string.
                    example:
                      code: REVISION_CONFLICT
                      message: >-
                        The request conflicts with the current resource
                        revision.
                      requestId: 28e5d867-1f87-4ca7-bca9-4ebc09b36ba3
                required:
                  - error
                example:
                  error:
                    code: REVISION_CONFLICT
                    message: The request conflicts with the current resource revision.
                    requestId: 28e5d867-1f87-4ca7-bca9-4ebc09b36ba3
              examples:
                error:
                  summary: 409 REVISION_CONFLICT
                  value:
                    error:
                      code: REVISION_CONFLICT
                      message: >-
                        The request conflicts with the current resource
                        revision.
                      requestId: 28e5d867-1f87-4ca7-bca9-4ebc09b36ba3
        '429':
          description: Too many requests. Reduce the request frequency.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        enum:
                          - UNAUTHENTICATED
                          - FORBIDDEN
                          - VALIDATION_ERROR
                          - NOT_FOUND
                          - MODULE_DISABLED
                          - METHOD_NOT_ALLOWED
                          - REVISION_CONFLICT
                          - IDEMPOTENCY_CONFLICT
                          - RATE_LIMITED
                          - PROVIDER_UNAVAILABLE
                          - INTERNAL_ERROR
                        description: >-
                          Machine-readable code. Error codes are stable; road
                          codes identify the watched road.
                        example: RATE_LIMITED
                      message:
                        type: string
                        description: >-
                          Human-readable explanation; branch on the stable error
                          code instead of this text.
                        example: Too many requests. Reduce the request frequency.
                      requestId:
                        type: string
                        format: uuid
                        description: >-
                          Request trace identifier. Include this value or the
                          x-request-id header when reporting an issue.
                        example: 28e5d867-1f87-4ca7-bca9-4ebc09b36ba3
                      issues:
                        type: array
                        items:
                          type: object
                          properties:
                            path:
                              type: string
                              description: Path of the input field that failed validation.
                            message:
                              type: string
                              description: >-
                                Human-readable explanation; branch on the stable
                                error code instead of this text.
                            code:
                              type: string
                              maxLength: 64
                              description: >-
                                Machine-readable code. Error codes are stable;
                                road codes identify the watched road.
                            suggestion:
                              type: string
                              maxLength: 200
                              description: Short suggested fix you can show to the user.
                            retryAfter:
                              type: integer
                              minimum: 1
                              maximum: 86400
                              description: >-
                                Seconds to wait before retrying, when the issue
                                is temporary.
                          required:
                            - path
                            - message
                        description: Optional field validation details.
                    required:
                      - code
                      - message
                      - requestId
                    description: >-
                      Error details. Listener errors are structured; playback
                      ingest uses a legacy error string.
                    example:
                      code: RATE_LIMITED
                      message: Too many requests. Reduce the request frequency.
                      requestId: 28e5d867-1f87-4ca7-bca9-4ebc09b36ba3
                required:
                  - error
                example:
                  error:
                    code: RATE_LIMITED
                    message: Too many requests. Reduce the request frequency.
                    requestId: 28e5d867-1f87-4ca7-bca9-4ebc09b36ba3
              examples:
                error:
                  summary: 429 RATE_LIMITED
                  value:
                    error:
                      code: RATE_LIMITED
                      message: Too many requests. Reduce the request frequency.
                      requestId: 28e5d867-1f87-4ca7-bca9-4ebc09b36ba3
        '503':
          description: An upstream service is temporarily unavailable.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        enum:
                          - UNAUTHENTICATED
                          - FORBIDDEN
                          - VALIDATION_ERROR
                          - NOT_FOUND
                          - MODULE_DISABLED
                          - METHOD_NOT_ALLOWED
                          - REVISION_CONFLICT
                          - IDEMPOTENCY_CONFLICT
                          - RATE_LIMITED
                          - PROVIDER_UNAVAILABLE
                          - INTERNAL_ERROR
                        description: >-
                          Machine-readable code. Error codes are stable; road
                          codes identify the watched road.
                        example: PROVIDER_UNAVAILABLE
                      message:
                        type: string
                        description: >-
                          Human-readable explanation; branch on the stable error
                          code instead of this text.
                        example: An upstream service is temporarily unavailable.
                      requestId:
                        type: string
                        format: uuid
                        description: >-
                          Request trace identifier. Include this value or the
                          x-request-id header when reporting an issue.
                        example: 28e5d867-1f87-4ca7-bca9-4ebc09b36ba3
                      issues:
                        type: array
                        items:
                          type: object
                          properties:
                            path:
                              type: string
                              description: Path of the input field that failed validation.
                            message:
                              type: string
                              description: >-
                                Human-readable explanation; branch on the stable
                                error code instead of this text.
                            code:
                              type: string
                              maxLength: 64
                              description: >-
                                Machine-readable code. Error codes are stable;
                                road codes identify the watched road.
                            suggestion:
                              type: string
                              maxLength: 200
                              description: Short suggested fix you can show to the user.
                            retryAfter:
                              type: integer
                              minimum: 1
                              maximum: 86400
                              description: >-
                                Seconds to wait before retrying, when the issue
                                is temporary.
                          required:
                            - path
                            - message
                        description: Optional field validation details.
                    required:
                      - code
                      - message
                      - requestId
                    description: >-
                      Error details. Listener errors are structured; playback
                      ingest uses a legacy error string.
                    example:
                      code: PROVIDER_UNAVAILABLE
                      message: An upstream service is temporarily unavailable.
                      requestId: 28e5d867-1f87-4ca7-bca9-4ebc09b36ba3
                required:
                  - error
                example:
                  error:
                    code: PROVIDER_UNAVAILABLE
                    message: An upstream service is temporarily unavailable.
                    requestId: 28e5d867-1f87-4ca7-bca9-4ebc09b36ba3
              examples:
                error:
                  summary: 503 PROVIDER_UNAVAILABLE
                  value:
                    error:
                      code: PROVIDER_UNAVAILABLE
                      message: An upstream service is temporarily unavailable.
                      requestId: 28e5d867-1f87-4ca7-bca9-4ebc09b36ba3
      security:
        - machineToken: []
components:
  securitySchemes:
    machineToken:
      type: http
      scheme: bearer
      bearerFormat: rtm_…
      description: >-
        Station-scoped listener credential. Send Authorization: Bearer
        `<token>`, for example Bearer rtm_…. Sending the rtm_ token alone
        without Bearer returns 401 UNAUTHENTICATED. In the interactive
        playground, enter only the raw rtm_ token; the playground adds the
        prefix. Listener REST and GraphQL: listener:read. Listener devices:
        push:register.

````

## Related topics

- [List content](/radiotools/api-reference/public-listener/list-content.md)
- [GraphQL schema reference](/radiotools/api-reference/graphql-reference.md)
- [Content types](/radiotools/station-admin/content-types.md)
- [Get content record](/radiotools/api-reference/public-listener/get-content-record.md)
- [TypeScript SDK](/radiotools/api-reference/sdks/typescript.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.