Streaming services ​
C# signatures use the types and conventions in Integration. CancellationToken controls the client call. Command objects include inherited fields from ApiCommand where applicable.
IChatCallReactions ​
Read and send short-lived emoji reactions in a chat's call. Source
A reaction expires after Constants.Call.ReactionDuration, and a newer reaction from the same author replaces the older. Send is dropped, not resent, when the connection is slow.
Task<ApiArray<CallReaction>> List(
Session session,
ChatId chatId,
CancellationToken cancellationToken
);Task Send(
Session session,
ChatId chatId,
Emoji emoji,
CancellationToken cancellationToken
);Related data: CallReaction, ChatId, Emoji.
IChatTypingActivities ​
Read active typists and publish short-lived typing activity. Source
Task<ApiArray<AuthorId>> ListTypingAuthorIds(
Session session,
ChatId chatId,
CancellationToken cancellationToken
);Task SetTyping(
Session session,
ChatId chatId,
TypingActivityKind kind,
TimeSpan ttl,
CancellationToken cancellationToken
);Related data: AuthorId, ChatId, TypingActivityKind.
ILiveAudioStreams ​
Read and publish live audio, stream transcripts, replay audio, and report playback. Source
The two ReportAudioLatency overloads coexist for compatibility. Methods beginning Legacy support older clients. PushStream consumes encoded audio frames, not a generic audio-file upload. The GetListeningStream and GetReplayStream overloads with dubLanguage serve speakers who do not speak that language dubbed into it.
Task<ApiArray<LiveAudioStreamInfo>> List(
Session session,
ChatId chatId,
CancellationToken cancellationToken
);Task<RpcStream<AudioFrame>?> GetStream(
Session session,
string streamId,
TimeSpan skipTo,
CancellationToken cancellationToken
);Task<RpcStream<TranscriptDiff>?> GetTranscriptStream(
Session session,
string streamId,
CancellationToken cancellationToken
);Task<RpcStream<MuxedAudioStreamItem>> GetListeningStream(
Session session,
ChatId chatId,
Moment catchUpFrom,
CancellationToken cancellationToken
);Task<RpcStream<MuxedAudioStreamItem>> GetListeningStream(
Session session,
ChatId chatId,
Moment catchUpFrom,
Language? dubLanguage,
CancellationToken cancellationToken
);Task<RpcStream<MuxedAudioStreamItem>> GetReplayStream(
Session session,
ChatId chatId,
Moment startAt,
TimeSpan rewindOffset,
double speed,
CancellationToken cancellationToken
);Task<RpcStream<MuxedAudioStreamItem>> GetReplayStream(
Session session,
ChatId chatId,
Moment startAt,
TimeSpan rewindOffset,
double speed,
Language? dubLanguage,
CancellationToken cancellationToken
);Task PushStream(
Session session,
string chatId,
string? repliedChatEntryId,
double clientStartAt,
int preSkip,
RpcStream<AudioFrame> frameStream,
CancellationToken cancellationToken
);Task ReportAudioLatency(
Session session,
TimeSpan latency,
CancellationToken cancellationToken
);Task ReportAudioLatency(
Session session,
TimeSpan latency,
TimeSpan? avSyncError,
CancellationToken cancellationToken
);Task ReportPlayback(
Session session,
ChatId chatId,
string streamId,
ChatEntryId? entryId,
CancellationToken cancellationToken
);Task<RpcStream<MuxedAudioStreamItem>> LegacyGetListeningStream(
Session session,
ChatId chatId,
CancellationToken cancellationToken
);Related data: AudioFrame, ChatEntryId, ChatId, Language, LiveAudioStreamInfo, MuxedAudioStreamItem, TranscriptDiff.
ILiveSessions ​
Manage live participation, voice rules, hosts, muting, raised hands, conversations, and the ringing-call lifecycle. Source
Call controls and participation controls are distinct: joining a live session is not the same operation as starting a ringing call. Call methods take a CallId returned by StartCall or reported by GetMyCall. GetCallStatus, DismissCallStatus, and LeaveCall are obsolete and kept for older clients; LegacyGetState serves the older LiveSessionState layout.
Task<LiveSessionState?> GetState(
Session session,
ChatId chatId,
CancellationToken cancellationToken
);Task<LiveConversation?> GetOpenConversation(
Session session,
ChatId chatId,
CancellationToken cancellationToken
);Task<ApiArray<ConversationId>> ListConversations(
Session session,
ChatId chatId,
CancellationToken cancellationToken
);Task<LiveConversation?> GetConversation(
Session session,
ConversationId conversationId,
CancellationToken cancellationToken
);Task<LiveSession?> Get(
Session session,
ChatId chatId,
CancellationToken cancellationToken
);Task<bool> HasRecorder(
Session session,
ChatId chatId,
CancellationToken cancellationToken
);Task<bool> HasActivity(
Session session,
ChatId chatId,
CancellationToken cancellationToken
);Task<ApiArray<AuthorId>> GetAudioStreamingAuthorIds(
Session session,
ChatId chatId,
CancellationToken cancellationToken
);Task<ConversationStats?> GetConversationStats(
Session session,
ChatId chatId,
CancellationToken cancellationToken
);Task<CallStatus> GetCallStatus(
Session session,
ChatId chatId,
CancellationToken cancellationToken
);Task<UserCall?> GetMyCall(
Session session,
string clientId,
CancellationToken cancellationToken
);Task SetParticipation(
Session session,
ChatId chatId,
ParticipationKind kind,
bool isActive,
CancellationToken cancellationToken
);Task SetRules(
Session session,
ChatId chatId,
SessionRules rules,
CancellationToken cancellationToken
);Task MutePeer(
Session session,
ChatId chatId,
AuthorId targetAuthorId,
bool muted,
CancellationToken cancellationToken
);Task MuteAll(
Session session,
ChatId chatId,
bool muted,
CancellationToken cancellationToken
);Task SetHost(
Session session,
ChatId chatId,
AuthorId targetAuthorId,
CancellationToken cancellationToken
);Task SetHandRaised(
Session session,
ChatId chatId,
AuthorId targetAuthorId,
bool isRaised,
CancellationToken cancellationToken
);Task LowerAllHands(
Session session,
ChatId chatId,
CancellationToken cancellationToken
);Task<CallId> StartCall(
Session session,
ChatId chatId,
ApiArray<AuthorId> invitees,
bool hasVideo,
string clientId,
CancellationToken cancellationToken
);Task CancelCall(
Session session,
CallId callId,
CancellationToken cancellationToken
);Task DismissCallStatus(
Session session,
ChatId chatId,
CancellationToken cancellationToken
);Task AcceptCall(
Session session,
CallId callId,
string clientId,
CancellationToken cancellationToken
);Task DeclineCall(
Session session,
CallId callId,
CancellationToken cancellationToken
);Task ConfirmRing(
Session session,
ChatId chatId,
RingAck ack,
CancellationToken cancellationToken
);Task LeaveCall(
Session session,
ChatId chatId,
CancellationToken cancellationToken
);Task<LegacyLiveSessionState?> LegacyGetState(
Session session,
ChatId chatId,
CancellationToken cancellationToken
);Related data: AuthorId, CallId, CallStatus, ChatId, ConversationId, ConversationStats, LegacyLiveSessionState, LiveConversation, LiveSession, LiveSessionState, ParticipationKind, RingAck, SessionRules, UserCall.
ILiveVideoStreams ​
Read and publish video streams, negotiate codecs, and report viewer demand and quality. Source
Video publishing consumes encoded frame bundles and format metadata. Use matching client codec and stream handling. GetStreamWithCapabilities additionally reports the decoder codecs the viewer supports.
Task<RpcStream<VideoFrame>?> GetStream(
Session session,
StreamId streamId,
CancellationToken cancellationToken
);Task<RpcStream<VideoFrame>?> GetStreamWithCapabilities(
Session session,
StreamId streamId,
ApiArray<string> supportedDecoderCodecs,
CancellationToken cancellationToken
);Task<ApiArray<VideoStreamInfo>> List(
Session session,
ChatId chatId,
CancellationToken cancellationToken
);Task<int> GetMemberCount(
Session session,
ChatId chatId,
CancellationToken cancellationToken
);Task<ApiArray<string>> GetSupportedCodecs(
Session session,
ChatId chatId,
CancellationToken cancellationToken
);Task<Moment> LastKeyframeRequestAt(
Session session,
StreamId streamId,
CancellationToken cancellationToken
);Task<int> MaxRequestedLayerId(
Session session,
StreamId streamId,
CancellationToken cancellationToken
);Task<int> RequestedLayersMask(
Session session,
StreamId streamId,
CancellationToken cancellationToken
);Task<bool> ThumbnailViewersOnly(
Session session,
StreamId streamId,
CancellationToken cancellationToken
);Task<StreamDemandInfo> DemandInfo(
Session session,
StreamId streamId,
CancellationToken cancellationToken
);Task<StreamDemandStats> GetDemandStats(
Session session,
StreamId streamId,
CancellationToken cancellationToken
);Task RegisterMember(
Session session,
ChatId chatId,
ApiArray<string> supportedDecoderCodecs,
CancellationToken cancellationToken
);Task UnregisterMember(
Session session,
ChatId chatId,
CancellationToken cancellationToken
);Task PushStream(
Session session,
string chatId,
double clientStartAt,
VideoFormat format,
VideoSourceKind sourceKind,
RpcStream<VideoFrameBundle> frameStream,
CancellationToken cancellationToken
);Task RequestKeyFrame(
Session session,
string streamId,
CancellationToken cancellationToken
);Task ChangeRecordingQuality(
Session session,
RecordingQualityState? state,
RecordingQualityInfo? info,
CancellationToken cancellationToken
);Task ChangePlaybackQuality(
Session session,
ApiMap<string, ReceiveQuality>? qualityByStream,
PlaybackQualityInfo? info,
CancellationToken cancellationToken
);Related data: ChatId, PlaybackQualityInfo, ReceiveQuality, RecordingQualityInfo, RecordingQualityState, StreamDemandInfo, StreamDemandStats, StreamId, VideoFormat, VideoFrame, VideoFrameBundle, VideoSourceKind, VideoStreamInfo.
IOwnVoices ​
Read the status of the caller's own cloned voice. Source
Backs the Use my own voice setting.
Task<OwnVoiceStatus> GetOwnVoiceStatus(
Session session,
CancellationToken cancellationToken
);Related data: OwnVoiceStatus.