Skip to content

Streams

GraphQL schema reference · API guide · SDKs

Live streams, stream keys, push targets, and ingest endpoint resolution.

Types used by more than one domain are on Shared types.

Resolve a stream key to ingest endpoints for StreamCrafter. Returns node-specific advertised protocols. A requested protocol filters candidates before ranking; it is not permission to substitute a different protocol.

resolveIngestEndpoint(
streamKey: String!
protocol: MediaIngestProtocol
): IngestEndpointResponse

Returns: IngestEndpointResponse (IngestEndpointResponse)

Arguments

SDK

OperationTypeScriptGoPython
ResolveIngestEndpointResolveIngestEndpointDocumentResolveIngestEndpointresolve_ingest_endpoint

Fetch a single stream by its global ID. An API token needs the streams:read or streams:write scope. Stream.streamKey needs streams:write.

stream(
id: ID!
): Stream

Returns: Stream (Stream)

Arguments

  • id: ID! — The global ID of the stream.

SDK

OperationSelectsTypeScriptGoPython
GetRecentPullSourceEventsstream.recentPullSourceEventsGetRecentPullSourceEventsDocumentGetRecentPullSourceEventsget_recent_pull_source_events
GetStreamstreamGetStreamDocumentGetStreamget_stream
GetStreamKeystream.streamKeyGetStreamKeyDocumentGetStreamKeyget_stream_key
GetStreamMetricsstream.metricsGetStreamMetricsDocumentGetStreamMetricsget_stream_metrics
ListPushTargetsstream.pushTargetsListPushTargetsDocumentListPushTargetslist_push_targets

List all stream keys for a specific stream. Stream keys are publishing credentials, so an API token needs the streams:write scope.

streamKeysConnection(
page: ConnectionInput
streamId: ID!
): StreamKeysConnection!

Returns: StreamKeysConnection! (StreamKeysConnection)

Arguments

  • page: ConnectionInput (ConnectionInput) — Pagination options.
  • streamId: ID! — The stream ID to list keys for (Stream.id, Relay global ID).

SDK

OperationTypeScriptGoPython
ListStreamKeysListStreamKeysDocumentListStreamKeyslist_stream_keys

Cluster-aware streaming configuration for the authenticated tenant. Returns preferred and official cluster domains for building protocol-specific URLs. Null when not authenticated or cluster routing unavailable — frontend falls back to env vars.

streamingConfig: StreamingConfig

Returns: StreamingConfig (StreamingConfig)

SDK

OperationTypeScriptGoPython
GetStreamingConfigGetStreamingConfigDocumentGetStreamingConfigget_streaming_config

List all streams for the current tenant with pagination. An API token needs the streams:read or streams:write scope. Stream.streamKey needs streams:write.

streamsConnection(
page: ConnectionInput
search: String
): StreamsConnection!

Returns: StreamsConnection! (StreamsConnection)

Arguments

  • page: ConnectionInput (ConnectionInput) — Pagination options.
  • search: String — Optional server-side name search (title / internal name). Enables an account-wide picker instead of only the first page.

SDK

OperationSelectsTypeScriptGoPython
ListStreamMetricsstreamsConnection.nodes.metricsListStreamMetricsDocumentListStreamMetricslist_stream_metrics
ListStreamsstreamsConnectionListStreamsDocumentListStreamslist_streams

Validate a stream key and return the associated stream info.

validateStreamKey(
streamKey: String!
): StreamValidation

Returns: StreamValidation (StreamValidation)

Arguments

  • streamKey: String! — The stream key to validate.

SDK

OperationTypeScriptGoPython
GetValidateStreamKeyGetValidateStreamKeyDocumentGetValidateStreamKeyget_validate_stream_key

Add a multistream push target to a stream. When the stream goes live, it will automatically push to all enabled targets.

createPushTarget(
streamId: ID!
input: CreatePushTargetInput!
): PushTarget!

Returns: PushTarget! (PushTarget)

Arguments

  • streamId: ID! — The stream ID (Stream.id, Relay global ID).
  • input: CreatePushTargetInput! (CreatePushTargetInput) — Push target configuration.

SDK

OperationTypeScriptGoPython
CreatePushTargetCreatePushTargetDocumentCreatePushTargetcreate_push_target

Create a new stream for live broadcasting.

createStream(
input: CreateStreamInput!
): CreateStreamResult!

Returns: CreateStreamResult! (CreateStreamResult)

Arguments

SDK

OperationTypeScriptGoPython
CreateStreamCreateStreamDocumentCreateStreamcreate_stream

Create an additional stream key for a stream.

createStreamKey(
streamId: ID!
input: CreateStreamKeyInput!
): CreateStreamKeyResult!

Returns: CreateStreamKeyResult! (CreateStreamKeyResult)

Arguments

  • streamId: ID! — The stream ID (Stream.id, Relay global ID).
  • input: CreateStreamKeyInput! (CreateStreamKeyInput) — Stream key configuration.

SDK

OperationTypeScriptGoPython
CreateStreamKeyCreateStreamKeyDocumentCreateStreamKeycreate_stream_key

Delete a multistream push target.

deletePushTarget(
id: ID!
): DeleteSuccess!

Returns: DeleteSuccess! (DeleteSuccess)

Arguments

  • id: ID! — The push target ID.

SDK

OperationTypeScriptGoPython
DeletePushTargetDeletePushTargetDocumentDeletePushTargetdelete_push_target

Delete a stream and all associated data.

deleteStream(
id: ID!
): DeleteStreamResult!

Returns: DeleteStreamResult! (DeleteStreamResult)

Arguments

  • id: ID! — The stream ID to delete.

SDK

OperationTypeScriptGoPython
DeleteStreamDeleteStreamDocumentDeleteStreamdelete_stream

Delete a stream key.

deleteStreamKey(
streamId: ID!
keyId: ID!
): DeleteStreamKeyResult!

Returns: DeleteStreamKeyResult! (DeleteStreamKeyResult)

Arguments

  • streamId: ID! — The stream ID (Stream.id, Relay global ID).
  • keyId: ID! — The key ID to delete.

SDK

OperationTypeScriptGoPython
DeleteStreamKeyDeleteStreamKeyDocumentDeleteStreamKeydelete_stream_key

Generate a new stream key, invalidating the old one.

refreshStreamKey(
id: ID!
): UpdateStreamResult!

Returns: UpdateStreamResult! (UpdateStreamResult)

Arguments

  • id: ID! — The stream ID.

SDK

OperationTypeScriptGoPython
RefreshStreamKeyRefreshStreamKeyDocumentRefreshStreamKeyrefresh_stream_key

Update a multistream push target.

updatePushTarget(
id: ID!
input: UpdatePushTargetInput!
): PushTarget!

Returns: PushTarget! (PushTarget)

Arguments

  • id: ID! — The push target ID.
  • input: UpdatePushTargetInput! (UpdatePushTargetInput) — Fields to update.

SDK

OperationTypeScriptGoPython
UpdatePushTargetUpdatePushTargetDocumentUpdatePushTargetupdate_push_target

Update an existing stream’s configuration.

updateStream(
id: ID!
input: UpdateStreamInput!
): UpdateStreamResult!

Returns: UpdateStreamResult! (UpdateStreamResult)

Arguments

  • id: ID! — The stream ID.
  • input: UpdateStreamInput! (UpdateStreamInput) — Updated stream configuration.

SDK

OperationTypeScriptGoPython
UpdateStreamUpdateStreamDocumentUpdateStreamupdate_stream

input_object

  • platform: String — Platform identifier (twitch, youtube, facebook, kick, x, custom).
  • name: String! — User-friendly label for this target.
  • videoChoice: String — AUTO, SOURCE_VIDEO, or PROCESSED_VIDEO for RTMP targets.
  • targetUri: String! — Full target URI including stream key (e.g., rtmp://live.twitch.tv/app/live_xxxx).

input_object

Input for creating a new live stream.

  • name: String! — Human-readable name for the stream.
  • description: String — Optional description for the stream.
  • record: Boolean — Enable DVR recording (default: false).
  • liveVideoAbr: String — Live video renditions: INHERIT uses the tier policy; OFF keeps source video and audio conversion.
  • ingestMode: IngestMode (IngestMode) — Source ingest model. Defaults to PUSH.
  • pullSource: PullSourceInput (PullSourceInput) — Pull-source configuration. Required when ingestMode is PULL.
  • sourceLocation: SourceLocationInput (SourceLocationInput) — Where the source may be ingested. Omitted means ANY. Required for private and multicast pull sources.

input_object

Input for creating an additional stream key.

  • name: String! — Human-readable name for the key.

union

union

union

union

object

  • nodeId: String!
  • baseUrl: String!
  • whipUrl: String
  • rtmpUrl: String
  • srtUrl: String
  • region: String
  • loadScore: Float
  • kind: IngestEndpointKind! (IngestEndpointKind)
  • clusterId: String!

enum

  • INGEST_ENDPOINT_KIND_UNSPECIFIED
  • INGEST_ENDPOINT_KIND_TENANT_ALIAS
  • INGEST_ENDPOINT_KIND_ROOT_POOL
  • INGEST_ENDPOINT_KIND_CLUSTER_POOL
  • INGEST_ENDPOINT_KIND_NODE_SPECIFIC

object

object

  • streamId: ID!
  • stream: Stream (Stream)
  • streamKey: String!
  • tenantId: String!
  • recordingEnabled: Boolean!
  • title: String
  • description: String

enum

  • WHIP
  • RTMP
  • SRT

input_object

  • sourceUri: String — Upstream RTSP, SRT, RIST, HLS, DTSC, or TS source URI. Required when creating or replacing a pull source.
  • enabled: Boolean — Whether the media plane may pull from the source.

input_object

  • clusterId: ID!
  • nodeIds: [ID!]! — Nodes of this cluster the source may run on. Empty means any node of the cluster. Only nodes of clusters the tenant owns are accepted.

input_object

Replaces the stream’s own ingest restriction. Private and multicast pull sources require RESTRICTED with clusters that allow private pull sources.

  • mode: SourceLocationMode! (SourceLocationMode) — ANY or RESTRICTED. CUSTOM is rejected.
  • clusters: [SourceLocationClusterInput!]! (SourceLocationClusterInput) — Required and non-empty for RESTRICTED; must be empty for ANY.
  • avoidNodeIds: [ID!]! — Nodes the source must never run on. Only nodes of clusters the tenant owns are accepted.

object

  • cursor: String!
  • node: Stream! (Stream)

object

  • id: ID!
  • streamId: ID!
  • stream: Stream (Stream)
  • keyValue: String! — The publishing secret. Stream keys are read only through operations that need the streams:write scope.
  • keyName: String
  • isActive: Boolean!
  • lastUsedAt: Time (Time)
  • createdAt: Time! (Time)

object

  • cursor: String!
  • node: StreamKey! (StreamKey)

object

object

object

  • preferredClusterLabel: String
  • ingestDomain: String
  • edgeDomain: String
  • playDomain: String
  • officialClusterLabel: String
  • officialIngestDomain: String
  • officialEdgeDomain: String
  • officialPlayDomain: String
  • globalIngestDomain: String
  • globalEdgeDomain: String
  • globalPlayDomain: String
  • globalLivepeerDomain: String
  • tenantIngestDomain: String
  • tenantEdgeDomain: String
  • tenantPlayDomain: String
  • tenantLivepeerDomain: String
  • srtPort: Int
  • rtmpPort: Int

object

input_object

  • name: String — Updated label.
  • videoChoice: String — AUTO, SOURCE_VIDEO, or PROCESSED_VIDEO for RTMP targets.
  • targetUri: String — Updated target URI.
  • isEnabled: Boolean — Enable or disable this target.

input_object

Input for updating an existing stream. All fields are optional - only provided fields are updated.

  • name: String — New name for the stream.
  • description: String — New description for the stream.
  • record: Boolean — Enable or disable DVR recording.
  • liveVideoAbr: String — INHERIT uses the tier policy; OFF disables live video renditions from the next ingest.
  • ingestMode: IngestMode (IngestMode) — Ingest model cannot be changed after create; sending a different value returns a validation error.
  • pullSource: PullSourceInput (PullSourceInput) — Update the pull-source configuration for an existing pull stream.
  • sourceLocation: SourceLocationInput (SourceLocationInput) — Replace where the source may be ingested. Omitted keeps the current location. Rejected for managed streams.
  • dvrChapterMode: DVRChapterMode (DVRChapterMode) — How saved recordings are split into chapters. Snapshotted when a recording starts; changes apply from the next broadcast, not to a recording in progress. NONE keeps live rewind only: viewers can rewind while live, but nothing is kept after the broadcast.
  • dvrChapterIntervalSeconds: Int — Chapter interval in seconds. Required when dvrChapterMode = FIXED_INTERVAL. Minimum 3600 (1 hour). Send 0 with any other mode to clear a stored interval.
  • monitoring: MonitoringToggle (MonitoringToggle) — Per-stream Skipper monitoring override. INHERIT follows the tenant tier.

union

enum

  • VALID
  • INVALID
  • ERROR