PolymarketPolymarket OCaml client library.
This library provides typed clients for the Polymarket APIs:
Gamma: Markets, events, series, and search (gamma-api.polymarket.com)Data: Positions, trades, activity, and leaderboards (data-api.polymarket.com)Clob: Order books, pricing, and trading (clob.polymarket.com)Rate_limiter: Route-based rate limiting middleware Eio_main.run @@ fun env ->
Eio.Switch.run @@ fun sw ->
let net = Eio.Stdenv.net env in
let clock = Eio.Stdenv.clock env in
let rate_limiter =
Polymarket.Rate_limiter.create ~clock
~config:Polymarket.Rate_limit_presets.gamma ()
in
let client = Polymarket.Gamma.create ~sw ~net ~rate_limiter () in
match Polymarket.Gamma.get_events client () with
| Ok events -> List.iter (fun e -> print_endline e.title) events
| Error err -> print_endline (Polymarket.Error.to_string err)Create a rate limiter with Polymarket API presets:
let clock = Eio.Stdenv.clock env in
let rate_limiter =
Polymarket.Rate_limiter.create ~clock
~config:Polymarket.Rate_limit_presets.gamma ()
in
let client = Polymarket.Gamma.create ~sw ~net ~rate_limiter () in
(* Requests are now automatically rate limited *)The library uses validated types for addresses, hashes, and numeric constraints. These are available at the top level for convenience:
Address: Ethereum addresses (0x-prefixed, 40 hex chars)Hash64: 64-character hex hashesHash: Variable-length hex stringsFor finer-grained control, you can depend on sub-libraries directly:
polymarket.common: Shared primitives and loggingpolymarket.http: HTTP client utilitiespolymarket.rate_limiter: Rate limiting middlewarepolymarket.gamma: Gamma API clientpolymarket.data: Data API clientpolymarket.clob: CLOB API clientmodule Gamma : sig ... endGamma API client for markets, events, series, and search.
module Data : sig ... endData API client for positions, trades, activity, and leaderboards.
module Clob : sig ... endCLOB API client for order books, pricing, and trading.
module Rfq : sig ... endRFQ API client for Request for Quote trading.
module Bridge : sig ... endBridge API client for cross-chain deposits to Polymarket.
module Wss : sig ... endWebSocket client for real-time market and user data.
module Rtds : sig ... endReal-Time Data Socket (RTDS) client for streaming data.
module Sports : sig ... endSports WebSocket client for live match results.
module Rate_limiter = Rate_limiterRoute-based rate limiting middleware for HTTP clients.
module Rate_limit_presets : sig ... endPre-configured rate limits for Polymarket APIs.
Validated types for addresses, hashes, and numeric constraints.
Primitives.Side: Buy/Sell sidePrimitives.Sort_dir: Asc/Desc sort directionPrimitives.Address: Ethereum addresses (0x-prefixed, 40 hex chars)Primitives.Hash64: 64-character hex hashesPrimitives.Hash: Variable-length hex stringsPrimitives.U256: 256-bit unsigned integers (token IDs, amounts)Primitives.Signature: Cryptographic signaturesPrimitives.Timestamp: ISO 8601 timestampsmodule Primitives : sig ... endAbstract primitive types with built-in validation.
EIP-712 signing, HMAC-SHA256, and Ethereum address derivation.
module Crypto : sig ... endCryptographic utilities for Polymarket API authentication.
Structured error types for API operations.
module Error : sig ... end