Skip to main content

Official Python client for the Synthetix V4 perpetual futures exchange — REST + WebSocket, EIP-712 signing built in

Project description

synthetix-sdk

The official Python client for the Synthetix V4 perpetual futures exchange. Provides REST and WebSocket access for market data, trading, and account management, with EIP-712 signing built in.

Full API docs: developers.synthetix.io.

Get going in 30 seconds with Claude Code

The fastest way to try the SDK is the bundled Claude Code skill. Clone the repo, run /synthetix in a Claude Code session, and Claude will set up the environment, write and run example scripts, and explain the SDK as you go — no reading docs first.

git clone https://github.com/Synthetixio/synthetix-sdk
cd synthetix-sdk

Then in Claude Code:

/synthetix stream live prices for ETH-USDT
/synthetix place a limit order
/synthetix check my open positions
/synthetix watch my positions in real time

Claude does the wiring — .venv setup, dependency install, script generation, running, and walking you through the output. Pass any natural-language goal after the slash command.

Installation

To use the SDK in your own project:

pip install synthetix-sdk

Three runtime dependencies: requests, eth-account, websockets. Python 3.10+.

Quick Start

from synthetix import Synthetix

# Public market data — no private key needed
snx = Synthetix()
markets = snx.get_markets()
for m in markets:
    print(m["symbol"], m["description"])

# Authenticated — required for trading and account queries
snx = Synthetix(private_key="0x...")
print(snx.get_positions())
print(snx.get_portfolio())

For WebSocket streaming and async trading:

import asyncio
from synthetix import Synthetix

async def main():
    snx = Synthetix(private_key="0x...")

    # Stream real-time prices (no auth required)
    sub = await snx.subscribe(
        "marketPrices",
        lambda d: print(d),
        symbol="ETH-USDT",
    )

    # Place an order over WebSocket
    result = await snx.ws_place_order(
        symbol="BTC-USDT",
        side="buy",
        amount="0.001",
        price="90000",
    )

    await asyncio.sleep(10)
    await snx.unsubscribe(sub)
    await snx.close()

asyncio.run(main())

Features

Market data (public, no key required)

  • List markets, fees, funding rates, open interest
  • Tickers, mark prices, mids
  • Order books at multiple depths
  • Recent trades, candles, funding rate history

Trading

  • Market, limit (GTC/GTD/IOC/post-only), TWAP, stop-loss, and take-profit orders
  • Modify and cancel orders (single, batch, by client order ID, or all)
  • Update leverage per market
  • Schedule deferred cancellations as a kill-switch

Account management

  • Positions, P&L, balance, portfolio, performance history
  • Trade and order history, open orders, fills
  • Funding payments and rate-limit status
  • Sub-accounts: create, query, transfer collateral
  • Delegated signers for ops accounts

WebSocket (async)

  • Live subscriptions: prices, orderbook (snapshot/diff/managed), trades, positions, orders, fills, balances
  • WS-native trading methods (ws_place_order, ws_cancel_order, ws_modify_order, …) — same signing, lower latency than REST
  • Auto-reconnect with auth re-handshake and subscription replay
  • Per-callback error handlers; sync and async callbacks both supported

Configuration

Synthetix(
    private_key=None,        # Omit for read-only mode
    subaccount_id=None,      # Auto-discovered if not set
    rest_url=None,           # Override REST URL (defaults to production)
    ws_url=None,             # Override WebSocket URL (defaults to production)
    timeout=None,            # Request timeout in seconds
    expires_after_ms=60000,  # Signed-message expiry window
)

URL overrides also read from REST_URL_OVERRIDE / WS_URL_OVERRIDE env vars. Defaults: https://papi.synthetix.io/v1 and wss://papi.synthetix.io/v1/ws.

Examples

The repo includes standalone scripts for every endpoint under examples/rest/ and examples/ws/. Each is runnable on its own:

# Market data (no key)
python examples/rest/fetch-markets.py
python examples/rest/fetch-orderbook.py

# Trading (requires PRIVATE_KEY env var)
python examples/rest/create-limit-gtc-order.py
python examples/rest/cancel-order.py

# WebSocket
python examples/ws/async-watch-ticker.py
python examples/ws/async-market-order.py
python examples/ws/async-watch-positions.py

API reference

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

synthetix_sdk-0.1.2.tar.gz (38.8 kB view details)

Uploaded Source

Built Distribution

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

synthetix_sdk-0.1.2-py3-none-any.whl (44.4 kB view details)

Uploaded Python 3

File details

Details for the file synthetix_sdk-0.1.2.tar.gz.

File metadata

  • Download URL: synthetix_sdk-0.1.2.tar.gz
  • Upload date:
  • Size: 38.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.3.3 CPython/3.12.13 Linux/6.17.0-1010-azure

File hashes

Hashes for synthetix_sdk-0.1.2.tar.gz
Algorithm Hash digest
SHA256 e57c8059707d7216f877d2aab3af6639fab0e8c31a5e17507f9919a4f6b9ece3
MD5 58f0f6627752e2fb3497f8079f52cd76
BLAKE2b-256 20a082085443c8928fe18ab49c68e7418105f19bee390c42a2c219f5285038fd

See more details on using hashes here.

File details

Details for the file synthetix_sdk-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: synthetix_sdk-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 44.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.3.3 CPython/3.12.13 Linux/6.17.0-1010-azure

File hashes

Hashes for synthetix_sdk-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 4803dc7b83de2801aa384a2fc7aa6736b878f4b217172f1e7cf0cd0404644a7c
MD5 11447b5add1babe017e2086df9be8af9
BLAKE2b-256 ed0eb9272b478c396975485e0dff7b6baec96099db3230cf6f0471e8433669fa

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