> ## 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.

# Get schedule

> Retrieve public broadcasts for an inclusive date window of at most 31 days and at most 1000 broadcasts. Timestamps include their offset; localDate uses the station timezone. A true truncated flag means the window should be narrowed.



## OpenAPI

````yaml /radiotools/openapi.json get /api/v1/stations/{stationSlug}/schedule
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}/schedule:
    get:
      tags:
        - Public listener
      summary: Public schedule without internal assignments or preparation
      description: >-
        Retrieve public broadcasts for an inclusive date window of at most 31
        days and at most 1000 broadcasts. Timestamps include their offset;
        localDate uses the station timezone. A true truncated flag means the
        window should be narrowed.
      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
            format: date
          required: true
          name: fromDate
          in: query
          description: >-
            First calendar date in the requested window (YYYY-MM-DD). The window
            includes this day.
          example: '2026-10-05'
        - schema:
            type: string
            format: date
          required: true
          name: throughDate
          in: query
          description: >-
            Last calendar date in the requested window (YYYY-MM-DD). At most 31
            inclusive days.
          example: '2026-10-11'
      responses:
        '200':
          description: Success; no-store
          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
                  timezone:
                    type: string
                    minLength: 1
                    maxLength: 100
                    description: >-
                      IANA timezone used to interpret station calendar dates,
                      for example Europe/Amsterdam.
                    example: Europe/Amsterdam
                  broadcasts:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                          description: >-
                            Identifier of this resource. Use the value returned
                            by the API for subsequent lookups.
                          example: faacbe14-ff20-444e-b1f0-09e8dad18cb0
                        title:
                          type: string
                          description: >-
                            Human-readable title. Track titles come from
                            external automation.
                          example: Rivier Morning
                        startsAt:
                          type: string
                          format: date-time
                          description: >-
                            Scheduled start timestamp, including timezone offset
                            or UTC suffix.
                          example: '2026-10-05T07:00:00.000Z'
                        endsAt:
                          type: string
                          format: date-time
                          description: >-
                            End timestamp. For now-playing this is derived from
                            observedAt and durationSeconds; null when duration
                            is unknown or the track is not playing.
                          example: '2026-10-05T10:00:00.000Z'
                        timezone:
                          type: string
                          minLength: 1
                          maxLength: 100
                          description: >-
                            IANA timezone used to interpret station calendar
                            dates, for example Europe/Amsterdam.
                          example: Europe/Amsterdam
                        localDate:
                          type: string
                          format: date
                          description: >-
                            Broadcast calendar date in the station timezone
                            (YYYY-MM-DD).
                          example: '2026-10-05'
                        resolution:
                          type: string
                          description: >-
                            Schedule time-resolution metadata returned by the
                            API.
                          example: exact
                        status:
                          type: string
                          enum:
                            - scheduled
                            - cancelled
                            - live
                            - completed
                          description: Public broadcast lifecycle status.
                          example: live
                        cancellationReason:
                          type: string
                          description: Cancellation explanation, when supplied.
                          example: ''
                        repeatOfId:
                          type:
                            - string
                            - 'null'
                          format: uuid
                          description: >-
                            Original broadcast identifier for a repeat; null for
                            a non-repeat.
                          example: null
                        nature:
                          type: string
                          enum:
                            - live
                            - prerecorded
                            - repeat
                          default: live
                          description: >-
                            How the broadcast is made: live, prerecorded, or
                            repeat.
                          example: live
                        program:
                          type: object
                          properties:
                            id:
                              type: string
                              format: uuid
                              description: >-
                                Identifier of this resource. Use the value
                                returned by the API for subsequent lookups.
                              example: 581497a3-e8b9-47ad-ade4-e1bf3895450a
                            title:
                              type: string
                              description: >-
                                Human-readable title. Track titles come from
                                external automation.
                              example: Rivier Morning
                            profileId:
                              type:
                                - string
                                - 'null'
                              format: uuid
                              description: >-
                                Linked public profile identifier, or null when
                                there is no linked profile.
                              example: null
                          required:
                            - id
                            - title
                            - profileId
                          description: Public program associated with this broadcast.
                          example:
                            id: 581497a3-e8b9-47ad-ade4-e1bf3895450a
                            title: Rivier Morning
                            profileId: null
                        presenters:
                          type: array
                          items:
                            type: object
                            properties:
                              id:
                                type: string
                                format: uuid
                                description: >-
                                  Identifier of this resource. Use the value
                                  returned by the API for subsequent lookups.
                                example: 94443b88-96b7-4813-8e9c-fd70dfbf8a04
                              title:
                                type: string
                                description: >-
                                  Human-readable title. Track titles come from
                                  external automation.
                                example: Alex de Vries
                            required:
                              - id
                              - title
                            example:
                              id: 94443b88-96b7-4813-8e9c-fd70dfbf8a04
                              title: Alex de Vries
                          description: Public presenter profiles for this broadcast.
                          example:
                            - id: 94443b88-96b7-4813-8e9c-fd70dfbf8a04
                              title: Alex de Vries
                      required:
                        - id
                        - title
                        - startsAt
                        - endsAt
                        - timezone
                        - localDate
                        - resolution
                        - status
                        - cancellationReason
                        - repeatOfId
                        - program
                        - presenters
                      example:
                        id: faacbe14-ff20-444e-b1f0-09e8dad18cb0
                        title: Rivier Morning
                        startsAt: '2026-10-05T07:00:00.000Z'
                        endsAt: '2026-10-05T10:00:00.000Z'
                        timezone: Europe/Amsterdam
                        localDate: '2026-10-05'
                        resolution: exact
                        status: live
                        cancellationReason: ''
                        repeatOfId: null
                        nature: live
                        program:
                          id: 581497a3-e8b9-47ad-ade4-e1bf3895450a
                          title: Rivier Morning
                          profileId: null
                        presenters:
                          - id: 94443b88-96b7-4813-8e9c-fd70dfbf8a04
                            title: Alex de Vries
                    description: Public broadcasts in the selected date window.
                    example:
                      - id: faacbe14-ff20-444e-b1f0-09e8dad18cb0
                        title: Rivier Morning
                        startsAt: '2026-10-05T07:00:00.000Z'
                        endsAt: '2026-10-05T10:00:00.000Z'
                        timezone: Europe/Amsterdam
                        localDate: '2026-10-05'
                        resolution: exact
                        status: live
                        cancellationReason: ''
                        repeatOfId: null
                        nature: live
                        program:
                          id: 581497a3-e8b9-47ad-ade4-e1bf3895450a
                          title: Rivier Morning
                          profileId: null
                        presenters:
                          - id: 94443b88-96b7-4813-8e9c-fd70dfbf8a04
                            title: Alex de Vries
                  truncated:
                    type: boolean
                    description: >-
                      True when the result was capped. Request a smaller date
                      window to retrieve remaining data.
                    example: false
                required:
                  - contractVersion
                  - timezone
                  - broadcasts
                  - truncated
                example:
                  contractVersion: 1
                  timezone: Europe/Amsterdam
                  broadcasts:
                    - id: faacbe14-ff20-444e-b1f0-09e8dad18cb0
                      title: Rivier Morning
                      startsAt: '2026-10-05T07:00:00.000Z'
                      endsAt: '2026-10-05T10:00:00.000Z'
                      timezone: Europe/Amsterdam
                      localDate: '2026-10-05'
                      resolution: exact
                      status: live
                      cancellationReason: ''
                      repeatOfId: null
                      nature: live
                      program:
                        id: 581497a3-e8b9-47ad-ade4-e1bf3895450a
                        title: Rivier Morning
                        profileId: null
                      presenters:
                        - id: 94443b88-96b7-4813-8e9c-fd70dfbf8a04
                          title: Alex de Vries
                  truncated: false
              examples:
                schedule:
                  summary: One broadcast in the requested window
                  description: >-
                    Illustrative response using fictional station data. Replace
                    identifiers with values returned by your station.
                  value:
                    contractVersion: 1
                    timezone: Europe/Amsterdam
                    broadcasts:
                      - id: faacbe14-ff20-444e-b1f0-09e8dad18cb0
                        title: Rivier Morning
                        startsAt: '2026-10-05T07:00:00.000Z'
                        endsAt: '2026-10-05T10:00:00.000Z'
                        timezone: Europe/Amsterdam
                        localDate: '2026-10-05'
                        resolution: exact
                        status: live
                        cancellationReason: ''
                        repeatOfId: null
                        nature: live
                        program:
                          id: 581497a3-e8b9-47ad-ade4-e1bf3895450a
                          title: Rivier Morning
                          profileId: null
                        presenters:
                          - id: 94443b88-96b7-4813-8e9c-fd70dfbf8a04
                            title: Alex de Vries
                    truncated: false
                empty:
                  summary: No broadcasts in the requested window
                  description: >-
                    Illustrative response using fictional station data. Replace
                    identifiers with values returned by your station.
                  value:
                    contractVersion: 1
                    timezone: Europe/Amsterdam
                    broadcasts: []
                    truncated: false
        '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

- [Get schedule calendar feed](/radiotools/api-reference/public-listener/get-schedule-calendar-feed.md)
- [Public delivery](/radiotools/api-reference/public-delivery.md)
- [GraphQL schema reference](/radiotools/api-reference/graphql-reference.md)
- [API overview](/radiotools/api-reference/overview.md)
- [TypeScript SDK](/radiotools/api-reference/sdks/typescript.md)


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