Skip to content

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.

csharp
Task<ApiArray<CallReaction>> List(
    Session session,
    ChatId chatId,
    CancellationToken cancellationToken
);
csharp
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

csharp
Task<ApiArray<AuthorId>> ListTypingAuthorIds(
    Session session,
    ChatId chatId,
    CancellationToken cancellationToken
);
csharp
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.

csharp
Task<ApiArray<LiveAudioStreamInfo>> List(
    Session session,
    ChatId chatId,
    CancellationToken cancellationToken
);
csharp
Task<RpcStream<AudioFrame>?> GetStream(
    Session session,
    string streamId,
    TimeSpan skipTo,
    CancellationToken cancellationToken
);
csharp
Task<RpcStream<TranscriptDiff>?> GetTranscriptStream(
    Session session,
    string streamId,
    CancellationToken cancellationToken
);
csharp
Task<RpcStream<MuxedAudioStreamItem>> GetListeningStream(
    Session session,
    ChatId chatId,
    Moment catchUpFrom,
    CancellationToken cancellationToken
);
csharp
Task<RpcStream<MuxedAudioStreamItem>> GetListeningStream(
    Session session,
    ChatId chatId,
    Moment catchUpFrom,
    Language? dubLanguage,
    CancellationToken cancellationToken
);
csharp
Task<RpcStream<MuxedAudioStreamItem>> GetReplayStream(
    Session session,
    ChatId chatId,
    Moment startAt,
    TimeSpan rewindOffset,
    double speed,
    CancellationToken cancellationToken
);
csharp
Task<RpcStream<MuxedAudioStreamItem>> GetReplayStream(
    Session session,
    ChatId chatId,
    Moment startAt,
    TimeSpan rewindOffset,
    double speed,
    Language? dubLanguage,
    CancellationToken cancellationToken
);
csharp
Task PushStream(
    Session session,
    string chatId,
    string? repliedChatEntryId,
    double clientStartAt,
    int preSkip,
    RpcStream<AudioFrame> frameStream,
    CancellationToken cancellationToken
);
csharp
Task ReportAudioLatency(
    Session session,
    TimeSpan latency,
    CancellationToken cancellationToken
);
csharp
Task ReportAudioLatency(
    Session session,
    TimeSpan latency,
    TimeSpan? avSyncError,
    CancellationToken cancellationToken
);
csharp
Task ReportPlayback(
    Session session,
    ChatId chatId,
    string streamId,
    ChatEntryId? entryId,
    CancellationToken cancellationToken
);
csharp
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.

csharp
Task<LiveSessionState?> GetState(
    Session session,
    ChatId chatId,
    CancellationToken cancellationToken
);
csharp
Task<LiveConversation?> GetOpenConversation(
    Session session,
    ChatId chatId,
    CancellationToken cancellationToken
);
csharp
Task<ApiArray<ConversationId>> ListConversations(
    Session session,
    ChatId chatId,
    CancellationToken cancellationToken
);
csharp
Task<LiveConversation?> GetConversation(
    Session session,
    ConversationId conversationId,
    CancellationToken cancellationToken
);
csharp
Task<LiveSession?> Get(
    Session session,
    ChatId chatId,
    CancellationToken cancellationToken
);
csharp
Task<bool> HasRecorder(
    Session session,
    ChatId chatId,
    CancellationToken cancellationToken
);
csharp
Task<bool> HasActivity(
    Session session,
    ChatId chatId,
    CancellationToken cancellationToken
);
csharp
Task<ApiArray<AuthorId>> GetAudioStreamingAuthorIds(
    Session session,
    ChatId chatId,
    CancellationToken cancellationToken
);
csharp
Task<ConversationStats?> GetConversationStats(
    Session session,
    ChatId chatId,
    CancellationToken cancellationToken
);
csharp
Task<CallStatus> GetCallStatus(
    Session session,
    ChatId chatId,
    CancellationToken cancellationToken
);
csharp
Task<UserCall?> GetMyCall(
    Session session,
    string clientId,
    CancellationToken cancellationToken
);
csharp
Task SetParticipation(
    Session session,
    ChatId chatId,
    ParticipationKind kind,
    bool isActive,
    CancellationToken cancellationToken
);
csharp
Task SetRules(
    Session session,
    ChatId chatId,
    SessionRules rules,
    CancellationToken cancellationToken
);
csharp
Task MutePeer(
    Session session,
    ChatId chatId,
    AuthorId targetAuthorId,
    bool muted,
    CancellationToken cancellationToken
);
csharp
Task MuteAll(
    Session session,
    ChatId chatId,
    bool muted,
    CancellationToken cancellationToken
);
csharp
Task SetHost(
    Session session,
    ChatId chatId,
    AuthorId targetAuthorId,
    CancellationToken cancellationToken
);
csharp
Task SetHandRaised(
    Session session,
    ChatId chatId,
    AuthorId targetAuthorId,
    bool isRaised,
    CancellationToken cancellationToken
);
csharp
Task LowerAllHands(
    Session session,
    ChatId chatId,
    CancellationToken cancellationToken
);
csharp
Task<CallId> StartCall(
    Session session,
    ChatId chatId,
    ApiArray<AuthorId> invitees,
    bool hasVideo,
    string clientId,
    CancellationToken cancellationToken
);
csharp
Task CancelCall(
    Session session,
    CallId callId,
    CancellationToken cancellationToken
);
csharp
Task DismissCallStatus(
    Session session,
    ChatId chatId,
    CancellationToken cancellationToken
);
csharp
Task AcceptCall(
    Session session,
    CallId callId,
    string clientId,
    CancellationToken cancellationToken
);
csharp
Task DeclineCall(
    Session session,
    CallId callId,
    CancellationToken cancellationToken
);
csharp
Task ConfirmRing(
    Session session,
    ChatId chatId,
    RingAck ack,
    CancellationToken cancellationToken
);
csharp
Task LeaveCall(
    Session session,
    ChatId chatId,
    CancellationToken cancellationToken
);
csharp
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.

csharp
Task<RpcStream<VideoFrame>?> GetStream(
    Session session,
    StreamId streamId,
    CancellationToken cancellationToken
);
csharp
Task<RpcStream<VideoFrame>?> GetStreamWithCapabilities(
    Session session,
    StreamId streamId,
    ApiArray<string> supportedDecoderCodecs,
    CancellationToken cancellationToken
);
csharp
Task<ApiArray<VideoStreamInfo>> List(
    Session session,
    ChatId chatId,
    CancellationToken cancellationToken
);
csharp
Task<int> GetMemberCount(
    Session session,
    ChatId chatId,
    CancellationToken cancellationToken
);
csharp
Task<ApiArray<string>> GetSupportedCodecs(
    Session session,
    ChatId chatId,
    CancellationToken cancellationToken
);
csharp
Task<Moment> LastKeyframeRequestAt(
    Session session,
    StreamId streamId,
    CancellationToken cancellationToken
);
csharp
Task<int> MaxRequestedLayerId(
    Session session,
    StreamId streamId,
    CancellationToken cancellationToken
);
csharp
Task<int> RequestedLayersMask(
    Session session,
    StreamId streamId,
    CancellationToken cancellationToken
);
csharp
Task<bool> ThumbnailViewersOnly(
    Session session,
    StreamId streamId,
    CancellationToken cancellationToken
);
csharp
Task<StreamDemandInfo> DemandInfo(
    Session session,
    StreamId streamId,
    CancellationToken cancellationToken
);
csharp
Task<StreamDemandStats> GetDemandStats(
    Session session,
    StreamId streamId,
    CancellationToken cancellationToken
);
csharp
Task RegisterMember(
    Session session,
    ChatId chatId,
    ApiArray<string> supportedDecoderCodecs,
    CancellationToken cancellationToken
);
csharp
Task UnregisterMember(
    Session session,
    ChatId chatId,
    CancellationToken cancellationToken
);
csharp
Task PushStream(
    Session session,
    string chatId,
    double clientStartAt,
    VideoFormat format,
    VideoSourceKind sourceKind,
    RpcStream<VideoFrameBundle> frameStream,
    CancellationToken cancellationToken
);
csharp
Task RequestKeyFrame(
    Session session,
    string streamId,
    CancellationToken cancellationToken
);
csharp
Task ChangeRecordingQuality(
    Session session,
    RecordingQualityState? state,
    RecordingQualityInfo? info,
    CancellationToken cancellationToken
);
csharp
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.

csharp
Task<OwnVoiceStatus> GetOwnVoiceStatus(
    Session session,
    CancellationToken cancellationToken
);

Related data: OwnVoiceStatus.