mutation CreateUploadStream($videoMetadataInput: VideoMetadataInput!) { createUploadStream(videoMetadata: $videoMetadataInput) { videoId } } mutation GetUploadLink($videoId: Int!, $segmentIndex: Int!) { getUploadLink(videoId: $videoId, segmentIndex: $segmentIndex) { value { ... on UploadLink { uploadUrl headers { key value } } ... on GetUploadLinkErrors { error { ... on MustHaveSetForUploadLinkErr { resolution framesPerSecond } ... on SegmentAlreadyUploadedErr { segmentId } ... on ProcessingFailedErr { processing { status errors { message } } } } } } stream { uploadCompletionCursor } } } mutation GetHlsInitUploadLink($videoId: Int!) { getHlsInitUploadLink(videoId: $videoId) { value { ... on UploadLink { uploadUrl headers { key value } } ... on GetUploadLinkErrors { error { ... on NoInitForChunkedUploadErr { segmentType } ... on InitUploadAlreadyCompletedErr { segmentType } ... on TooManyInitUploadsErr { linksRequested } } } } } } mutation SetSegmentDuration( $videoId: Int! $segmentIndex: Int! $duration: Float! ) { setSegmentDuration( videoId: $videoId segmentIndex: $segmentIndex duration: $duration ) } mutation EditUploadStream( $videoId: Int! $videoMetadataInput: VideoMetadataInput! ) { editUploadStream(videoId: $videoId, videoMetadata: $videoMetadataInput) } query GetUploadStreams( $limit: Int! = 5 $after: String = null $filters: VideoFilterInput = null ) { getUserVideos(limit: $limit, after: $after, filters: $filters) { videos { id } pageInfo { hasNextPage endCursor } } } query GetUploadStreamsWithDetails( $limit: Int! = 5 $after: String = null $filters: VideoFilterInput = null ) { getUserVideos(limit: $limit, after: $after, filters: $filters) { videos { id name startTime stream { isCompleted lastIntendedSegmentBound uploadCompletionCursor uploadsCompleted } } pageInfo { hasNextPage endCursor } } }