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

> Read normalized traffic for the station's watched roads. Check snapshot.freshness before interpreting an empty incidents array as clear traffic. This endpoint requires an available station resource and redistribution entitlement.



## OpenAPI

````yaml /radiotools/openapi.json get /api/v1/stations/{stationSlug}/traffic
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}/traffic:
    get:
      tags:
        - Public listener
      summary: Public traffic when redistribution entitlement is recorded
      description: >-
        Read normalized traffic for the station's watched roads. Check
        snapshot.freshness before interpreting an empty incidents array as clear
        traffic. This endpoint requires an available station resource and
        redistribution entitlement.
      parameters:
        - schema:
            type: string
            minLength: 3
            maxLength: 63
          required: true
          name: stationSlug
          in: path
          description: >-
            Public station slug from the station settings; distinct from the
            internal station ID.
          example: radio-rivier
      responses:
        '200':
          description: Normalized traffic; no-store so revocation applies on the next read
          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
                  stationId:
                    type: string
                    description: Station identifier associated with this response.
                    example: station-rivier
                  snapshot:
                    type: object
                    properties:
                      source:
                        type: string
                        enum:
                          - anwb
                        description: Source provider for this normalized observation.
                        example: anwb
                      watch:
                        type: object
                        properties:
                          roads:
                            type: array
                            items:
                              type: object
                              properties:
                                id:
                                  type: string
                                  pattern: ^nl:[an](?:[0-9]{1,3}|-all)$
                                  description: >-
                                    Identifier of this resource. Use the value
                                    returned by the API for subsequent lookups.
                                  example: nl:a10
                                code:
                                  type: string
                                  minLength: 2
                                  maxLength: 8
                                  description: >-
                                    Machine-readable code. Error codes are
                                    stable; road codes identify the watched
                                    road.
                                  example: A10
                                name:
                                  type: string
                                  description: Human-readable display name.
                                  example: Ring Amsterdam
                              required:
                                - id
                                - code
                                - name
                              additionalProperties: false
                              example:
                                id: nl:a10
                                code: A10
                                name: Ring Amsterdam
                            description: >-
                              Watched roads included in the station's traffic
                              coverage.
                            example:
                              - id: nl:a10
                                code: A10
                                name: Ring Amsterdam
                        required:
                          - roads
                        additionalProperties: false
                        description: >-
                          Station-configured roads covered by this traffic
                          report.
                        example:
                          roads:
                            - id: nl:a10
                              code: A10
                              name: Ring Amsterdam
                      freshness:
                        type: object
                        properties:
                          status:
                            type: string
                            enum:
                              - fresh
                              - stale
                              - unavailable
                              - empty
                            description: >-
                              Freshness classification of the source data.
                              Handle stale, empty, or unavailable data
                              explicitly.
                            example: fresh
                          thresholdSeconds:
                            type: integer
                            exclusiveMinimum: 0
                            description: >-
                              Age threshold in seconds used to classify an
                              observation as stale.
                            example: 900
                          ageSeconds:
                            type:
                              - integer
                              - 'null'
                            minimum: 0
                            description: >-
                              Observation age in seconds; null when no
                              observation is available.
                            example: 30
                          fetchedAt:
                            type:
                              - string
                              - 'null'
                            format: date-time
                            description: >-
                              Timestamp of the provider fetch; null when
                              unavailable.
                            example: '2026-10-05T08:00:01.000Z'
                          observedAt:
                            type:
                              - string
                              - 'null'
                            format: date-time
                            description: >-
                              Timestamp when the source observation occurred.
                              Listener responses use ISO 8601 timestamps.
                            example: '2026-10-05T08:00:00.000Z'
                          lastError:
                            type:
                              - string
                              - 'null'
                            description: >-
                              Latest provider error summary, or null when no
                              error is recorded.
                            example: null
                        required:
                          - status
                          - thresholdSeconds
                          - ageSeconds
                          - fetchedAt
                          - observedAt
                          - lastError
                        additionalProperties: false
                        description: >-
                          Age and freshness of the source observation. A
                          successful HTTP read does not guarantee fresh data.
                        example:
                          status: fresh
                          thresholdSeconds: 900
                          ageSeconds: 30
                          fetchedAt: '2026-10-05T08:00:01.000Z'
                          observedAt: '2026-10-05T08:00:00.000Z'
                          lastError: null
                      incidents:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                              description: >-
                                Identifier of this resource. Use the value
                                returned by the API for subsequent lookups.
                              example: anwb-a10-example
                            road:
                              type: string
                              description: >-
                                Road code affected by the incident, for example
                                A10.
                              example: A10
                            type:
                              type: string
                              enum:
                                - jam
                                - roadworks
                                - closure
                                - speed_check
                              description: >-
                                Discriminator describing this block or incident.
                                Render according to the allowed values.
                              example: jam
                            direction:
                              type: string
                              enum:
                                - northbound
                                - southbound
                                - eastbound
                                - westbound
                                - both
                                - unknown
                              description: Direction affected by the incident.
                              example: northbound
                            from:
                              type: string
                              description: Start location of the affected road segment.
                              example: Watergraafsmeer
                            to:
                              type: string
                              description: End location of the affected road segment.
                              example: Zeeburg
                            lengthMeters:
                              type:
                                - integer
                                - 'null'
                              minimum: 0
                              description: >-
                                Affected road length in meters; null when
                                unknown.
                              example: 2500
                            delaySeconds:
                              type:
                                - integer
                                - 'null'
                              minimum: 0
                              description: >-
                                Reported delay in seconds; incident delay may be
                                null when unknown.
                              example: 300
                            cause:
                              type:
                                - string
                                - 'null'
                              enum:
                                - accident
                                - vehicle_fire
                                - broken_down_vehicle
                                - object_on_road
                                - clearance_work
                                - technical_problem
                                - roadworks
                                - closure
                                - null
                              description: >-
                                Reported cause of the incident; null when
                                unknown.
                              example: null
                            closure:
                              type:
                                - string
                                - 'null'
                              enum:
                                - road
                                - entry
                                - exit
                                - entry_and_exit
                                - connector
                                - lane
                                - heavy_vehicles
                                - null
                              description: >-
                                What is closed, such as the whole road, an entry
                                or exit, or a lane; null when nothing is closed.
                              example: null
                            summary:
                              type: string
                              description: Human-readable description of the incident.
                              example: Slow traffic approaching Zeeburg.
                            updatedAt:
                              type: string
                              format: date-time
                              description: Timestamp of the latest incident update.
                              example: '2026-10-05T08:00:00.000Z'
                          required:
                            - id
                            - road
                            - type
                            - direction
                            - from
                            - to
                            - lengthMeters
                            - delaySeconds
                            - cause
                            - closure
                            - summary
                            - updatedAt
                          additionalProperties: false
                          example:
                            id: anwb-a10-example
                            road: A10
                            type: jam
                            direction: northbound
                            from: Watergraafsmeer
                            to: Zeeburg
                            lengthMeters: 2500
                            delaySeconds: 300
                            cause: null
                            closure: null
                            summary: Slow traffic approaching Zeeburg.
                            updatedAt: '2026-10-05T08:00:00.000Z'
                        description: >-
                          Normalized incidents; an empty array with fresh status
                          means no reported incidents.
                        example:
                          - id: anwb-a10-example
                            road: A10
                            type: jam
                            direction: northbound
                            from: Watergraafsmeer
                            to: Zeeburg
                            lengthMeters: 2500
                            delaySeconds: 300
                            cause: null
                            closure: null
                            summary: Slow traffic approaching Zeeburg.
                            updatedAt: '2026-10-05T08:00:00.000Z'
                      totals:
                        type: object
                        properties:
                          incidentCount:
                            type: integer
                            minimum: 0
                            description: Number of incidents in this snapshot.
                            example: 1
                          jamDistanceMeters:
                            type: integer
                            minimum: 0
                            description: Total reported traffic-jam distance in meters.
                            example: 2500
                          delaySeconds:
                            type: integer
                            minimum: 0
                            description: >-
                              Reported delay in seconds; incident delay may be
                              null when unknown.
                            example: 300
                        required:
                          - incidentCount
                          - jamDistanceMeters
                          - delaySeconds
                        additionalProperties: false
                        description: Aggregate traffic totals for the watched roads.
                        example:
                          incidentCount: 1
                          jamDistanceMeters: 2500
                          delaySeconds: 300
                    required:
                      - source
                      - watch
                      - freshness
                      - incidents
                      - totals
                    additionalProperties: false
                    description: Traffic report for the station's configured watched roads.
                    example:
                      source: anwb
                      watch:
                        roads:
                          - id: nl:a10
                            code: A10
                            name: Ring Amsterdam
                      freshness:
                        status: fresh
                        thresholdSeconds: 900
                        ageSeconds: 30
                        fetchedAt: '2026-10-05T08:00:01.000Z'
                        observedAt: '2026-10-05T08:00:00.000Z'
                        lastError: null
                      incidents:
                        - id: anwb-a10-example
                          road: A10
                          type: jam
                          direction: northbound
                          from: Watergraafsmeer
                          to: Zeeburg
                          lengthMeters: 2500
                          delaySeconds: 300
                          cause: null
                          closure: null
                          summary: Slow traffic approaching Zeeburg.
                          updatedAt: '2026-10-05T08:00:00.000Z'
                      totals:
                        incidentCount: 1
                        jamDistanceMeters: 2500
                        delaySeconds: 300
                required:
                  - contractVersion
                  - stationId
                  - snapshot
                additionalProperties: false
                example:
                  contractVersion: 1
                  stationId: station-rivier
                  snapshot:
                    source: anwb
                    watch:
                      roads:
                        - id: nl:a10
                          code: A10
                          name: Ring Amsterdam
                    freshness:
                      status: fresh
                      thresholdSeconds: 900
                      ageSeconds: 30
                      fetchedAt: '2026-10-05T08:00:01.000Z'
                      observedAt: '2026-10-05T08:00:00.000Z'
                      lastError: null
                    incidents:
                      - id: anwb-a10-example
                        road: A10
                        type: jam
                        direction: northbound
                        from: Watergraafsmeer
                        to: Zeeburg
                        lengthMeters: 2500
                        delaySeconds: 300
                        cause: null
                        closure: null
                        summary: Slow traffic approaching Zeeburg.
                        updatedAt: '2026-10-05T08:00:00.000Z'
                    totals:
                      incidentCount: 1
                      jamDistanceMeters: 2500
                      delaySeconds: 300
              examples:
                traffic:
                  summary: Traffic on watched roads
                  description: >-
                    Illustrative response using fictional station data. Replace
                    identifiers with values returned by your station.
                  value:
                    contractVersion: 1
                    stationId: station-rivier
                    snapshot:
                      source: anwb
                      watch:
                        roads:
                          - id: nl:a10
                            code: A10
                            name: Ring Amsterdam
                      freshness:
                        status: fresh
                        thresholdSeconds: 900
                        ageSeconds: 30
                        fetchedAt: '2026-10-05T08:00:01.000Z'
                        observedAt: '2026-10-05T08:00:00.000Z'
                        lastError: null
                      incidents:
                        - id: anwb-a10-example
                          road: A10
                          type: jam
                          direction: northbound
                          from: Watergraafsmeer
                          to: Zeeburg
                          lengthMeters: 2500
                          delaySeconds: 300
                          cause: null
                          closure: null
                          summary: Slow traffic approaching Zeeburg.
                          updatedAt: '2026-10-05T08:00:00.000Z'
                      totals:
                        incidentCount: 1
                        jamDistanceMeters: 2500
                        delaySeconds: 300
                clear:
                  summary: Fresh report with no incidents
                  description: >-
                    Illustrative response using fictional station data. Replace
                    identifiers with values returned by your station.
                  value:
                    contractVersion: 1
                    stationId: station-rivier
                    snapshot:
                      source: anwb
                      watch:
                        roads:
                          - id: nl:a10
                            code: A10
                            name: Ring Amsterdam
                      freshness:
                        status: fresh
                        thresholdSeconds: 900
                        ageSeconds: 30
                        fetchedAt: '2026-10-05T08:00:01.000Z'
                        observedAt: '2026-10-05T08:00:00.000Z'
                        lastError: null
                      incidents: []
                      totals:
                        incidentCount: 0
                        jamDistanceMeters: 0
                        delaySeconds: 0
        '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

- [GraphQL schema reference](/radiotools/api-reference/graphql-reference.md)
- [Other languages](/radiotools/api-reference/sdks/other-languages.md)
- [Framework bindings](/radiotools/api-reference/sdks/frameworks.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.