Skip to main content

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.meridian.xyz",
        "chain_config": {
            "rpc_url": "https://rpc.mainnet.chain.robinhood.com",
            "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.meridian.xyz",
    "chain_config": {
        "rpc_url": "https://rpc.mainnet.chain.robinhood.com",
        "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 authentication
  • base_url: API endpoint (use "https://api.meridian.xyz" for mainnet; defaults to the testnet host if omitted)
  • timeout: Request timeout in seconds
  • verbose: Enable debug logging
  • rate_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.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.meridian.xyz",
        "chain_config": {
            "rpc_url": "https://rpc.mainnet.chain.robinhood.com",
            "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.meridian.xyz",
        "chain_config": {
            "rpc_url": "https://rpc.mainnet.chain.robinhood.com",
            "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.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for meridian-exchange 0.3.0
File Size Uploaded
meridian_exchange-0.3.0.tar.gz 447.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for meridian-exchange 0.3.0
File Interpreter ABI Platform
meridian_exchange-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 597.8 kB

Release files / meridian_exchange-0.3.0.tar.gz

Download URL meridian_exchange-0.3.0.tar.gz
Size 447.6 kB
Tags Source
SHA-256 checksum
How to use checksums
3726da69a53b3c38dd5bb1749079858ac60d37f400898e7196d10ab53a07d26c
BLAKE2b-256 checksum
How to use checksums
4a27f8ba2b99d890f09a31ed4777498c3d5457f56a6c70ce0ca0b7e278f5d5ef
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.3.0-py3-none-any.whl

Download URL meridian_exchange-0.3.0-py3-none-any.whl
Size 150.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
80e04989f95ededfed87f4d27ccaa0cc026ef09b06d700db62c87d6e3a923389
BLAKE2b-256 checksum
How to use checksums
a3c0bb6a91c839d0762236fb481cf0023cb0ed01a404395e4f08e6b41351db9c
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}
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page