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

ScalarFormatExample
DIDdid:rad.live:<type>:<id>did:rad.live:channel/abc123
DateTimeISO 8601 UTC2025-03-20T10:15:30Z
DateISO 86012025-03-20
TimeHH:mm:ss.SSSS10:15:30.0000
MimeTypeMedia type stringvideo/mp4
URLFully qualified URLhttps://cdn.rad.live/...
JSONArbitrary JSON{"key": "value"}
Long52-bit+ integer9007199254740992
IngestionIDIngestion session ID

Core Types

Content

The primary user-created content type:

FieldTypeNullableDescription
idDID!NoContent identifier
hints[ContentHint]!NoType and ad hints
assetsContentAssets!NoVideo and image assets
outputAssetsOutputAssetsYesEncoder output (null until transcoding completes)
metadataContentMetadata!NoTitle, summary, keywords, etc.
transcodeJobTranscodeJobYesCurrent transcode job (null if none)
likesContentLikes!NoLike count and user status
commentCountInt!NoTotal comments

Channel

FieldTypeDescription
idDID!Channel identifier
metadataChannelMetadata!Name, summary, keywords, categories
assetsChannelAssets!Avatar, banner images
followersCountInt!Number of followers
isFollowedBoolean!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:

FieldTypeDescription
encoderTypeEncoderType!MEDIA_CONVERT or RAD_ENCODER
videoOutputVideoAssets!HLS, download, preview URLs
audioOutputAudioAssets!Audio download URL
imagesOutputImageAssets!Thumbnails and video thumbnails
subtitlesOutputSubtitleAssetsSRT and VTT files

ThumbnailSet

FieldTypeDescription
urlFormatString!URL template with digit placeholders
countInt!Number of thumbnails

See Output Assets workflow for expansion rules.

Enums

ContentType

ValueDescription
FEATUREFeature-length standalone content
LIVELive stream
SERIESTV series
EPISODESeries episode
SHORTShort-form content
ANYAny type

ContentLayout

ValueDescription
LANDSCAPEStandard widescreen
PORTRAITVertical video
VRVirtual reality

EncoderType

ValueDescription
MEDIA_CONVERTStandard transcoding
RAD_ENCODERAI-enhanced (upscaling + surround audio)

TranscodeJobStatus

ValueDescription
IDLENot yet deployed
QUEUEDWaiting to process
TRANSCODINGIn progress
COMPLETEDone
ERRORFailed
CANCELLEDCancelled
CANCELLINGCancel in progress

SubscriptionState

ValueDescription
ACTIVECurrently active
CANCELEDCanceled (may still be usable until period end)
PAST_DUEPayment failed
EXPIREDSubscription 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 null
  • Content.assets, Content.metadata, Content.likes are always non-null (resolvers default to empty objects/arrays)
  • Content.transcodeJob and Content.outputAssets are 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; edges is an empty array when there are no results

On this page