Gap
The core CreateOrderParams type defines three optional fields — tickSize, negRisk, and onBehalfOf — that the TypeScript SDK exposes but the Python SDK's CreateOrderParams TypedDict omits entirely. Python users cannot pass these parameters when calling create_order, build_order, or submit_order, so exchanges that require or accept them will silently ignore or reject the order.
Core
File: core/src/types.ts
interface CreateOrderParams {
marketId: string;
outcomeId: string;
side: 'buy' | 'sell';
type: 'market' | 'limit';
amount: number;
price?: number;
fee?: number;
tickSize?: number; // ← override for Limitless / Polymarket tick granularity
negRisk?: boolean; // ← skip neg-risk lookup (Polymarket)
onBehalfOf?: number; // ← Limitless delegated-signing profile ID
}
tickSize is required for Limitless orders to select the correct tick granularity. negRisk is required for Polymarket orders on neg-risk markets (omitting it causes an incorrect order build). onBehalfOf is required for Limitless delegated-signing (smart-wallet custody).
TypeScript SDK
File: sdks/typescript/pmxt/models.ts, lines 533–563
All three fields are present:
tickSize?: number — "Optional override for Limitless/Polymarket"
negRisk?: boolean — "Optional override to skip neg-risk lookup (Polymarket)"
onBehalfOf?: number — "Limitless delegated signing: profile ID to trade on behalf of"
Python SDK
File: sdks/python/pmxt/models.py
CreateOrderParams TypedDict (around lines 518–527) defines only:
class CreateOrderParams(TypedDict, total=False):
market_id: str
outcome_id: str
side: OrderSide
type: OrderType
amount: float
price: float
fee: float
tick_size, neg_risk, and on_behalf_of are entirely absent. The underlying Exchange.create_order method in client.py accepts **params and serialises them to the sidecar, so the fields would work if they were in the TypedDict — the TypedDict definition is simply incomplete.
Evidence
grep -n "tick_size\|neg_risk\|on_behalf_of" sdks/python/pmxt/models.py returns zero results. The TypeScript counterpart at sdks/typescript/pmxt/models.ts lines 549–561 explicitly declares all three. core/src/types.ts is the canonical definition.
Impact
Python users placing orders on Limitless with non-default tick sizes will receive incorrect order builds. Python users placing orders on Polymarket neg-risk markets must rely on the sidecar's automatic lookup (an extra network round-trip, and broken if the lookup fails). Python users using Limitless delegated-signing custody cannot specify the profile ID at all — delegated orders are blocked entirely.
Found by automated Core-to-SDK surface coverage audit
Gap
The core
CreateOrderParamstype defines three optional fields —tickSize,negRisk, andonBehalfOf— that the TypeScript SDK exposes but the Python SDK'sCreateOrderParamsTypedDict omits entirely. Python users cannot pass these parameters when callingcreate_order,build_order, orsubmit_order, so exchanges that require or accept them will silently ignore or reject the order.Core
File:
core/src/types.tstickSizeis required for Limitless orders to select the correct tick granularity.negRiskis required for Polymarket orders on neg-risk markets (omitting it causes an incorrect order build).onBehalfOfis required for Limitless delegated-signing (smart-wallet custody).TypeScript SDK
File:
sdks/typescript/pmxt/models.ts, lines 533–563All three fields are present:
tickSize?: number— "Optional override for Limitless/Polymarket"negRisk?: boolean— "Optional override to skip neg-risk lookup (Polymarket)"onBehalfOf?: number— "Limitless delegated signing: profile ID to trade on behalf of"Python SDK
File:
sdks/python/pmxt/models.pyCreateOrderParamsTypedDict (around lines 518–527) defines only:tick_size,neg_risk, andon_behalf_ofare entirely absent. The underlyingExchange.create_ordermethod inclient.pyaccepts**paramsand serialises them to the sidecar, so the fields would work if they were in the TypedDict — the TypedDict definition is simply incomplete.Evidence
grep -n "tick_size\|neg_risk\|on_behalf_of" sdks/python/pmxt/models.pyreturns zero results. The TypeScript counterpart atsdks/typescript/pmxt/models.tslines 549–561 explicitly declares all three.core/src/types.tsis the canonical definition.Impact
Python users placing orders on Limitless with non-default tick sizes will receive incorrect order builds. Python users placing orders on Polymarket neg-risk markets must rely on the sidecar's automatic lookup (an extra network round-trip, and broken if the lookup fails). Python users using Limitless delegated-signing custody cannot specify the profile ID at all — delegated orders are blocked entirely.
Found by automated Core-to-SDK surface coverage audit