Expand description
§Polymarket SDK
A comprehensive Rust SDK for Polymarket prediction markets.
§Attribution
Parts of this SDK are derived from official Polymarket open-source projects:
- Builder API signing: Derived from
polymarket-rs-sdk - API patterns: Inspired by
py-clob-clientandclob-client
§Features
- Market Discovery - Query markets, events, and metadata
- Real-time Data - WebSocket streams for trades and order books
- Order Management - Create, sign, and submit orders
- Authentication - EIP-712 and HMAC-based auth
- Safe Wallet - Gnosis Safe proxy wallet integration
§Quick Start
ⓘ
use polymarket_sdk::prelude::*;
#[tokio::main]
async fn main() -> Result<()> {
// Market discovery (no auth required)
let client = GammaClient::new(Default::default())?;
let markets = client.get_markets(None).await?;
println!("Found {} markets", markets.len());
Ok(())
}§Module Organization
core- Error handling and endpoint configurationtypes- Common types (Side, Market, Order, etc.)auth- Authentication (EIP-712, HMAC, Builder API)client- REST API clients (Gamma, Data, CLOB, Profiles)order- Order creation and signingstream- WebSocket streaming (RTDS, CLOB WSS)safe- Safe wallet deployment and management
Re-exports§
pub use core::AuthErrorKind;pub use core::MarketDataErrorKind;pub use core::OrderErrorKind;pub use core::StreamErrorKind;pub use core::CLOB_API_BASE;pub use core::CLOB_WSS_BASE;pub use core::DATA_API_BASE;pub use core::GAMMA_API_BASE;pub use core::PROFILES_API_BASE;pub use core::RELAYER_API_BASE;pub use core::RTDS_WSS_BASE;pub use core::Endpoints;pub use core::Error;pub use core::PolymarketError;pub use core::Result;pub use types::ApiCredentials;pub use types::BiggestWinner;pub use types::BiggestWinnersQuery;pub use types::BookLevel;pub use types::ClosedPosition;pub use types::ConnectionStats;pub use types::DataApiActivity;pub use types::DataApiPosition;pub use types::DataApiTrade;pub use types::DataApiTrader;pub use types::Event;pub use types::EventMarket;pub use types::LeaderboardEntry;pub use types::ListParams;pub use types::Market;pub use types::MarketOrderArgs;pub use types::NewOrder;pub use types::NewOrderData;pub use types::OrderOptions;pub use types::OrderType;pub use types::PaginationParams;pub use types::SearchEvent;pub use types::SearchProfile;pub use types::SearchRequest;pub use types::SearchResponse;pub use types::SearchTag;pub use types::Side;pub use types::SignedOrderRequest;pub use types::Tag;pub use types::Token;pub use types::TraderProfile;pub use types::ExtraOrderArgs;authpub use auth::build_clob_auth_typed_data;authpub use auth::build_hmac_signature;authpub use auth::build_hmac_signature_from_string;authpub use auth::create_l1_headers;authpub use auth::create_l2_headers;authpub use auth::create_l2_headers_with_address;authpub use auth::create_l2_headers_with_body_string;authpub use auth::get_current_unix_time_secs;authpub use auth::sign_clob_auth_message;authpub use auth::sign_order_message;authpub use auth::BuilderApiKeyCreds;authpub use auth::BuilderSigner;authpub use auth::ClobAuth;authpub use auth::Headers;authpub use auth::Order;authpub use client::ApiKeyResponse;clientpub use client::CancelResponse;clientpub use client::ClobClient;clientpub use client::ClobConfig;clientpub use client::DataClient;clientpub use client::DataConfig;clientpub use client::DeriveApiKeyResponse;clientpub use client::GammaClient;clientpub use client::GammaConfig;clientpub use client::OpenOrder;clientpub use client::OrderResponse;clientpub use client::PaginatedResponse;clientpub use client::ProfilesClient;clientpub use client::ProfilesConfig;clientpub use order::get_contract_config;orderpub use order::ContractConfig;orderpub use order::OrderArgs;orderpub use order::OrderBuilder;orderpub use order::SigType;orderpub use stream::LastTradeMessage;streampub use stream::MarketBook;streampub use stream::MarketStream;streampub use stream::MockStream;streampub use stream::PriceChangeEntry;streampub use stream::PriceChangeMessage;streampub use stream::RtdsClient;streampub use stream::RtdsConfig;streampub use stream::RtdsEvent;streampub use stream::RtdsMessage;streampub use stream::RtdsSubscription;streampub use stream::RtdsSubscriptionMessage;streampub use stream::StreamManager;streampub use stream::StreamMessage;streampub use stream::StreamStats;streampub use stream::Subscription;streampub use stream::TickSizeChangeMessage;streampub use stream::TradePayload;streampub use stream::WebSocketStream;streampub use stream::WssAuth;streampub use stream::WssMarketClient;streampub use stream::WssMarketEvent;streampub use stream::WssStats;streampub use stream::WssSubscription;streampub use stream::WssUserClient;streampub use stream::WssUserEvent;streampub use stream::WssUserOrderMessage;streampub use stream::WssUserTradeMessage;streampub use safe::build_ctf_approve_typed_data;safepub use safe::build_safe_create_typed_data;safepub use safe::build_safe_tx_request;safepub use safe::build_token_approve_typed_data;safepub use safe::build_usdc_transfer_typed_data;safepub use safe::compute_safe_tx_digest;safepub use safe::derive_safe_address;safepub use safe::encode_erc1155_set_approval_for_all;safepub use safe::encode_erc20_allowance_query;safepub use safe::encode_erc20_approve;safepub use safe::encode_erc20_transfer;safepub use safe::pack_signature;safepub use safe::pack_signature_for_safe_tx;safepub use safe::ApprovalStatus;safepub use safe::DeploySafeResponse;safepub use safe::NonceType;safepub use safe::RelayerClient;safepub use safe::RelayerConfig;safepub use safe::SafeCreateTypedData;safepub use safe::SafeTxDomain;safepub use safe::SafeTxMessage;safepub use safe::SafeTxTypedData;safepub use safe::SafeTxTypes;safepub use safe::SignatureParams;safepub use safe::TransactionReceipt;safepub use safe::TransactionRequest;safepub use safe::TransactionState;safepub use safe::TransactionType;safepub use safe::CONDITIONAL_TOKENS_ADDRESS;safepub use safe::CTF_EXCHANGE_ADDRESS;safepub use safe::EXCHANGE_ADDRESS;safepub use safe::NATIVE_USDC_CONTRACT_ADDRESS;safepub use safe::NEG_RISK_CTF_EXCHANGE_ADDRESS;safepub use safe::SAFE_FACTORY;safepub use safe::SAFE_INIT_CODE_HASH;safepub use safe::USDC_CONTRACT_ADDRESS;safe
Modules§
- auth
auth - Authentication and signing utilities for Polymarket APIs.
- client
client - REST API clients for Polymarket services.
- clob
client - Backward-compatible alias for
clientmodule Backward-compatible module alias for CLOB client. Usepolymarket_sdk::clientor top-level re-exports instead. - core
- Core infrastructure for the Polymarket SDK.
- data
client - Backward-compatible alias for Data API client
Backward-compatible module alias for Data API client.
Use
polymarket_sdk::clientor top-level re-exports instead. - errors
- Backward-compatible alias for
coreerror types Backward-compatible module alias for error types. Usepolymarket_sdk::coreor top-level re-exports instead. - gamma
client - Backward-compatible alias for Gamma API client
Backward-compatible module alias for Gamma API client.
Use
polymarket_sdk::clientor top-level re-exports instead. - order
order - Order creation and signing functionality
- orders
order - Backward-compatible alias for
ordermodule Backward-compatible module alias for order building. Usepolymarket_sdk::orderor top-level re-exports instead. - prelude
- Commonly used types for quick imports.
- relayer
safe - Backward-compatible alias for
safemodule Backward-compatible module alias for relayer/safe functionality. Usepolymarket_sdk::safeor top-level re-exports instead. - safe
safe - Polymarket Relayer Module
- stream
stream - WebSocket streaming clients for real-time data.
- types
- Common types for Polymarket SDK
- wss
stream - Backward-compatible alias for CLOB WebSocket client
Backward-compatible module alias for CLOB WebSocket functionality.
Use
polymarket_sdk::streamor top-level re-exports instead.