phone.joinGroupCall

Join any group call type ». Conference calls additionally require the E2E joining flow ».

The params field must contain a join payload generated by the local tgcalls group-call engine. It contains a random non-zero audio ssrc, ICE ufrag and pwd, DTLS fingerprints, and, when publishing video, ssrc-groups.

For example, a join payload without published video has the following shape:

{
  "ssrc": 123456789,
  "ufrag": "...",
  "pwd": "...",
  "fingerprints": [{
    "hash": "sha-256",
    "fingerprint": "...",
    "setup": "passive"
  }]
}

When joining an RTMP-mode call, generate the payload without published video source groups.

updatesTooLong#e317af7e = Updates;
updateShortMessage#313bc7f8 flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:int user_id:long message:string pts:int pts_count:int date:int fwd_from:flags.2?MessageFwdHeader via_bot_id:flags.11?long reply_to:flags.3?MessageReplyHeader entities:flags.7?Vector<MessageEntity> ttl_period:flags.25?int = Updates;
updateShortChatMessage#4d6deea5 flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:int from_id:long chat_id:long message:string pts:int pts_count:int date:int fwd_from:flags.2?MessageFwdHeader via_bot_id:flags.11?long reply_to:flags.3?MessageReplyHeader entities:flags.7?Vector<MessageEntity> ttl_period:flags.25?int = Updates;
updateShort#78d4dec1 update:Update date:int = Updates;
updatesCombined#725b04c3 updates:Vector<Update> users:Vector<User> chats:Vector<Chat> date:int seq_start:int seq:int = Updates;
updates#74ae4240 updates:Vector<Update> users:Vector<User> chats:Vector<Chat> date:int seq:int = Updates;
updateShortSentMessage#9015e101 flags:# out:flags.1?true id:int pts:int pts_count:int date:int media:flags.9?MessageMedia entities:flags.7?Vector<MessageEntity> ttl_period:flags.25?int = Updates;
---functions---
phone.joinGroupCall#8fb53057 flags:# muted:flags.0?true video_stopped:flags.2?true call:InputGroupCall join_as:InputPeer invite_hash:flags.1?string public_key:flags.3?int256 block:flags.3?bytes params:DataJSON = Updates;

Parameters

Name Type Description
flags # Flags, see TL conditional fields
muted flags.0?true Join muted; required for live story listeners and RTMP-mode viewers
video_stopped flags.2?true Join with video disabled; required for live story listeners and RTMP-mode viewers
call InputGroupCall Group call to join
join_as InputPeer Join the group call, presenting yourself as the specified user/channel; this peer is also used as the author of in-call messages in normal video chats/livestreams. Only video chats/livestreams may use another peer; this field must be equal to inputPeerSelf when joining live stories » or conference calls ».
invite_hash flags.1?string The invitation hash from the invite link », if provided allows speaking in a livestream or muted group call (video chats/livestreams » only, cannot be used by live stories » or conference calls »).
public_key flags.3?int256 For conference calls » only, your public key.
block flags.3?bytes The main-chain block that adds the joining user », only for conference calls ».
params DataJSON Join payload generated by the local tgcalls group-call engine, as described above

Result

Updates

Only users can use this method

Possible errors

Code Type Description
400 CHAT_ADMIN_REQUIRED You must be an admin in this chat to do this.
403 CHAT_WRITE_FORBIDDEN You can't write in this chat.
400 DATA_JSON_INVALID The provided JSON data is invalid.
500 GROUPCALL_ADD_PARTICIPANTS_FAILED  
403 GROUPCALL_FORBIDDEN The group call has already ended.
400 GROUPCALL_INVALID The specified group call is invalid.
400 GROUPCALL_SSRC_DUPLICATE_MUCH The app needs to retry joining the group call with a new SSRC value.
400 JOIN_AS_PEER_INVALID The specified peer cannot be used to join a group call.
400 PUBLIC_KEY_INVALID The specified e2e public key is invalid.

Related pages

inputPeerSelf

Defines the current user.

Group calls

How to start, join and manage group calls and video chats.

Deep links

Telegram clients must handle special tg:// and t.me deep links encountered in messages, link entities and in other apps by registering OS handlers.

E2E Group Calls

End-to-end encryption used for Telegram group voice and video calls, using a blockchain for state management.