Crate polymarket_sdk

Crate polymarket_sdk 

Source
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:

§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 configuration
  • types - 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 signing
  • stream - 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;auth
pub use auth::build_clob_auth_typed_data;auth
pub use auth::build_hmac_signature;auth
pub use auth::build_hmac_signature_from_string;auth
pub use auth::create_l1_headers;auth
pub use auth::create_l2_headers;auth
pub use auth::create_l2_headers_with_address;auth
pub use auth::create_l2_headers_with_body_string;auth
pub use auth::get_current_unix_time_secs;auth
pub use auth::sign_clob_auth_message;auth
pub use auth::sign_order_message;auth
pub use auth::BuilderApiKeyCreds;auth
pub use auth::BuilderSigner;auth
pub use auth::ClobAuth;auth
pub use auth::Headers;auth
pub use auth::Order;auth
pub use client::ApiKeyResponse;client
pub use client::CancelResponse;client
pub use client::ClobClient;client
pub use client::ClobConfig;client
pub use client::DataClient;client
pub use client::DataConfig;client
pub use client::DeriveApiKeyResponse;client
pub use client::GammaClient;client
pub use client::GammaConfig;client
pub use client::OpenOrder;client
pub use client::OrderResponse;client
pub use client::PaginatedResponse;client
pub use client::ProfilesClient;client
pub use client::ProfilesConfig;client
pub use order::get_contract_config;order
pub use order::ContractConfig;order
pub use order::OrderArgs;order
pub use order::OrderBuilder;order
pub use order::SigType;order
pub use stream::LastTradeMessage;stream
pub use stream::MarketBook;stream
pub use stream::MarketStream;stream
pub use stream::MockStream;stream
pub use stream::PriceChangeEntry;stream
pub use stream::PriceChangeMessage;stream
pub use stream::RtdsClient;stream
pub use stream::RtdsConfig;stream
pub use stream::RtdsEvent;stream
pub use stream::RtdsMessage;stream
pub use stream::RtdsSubscription;stream
pub use stream::RtdsSubscriptionMessage;stream
pub use stream::StreamManager;stream
pub use stream::StreamMessage;stream
pub use stream::StreamStats;stream
pub use stream::Subscription;stream
pub use stream::TickSizeChangeMessage;stream
pub use stream::TradePayload;stream
pub use stream::WebSocketStream;stream
pub use stream::WssAuth;stream
pub use stream::WssMarketClient;stream
pub use stream::WssMarketEvent;stream
pub use stream::WssStats;stream
pub use stream::WssSubscription;stream
pub use stream::WssUserClient;stream
pub use stream::WssUserEvent;stream
pub use stream::WssUserOrderMessage;stream
pub use stream::WssUserTradeMessage;stream
pub use safe::build_ctf_approve_typed_data;safe
pub use safe::build_safe_create_typed_data;safe
pub use safe::build_safe_tx_request;safe
pub use safe::build_token_approve_typed_data;safe
pub use safe::build_usdc_transfer_typed_data;safe
pub use safe::compute_safe_tx_digest;safe
pub use safe::derive_safe_address;safe
pub use safe::encode_erc1155_set_approval_for_all;safe
pub use safe::encode_erc20_allowance_query;safe
pub use safe::encode_erc20_approve;safe
pub use safe::encode_erc20_transfer;safe
pub use safe::pack_signature;safe
pub use safe::pack_signature_for_safe_tx;safe
pub use safe::ApprovalStatus;safe
pub use safe::DeploySafeResponse;safe
pub use safe::NonceType;safe
pub use safe::RelayerClient;safe
pub use safe::RelayerConfig;safe
pub use safe::SafeCreateTypedData;safe
pub use safe::SafeTxDomain;safe
pub use safe::SafeTxMessage;safe
pub use safe::SafeTxTypedData;safe
pub use safe::SafeTxTypes;safe
pub use safe::SignatureParams;safe
pub use safe::TransactionReceipt;safe
pub use safe::TransactionRequest;safe
pub use safe::TransactionState;safe
pub use safe::TransactionType;safe
pub use safe::CONDITIONAL_TOKENS_ADDRESS;safe
pub use safe::CTF_EXCHANGE_ADDRESS;safe
pub use safe::EXCHANGE_ADDRESS;safe
pub use safe::NATIVE_USDC_CONTRACT_ADDRESS;safe
pub use safe::NEG_RISK_CTF_EXCHANGE_ADDRESS;safe
pub use safe::SAFE_FACTORY;safe
pub use safe::SAFE_INIT_CODE_HASH;safe
pub use safe::USDC_CONTRACT_ADDRESS;safe

Modules§

authauth
Authentication and signing utilities for Polymarket APIs.
clientclient
REST API clients for Polymarket services.
clobclient
Backward-compatible alias for client module Backward-compatible module alias for CLOB client. Use polymarket_sdk::client or top-level re-exports instead.
core
Core infrastructure for the Polymarket SDK.
dataclient
Backward-compatible alias for Data API client Backward-compatible module alias for Data API client. Use polymarket_sdk::client or top-level re-exports instead.
errors
Backward-compatible alias for core error types Backward-compatible module alias for error types. Use polymarket_sdk::core or top-level re-exports instead.
gammaclient
Backward-compatible alias for Gamma API client Backward-compatible module alias for Gamma API client. Use polymarket_sdk::client or top-level re-exports instead.
orderorder
Order creation and signing functionality
ordersorder
Backward-compatible alias for order module Backward-compatible module alias for order building. Use polymarket_sdk::order or top-level re-exports instead.
prelude
Commonly used types for quick imports.
relayersafe
Backward-compatible alias for safe module Backward-compatible module alias for relayer/safe functionality. Use polymarket_sdk::safe or top-level re-exports instead.
safesafe
Polymarket Relayer Module
streamstream
WebSocket streaming clients for real-time data.
types
Common types for Polymarket SDK
wssstream
Backward-compatible alias for CLOB WebSocket client Backward-compatible module alias for CLOB WebSocket functionality. Use polymarket_sdk::stream or top-level re-exports instead.