polyte
Unified Rust client for Polymarket APIs, combining both CLOB (trading) and Gamma (market data) APIs.
Features
- Unified access to both CLOB and Gamma APIs
- Type-safe API with idiomatic Rust patterns
- EIP-712 order signing and HMAC authentication
- Comprehensive market data and trading operations
Example
use polyte::prelude::*;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let private_key = "0x1234..."; // Load this from environment variables
// Set up credentials
let credentials = Credentials {
key: "<api_key>".to_string(),
secret: "<secret>".to_string(),
passphrase: "<passphrase>".to_string(),
};
// Create unified client
let polymarket = Polymarket::builder(private_key, credentials)
.chain(Chain::PolygonMainnet)
.build()?;
// Use Gamma API to list markets
let markets = polymarket.gamma.markets()
.list()
.active(true)
.limit(10)
.send()
.await?;
// Use CLOB API to place an order
if let Some(first_market) = markets.first() {
if let Some(token) = first_market.tokens.first() {
let order_params = CreateOrderParams {
token_id: token.token_id.clone(),
price: 0.52,
size: 100.0,
side: OrderSide::Buy,
expiration: None,
};
let response = polymarket.clob.place_order(&order_params).await?;
println!("Order placed: {:?}", response.order_id);
}
}
Ok(())
}