API Reference

Delta Chat JSON-RPC high-level API

class deltachat_rpc_client.Account(manager: DeltaChat, id: int)[source]

Delta Chat account.

wait_for_event() AttrDict[source]

Wait until the next event and return it.


Removes all queued-up events for a given account. Useful for tests.

remove() None[source]

Remove the account.

start_io() None[source]

Start the account I/O.

stop_io() None[source]

Stop the account I/O.

get_info() AttrDict[source]

Return dictionary of this account configuration parameters.

get_size() int[source]

Get the combined filesize of an account in bytes.

is_configured() bool[source]

Return True if this account is configured.

set_config(key: str, value: str | None = None) None[source]

Set configuration value.

get_config(key: str) str | None[source]

Get configuration value.

update_config(**kwargs) None[source]

update config values.

set_avatar(img_path: str | None = None) None[source]

Set self avatar.

Passing None will discard the currently set avatar.

get_avatar() str | None[source]

Get self avatar.


Start I/O and wait until IMAP becomes IDLE.

create_contact(obj: int | str | Contact, name: str | None = None) Contact[source]

Create a new Contact or return an existing one.

Calling this method will always result in the same underlying contact id. If there already is a Contact with that e-mail address, it is unblocked and its display name is updated if specified.

  • obj – email-address or contact id.

  • name – (optional) display name for this contact.

get_contact_by_id(contact_id: int) Contact[source]

Return Contact instance for the given contact ID.

get_contact_by_addr(address: str) Contact | None[source]

Check if an e-mail address belongs to a known and unblocked contact.

get_blocked_contacts() list[AttrDict][source]

Return a list with snapshots of all blocked contacts.

get_chat_by_contact(contact: int | Contact) Chat | None[source]

Return 1:1 chat for a contact if it exists.

get_contacts(query: str | None = None, with_self: bool = False, verified_only: bool = False, snapshot: bool = False) list[Contact] | list[AttrDict][source]

Get a filtered list of contacts.

  • query – if a string is specified, only return contacts whose name or e-mail matches query.

  • with_self – if True the self-contact is also included if it matches the query.

  • only_verified – if True only return verified contacts.

  • snapshot – If True return a list of contact snapshots instead of Contact instances.

property self_contact: Contact

This account’s identity as a Contact.

get_chatlist(query: str | None = None, contact: Contact | None = None, archived_only: bool = False, for_forwarding: bool = False, no_specials: bool = False, alldone_hint: bool = False, snapshot: bool = False) list[Chat] | list[AttrDict][source]

Return list of chats.

  • query – if a string is specified only chats matching this query are returned.

  • contact – if a contact is specified only chats including this contact are returned.

  • archived_only – if True only archived chats are returned.

  • for_forwarding – if True the chat list is sorted with “Saved messages” at the top and without “Device chat” and contact requests.

  • no_specials – if True archive link is not added to the list.

  • alldone_hint – if True the “all done hint” special chat will be added to the list as needed.

  • snapshot – If True return a list of chat snapshots instead of Chat instances.

create_group(name: str, protect: bool = False) Chat[source]

Create a new group chat.

After creation, the group has only self-contact as member and is in unpromoted state.

get_chat_by_id(chat_id: int) Chat[source]

Return the Chat instance with the given ID.

secure_join(qrdata: str) Chat[source]

Continue a Setup-Contact or Verified-Group-Invite protocol started on another device.

The function returns immediately and the handshake runs in background, sending and receiving several messages. Subsequent calls of secure_join() will abort previous, unfinished handshakes. See https://securejoin.delta.chat/ for protocol details.


qrdata – The text of the scanned QR code.

get_qr_code() tuple[str, str][source]

Get Setup-Contact QR Code text and SVG data.

this data needs to be transferred to another Delta Chat account in a second channel, typically used by mobiles with QRcode-show + scan UX.

get_message_by_id(msg_id: int) Message[source]

Return the Message instance with the given ID.

mark_seen_messages(messages: list[Message]) None[source]

Mark the given set of messages as seen.

delete_messages(messages: list[Message]) None[source]

Delete messages (local and remote).

get_fresh_messages() list[Message][source]

Return the list of fresh messages, newest messages first.

This call is intended for displaying notifications. If you are writing a bot, use get_fresh_messages_in_arrival_order() instead, to process oldest messages first.

get_next_messages() list[Message][source]

Return a list of next messages.

wait_next_messages() list[Message][source]

Wait for new messages and return a list of them.


Wait for incoming message event and return it.


Wait for incoming message and return it.

Consumes all events before the next incoming message event.

get_fresh_messages_in_arrival_order() list[Message][source]

Return fresh messages list sorted in the order of their arrival, with ascending IDs.

export_backup(path, passphrase: str = '') None[source]

Export backup.

import_backup(path, passphrase: str = '') None[source]

Import backup.

export_self_keys(path) None[source]

Export keys.

import_self_keys(path) None[source]

Import keys.

class deltachat_rpc_client.AttrDict(*args, **kwargs)[source]

Dictionary that allows accessing values using the “dot notation” as attributes.

class deltachat_rpc_client.Bot(account: Account, hooks: Iterable[tuple[Callable, type | EventFilter]] | None = None, logger: logging.Logger | None = None)[source]

Simple bot implementation that listens to events of a single account.

class deltachat_rpc_client.Chat(account: Account, id: int)[source]

Chat object which manages members and through which you can send and retrieve messages.

delete() None[source]

Delete this chat and all its messages.


  • does not delete messages on server

  • the chat or contact is not blocked, new message will arrive

block() None[source]

Block this chat.

accept() None[source]

Accept this contact request chat.

leave() None[source]

Leave this chat.

mute(duration: int | None = None) None[source]

Mute this chat, if a duration is not provided the chat is muted forever.


duration – mute duration from now in seconds. Must be greater than zero.

unmute() None[source]

Unmute this chat.

pin() None[source]

Pin this chat.

unpin() None[source]

Unpin this chat.

archive() None[source]

Archive this chat.

unarchive() None[source]

Unarchive this chat.

set_name(name: str) None[source]

Set name of this chat.

set_ephemeral_timer(timer: int) None[source]

Set ephemeral timer of this chat in seconds.

0 means the timer is disabled, use 1 for immediate deletion.

get_encryption_info() str[source]

Return encryption info for this chat.

get_qr_code() tuple[str, str][source]

Get Join-Group QR code text and SVG data.

get_basic_snapshot() AttrDict[source]

Get a chat snapshot with basic info about this chat.

get_full_snapshot() AttrDict[source]

Get a full snapshot of this chat.

can_send() bool[source]

Return true if messages can be sent to the chat.

send_message(text: str | None = None, html: str | None = None, viewtype: ViewType | None = None, file: str | None = None, location: tuple[float, float] | None = None, override_sender_name: str | None = None, quoted_msg: int | Message | None = None) Message[source]

Send a message and return the resulting Message instance.

send_text(text: str) Message[source]

Send a text message and return the resulting Message instance.


Send a file and return the resulting Message instance.

send_videochat_invitation() Message[source]

Send a videochat invitation and return the resulting Message instance.

send_sticker(path: str) Message[source]

Send an sticker and return the resulting Message instance.

forward_messages(messages: list[Message]) None[source]

Forward a list of messages to this chat.

set_draft(text: str | None = None, file: str | None = None, quoted_msg: int | None = None, viewtype: str | None = None) None[source]

Set draft message.

remove_draft() None[source]

Remove draft message.

get_draft() AttrDict | None[source]

Get draft message.

get_messages(info_only: bool = False, add_daymarker: bool = False) list[Message][source]

get the list of messages in this chat.

get_fresh_message_count() int[source]

Get number of fresh messages in this chat

mark_noticed() None[source]

Mark all messages in this chat as noticed.

add_contact(*contact: int | str | Contact) None[source]

Add contacts to this group.

remove_contact(*contact: int | str | Contact) None[source]

Remove members from this group.

get_contacts() list[Contact][source]

Get the contacts belonging to this chat.

For single/direct chats self-address is not included.

set_image(path: str) None[source]

Set profile image of this chat.


path – Full path of the image to use as the group image.

remove_image() None[source]

Remove profile image of this chat.

get_locations(contact: Contact | None = None, timestamp_from: 'datetime' | None = None, timestamp_to: 'datetime' | None = None) list[AttrDict][source]

Get list of location snapshots for the given contact in the given timespan.

send_contact(contact: Contact)[source]

Send contact to the chat.

class deltachat_rpc_client.Client(account: Account, hooks: Iterable[tuple[Callable, type | EventFilter]] | None = None, logger: logging.Logger | None = None)[source]

Simple Delta Chat client that listen to events of a single account.

add_hook(hook: ~typing.Callable, event: type | ~deltachat_rpc_client.events.EventFilter = <class 'deltachat_rpc_client.events.RawEvent'>) None[source]

Register hook for the given event filter.

remove_hook(hook: Callable, event: type | EventFilter) None[source]

Unregister hook from the given event filter.

run_forever() None[source]

Process events forever.

run_until(func: Callable[[AttrDict], bool]) AttrDict[source]

Process events until the given callable evaluates to True.

The callable should accept an AttrDict object representing the last processed event. The event is returned when the callable evaluates to True.

class deltachat_rpc_client.Contact(account: Account, id: int)[source]

Contact API.

Essentially a wrapper for RPC, account ID and a contact ID.

block() None[source]

Block contact.

unblock() None[source]

Unblock contact.

delete() None[source]

Delete contact.

set_name(name: str) None[source]

Change the name of this contact.

get_encryption_info() str[source]

Get a multi-line encryption info, containing your fingerprint and the fingerprint of the contact.

get_snapshot() AttrDict[source]

Return a dictionary with a snapshot of all contact properties.

create_chat() Chat[source]

Create or get an existing 1:1 chat for this contact.

class deltachat_rpc_client.DeltaChat(rpc: Rpc)[source]

Delta Chat accounts manager. This is the root of the object oriented API.

add_account() Account[source]

Create a new account database.

get_all_accounts() list[Account][source]

Return a list of all available accounts.

start_io() None[source]

Start the I/O of all accounts.

stop_io() None[source]

Stop the I/O of all accounts.

maybe_network() None[source]

Indicate that the network likely has come back or just that the network conditions might have changed.

get_system_info() AttrDict[source]

Get information about the Delta Chat core in this system.

set_translations(translations: dict[str, str]) None[source]

Set stock translation strings.

class deltachat_rpc_client.EventType(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[source]

Core event types

class deltachat_rpc_client.Message(account: Account, id: int)[source]

Delta Chat Message object.

send_reaction(*reaction: str) Message[source]

Send a reaction to this message.

get_snapshot() AttrDict[source]

Get a snapshot with the properties of this message.

get_reactions() AttrDict | None[source]

Get message reactions.

mark_seen() None[source]

Mark the message as seen.

send_webxdc_status_update(update: dict | str, description: str) None[source]

Send a webxdc status update. This message must be a webxdc.

wait_until_delivered() None[source]

Consume events until the message is delivered.

class deltachat_rpc_client.SpecialContactId(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[source]
deltachat_rpc_client.run_bot_cli(hooks: Iterable[Tuple[Callable, type | EventFilter]] | None = None, argv: list | None = None, **kwargs) None[source]

Run a simple bot command line using the given hooks.

Extra keyword arguments are passed to the internal Rpc object.

deltachat_rpc_client.run_client_cli(hooks: Iterable[Tuple[Callable, type | EventFilter]] | None = None, argv: list | None = None, **kwargs) None[source]

Run a simple command line app, using the given hooks.

Extra keyword arguments are passed to the internal Rpc object.