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

# Find relays for a broadcast path

> Returns the relays a client of a broadcast path should connect to, best
first, and a host:port list to fall back on. Publishers and viewers of
the same path are named the same relays. No credential is needed, and
the answer must not be cached; requests are rate limited per client
address.




## OpenAPI

````yaml /api-reference/openapi.yaml get /v1/relays
openapi: 3.1.0
info:
  title: Qumo Deploy REST API
  description: >
    The Qumo Deploy control plane: organizations, projects, signing keys,
    machine

    identities, access control, audit and billing. Relay credentials are not

    issued here: your app signs them with its own

    [signing keys](/guides/signing-keys).


    Every operation here is generated against the routes the server registers

    and checked in CI, so an operation in this reference exists and a route

    missing from it is deliberately internal (relay mesh, webhooks, probes,

    operator-only and browser sign-in routes).


    Errors are JSON objects with one `error` field. What each status code means

    is in [Error codes](/guides/error-codes); the token scope each permission

    needs is in [Scopes and permissions](/guides/scopes-permissions).
  version: 1.0.0
servers:
  - url: https://api.qumo-deploy.com
    description: Public API (Bearer tokens only; cookies are ignored)
security: []
tags:
  - name: Account
    description: The signed-in user's own sessions, tokens, security settings and data.
  - name: Device flow
    description: OAuth 2.0 device authorization, used by `qumod login`.
  - name: Organizations
    description: Organizations, their members and usage.
  - name: Projects
    description: Projects inside an organization.
  - name: Signing keys
    description: Keys your app signs relay credentials with.
  - name: Relays
    description: Where clients of a broadcast path connect.
  - name: Identities
    description: Machine identities, their tokens and IP allowlists.
  - name: Access control
    description: Roles, IAM bindings and invitations.
  - name: Audit
    description: The audit log and its webhook.
  - name: Notifications
    description: Notification policies.
  - name: Billing
    description: Plans, usage cost, budgets, invoices and payment methods.
  - name: Pricing
    description: Public price list.
paths:
  /v1/relays:
    get:
      tags:
        - Relays
      summary: Find relays for a broadcast path
      description: |
        Returns the relays a client of a broadcast path should connect to, best
        first, and a host:port list to fall back on. Publishers and viewers of
        the same path are named the same relays. No credential is needed, and
        the answer must not be cached; requests are rate limited per client
        address.
      operationId: listRelays
      parameters:
        - name: path
          in: query
          required: true
          description: >
            The broadcast path the client will publish or watch, as its

            credential names it: `<organization slug>/<project slug>/...`, at
            least

            two segments of lower-case letters, digits, `-` and `_`. Surrounding

            and doubled slashes are ignored.
          schema:
            type: string
            maxLength: 1024
          example: acme/live/cameras/front-door
        - name: region
          in: query
          required: false
          description: |
            A region (or provider zone) to put first, e.g. `tyo`, when the
            client knows where it is better than its address does.
          schema:
            type: string
            pattern: ^[a-z0-9][a-z0-9-]{0,62}$
          example: tyo
      responses:
        '200':
          description: Where to connect.
          headers:
            Cache-Control:
              description: Always `no-store`; the order depends on who asks.
              schema:
                type: string
              example: no-store
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RelayDiscovery'
        '400':
          $ref: '#/components/responses/BadRequest'
        '429':
          $ref: '#/components/responses/TooManyRequests'
      security: []
components:
  schemas:
    RelayDiscovery:
      type: object
      required:
        - relays
        - fallback
      properties:
        relays:
          type: array
          description: Where to connect, best first. Empty when no relay is available.
          items:
            $ref: '#/components/schemas/RelayEndpoint'
        fallback:
          type: array
          description: |
            `host:port` addresses to try in order if the relays above fail,
            ending with the public relay name.
          items:
            type: string
          example:
            - tk1a-1.relay.qumo-deploy.com:4433
            - cdn.qumo-deploy.com:4433
    RelayEndpoint:
      type: object
      description: A relay a client may open its streaming session on.
      required:
        - id
        - region
        - location
        - host
        - port
        - url
        - status
      properties:
        id:
          type: string
          description: The relay's id, or `public-relay` for the public relay name.
          example: tk1a-relay-01
        region:
          type: string
          description: |
            The region the relay serves, named for the place (`tyo`, `isk`), or
            `global` for the public relay name, which DNS resolves to the
            nearest region.
          example: tyo
        location:
          type: string
          description: The place, for display to end users in place of the host.
          example: Tokyo, Japan
        host:
          type: string
          description: Hostname to connect to.
          example: tk1a-1.relay.qumo-deploy.com
        port:
          type: integer
          description: Port for WebTransport and QUIC.
          example: 4433
        url:
          type: string
          format: uri
          description: '`https://<host>:<port>`, the WebTransport URL.'
          example: https://tk1a-1.relay.qumo-deploy.com:4433
        rtmp_port:
          type: integer
          description: |
            Set only on the `public-relay` entry, where it is a fixed value: no
            managed relay offers RTMP ingest yet.
          example: 1935
        srt_port:
          type: integer
          description: |
            Set only on the `public-relay` entry, where it is a fixed value: no
            managed relay offers SRT ingest yet.
          example: 8000
        status:
          type: string
          enum:
            - healthy
            - full
          description: |
            `full` means the relay is at its session limit: it is listed after
            the relays with room, and a client choosing for itself should pass
            it over.
          example: healthy
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: string
          description: A human-readable message.
          example: organization_id is required
  responses:
    BadRequest:
      description: >-
        Malformed request or failed validation. See [Error
        codes](/guides/error-codes).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    TooManyRequests:
      description: >-
        Rate limited; retry with backoff. See [Error
        codes](/guides/error-codes).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'

````

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