Interface: Participant
Participant payload for REST API flow:
chat.addParticipants(POST /chats/{id}/participants)chat.sendMessage(POST /chats/{id}/messages —participants[]on new chats)chat.create(POST /chats —participants[]on creation)
Lenient: backend only requires id; everything else is optional and
sanitized server-side (see components/schemas/ParticipantInput in
openapi.yml). If you're building a signed iframe URL instead, use
UrlRecipient — that flow has stricter rules.
Properties
email?
optionalemail?:string
id
id:
string
is_bot?
optionalis_bot?:boolean
Marks the participant as a bot. Only read when this call creates the user — for someone the backend already knows the field is ignored, so the flag cannot be turned around later.
link?
optionallink?:string
name?
optionalname?:string
picture?
optionalpicture?:string
rights?
optionalrights?:object
Per-chat right overrides applied when the participant is attached
(booleans + edit_messages/delete_messages/pin_messages enums —
same shape as updateParticipantRights). Read back via
getParticipantRights.
can_press_buttons?
optionalcan_press_buttons?:boolean|null
create_pool?
optionalcreate_pool?:boolean|null
delete_messages?
optionaldelete_messages?:"none"|"my"|"any"|null
edit_messages?
optionaledit_messages?:"none"|"my"|"any"|null
kick_users?
optionalkick_users?:boolean|null
leave_chats?
optionalleave_chats?:boolean|null
participate_pool?
optionalparticipate_pool?:boolean|null
pin_messages?
optionalpin_messages?:"none"|"for_me"|"for_everyone"|null
react_messages?
optionalreact_messages?:boolean|null
send_audio?
optionalsend_audio?:boolean|null
send_documents?
optionalsend_documents?:boolean|null
send_location?
optionalsend_location?:boolean|null
send_messages?
optionalsend_messages?:boolean|null
send_photos?
optionalsend_photos?:boolean|null
send_read_state?
optionalsend_read_state?:boolean|null
send_typing?
optionalsend_typing?:boolean|null
send_voices?
optionalsend_voices?:boolean|null
track_presence?
optionaltrack_presence?:boolean|null
track_read_state?
optionaltrack_read_state?:boolean|null