Get Tick Size
Polymarket-compat GET /tick-size/{token_id}.
Resolution order (freshest source wins):
-
CLOB WS overlay (PM-MCP P1-2): if a recent
tick_size_changeevent has been observed for this token, emit the post-change value. PM shrinks the tick from 0.01 → 0.001 when a book moves past 0.96 or below 0.04 (and grows back when the book pulls away). The two directions have asymmetric correctness consequences (Copilot review on PR #1121):- Grow (0.001 → 0.01): previously-valid 0.001-step
quotes are no longer multiples of the new tick. PM rejects
with
INVALID_ORDER_MIN_TICK_SIZE. This is the case where missing the change silently breaks the bot. - Shrink (0.01 → 0.001): 0.01-step quotes are still valid multiples of 0.001, so orders aren’t rejected — but the bot is leaving precision on the table and quoting less competitively than the rest of the book. SDK porters reading PM docs expect tick refresh in both directions.
- Grow (0.001 → 0.01): previously-valid 0.001-step
quotes are no longer multiples of the new tick. PM rejects
with
-
markets.minimum_tick_sizecolumn (populated by the Gamma sync fromorderPriceMinTickSize). -
404
TOKEN_NOT_FOUNDwhen the token doesn’t resolve to any market. Audit 2026-05-15 P0-E (PR #1239): pre-fix this returned 200 with the default 0.01 fallback — a real-money risk for py-clob-client porters who quote on the wrong tick.
On transient upstream failure (DB/Redis unavailable) the handler
returns 503 with Retry-After: 2, NOT a silent default tick.
Value consistency (P1-11, 2026-06-09): the tick VALUE is resolved
through :func:resolve_canonical_tick, the single source shared with
GET /book and order validation, so all three surfaces agree. This
handler resolves NETWORK-FREE (allow_live_book=False): overlay → DB
column → default, with NO per-read GET /book fetch — that fetch
would add up to ~8 s latency and contend for the shared CLOB
semaphore. /book reads keep seeding the overlay so this surface
stays fresh without paying the fetch on every read. This handler keeps
the JSON-number wire shape (minimum_tick_size: 0.01) — PM emits
/tick-size as a number, distinct from /book’s string
tick_size; we change the value source, not the type. The
token-existence (404) and upstream-failure (503) envelopes below are
unchanged.