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 (Polymarket V2 — pUSD settlement)
# NOTE: V2 settles in pUSD (Polymarket's ERC-20 collateral token).
# Wallets must hold pUSD before trading. The SDK only supports V2 orders
# (signatureType=3 + non-zero timestamp).
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",
# V2 order fields (signatureType=3 with non-zero timestamp)
"timestamp": "1714400000", # unix seconds when the order was signed
"metadata": "0x0000000000000000000000000000000000000000000000000000000000000000",
"builder": "0x0000000000000000000000000000000000000000000000000000000000000000",
"signature": "0x...",
"salt": 599228746038,
"signatureType": 3, # 3 = Deposit wallet (Polymarket V2 / POLY_1271)
},
})
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",
# For Polymarket deposit wallets, pass signature_type=3 so the backend
# stores the credential under the POLY_1271 / V2 path.
# signature_type=3,
)
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 credentialsupdate_agent_sol_address()- Update agentsol_addressfor Kalshi flows
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.
Metadata
Release files for aion-sdk 0.16.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| aion_sdk-0.16.0.tar.gz | 53.3 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| aion_sdk-0.16.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 85.1 kB
Release files / aion_sdk-0.16.0.tar.gz
| Download URL | aion_sdk-0.16.0.tar.gz |
|---|---|
| Size | 53.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
30f0e50a11700372f978a19b74ec7d269495f11aeffe582748f38fd3947b4d47
|
|
BLAKE2b-256 checksum How to use checksums |
3b810f4122ad6226d893518c08473cfd71f0d27d0c7d38d25bdd6ae583091465
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.4
|
Release files / aion_sdk-0.16.0-py3-none-any.whl
| Download URL | aion_sdk-0.16.0-py3-none-any.whl |
|---|---|
| Size | 31.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1473891ef883171a65b05a1938c126683c2737e2666ea7473706e0cb6e5a76e9
|
|
BLAKE2b-256 checksum How to use checksums |
bc6ccdad04cece5ed976cb51bab0923b5a67de5345514ec2f182e05d55a97ceb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.4
|
Security for aion-sdk 0.16.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.