Python SDK for AI Agent trading on prediction markets (Polymarket MVP)
Project description
AION SDK (MVP)
Python SDK for AI Agent trading operations on Polymarket and Kalshi prediction markets.
Features
- 🤖 Agent Management - Register, authenticate, and manage AI agents
- 📊 Market Operations - Search markets, get prices, access briefings and context
- 💳 Wallet Management - Register and verify Polymarket CLOB credentials
- 💹 Trading - Execute trades, manage orders, claim rewards
- 🌤️ Kalshi BYOW - Quote -> local sign -> submit flow via DFlow
- 🔐 Type-Safe - Full type hints with Python 3.9+ support
- 📦 Lightweight - Minimal dependencies (only requests)
Installation
From PyPI (recommended)
pip install aion-sdk
From GitHub (development)
git clone https://github.com/aionmarket/aion-sdk.git
cd aion-sdk
pip install -e .
For Development
pip install -e ".[dev]"
Quick Start
Basic Usage
from aion_sdk import AionMarketClient
# Initialize client
client = AionMarketClient()
# Register a new agent
registration = client.register_agent("my-trading-bot")
print(f"Agent API Key: {registration['apiKeyCode']}")
# Use authenticated client
api_key = registration['apiKeyCode']
client_auth = AionMarketClient(api_key=api_key)
# Get agent info
agent_info = client_auth.get_me()
print(f"Agent: {agent_info}")
Trading Example
from aion_sdk import AionMarketClient
client = AionMarketClient(api_key="your-api-key")
# Search for markets
markets = client.get_markets(q="bitcoin", limit=5)
print(f"Found {len(markets)} markets")
# Get market context before trading
if markets:
market_id = markets[0]['id']
context = client.get_market_context(market_id, user="0x...")
print(f"Market: {context['name']}")
print(f"Your position: {context['myPosition']}")
print(f"Suggested risk limit: {context['riskLimit']}")
# Place a trade
result = client.trade({
"venue": "polymarket",
"isLimitOrder": True,
"marketConditionId": "0x...",
"marketQuestion": "Will BTC close above 80k on Friday?",
"orderSize": 10,
"price": 0.65,
"outcome": "YES",
"reasoning": "Short-term momentum + options skew support YES",
"source": "sdk:example",
"skillSlug": "example-skill",
"order": {
"maker": "0x...",
"signer": "0x...",
"taker": "0x0000000000000000000000000000000000000000",
"tokenId": "69136365945621600854789649488423522395843457249417452310260493085275775221076",
"makerAmount": "6500000",
"takerAmount": "10000000",
"side": "BUY",
"expiration": "0",
"nonce": "0",
"feeRateBps": "0",
"signature": "0x...",
"salt": 599228746038,
"signatureType": 0,
},
})
print(f"Order placed: {result['orderId']}")
# Get open orders
open_orders = client.get_open_orders()
print(f"Open orders: {len(open_orders)}")
# Cancel an order
cancel_result = client.cancel_order(order_id=result.get('orderId', ''))
print(f"Cancelled: {cancel_result['success']}")
Wallet Credentials
from aion_sdk import AionMarketClient
client = AionMarketClient(api_key="your-api-key")
# Check if credentials are registered
wallet = "0x1234..."
check = client.check_wallet_credentials(wallet)
if not check['hasCredentials']:
# Register credentials
result = client.register_wallet_credentials(
wallet_address=wallet,
api_key="polymarket-api-key",
api_secret="polymarket-api-secret",
api_passphrase="polymarket-passphrase"
)
print(f"Credentials registered: {result['success']}")
Configuration
Base URL
The client defaults to production (https://api.aionmarket.com/bvapi). For staging, set the base URL:
client = AionMarketClient(
api_key="your-api-key",
base_url="https://pm-t1.bxingupdate.com/bvapi"
)
Timeout
Customize request timeout (default 20 seconds):
client = AionMarketClient(api_key="your-api-key", timeout=30)
Supported Endpoints
Agent Management
register_agent()- Register new agentget_me()- Get current agent infoget_settings()/update_settings()- Risk control settingsget_skills()- Available agent skills
Market Data
get_markets()- Search marketsget_market()- Get market details by IDcheck_market_exists()- Verify market existsget_prices_history()- Historical price dataget_briefing()- Agent briefing with alerts and recommendationsget_market_context()- Pre-trade market assessmentget_closed_positions()- Closed positions by walletget_current_positions()- Current positions by wallet (venue=polymarketorkalshi)
Wallet Management
check_wallet_credentials()- Verify registered credentialsregister_wallet_credentials()- Register Polymarket CLOB credentials
Trading Operations
trade()- Execute market orderget_open_orders()- List pending ordersget_order_history()- Order history with filtersget_order_detail()- Specific order detailscancel_order()- Cancel single ordercancel_all_orders()- Cancel all ordersredeem()- Claim market settlement rewardskalshi_quote()- Create Kalshi quote (unsigned transaction)kalshi_submit()- Submit signed Kalshi transaction
Error Handling
from aion_sdk import AionMarketClient, ApiError
client = AionMarketClient(api_key="your-api-key")
try:
result = client.get_me()
except ApiError as e:
print(f"API Error: {e.message}")
print(f"Status Code: {e.status_code}")
print(f"Error Code: {e.code}")
print(f"Raw Body: {e.response_body}")
Notes:
- SDK no longer strips response envelopes (
success/data). You get the full JSON payload. - For non-2xx responses,
ApiError.response_bodycontains raw backend error JSON (for exampledetail,fix,hint,x402_url). - You can call
client.request(method, path, params=..., json=...)for passthrough access.
Project Structure
aion-sdk/
├── src/
│ └── aion_sdk/
│ ├── __init__.py # Package exports
│ └── client.py # Main API client
├── tests/ # Test suite
├── pyproject.toml # Project metadata and dependencies
├── README.md # This file
└── LICENSE # MIT License
Development
Setup Development Environment
git clone https://github.com/aionmarket/aion-sdk.git
cd aion-sdk
pip install -e ".[dev]"
Run Tests
pytest
pytest --cov # with coverage
Code Quality
black src/ # format code
isort src/ # sort imports
mypy src/ # type checking
flake8 src/ # linting
Documentation
For detailed API documentation, visit: https://docs.aionmarket.com
Support
- 📧 Email: support@aionmarket.com
- 🐛 Issues: https://github.com/aionmarket/aion-sdk/issues
- 💬 Discussions: https://github.com/aionmarket/aion-sdk
License
MIT License - see LICENSE file for details
Contributing
Contributions are welcome! Please submit issues and pull requests via GitHub.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
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.
Copy a direct link to the current filters
File details
Details for the file aion_sdk-0.3.0.tar.gz.
File metadata
- Download URL: aion_sdk-0.3.0.tar.gz
- Upload date:
- Size: 19.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f3f04b96da152ee8c1006a6fad45c60e747ea63d19df3734f719d16cf037d5bd
|
|
| MD5 |
4fa76480d476a8bdf147a7c5f95480cf
|
|
| BLAKE2b-256 |
b1ce255b132ca1e5f077b477978a2b85cfd63216ac91f7a8f6fd693737001c55
|
File details
Details for the file aion_sdk-0.3.0-py3-none-any.whl.
File metadata
- Download URL: aion_sdk-0.3.0-py3-none-any.whl
- Upload date:
- Size: 12.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1e280e02d3610ce562053c90dda008de8998793d4a4d5f91a654f06e91f35e2d
|
|
| MD5 |
e2ca6b7d650dc9088dbfdee946252907
|
|
| BLAKE2b-256 |
cd35d14a2922134b1f9d891cbf30c82e8e04e35450466657e0c9d46aebd1d669
|