A modern async Python client library for Marzban VPN panel API
Project description
MarzbanAPILib
A modern, async Python client library for interacting with Marzban VPN panel API.
Features
- 🚀 Async/await support - Built with modern Python async patterns
- 📦 Modular design - Organized into logical sections for better maintainability
- 🔐 Type hints - Full type annotation for better IDE support
- ⚡ Simple & intuitive - Easy to use API interface
- 🛡️ Error handling - Comprehensive error handling with meaningful messages
- 📚 Well documented - Detailed documentation for all methods
Installation
Install using pip:
pip install marzbanapilib
Quick Start
Authentication with Username/Password
import asyncio
from marzbanapilib import MarzbanAPI
async def main():
# Create API client using username and password
async with MarzbanAPI(
base_url="http://127.0.0.1:8000",
username="admin",
password="password"
) as api:
# Get system statistics
stats = await api.system.get_stats()
print(f"Total users: {stats['total_user']}")
# Create a new user
user = await api.user.create_user({
"username": "test_user",
"proxies": {"vmess": {}, "vless": {}},
"expire": 0, # No expiration
"data_limit": 0 # Unlimited
})
print(f"Created user: {user['username']}")
# Run the async function
asyncio.run(main())
Authentication with Access Token
import asyncio
from marzbanapilib import MarzbanAPI
async def main():
# Use pre-existing access token (no username/password needed)
async with MarzbanAPI(
base_url="http://127.0.0.1:8000",
access_token="your_jwt_token_here"
) as api:
# Get system statistics
stats = await api.system.get_stats()
print(f"Total users: {stats['total_user']}")
asyncio.run(main())
Architecture
The library is organized into modular sections:
user- User management operationsadmin- Admin management operationssystem- System statistics and configurationcore- Xray core managementnode- Multi-node management
Using Sections
async with MarzbanAPI(...) as api:
# User operations
await api.user.create_user(...)
await api.user.get_users()
await api.user.reset_data_usage("username")
# System operations
await api.system.get_stats()
await api.system.get_inbounds()
# Core operations
await api.core.restart()
await api.core.get_config()
# Node operations
await api.node.get_all()
await api.node.create(...)
Advanced Usage
Manual Authentication
# With username/password
api = MarzbanAPI("http://127.0.0.1:8000", "admin", "password")
await api.authenticate()
# Or with access token
api = MarzbanAPI("http://127.0.0.1:8000", access_token="your_jwt_token")
await api.authenticate()
# Use the API
users = await api.user.get_users()
# Don't forget to close
await api.close()
Error Handling
from marzbanapilib import MarzbanAPI
async with MarzbanAPI(...) as api:
try:
user = await api.user.get_user("nonexistent")
except ValueError as e:
print(f"User not found: {e}")
except httpx.HTTPStatusError as e:
print(f"HTTP error: {e}")
Filtering Users
# Get active users with pagination
users = await api.user.get_users(
offset=0,
limit=50,
status="active",
sort="created_at"
)
API Reference
User Management
create_user(data)- Create new userget_user(username)- Get user detailsmodify_user(username, data)- Modify userdelete_user(username)- Delete userget_users(**filters)- List users with filtersreset_data_usage(username)- Reset user data usagerevoke_subscription(username)- Revoke user subscriptionget_usage(username)- Get user usage statistics- And more...
System Management
get_stats()- Get system statisticsget_inbounds()- Get inbound configurationsget_hosts()- Get proxy hostsmodify_hosts(data)- Modify proxy hosts
Core Management
get_stats()- Get core statisticsrestart()- Restart Xray coreget_config()- Get core configurationmodify_config(data)- Modify core configuration
Node Management
get_all()- List all nodescreate(data)- Create new nodeget(node_id)- Get node detailsmodify(node_id, data)- Modify nodedelete(node_id)- Delete nodereconnect(node_id)- Reconnect nodeget_usage()- Get nodes usage statistics
Requirements
- Python 3.7+
- httpx
- pydantic
- aiofiles
License
This project is licensed under the MIT License - see the LICENSE file for details.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Support
For issues and feature requests, please use the GitHub issue tracker.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file marzbanapilib-0.2.0.tar.gz.
File metadata
- Download URL: marzbanapilib-0.2.0.tar.gz
- Upload date:
- Size: 15.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3aaacb5759385927c25b858b13adc6e48e72e3b8d7e90dfb680ed9ce00ad1035
|
|
| MD5 |
0fef1ef3e0f447bd615265619e872a83
|
|
| BLAKE2b-256 |
6145b5e2041ef58c127344120fbbcff68dea1c632eed59a4da0fea732ce69278
|
File details
Details for the file marzbanapilib-0.2.0-py3-none-any.whl.
File metadata
- Download URL: marzbanapilib-0.2.0-py3-none-any.whl
- Upload date:
- Size: 16.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e4bd927356defcff7bacb90f8b78319ccc02bc54d15c8bbcdf4c7fa60cb87f22
|
|
| MD5 |
8e42d87a30b75fda78638e1cf1666c85
|
|
| BLAKE2b-256 |
467f9a549cc4e144af8eefeb09d6beaf69c6f582f429e0c275210863a90cad8f
|