Skip to content

Queries

All reads start from the single root query, property. Send your app key in the X-App-Key header. For the shape of every type returned here, see Types.

property - the root query

graphql
property(id: ID!): Property!

Returns the Property your app key is configured for. Returns a NOT_FOUND error when id is not in your key's accessible set (no existence leak). The explicit id argument is forward-compatible with keys that will later grant access to multiple properties.

graphql
query Property($id: ID!) {
  property(id: $id) {
    id
    name
  }
}
json
{ "id": "<your-property-id>" }

Property → brands → seasons → episodes

Walk the full content tree in one request. Every list field is paginated.

graphql
query Launch($id: ID!) {
  property(id: $id) {
    name
    brands(limit: 20) {
      total
      items {
        title
        code
        coverUrl
        seasons(limit: 20) {
          items {
            title
            episodes(limit: 50) {
              total
              items {
                title
                status        # READY | PROCESSING
                playbackUrl
                coverUrl
              }
            }
          }
        }
      }
    }
  }
}
json
{ "id": "<your-property-id>" }

Live streams

graphql
query Streams($id: ID!) {
  property(id: $id) {
    streams(limit: 50) {
      total
      items {
        title
        status        # LIVE | OFFLINE
        playbackUrl
        coverUrl
      }
    }
  }
}

OFFLINE streams stay in the list so your UI can show a channel-offline state. See Playback & images for how to treat playbackUrl and status.

Pagination

Every list field (brands, seasons, episodes, streams) takes limit and offset:

ArgumentDefaultNotes
limit50Maximum 200. A larger value returns BAD_REQUEST (no silent clamping)
offset0
graphql
brands(limit: 25, offset: 50) { total items { title } }

total is the count of all matching rows (ignoring limit/offset) and is computed only when you select it - omit it if you do not need it.