Skip to main content

Overview

The Limitless Exchange Go SDK (limitless-exchange-go-sdk) is a fully typed Go client for interacting with both CLOB and NegRisk prediction markets. It provides:
  • Strongly typed structs for all API requests and responses
  • Automatic venue caching for EIP-712 order signing
  • Built-in retry logic with exponential backoff (using Go generics)
  • WebSocket streaming with auto-reconnect
  • Functional options pattern for flexible configuration
The SDK requires Go 1.22+. All I/O methods accept a context.Context as the first parameter and return error as the last return value, following standard Go conventions.

Installation

Quick Start

1

Initialize the HTTP client

2

Fetch active markets

3

Check your positions

Authentication

Authentication uses scoped API tokens with HMAC-SHA256 request signing. A scoped API token is a token ID plus a one-time secret, generated at limitless.exchange → profile menu → Api keys.
  • HMAC headers lmts-api-key, lmts-timestamp, lmts-signature — the SDK builds and signs them for you when you pass HMAC credentials
With WithHMACCredentials(...) set, the SDK automatically generates and sends lmts-api-key, lmts-timestamp, and lmts-signature. Do not manually build HMAC headers when using the SDK client.
Legacy: an older API key (LIMITLESS_API_KEY, sent as the X-API-Key header) still works but is not recommended for new integrations. Prefer a scoped API token.
Never hardcode API keys in source code or commit them to version control. Use environment variables or a secrets manager.

Root Client

The recommended entrypoint is the root Client, which composes all domain services (markets, portfolio, orders, API tokens, partner accounts, delegated orders). Authenticate it with scoped-token HMAC credentials:
The legacy WithAPIKey option still works but is not recommended for new integrations:

HttpClient Options

The HttpClient uses the functional options pattern. Pass any combination of options to NewHttpClient() or NewClient():

Logging

The SDK provides a pluggable Logger interface with a built-in ConsoleLogger:
Set LogLevelDebug during development to see request headers, venue cache hits/misses, and full API responses. Switch to LogLevelInfo or LogLevelWarn in production.

Source Code

The SDK is open source. Contributions and issue reports are welcome.

GitHub Repository

Browse the source, report issues, and contribute at github.com/limitless-labs-group/limitless-exchange-go-sdk

Disclaimer

USE AT YOUR OWN RISK. This SDK is provided as-is with no guarantees. You are solely responsible for any trading activity conducted through this software. Limitless Exchange is not available to users in the United States or other restricted jurisdictions. By using this SDK, you confirm compliance with all applicable local laws and regulations.

Next Steps

Markets

Discover markets, fetch orderbooks, and understand venue caching.

Market Pages

Browse markets by category with navigation, filters, and pagination.

Trading & Orders

Place GTC and FOK orders, cancel orders, and manage token approvals.

Portfolio & Positions

Track your open positions and trading history.

API Tokens

Derive, list, and revoke scoped HMAC tokens for partner integrations.

Partner Accounts

Create sub-accounts with server wallets or EOA verification.

Delegated Orders

Place orders on behalf of sub-accounts with server-side signing.

WebSocket Streaming

Subscribe to real-time orderbook and price updates.

Error Handling & Retry

Retry logic, error types, and debugging strategies.

Server Wallet Redemption and Withdrawal

For partner server-wallet sub-accounts, the SDK provides helper methods for payout settlement and treasury movement: Required scopes for apiToken auth: trading for redeem and withdrawal for withdraw. Allowlist add/delete calls use a Privy identity token instead of API-token/HMAC auth.
Set OnBehalfOf when withdrawing from a child server-wallet profile. Destination is optional for child withdrawals; when omitted, the API defaults to the authenticated partner smart wallet when present, otherwise the authenticated partner account. Leave OnBehalfOf as zero only when withdrawing the authenticated caller’s own server wallet to an explicit Destination. See the full flow and scope guidance in Programmatic API.