This release is a pre-release and may not be stable for production use.
Meridian Python SDK
A Python library for interacting with the Meridian trading platform. This SDK provides tools for trading, managing positions, and accessing market data.
SDK Documentation
For full documentation, visit the documentation site.
View the source code on PyPI.
Installation
Using uv (Recommended)
uv is a fast Python package installer and resolver:
# Install uv if you don't have it
curl -LsSf https://astral.sh/uv/install.sh | sh
# Install the SDK
uv add meridian-exchange
Using pip
pip install meridian-exchange
uvloop installs automatically on CPython for macOS/Linux; Windows and other platforms fall back to asyncio.
Quick Start
The SDK provides two client types:
AsyncRESTClient (Recommended for new applications):
import asyncio
from decimal import Decimal
from meridian import AsyncRESTClient
async def main():
client = await AsyncRESTClient.create({
"base_url": "https://api.testnet.meridian.xyz",
"chain_config": {
"rpc_url": "https://rpc.testnet.meridian.xyz",
"private_key": "your_private_key", # optional - required for trading
}
})
# Get market data
products = await client.list_products()
product_ids = [p.id for p in products]
prices = await client.list_market_prices(product_ids=product_ids)
# Place an order (requires private key)
await client.create_order(
order_type="LIMIT",
quantity=Decimal("1.0"),
side=0, # 0 for buy, 1 for sell
price=Decimal("100.0"),
ticker="BTCUSD"
)
await client.close()
asyncio.run(main())
RESTClient (Synchronous):
from decimal import Decimal
from meridian import RESTClient
client = RESTClient({
"base_url": "https://api.testnet.meridian.xyz",
"chain_config": {
"rpc_url": "https://rpc.testnet.meridian.xyz",
"private_key": "your_private_key", # optional - required for trading
}
})
# Get market data
products = client.list_products()
# Place an order (requires private key)
order = client.create_order(
order_type="LIMIT",
quantity=Decimal("1.0"),
side=0,
price=Decimal("100.0"),
ticker="BTCUSD"
)
Main Features
Market Data
- List available trading products
- Get current market prices
- View market order book
- Track funding rates
Trading
- Place market and limit orders
- Cancel orders
- View order history
- Track trades and fills
Account Management
- Manage subaccounts
- View positions
- Track token balances
- Handle deposits and withdrawals
WebSocket Support
- Real-time market data and order updates via WebSocket
- See the WebSocket guide for setup and usage
Configuration
The SDK can be configured with these options:
private_key: Your private key for authenticationbase_url: API endpoint (default: "https://api.testnet.meridian.xyz")timeout: Request timeout in secondsverbose: Enable debug loggingrate_limit_headers: Enable rate limit headers
The SDK automatically enables uvloop on supported platforms and transparently falls back to the built-in asyncio loop elsewhere.
Examples
Get Market Data
async def get_market_data():
client = await AsyncRESTClient.create({"base_url": "https://api.testnet.meridian.xyz"})
# List all available products
products = await client.list_products()
# Get current prices
all_product_ids = [product.id for product in products]
prices = await client.list_market_prices(product_ids=all_product_ids)
# View market liquidity
products_by_ticker = await client.products_by_ticker()
btc_product_id = products_by_ticker['BTCUSD'].id
liquidity = await client.get_market_liquidity(product_id=btc_product_id)
await client.close()
asyncio.run(get_market_data())
Manage Orders
async def manage_orders():
config = {
"base_url": "https://api.testnet.meridian.xyz",
"chain_config": {
"rpc_url": "https://rpc.testnet.meridian.xyz",
"private_key": "your_private_key"
}
}
client = await AsyncRESTClient.create(config)
# Place a limit order
order = await client.create_order(
order_type="LIMIT",
quantity=Decimal("1.0"),
side=0,
price=Decimal("100.0"),
ticker="BTCUSD"
)
# Cancel an order
subaccounts = await client.subaccounts()
await client.cancel_orders(
order_ids=["<uuid of order>"],
sender=client.chain.address,
subaccount=subaccounts[0].name
)
# View order history
subaccount_id = subaccounts[0].id
orders = await client.list_orders(subaccount_id=subaccount_id)
await client.close()
asyncio.run(manage_orders())
Account Operations
async def account_operations():
config = {
"base_url": "https://api.testnet.meridian.xyz",
"chain_config": {
"rpc_url": "https://rpc.testnet.meridian.xyz",
"private_key": "your_private_key"
}
}
client = await AsyncRESTClient.create(config)
# List subaccounts
subaccounts = await client.subaccounts()
# View positions
positions = await client.list_positions(subaccount_id=subaccounts[0].id)
# Get token balances
balances = await client.get_subaccount_balances(subaccount_id=subaccounts[0].id)
await client.close()
asyncio.run(account_operations())
Meridian Documentation
For full documentation, visit our documentation site.
Support
For issues and questions, please refer to the project's issue tracker or documentation.
Metadata
Release files for meridian-exchange 0.1.0a9
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| meridian_exchange-0.1.0a9.tar.gz | 446.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| meridian_exchange-0.1.0a9-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 686.8 kB
Release files / meridian_exchange-0.1.0a9.tar.gz
| Download URL | meridian_exchange-0.1.0a9.tar.gz |
|---|---|
| Size | 446.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2b3f8f59641d4792bb6b9384176a331b58a6a8d77f30007fd45a998379ada25d
|
|
BLAKE2b-256 checksum How to use checksums |
50dc377f21cf90a6ddb99c9dee525076b4abbda60eee8fa796c4270e62042ca3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / meridian_exchange-0.1.0a9-py3-none-any.whl
| Download URL | meridian_exchange-0.1.0a9-py3-none-any.whl |
|---|---|
| Size | 240.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
496c9bf3998e67775c60b97764b8f2c85fe9dec89dc9181ab5681066ba079677
|
|
BLAKE2b-256 checksum How to use checksums |
6fc4c04b777ad50f7506591c3b91d7361ffc638ca77b390520b377dddf413fc1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|