Skip to main content
Help us improve Python packaging – donate today!

A Python client for the Ejabberd XMLRPC API

Project Description

docs Documentation Status
CircleCI Build Status Coverage Status Scrtinizer Status
package Requirements Status PyPI Package latest release PyPI Package monthly downloads PyPI Wheel
compatibility Supported python versions Supported imlementations Supported ejabberd versions

A Python client for the Ejabberd XMLRPC API

  • Free software: MIT license


pip install pyejabberd


A big thanks to the contributors:


from pyejabberd import EjabberdAPIClient

# Create a client and authenticate with elevated user ''
client = EjabberdAPIClient(host='localhost', port=5222, username='bob', password='p@$$wd', user_domain='',

# Test the connection by sending an echo request to the server
sentence = 'some random data'
result = client.echo(sentence)
assert result == sentence

# Get a list of users that are on the server
registered_users = client.registered_users('')
# result is in the format [{'username': 'bob', ...}]

# Register a new user
client.register(user='alice', host='', password='@l1cepwd')

# Change a password
client.change_password(user='alice', host='', newpass='newpwd')

# Verify password
assert client.check_password_hash(user='bob', host='', password='newpwd') is True

# Set nickname
client.set_nickname(user='bob', host='', nickname='Bob the builder')

# Get Bob's contacts
client.get_roster(user='bob', host='')

# Add Alice to Bob's contact group Friends
client.add_rosteritem(localuser='bob', localserver='', user='alice', server='', nick='Alice from Wonderland', group='Friends', subs='both')

# Delete Alice from Bob's contacts
client.delete_rosteritem(localuser='bob', localserver='', user='alice', server='')

# Get list of *all* connected users

# Get list of *all* connected users and information about their sessions

# Get number of connected users

# Get information for all sessions for a user
client.user_sessions_info(user="jim", host=""):

# Get muc rooms
muc_online_rooms = client.muc_online_rooms()
# result is in the format ['room1@conference', ...] where 'conference' is the muc service name

# Create a muc room
client.create_room(name='room1', service='conference', host='')

# Get room options
room_options = client.get_room_options(name='room1', service='conference')

# Set room option
from pyejabberd.muc.enums import MUCRoomOption
client.change_room_option(name='room1', service='conference', option=MUCRoomOption.public, value=False)
client.change_room_option(name='room1', service='conference', option=MUCRoomOption.members_only, value=True)

# Set room affiliation
from pyejabberd.muc.enums import Affiliation
client.set_room_affiliation(name='room1', service='conference', jid='', affiliation=Affiliation.member)

# Get room affiliations
affiliations = client.get_room_affiliations(name='room1', service='conference')

# Destroy a muc room
client.destroy_room(name='room1', service='conference', host='')

# Unregister a user
client.unregister(user='alice', host='')


To run the all tests run:



0.2.11 (2016-03-09)

  • Updated “enum34” version requirement

0.2.10 (2015-09-16)

  • Added API: add_rosteritem
  • Added API: delete_rosteritem
  • Added API: get_roster

0.2.9 (2015-08-12)

  • Bugfix and small improvements

0.2.8 (2015-08-03)

  • Added testing against Ejabberd 15.07

0.2.7 (2015-07-28)

  • Added API: connected_users
  • Added API: connected_users_info
  • Added API: connected_users_number
  • Added API: user_sessions_info

0.2.6 (2015-07-14)

  • Added API: set_room_affiliation
  • Added API: get_room_affiliations

0.2.5 (2015-07-07)

  • Python 2/3 compatibility
  • Fixed failing build

0.2.4 (2015-07-06)

  • Made constructor more strict (no more kwargs)
  • Added optional function to create a client instance from a service url, compliant with the ‘12factor app’ idea

0.2.3 (2015-06-18)

  • Improved test suite
  • Made some enums more explicit
  • Aligned MUC room options with currently supported options in Ejabberd, build from master branch

0.2.2 (2015-05-25)

  • Cleanup and more tests

0.2.1 (2015-05-25)

  • Refactored method validator/serializer system

0.2.0 (2015-05-20)

  • Big refactor, interface changed to better match the ejabberdctl interface.

0.1.2 (2015-05-16)

  • Fixed build scripts.

0.1.1 (2015-05-16)

  • Some bugfixes.

0.1.0 (2015-05-16)

  • First release on PyPI.

Release history Release notifications

This version
History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
pyejabberd-0.2.11-py2.py3-none-any.whl (19.5 kB) Copy SHA256 hash SHA256 Wheel 3.4 Mar 9, 2016
pyejabberd-0.2.11.tar.gz (24.5 kB) Copy SHA256 hash SHA256 Source None Mar 9, 2016

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page