GraphQL
The Rad TV API exposes a GraphQL endpoint for all core operations: identity, channels, catalog, content, playlists, engagement, and YouTube.
Endpoint
POST /graphqlSend a JSON body with query (and optionally variables, operationName). Include the Bearer token for authenticated operations:
Authorization: Bearer <token>
Content-Type: application/jsonAuthentication
Most queries and mutations require authentication via Authorization: Bearer <jwt-or-api-key>. The schema marks protected fields with the @auth directive.
Public (no auth):
ratings(limit, start)— Content ratings (e.g. MPAA, TV).genres(limit, start)— Content genres.
All other operations require a valid Bearer token.
Response shape
Responses follow the GraphQL spec: { data?, errors? }.
Success —
datais present; its key matches the operation name (e.g.data.me,data.channel,data.createContent).Error —
errorsis an array of{ message, path?, extensions? }. HTTP status may still be 200; always checkresponse.errors.
See Response format and errors for details.
Introspection
The schema supports introspection. You can run introspection queries against POST /graphql to discover the full schema (types, fields, arguments). Use this or a GraphQL client (e.g. Altair at /altair in development) to explore the API.
Main concepts
DIDs — Use DIDs as IDs for channels and content (e.g.
did:rad.live:channel/<uuid>,did:rad.live:content/feature/<id>).Channel catalog — Channels expose catalog via
features,series,episodes,streams, etc. There is no legacycontentfield; usechannel.features(limit, start)and similar.Nullability — Fields with
!in the schema are non-null. Single-entity queries (channel(id),feature(id), etc.) returnnullwhen the entity is not found or not accessible.
Last updated

