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

# Update push topics

> Turn alerts and content delivery on or off for a registered device. Unspecified topics keep their current setting. Turning a topic off retains the device token. Requires the same public station gate and push:register tenant credential as registration.



## OpenAPI

````yaml /radiotools/openapi.json patch /api/v1/stations/{stationSlug}/push/devices
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}/push/devices:
    patch:
      tags:
        - Public listener
      summary: Update listener push topics
      description: >-
        Turn alerts and content delivery on or off for a registered device.
        Unspecified topics keep their current setting. Turning a topic off
        retains the device token. Requires the same public station gate and
        push:register tenant credential as registration.
      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
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                token:
                  type: string
                  minLength: 1
                  maxLength: 4096
                  description: >-
                    Push provider device token. This is not an API credential;
                    never use a real device token in shared examples.
                  example: fictional-fcm-device-token
                topics:
                  type: object
                  properties:
                    alerts:
                      type: boolean
                      description: Whether this device receives station alerts.
                      example: false
                    content:
                      type: boolean
                      description: Whether this device receives content notifications.
                      example: true
                  additionalProperties: false
                  description: >-
                    Topic preferences to update. Omitted topics retain their
                    existing setting.
                  example:
                    alerts: false
                    content: true
              required:
                - token
                - topics
              additionalProperties: false
              example:
                token: fictional-fcm-device-token
                topics:
                  alerts: false
                  content: true
            examples:
              topics:
                summary: Disable alerts, keep content enabled
                description: Unspecified topics retain their current preference.
                value:
                  token: fictional-fcm-device-token
                  topics:
                    alerts: false
                    content: true
      responses:
        '200':
          description: >-
            Topic preferences updated; omitted topics are unchanged This
            imported contract does not specify a response body; treat the HTTP
            status as the documented result.
        '400':
          description: Invalid topic update
        '401':
          description: Station credential missing or invalid
        '404':
          description: Station unavailable or device is not registered
      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

- [Public delivery](/radiotools/api-reference/public-delivery.md)
- [Listener alerts](/radiotools/daily-work/listener-alerts.md)
- [Authentication](/radiotools/api-reference/authentication.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.