Synpath
Overview

API Overview

Two hosts: Synpath's hosted data API, and the server you run yourself for market data and trading.

Synpath's REST surface is served from two places, and every page in this reference says which.

HostWhat it servesAuth
Hosted by SynpathCross-venue matching, and tick-level historical order books and tradesSynpath API key
Your own serverMarket data at /; order entry, the execution engine, portfolio, risk and keys at /tradingNone for market data; an access token for /trading

Addresses and credentials are on the Authentication page; every request sample in this reference already carries the right one.

Your self-hosted server is synpath serve, one process from pip install synpath. It holds your venue credentials, runs the engine that holds stops, icebergs, TWAPs and orders on a bucket, keeps their journal, and subscribes the venues' streams. Orders never pass through Synpath's servers.

pip install synpath
synpath serve            # your self-hosted server: market data at :8000/, trading at :8000/trading
Every route on your server is described by GET /openapi.json (market data) and GET /trading/openapi.json, or offline by synpath schema [--trading], so a TypeScript or Go client is generated rather than written: npx openapi-typescript openapi.json -o synpath.d.ts.

Identifiers

A market is named by its Synpath ID, venue:native, in every path and every body: kalshi:KXFEDDECISION-26SEP-C25, polymarket:2252244. Market data routes under /venues/{venue} also accept that venue's bare native id. An order names bucket:<id> the same way to target a bucket. See Synpath IDs.

Timestamps

All timestamps are UTC. Fields named timestamp or ending in _timestamp or _at are integers in milliseconds since epoch, on input and output. Where useful, a sibling ending in _datetime carries the same instant as ISO 8601 (2026-09-17T14:00:00Z).

Prices and sides

Every price is 0 to 1 and is the YES price. An order's side is buy (take YES) or sell (take NO); a book is asked for with ?side=no to see what NO costs. Trading routes carry money as decimal strings so nothing is rounded on the wire.

Lists

Every list is enveloped with its cursor and count; single resources are not.

{ "data": [ ... ], "next_cursor": "eyJjIjoiQ0RJIiwibyI6NX0", "count": 100 }

Rate limits

HostLimit
Your own serverOnly the venues' own limits, paced inside the server per venue

A venue's own limit surfaces as 429 with code rate_limit_exceeded and details.retryable true. See Errors and pagination.