Get USDC + conditional-token balance/allowance (PM keys — paper trading: huge)
PM-compat GET /balance-allowance. py-clob-client calls this before every order to pre-flight that the connected wallet has approved spending on the on-chain Exchange contract. Polysim is paper-trading — there’s no on-chain allowance — so we return effectively-unlimited sentinel values under PM’s keys (balance / allowance, base-unit strings: 1.00 USDC = "1000000"), letting the SDK satisfy its pre-flight check and proceed to /v1/orders. These sentinels are NOT your simulated cash balance — read GET /v1/account/balance for real sizing decisions. The legacy collateral / conditional keys (decimal dollars) remain as polysim extras. asset_type (COLLATERAL default | CONDITIONAL) and token_id / signature_type are accepted per the PM SDK call shape; both asset types report the same unlimited sentinel.
Authorizations
Issue from /v1/keys (or admin-issued for enterprise tier).
Headers
Your PolySimulator API key
Polymarket-CLOB-compat alias for X-API-Key (underscore form). SDK clients ported from Polymarket can authenticate without changing header names. X-API-Key takes precedence when both are provided.
PM-CLOB-compat dashed-form alias for X-API-Key. Same value semantics as POLY_API_KEY but with HTTP-conventional dash separators. Audit P1 (staging audit 2026-05-16 0817 PR #1296): the per-tier middleware accepts both spellings but the auth dependency originally only matched the underscore form — now both work end-to-end.
PM-CLOB-compat: Authorization: Bearer ps_live_... (or ps_test_...) is accepted as an alias for X-API-Key so py-clob-client and other ported SDKs authenticate without header name changes. Bearer JWTs are NOT accepted here — use the dashboard-auth endpoints for those.
Query Parameters
PM SDK param: COLLATERAL (default) or CONDITIONAL. Accepted for call-shape parity; paper trading reports the same unlimited sentinel for both.
PM SDK param — the conditional token to query (PM requires it when asset_type=CONDITIONAL). Accepted and unused: paper trading has no per-token allowance.
PM SDK param. Accepted and unused (no chain here).
Response
Successful Response
GET /v1/balance-allowance response — PM keys + legacy extras.
PM's wire contract (py-clob-client get_balance_allowance /
clob-client-v2 BalanceAllowanceResponse) keys the payload as
{"balance": "...", "allowance": "..."} — base-unit strings
(USDC 6-decimal fixed point). The original polysim emission used
{collateral, conditional}, so SDK/user code reading
resp["balance"] KeyError'd (eval 2026-06-10, pm-compat
finding). PM keys are now primary; the legacy keys stay as
polysim extras for pre-P1-batch callers.