GraphQL API
Types Reference
Key types, enums, interfaces, and scalars in the Rad TV GraphQL schema.
A curated reference of the most important types in the Rad TV GraphQL schema. For the complete schema, use GraphQL introspection with your preferred client.
Scalars
| Scalar | Format | Example |
|---|---|---|
DID | did:rad.live:<type>:<id> | did:rad.live:channel/abc123 |
DateTime | ISO 8601 UTC | 2025-03-20T10:15:30Z |
Date | ISO 8601 | 2025-03-20 |
Time | HH:mm:ss.SSSS | 10:15:30.0000 |
MimeType | Media type string | video/mp4 |
URL | Fully qualified URL | https://cdn.rad.live/... |
JSON | Arbitrary JSON | {"key": "value"} |
Long | 52-bit+ integer | 9007199254740992 |
IngestionID | Ingestion session ID | — |
Core Types
Content
The primary user-created content type:
| Field | Type | Nullable | Description |
|---|---|---|---|
id | DID! | No | Content identifier |
hints | [ContentHint]! | No | Type and ad hints |
assets | ContentAssets! | No | Video and image assets |
outputAssets | OutputAssets | Yes | Encoder output (null until transcoding completes) |
metadata | ContentMetadata! | No | Title, summary, keywords, etc. |
transcodeJob | TranscodeJob | Yes | Current transcode job (null if none) |
likes | ContentLikes! | No | Like count and user status |
commentCount | Int! | No | Total comments |
Channel
| Field | Type | Description |
|---|---|---|
id | DID! | Channel identifier |
metadata | ChannelMetadata! | Name, summary, keywords, categories |
assets | ChannelAssets! | Avatar, banner images |
followersCount | Int! | Number of followers |
isFollowed | Boolean! | Whether current user follows |
features(first, after, last, before) | FeatureConnection! | Feature-length content |
series, miniseries, seasons, episodes, streams | *Connection! | Other catalog content (same pagination args) |
playlists(first, after, last, before) | PlaylistConnection! | Channel playlists |
OutputAssets
Generated after transcoding:
| Field | Type | Description |
|---|---|---|
encoderType | EncoderType! | MEDIA_CONVERT or RAD_ENCODER |
video | OutputVideoAssets! | HLS, download, preview URLs |
audio | OutputAudioAssets! | Audio download URL |
images | OutputImageAssets! | Thumbnails and video thumbnails |
subtitles | OutputSubtitleAssets | SRT and VTT files |
ThumbnailSet
| Field | Type | Description |
|---|---|---|
urlFormat | String! | URL template with digit placeholders |
count | Int! | Number of thumbnails |
See Output Assets workflow for expansion rules.
Enums
ContentType
| Value | Description |
|---|---|
FEATURE | Feature-length standalone content |
LIVE | Live stream |
SERIES | TV series |
EPISODE | Series episode |
SHORT | Short-form content |
ANY | Any type |
ContentLayout
| Value | Description |
|---|---|
LANDSCAPE | Standard widescreen |
PORTRAIT | Vertical video |
VR | Virtual reality |
EncoderType
| Value | Description |
|---|---|
MEDIA_CONVERT | Standard transcoding |
RAD_ENCODER | AI-enhanced (upscaling + surround audio) |
TranscodeJobStatus
| Value | Description |
|---|---|
IDLE | Not yet deployed |
QUEUED | Waiting to process |
TRANSCODING | In progress |
COMPLETE | Done |
ERROR | Failed |
CANCELLED | Cancelled |
CANCELLING | Cancel in progress |
SubscriptionState
| Value | Description |
|---|---|
ACTIVE | Currently active |
CANCELED | Canceled (may still be usable until period end) |
PAST_DUE | Payment failed |
EXPIRED | Subscription ended |
YouTubePrivacyStatus
PUBLIC | UNLISTED | PRIVATE
YouTubePublishStatus
PENDING | UPLOADING | PROCESSING | COMPLETE | ERROR
VideoContentType
landscape | portrait | vr | short
Interfaces
Likeable
Implemented by Feature, Episode, Stream, Serie, Season, Miniseries:
interface Likeable {
likes: ContentLikes!
}
type ContentLikes {
count: Int!
isLiked: Boolean!
}Commentable
interface Commentable {
commentCount: Int!
isCommented: Boolean!
comments(first: Int, after: String, last: Int, before: String): CommentConnection!
}See Pagination and Engagement for querying comments.
EntityMetadata
Shared metadata interface for all entity types:
interface EntityMetadata {
name: String
title: String
summary: String
shortSummary: String
keywords: [String]!
}Nullability Conventions
!means never nullContent.assets,Content.metadata,Content.likesare always non-null (resolvers default to empty objects/arrays)Content.transcodeJobandContent.outputAssetsare nullable (null before processing starts/completes)- Single-entity queries (
channel(id),feature(id)) return null when not found - Connection list queries return a connection object;
edgesis an empty array when there are no results