← Back to News
ostium-python-sdk 3.3.1

ostium-python-sdk 3.3.1

ostium-python-sdk · PyPI Skip to main content Switch to mobile version Warning Some features may not work without

JavaScript. Please try enabling it if you encounter problems. Search PyPI Search Help Docs Sponsors Log in Register Menu

Help Docs Sponsors Log in Register Search PyPI Search ostium-python-sdk 3.3.1 pip install ostium-python-sdk==3.3.1 Copy

PIP instructions Latest release Released: Jul 22, 2026 A python based SDK developed for interacting with Ostium, a

leveraged trading application for trading currencies, commodities, indices, crypto and more. Navigation Project

description Release history Download files Verified details These details have been verified by PyPI Maintainers

amiostium Unverified details These details have not been verified by PyPI Project links Homepage Meta License: MIT

License Author: ami@ostium.io Requires: Python >=3.8 Provides-Extra: dev Classifiers Development Status 3 - Alpha

Intended Audience Developers License OSI Approved :: MIT License Programming Language Python :: 3 Python :: 3.8 Report

project as malware Project description Project details Release history Download files Project description Changelog

Track all notable changes, updates, and improvements to the Ostium Python SDK in our Changelog. Ostium Python SDK A

python based SDK developed for interacting with Ostium v1 Trading Platform (https://ostium.app/) Ostium is a

decentralized perpetuals exchange on Arbitrum (Ethereum L2) with a focus on providing a seamless experience for traders

for trading currencies, commodities, indices, crypto and more. This SDK is designed to be used by developers who want to

build applications on top of Ostium and automate their trading strategies. Supported Operations Basically you can

perfrom any operation that is supported by the Ostium's web site in a programmatic way, via the SDK: Get list of feeds

and their details Create a Trade/Order Close a Trade, Partial Close a trade, Set Take Profit, Set Stop Loss Add

Colleteral, Remove Collateral Cancel an Order, Set Take Profit, Set Stop Loss, Set Entry Price Read Open Trades aka

Positions Read Open Orders (Limit, Stop) Read Order History along with their details such as Pnl, etc. Get latest price

of a feed Calculate fees such as funding rate, rollover fee, etc. Call testnet faucet to get testnet USDC tokens Read

balance of your account, usdc and native token You can check this repository -

https://github.com/0xOstium/use-ostium-python-sdk for more examples of how to use the SDK. Its shows how to create

orders, trade, set tp/sl, cancel orders, get funding rate, rollover fee, percent profit/loss etc. To use the SDK you

need to have a valid EVM private key for an account on either Arbitrum (mainnet) or Arbitrum Sepolia (testnet),

depending on which network you plan to use and supply a RPC URL, see below for more details. Installation The SDK can be

installed via pip: pip install ostium-python-sdk Running Tests First, install the package with development dependencies:

pip install -e ".[dev]" Running tests Run specific tests pytest -v tests/test_trade_liquidation_price.py pytest -v

tests/test_funding.py pytest -v tests/test_trade_get_tp_price.py pytest -v tests/test_trade_get_sl_price.py pytest -v

tests/test_current_trade_profit_p.py pytest -v tests/test_top_up_with_collateral.py pytest -v

tests/test_top_up_with_leverage.py pytest -v tests/test_remove_collateral_with_collateral.py pytest -v

tests/test_remove_collateral_from_leverage.py pytest -v tests/test_current_total_profit_p.py pytest -v

tests/test_current_trade_profit_raw.py pytest -v tests/test_current_total_profit_raw.py pytest -v

tests/test_get_trade_funding_fee.py pytest -v tests/test_get_trade_rollover_fee.py pytest -v

tests/test_get_trade_value.py pytest -v tests/test_get_opening_fee.py pytest -v

tests/test_get_pending_acc_funding_fees.py pytest -v tests/test_max_leverage.py pytest -v

tests/test_overnight_max_leverage.py pytest -v tests/test_slippage.py pytest -v tests/test_target_funding_rate.py Run

ALL tests pytest Requirements Developed using: python=3.8 SDK Instantiation You can instantiate the SDK with the

following parameters. Ostium Platform is deployed on Arbitrum. You can use the testnet or mainnet config via the

NetworkConfig class, see below for an example. from dotenv import load_dotenv from ostium_python_sdk import OstiumSDK,

NetworkConfig # Load environment variables if using .env file load_dotenv() # Get private key from environment variable

private_key = os.getenv('PRIVATE_KEY') if not private_key: raise ValueError("PRIVATE_KEY not found in .env file")

rpc_url = os.getenv('RPC_URL') if not rpc_url: raise ValueError("RPC_URL not found in .env file") # Initialize SDK

(default: verbose=False for quiet operation) configTestnet = NetworkConfig.testnet() sdk = OstiumSDK(configTestnet,

private_key, rpc_url) # For verbose mode with detailed logging: sdk = OstiumSDK(configTestnet, private_key, rpc_url,

verbose=True) NOTE: create a .env file with PRIVATE_KEY and RPC_URL to use the SDK. An RPC URL is required to use the

SDK. You can get one by signing up for a free account at https://www.alchemy.com/ and creating an app. NOTE: You can

also use the SDK without providing a private key, in which case you will be limited to read only operations on the SDK.

PRIVATE_KEY=your_private_key_here RPC_URL=https://arb-sepolia.g.alchemy.com/v2/...

#RPC_URL="https://arb-mainnet.g.alchemy.com/v2/...", your_private_key_here should be a valid EVM private key for an

account on either Arbitrum (mainnet) or Arbitrum Sepolia (testnet), depending on which network you plan to use. Make

sure to save it in a secure location, and that the .env file is not shared with anyone or committed to a public

repository (make sure you add it to .gitignore if you are pushing your code). Testnet and Fuacet to get USDC tokens As

you can see above, we show use case on testnet. In order to use Ostium on testnet, aka on Arbitrum Sepolia, you need to

get testnet USDC tokens. You can do this by using the faucet which is also available on the SDK once instantiated in

testnet config. # Get current token amount from faucet # On testnet sdk = OstiumSDK(NetworkConfig.testnet(),

private_key, rpc_url) # Check if tokens can be requested if sdk.faucet.can_request_tokens(address): # Get amount that

will be received amount = sdk.faucet.get_token_amount() print(f"Will receive {amount} tokens") # Request tokens receipt

= sdk.faucet.request_tokens() print(f"Tokens requested successfully! TX: {receipt['transactionHash'].hex()}") else:

next_time = sdk.faucet.get_next_request_time(address) print(f"Cannot request tokens yet. Next request allowed at:

{next_time}") NOTE: You will also need gas aka ethereum or native token on Arbitrum Sepolia to even be able to request

USDC tokens from the faucet or perform any write blockchain operation. You can get some native token for Arbitrum

Sepolia for free at: https://www.alchemy.com/faucets/arbitrum-sepolia (or search for "arbitrum sepolia faucet") The SDK

contains the following classes: OstiumSDK: The main class for interacting with the Ostium Platform. NetworkConfig: The

class for configuring the network. Balance: The class for interacting with the account, fetching balance, etc. available

via sdk.balance. SubgraphClient: The class for interacting with the subgraph, getting pair details, open trades, open

orders,etc. available via sdk.subgraph. Price: The class for interacting with the price, fetching latest price, etc.

available via sdk.price Ostium: The class for interacting with the Ostium Smart contracts, opening trades, updating take

profit and stop loss, closing trades, opening orders, etc. available via sdk.ostium. Faucet: The class for interacting

with the Faucet for getting testnet USDC tokens. available via sdk.faucet. Basic Usage The intraction with Ostium

platform is denoted with pair_id and trade_index. pair_id: The id of the pair, available via sdk.subgraph.get_pairs()

trade_index: The index of the trade for this trader on the pair, available via sdk.subgraph.get_open_trades() List of

available pairs (Mainnet) As of May 2025, the following pairs are available on the mainnet: ID Trading Pair Description

0 BTC-USD Bitcoin 1 ETH-USD Ethereum 2 EUR-USD Euro 3 GBP-USD British Pound 4 USD-JPY US Dollar to Japanese Yen 5

XAU-USD Gold 6 HG-USD Copper 7 CL-USD Crude Oil 8 XAG-USD Silver 9 SOL-USD Solana 10 SPX-USD S&P 500 Index 11

DJI-USD Dow Jones Industrial Average 12 NDX-USD NASDAQ-100 Index 13 NIK-JPY Nikkei 225 Index 14 FTSE-GBP FTSE 100 Index

15 DAX-EUR DAX Index 16 USD-CAD US Dollar to Canadian Dollar 17 USD-MXN US Dollar to Mexican Peso 18 NVDA-USD NVIDIA

Stock 19 GOOG-USD Alphabet (Google) Stock 20 AMZN-USD Amazon Stock 21 META-USD Meta (Facebook) Stock 22 TSLA-USD Tesla

Stock 23 AAPL-USD Apple Stock 24 MSFT-USD Microsoft Stock Usage Examples Reading available pairs / feeds from

ostium_python_sdk import OstiumSDK from dotenv import load_dotenv # Load environment variables if using .env file

load_dotenv() # Get private key from environment variable private_key = os.getenv('PRIVATE_KEY') if not private_key:

raise ValueError("PRIVATE_KEY not found in .env file") rpc_url = os.getenv('RPC_URL') if not rpc_url: raise

ValueError("RPC_URL not found in .env file") # Initialize SDK config = NetworkConfig.testnet() sdk = OstiumSDK(config,

private_key, rpc_url) # Or, initialize: # # (1) mainnet: # # config = NetworkConfig.mainnet() # sdk = OstiumSDK(config,

private_key, rpc_url) # # (2) with explicit private key & rpc url, i.e: not read from env variables # sdk =

OstiumSDK( # network="arbitrum", # private_key="your_private_key_here", # rpc_url="https://arb1.arbitrum.io/rpc...." # )

# Get all available pairs pairs = await sdk.subgraph.get_pairs() print("\nPair Information:")

print("----------------------------------------") for pair in pairs: print("----------------------------------------") #

Print all available fields in pair_details for key, value in pair.items(): print(f"{key}: {value}")

print("----------------------------------------") Opening a Trade, Reading Open Trades, Setting TP and SL, Closing a

Trade # Define trade parameters trade_params = { 'collateral': 100, # USDC amount 'leverage': 10, # Leverage multiplier

'asset_type': 0, # 0 for BTC, see pair_details above for other asset types 'direction': True, # True for Long, False for

Short 'order_type': 'MARKET' # 'MARKET', 'LIMIT', or 'STOP' #'tp': 0, # Take Profit price - if not specified or Zero

means no TP #'sl': 0, # Stop Loss price - if not specified or Zero means no SL } try:

sdk.ostium.set_slippage_percentage(1) print(f"Slippage percentage set to: {sdk.ostium.get_slippage_percentage()}%") #

Get latest price for BTC latest_price, _, _ = await sdk.price.get_price("BTC", "USD") print(f"Latest price:

{latest_price}") # Execute trade at current market price receipt = sdk.ostium.perform_trade(trade_params,

at_price=latest_price) print(f"Trade successful! Transaction hash: {receipt['transactionHash'].hex()}") # Wait for the

transaction to be confirmed await asyncio.sleep(10) # Get public address from private key account =

Account.from_key(private_key) trader_public_address = account.address # Get the trade details open_trades = await

sdk.subgraph.get_open_trades(trader_public_address) for trade_index, trade_data in enumerate(open_trades): print(f"Trade

{trade_index + 1}: {trade_data}\n") if len(open_trades) == 0: print( "No open trades found. Maybe the trade failed?

enough USDC and ETH in the account?") else: opened_trade = open_trades[len(open_trades) - 1] print(f"Opened trade:

{opened_trade}\n") sdk.ostium.update_tp( opened_trade['pair']['id'], opened_trade['index'], latest_price * 1.02)

print(f"Trade Take Profit set to 2% above the current price!\n") await asyncio.sleep(10) sdk.ostium.update_sl(

opened_trade['pair']['id'], opened_trade['index'], latest_price * 0.99) print(f"Trade Stop Loss set to 1% below the

current price!\n") await asyncio.sleep(10) receipt = sdk.ostium.close_trade( opened_trade['pair']['id'],

opened_trade['index']) print( f"Closed trade! Transaction hash: {receipt['transactionHash'].hex()}\n") except Exception

as e: print(f"Trade failed: {str(e)}") NOTE: Use SDK method get_open_trade_metrics every so often while trade is open to

get the trade's metrics such as: Funding fee Roll over fee Unrealized Pnl and Pnl Percent Total Profit Liquidation Price

metrics = await sdk.get_open_trade_metrics(pair_id, trade_index) print(metrics) Create a Short ETH Limit Order This

example shows how to create a short ETH limit order, 10% above the current ETHUSD price. So if price goes up 10% we

order a Short ETH trade. # Get private key from environment variable private_key = os.getenv('PRIVATE_KEY') if not

private_key: raise ValueError("PRIVATE_KEY not found in .env file") rpc_url = os.getenv('RPC_URL') if not rpc_url: raise

ValueError("RPC_URL not found in .env file") # Initialize SDK config = NetworkConfig.testnet() sdk = OstiumSDK(config,

private_key, rpc_url) # Define trade parameters order_params = { 'collateral': 10, # USDC amount 'leverage': 50, #

Leverage multiplier 'asset_type': 1, # 1 for ETH 'direction': False, # True for Long, False for Short 'order_type':

'LIMIT' # 'MARKET', 'LIMIT', or 'STOP' } try: # Get latest price for ETH latest_price, _, _ = await

sdk.price.get_price("ETH", "USD") print(f"Latest price: {latest_price}") # Execute LIMIT trade order at 10% above the

current price receipt = sdk.ostium.perform_trade(order_params, at_price=latest_price * 1.1) print( f"Order successful!

Transaction hash: {receipt['transactionHash'].hex()}") # Wait for the order to be confirmed await asyncio.sleep(10) #

Get public address from private key account = Account.from_key(private_key) trader_public_address = account.address #

Get the order details open_orders = await sdk.subgraph.get_orders(trader_public_address) for order_index, order_data in

enumerate(open_orders): print(f"Order {order_index + 1}: {order_data}\n") limit_type, _, _, _, _, _, _, pairIndex,

index, _, _ = get_order_details(order_data) print(f"You can cancel_limit_order / update_limit_order using pair_id:

{pairIndex} and index: {index}\n") receipt = sdk.ostium.cancel_limit_order(pairIndex, index) print( f"Limit Order

cancelled! Transaction hash: {receipt['transactionHash'].hex()}") if len(open_orders) == 0: print( "No open order found.

Maybe the order failed? enough USDC and ETH in the account?") else: opened_order = open_orders[len(open_orders) - 1]

print(f"Opened order: {opened_order}\n") except Exception as e: print(f"Order failed: {str(e)}") NOTE: Similiarly you

can create a Stop order, just use 'STOP' as the order_type and make sure at_price is set to an acceptable stop loss

price. Example Usage Scripts More examples can be found in the examples folder. Get Testnet USDC from Faucet To get

testnet USDC tokens (only available on Arbitrum Sepolia testnet): python examples/example-faucet-request.py See

example-faucet-request.py for an example of how to use the faucet to get testnet USDC tokens. Read Block Number To run

the example: python examples/example-read-block-number.py See example-read-block-number.py for an example of how to use

the SDK. Read Positions To run the example: python examples/example-read-positions.py See example-read-positions.py for

an example of how to use the SDK. Get Feed Prices To open a trade you need the latest feed price. See this example

script on how to get the latest feed prices. python examples/example-get-prices.py See example-get-prices.py for an

example of how to use the SDK. Get Balance of an Address See this example script on how to get the latest feed prices.

python examples/example-get-balance.py See example-get-balance.py for an example of how to use the SDK. Run an example

from local install pip uninstall ostium-python-sdk && pip install -e . && python

examples/example-pairs-details.py Project details Verified details These details have been verified by PyPI Maintainers

amiostium Unverified details These details have not been verified by PyPI Project links Homepage Meta License: MIT

License Author: ami@ostium.io Requires: Python >=3.8 Provides-Extra: dev Classifiers Development Status 3 - Alpha

Intended Audience Developers License OSI Approved :: MIT License Programming Language Python :: 3 Python :: 3.8 Release

history Release notifications | RSS feed This version 3.3.1 Jul 22, 2026 3.3.0 Jul 9, 2026 3.2.1 May 3, 2026 3.2.0 Apr

27, 2026 3.1.1 May 3, 2026 3.1.0 Feb 15, 2026 3.0.1 Dec 11, 2025 3.0.0 Oct 15, 2025 2.0.22 Oct 15, 2025 2.0.21 Sep 5,

2025 2.0.20 Aug 27, 2025 2.0.19 Aug 25, 2025 2.0.18 Jun 23, 2025 2.0.17 Jun 3, 2025 2.0.16 May 31, 2025 2.0.15 May 28,

2025 2.0.14 May 28, 2025 2.0.13 May 28, 2025 2.0.12 May 28, 2025 2.0.11 May 28, 2025 2.0.10 May 27, 2025 2.0.6 May 27,

2025 2.0.5 May 26, 2025 2.0.4 May 26, 2025 2.0.3 Mar 6, 2025 2.0.2 Mar 6, 2025 2.0.1 Mar 5, 2025 2.0.0 Mar 4, 2025

0.2.107 Feb 27, 2025 0.2.106 Feb 27, 2025 0.2.105 Feb 27, 2025 0.2.104 Feb 27, 2025 0.2.103 Feb 27, 2025 0.2.101 Feb 27,

2025 0.2.100 Feb 26, 2025 0.2.1 Feb 21, 2025 0.2.0 Feb 20, 2025 0.1.42 Jan 14, 2025 0.1.41 Jan 14, 2025 0.1.40 Jan 14,

2025 0.1.38 Jan 14, 2025 0.1.37 Jan 14, 2025 0.1.36 Jan 14, 2025 0.1.35 Jan 14, 2025 0.1.34 Jan 14, 2025 0.1.33 Jan 14,

2025 0.1.32 Jan 13, 2025 0.1.31 Jan 13, 2025 0.1.29 Jan 13, 2025 0.1.28 Jan 13, 2025 0.1.27 Jan 13, 2025 0.1.25 Jan 13,

2025 0.1.24 Jan 9, 2025 0.1.23 Jan 6, 2025 0.1.22 Jan 6, 2025 0.1.21 Jan 6, 2025 0.1.20 Jan 6, 2025 0.1.19 Jan 6, 2025

0.1.18 Jan 6, 2025 0.1.16 Jan 6, 2025 0.1.15 Jan 2, 2025 0.1.13 Jan 2, 2025 0.1.12 Jan 2, 2025 0.1.11 Jan 2, 2025 0.1.10

Jan 2, 2025 0.1.9 Jan 2, 2025 0.1.8 Jan 2, 2025 0.1.7 Jan 2, 2025 0.1.6 Jan 2, 2025 0.1.5 Jan 2, 2025 0.1.4 Jan 2, 2025

0.1.3 Jan 2, 2025 Download files Download the file for your platform. If you're not sure which to choose, learn more

about installing packages. Source Distribution ostium_python_sdk-3.3.1.tar.gz (81.9 kB view details) Uploaded Jul 22,

2026 Source 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. The dropdown lists show the available interpreters, ABIs, and platforms.

Enable javascript to be able to filter the list of wheel files. Copy a direct link to the current filters Copy File name

Interpreter Interpreter py3 ABI ABI none Platform Platform any ostium_python_sdk-3.3.1-py3-none-any.whl (85.4 kB view

details) Uploaded Jul 22, 2026 Python 3 File details Details for the file ostium_python_sdk-3.3.1.tar.gz. File metadata

Download URL: ostium_python_sdk-3.3.1.tar.gz Upload date: Jul 22, 2026 Size: 81.9 kB Tags: Source Uploaded using Trusted

Publishing? No Uploaded via: twine/6.2.0 CPython/3.13.12 File hashes Hashes for ostium_python_sdk-3.3.1.tar.gz Algorithm

Hash digest SHA256 de1ac915768f6eeda3670c9b85d97857c7bfcc1cd08d3cbfc80ce59caf866416 Copy MD5

c1cb1958b8c0476825f6d153807210cb Copy BLAKE2b-256 b3a70452100cdb1b6814afcc05105806423b558bdee0d7b76ef44c88b8a73085 Copy

See more details on using hashes here. File details Details for the file ostium_python_sdk-3.3.1-py3-none-any.whl. File

metadata Download URL: ostium_python_sdk-3.3.1-py3-none-any.whl Upload date: Jul 22, 2026 Size: 85.4 kB Tags: Python 3

Uploaded using Trusted Publishing? No Uploaded via: twine/6.2.0 CPython/3.13.12 File hashes Hashes for

ostium_python_sdk-3.3.1-py3-none-any.whl Algorithm Hash digest SHA256

568b98d793275ef906d6bc820d24ad4c28e5ae8fff7f38fa1feabda8b499d60e Copy MD5 a60783de507c0f63beb6ee76d300be4b Copy

BLAKE2b-256 51847ec454aa0705b32c8dfeb9625b99831f1210dfbdb2017c9302cbe5f76c04 Copy See more details on using hashes here.

Help Installing packages Uploading packages User guide Project name retention FAQs About PyPI PyPI Blog Infrastructure

dashboard Statistics Logos & trademarks Our sponsors Contributing to PyPI Bugs and feedback Contribute on GitHub

Translate PyPI Sponsor PyPI Development credits Using PyPI Terms of Service Report security issue Code of conduct

Privacy Notice Acceptable Use Policy Status: all systems operational Developed and maintained by the Python community,

for the Python community. Donate today! "PyPI", "Python Package Index", and the blocks logos are registered trademarks

of the Python Software Foundation. © 2026 Python Software Foundation Site map Deployed from 0809a22 Switch to desktop

version English español français 日本語 português (Brasil) українська Ελληνικά Deutsch 中文

(简体) 中文 (繁體) русский עברית Esperanto 한국어 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

Source: pypi.org