Client struct.
Identity Methods
inbox_id()
Get the client’s inbox ID.
Returns: InboxIdRef<'_> - Reference to the inbox ID string
Source: crates/xmtp_mls/src/client.rs:280
installation_public_key()
Get the client’s installation public key (also called installation_id).
Returns: InstallationId - Public key bytes identifying this installation
Source: crates/xmtp_mls/src/client.rs:276
identity()
Get a reference to the client’s identity.
Returns: &Identity - Reference to the identity object
Source: crates/xmtp_mls/src/client.rs:520
register_identity(signature_request)
Register the client’s identity on the network.
Signed request containing identity updates to publish
Result<(), ClientError>
Source: crates/xmtp_mls/src/client.rs:875
Process:
- Checks if already registered (crash recovery)
- Generates and stores key package locally
- Validates signatures without network pollution
- Uploads key package to network
- Publishes identity update
- Fetches and stores identity in local database
- Marks identity as ready
inbox_state(refresh_from_network)
Get the association state for the client’s inbox.
If true, fetch latest state from network. If false, use local database.
Result<AssociationState, ClientError>
Source: crates/xmtp_mls/src/client.rs:369
inbox_addresses(refresh_from_network, inbox_ids)
Get association states for multiple inboxes.
Whether to fetch from network
List of inbox IDs to query
Result<Vec<AssociationState>, ClientError>
Source: crates/xmtp_mls/src/client.rs:387
find_inbox_id_from_identifier(conn, identifier)
Look up an inbox ID by blockchain address or other identifier.
Database connection
Account identifier (address, etc.)
Result<Option<String>, ClientError>
Source: crates/xmtp_mls/src/client.rs:310
inbox_sequence_id(conn)
Get the highest sequence_id from the local database for the client’s inbox.
Database connection
Result<i64, StorageError>
Source: crates/xmtp_mls/src/client.rs:359
Note: May not be consistent with network state.
fetch_inbox_updates_count(refresh_from_network, inbox_ids)
Get total number of inbox updates for specified inboxes.
Whether to refresh from network first
Inbox IDs to check
Result<HashMap<InboxId, u32>, ClientError>
Source: crates/xmtp_mls/src/client.rs:409
fetch_own_inbox_updates_count(refresh_from_network)
Get total number of inbox updates for the client’s own inbox.
Whether to refresh from network
Result<u32, ClientError>
Source: crates/xmtp_mls/src/client.rs:426
inbox_creation_signature_kind(inbox_id, refresh_from_network)
Get the signature type used to create an inbox.
Inbox ID to check
Whether to fetch updates from network first
Result<Option<SignatureKind>, ClientError>
Some(SignatureKind)- The signature kind usedNone- Inbox doesn’t exist or creation info unavailable
crates/xmtp_mls/src/client.rs:448
Group Management
create_group(permissions_policy_set, opts)
Create a new group with default or custom settings.
Custom permissions policy. Uses default if None.
Group metadata options (name, image, etc.)
Result<MlsGroup<Context>, ClientError>
Source: crates/xmtp_mls/src/client.rs:539
Requirements: Must call register_identity() first.
create_group_with_members(inbox_ids, permissions_policy_set, opts)
Create a group and immediately add members.
Inbox IDs of members to add
Custom permissions policy
Group metadata options
Result<MlsGroup<Context>, ClientError>
Source: crates/xmtp_mls/src/client.rs:582
create_group_with_identifiers(account_identifiers, permissions_policy_set, opts)
Create a group and add members by their account identifiers.
Account identifiers (addresses, etc.) of members
Custom permissions policy
Group metadata options
Result<MlsGroup<Context>, ClientError>
Source: crates/xmtp_mls/src/client.rs:569
Note: Looks up inbox IDs for each identifier before adding.
find_or_create_dm(inbox_id, opts)
Find existing DM or create new one with the specified inbox.
Target inbox ID
DM metadata options
Result<MlsGroup<Context>, ClientError>
Source: crates/xmtp_mls/src/client.rs:648
find_or_create_dm_by_identity(target_identity, opts)
Find or create DM by account identifier.
Account identifier of target
DM metadata options
Result<MlsGroup<Context>, ClientError>
Source: crates/xmtp_mls/src/client.rs:627
Note: Returns error if no inbox found for the identifier.
group(group_id)
Look up a group by its ID.
Group ID bytes
Result<MlsGroup<Context>, ClientError>
Source: crates/xmtp_mls/src/client.rs:678
stitched_group(group_id)
Look up a group by ID while stitching duplicate DMs.
Group ID bytes
Result<MlsGroup<Context>, ClientError>
Source: crates/xmtp_mls/src/client.rs:688
Note: For DMs, may return a different group ID if this DM has been superseded.
dm_group_from_target_inbox(target_inbox_id)
Look up an active DM by the target’s inbox ID.
Target inbox ID
Result<MlsGroup<Context>, ClientError>
Source: crates/xmtp_mls/src/client.rs:731
find_groups(args)
Query for groups with optional filters.
Query arguments:
allowed_states: Filter by membership statescreated_after_ns: Filter by creation timecreated_before_ns: Filter by creation timelimit: Maximum number of resultsconsent_states: Filter by consent statusconversation_type: Filter by type (DM, Group, etc.)
Result<Vec<MlsGroup<Context>>, ClientError>
Source: crates/xmtp_mls/src/client.rs:809
list_conversations(args)
List conversations with last message and metadata.
Query arguments (same as find_groups)
Result<Vec<ConversationListItem<Context>>, ClientError>
Source: crates/xmtp_mls/src/client.rs:816
Note: Defaults to ordering by last activity.
find_duplicate_dms_for_group(group_id)
Find all duplicate DMs for a given group.
Group ID to check
Result<Vec<MlsGroup<Context>>, ClientError>
Source: crates/xmtp_mls/src/client.rs:706
group_disappearing_settings(group_id)
Get message disappearing settings for a group.
Group ID
Result<Option<MessageDisappearingSettings>, ClientError>
Source: crates/xmtp_mls/src/client.rs:718
Message Methods
message(message_id)
Look up a message by its ID.
Message ID bytes
Result<StoredGroupMessage, ClientError>
Source: crates/xmtp_mls/src/client.rs:754
message_v2(message_id)
Look up and enrich a message by ID.
Message ID bytes
Result<DecodedMessage, ClientError>
Source: crates/xmtp_mls/src/client.rs:762
Note: Returns enriched message with decoded content.
delete_message(message_id)
Delete a message by its ID.
Message ID bytes
Result<usize, ClientError> - Number of messages deleted (0 or 1)
Source: crates/xmtp_mls/src/client.rs:783
Note: Idempotent - doesn’t error if message not found.
Synchronization
sync_welcomes()
Download all unread welcome messages and create groups.
Returns: Result<Vec<MlsGroup<Context>>, GroupError>
Source: crates/xmtp_mls/src/client.rs:985
Note: Ignores malformed messages. Returns newly created groups.
sync_all_groups(groups)
Sync specified groups to receive latest messages.
Groups to sync
Result<GroupSyncSummary, GroupError>
Source: crates/xmtp_mls/src/client.rs:994
sync_all_welcomes_and_groups(consent_states)
Sync welcomes and then sync all groups.
Filter groups by consent state
Result<GroupSyncSummary, GroupError>
Source: crates/xmtp_mls/src/client.rs:1006
sync_all_welcomes_and_device_sync_groups()
Sync welcomes and device sync groups (preferences).
Returns: Result<GroupSyncSummary, ClientError>
Source: crates/xmtp_mls/src/client.rs:1016
wait_for_sync_worker_init()
Wait until the sync worker is initialized and running.
Returns: (async fn)
Source: crates/xmtp_mls/src/client.rs:262
Consent State
set_consent_states(records)
Set consent records in the local database.
Consent records to store
Result<(), ClientError>
Source: crates/xmtp_mls/src/client.rs:469
Note: Broadcasts changes to sync workers.
get_consent_state(entity_type, entity)
Get the consent state for an entity.
Type of entity (Address, InboxId, ConversationId)
Entity identifier
Result<ConsentState, ClientError>
Source: crates/xmtp_mls/src/client.rs:496
Network Queries
can_message(account_identifiers)
Check if account identifiers can receive messages.
Account identifiers to check
Result<HashMap<Identifier, bool>, ClientError>
Source: crates/xmtp_mls/src/client.rs:1074
get_key_packages_for_installation_ids(installation_ids)
Fetch current key packages from the network.
Installation IDs to fetch key packages for
Result<HashMap<Vec<u8>, Result<VerifiedKeyPackageV2, KeyPackageVerificationError>>, ClientError>
Source: crates/xmtp_mls/src/client.rs:969
validate_credential_against_network(conn, credential, installation_pub_key)
Validate a credential against the network.
Database connection
Credential bytes to validate
Installation public key to verify
Result<InboxId, ClientError>
Source: crates/xmtp_mls/src/client.rs:1049
Key Package Management
queue_key_rotation()
Schedule key rotation to occur soon (within 5 seconds).
Returns: Result<(), ClientError>
Source: crates/xmtp_mls/src/client.rs:945
rotate_and_upload_key_package()
Generate and upload a new key package, replacing the old one.
Returns: Result<(), ClientError>
Source: crates/xmtp_mls/src/client.rs:955
Note: Should be run after receiving welcome messages.
Database Management
db()
Get a reference to the database query interface.
Returns: <Context::Db as XmtpDb>::DbQuery
Source: crates/xmtp_mls/src/client.rs:286
release_db_connection()
Release the client’s database connection pool.
Returns: Result<(), ClientError>
Source: crates/xmtp_mls/src/client.rs:511
reconnect_db()
Reconnect to the database and restart workers.
Returns: Result<(), ClientError>
Source: crates/xmtp_mls/src/client.rs:255
Context Access
identity_updates()
Get an IdentityUpdates service instance.
Returns: IdentityUpdates<&Context>
Source: crates/xmtp_mls/src/client.rs:197
mls_store()
Get an MlsStore instance.
Returns: MlsStore<Context>
Source: crates/xmtp_mls/src/client.rs:201
scw_verifier()
Get the smart contract signature verifier.
Returns: Arc<Box<dyn SmartContractSignatureVerifier>>
Source: crates/xmtp_mls/src/client.rs:205
version_info()
Get the client’s version information.
Returns: &VersionInfo
Source: crates/xmtp_mls/src/client.rs:209
device_sync_client()
Get a device sync client instance.
Returns: DeviceSyncClient<Context>
Source: crates/xmtp_mls/src/client.rs:301
device_sync_worker_enabled()
Check if device sync worker is enabled.
Returns: bool
Source: crates/xmtp_mls/src/client.rs:297
Statistics (when API client implements HasStats)
api_stats()
Get API call statistics.
Returns: ApiStats
Source: crates/xmtp_mls/src/client.rs:219
identity_api_stats()
Get identity API statistics.
Returns: IdentityStats
Source: crates/xmtp_mls/src/client.rs:223
clear_stats()
Clear all API statistics.
Source: crates/xmtp_mls/src/client.rs:227
sync_metrics()
Get sync worker metrics.
Returns: Option<Arc<WorkerMetrics<SyncMetric>>>
Source: crates/xmtp_mls/src/client.rs:266
