Skip to main content

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

import asyncio
from marzbanapilib import MarzbanAPI

async def main():
    # Create API client
    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())

Architecture

The library is organized into modular sections:

  • user - User management operations
  • admin - Admin management operations
  • system - System statistics and configuration
  • core - Xray core management
  • node - 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

api = MarzbanAPI("http://127.0.0.1:8000", "admin", "password")
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 user
  • get_user(username) - Get user details
  • modify_user(username, data) - Modify user
  • delete_user(username) - Delete user
  • get_users(**filters) - List users with filters
  • reset_data_usage(username) - Reset user data usage
  • revoke_subscription(username) - Revoke user subscription
  • get_usage(username) - Get user usage statistics
  • And more...

System Management

  • get_stats() - Get system statistics
  • get_inbounds() - Get inbound configurations
  • get_hosts() - Get proxy hosts
  • modify_hosts(data) - Modify proxy hosts

Core Management

  • get_stats() - Get core statistics
  • restart() - Restart Xray core
  • get_config() - Get core configuration
  • modify_config(data) - Modify core configuration

Node Management

  • get_all() - List all nodes
  • create(data) - Create new node
  • get(node_id) - Get node details
  • modify(node_id, data) - Modify node
  • delete(node_id) - Delete node
  • reconnect(node_id) - Reconnect node
  • get_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


Download files

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

Source Distribution

marzbanapilib-0.1.0.tar.gz (14.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

marzbanapilib-0.1.0-py3-none-any.whl (16.5 kB view details)

Uploaded Python 3

File details

Details for the file marzbanapilib-0.1.0.tar.gz.

File metadata

  • Download URL: marzbanapilib-0.1.0.tar.gz
  • Upload date:
  • Size: 14.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for marzbanapilib-0.1.0.tar.gz
Algorithm Hash digest
SHA256 b1f1f3e56f7660491475a6cd80b524a0c712165965e94e7ca358f759ab3438c7
MD5 f4638475afb3cc383dd1eb193d4e42c1
BLAKE2b-256 581b98ec01e643b5171a65fdbd7822d53d35daf93eb8048960024a3099c6dfcd

See more details on using hashes here.

File details

Details for the file marzbanapilib-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: marzbanapilib-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 16.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for marzbanapilib-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 49b15404157e6d5844f7c387fb4f7c8259e083f7b8c0ac5d4a8db91eaa23af4d
MD5 8d91ddab9b5bcb9966d113f7e49c453b
BLAKE2b-256 3b68a76416ead9494cb38b3b49b05b20af2a4c35e9a04d28b6ac40829a452b57

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page