Build the 8 Safe.execTransaction calldatas needed before trading
Execution
Build Token Approval
Build token approval transactions required before trading on Polymarket. Returns calldata for USDC and conditional token approvals.
POST
Build the 8 Safe.execTransaction calldatas needed before trading
Request Body
The wallet address that will approve tokens.
Reserved. Currently ignored; both standard and neg-risk exchange approvals are always returned.
Response
Array of transaction calldata objects to send on-chain.
Server node identifier.
Request processing time in milliseconds.
Transactions Returned
Always returns 8 SafeexecTransaction calldatas — every approval is executed from the Safe, signed by the EOA owner. Order doesn’t matter (each one is idempotent).
CLOB V2 + pUSD migration (post-2026-04-29) checks pUSD balances/allowances, not USDC.e. The set covers both the V2 trading spenders and the wrap/unwrap routing.
| # | Token | Spender | Why |
|---|---|---|---|
| 1 | pUSD 0xC011a7E1…2E82DFB | CTFExchangeV2 0xE111180000d2663C0091e4f400237545B87B996B | Spend pUSD on standard markets |
| 2 | ConditionalTokens 0x4D97DCd9…ce5EA0476045 | CTFExchangeV2 (same) | Sell outcome tokens on standard markets |
| 3 | pUSD | NegRiskCTFExchangeV2 0xe2222d279d744050d28e00520010520000310F59 | Spend pUSD on neg-risk markets |
| 4 | ConditionalTokens | NegRiskCTFExchangeV2 (same) | Sell outcome tokens on neg-risk markets |
| 5 | pUSD | NegRiskAdapter 0xd91E80cF2E7be2e162c6513ceD06f1dD0dA35296 | Allowance the adapter checks before allowing trades |
| 6 | ConditionalTokens | NegRiskAdapter (same) | Outcome-token allowance for the adapter |
| 7 | USDC.e 0x2791Bca1…Aa84174 | CollateralOnramp 0x93070a847efEf7F70739046A929D47a521F5B8ee | Lets the Onramp pull USDC.e during /pm/wrap |
| 8 | pUSD | CollateralOfframp 0x2957922Eb93258b93368531d39fAcCA3B4dC5854 | Lets the Offramp pull pUSD during /pm/unwrap |
Usage Example
Integration Example
Each calldata is a Safe
execTransaction payload. The EOA owner broadcasts it on Polygon — it triggers the Safe to make the approval call. The Safe is the actual token holder, not the EOA.Approvals are idempotent and only need to land once per wallet. After they’re set, you can place unlimited V2 orders and call
/pm/wrap / /pm/unwrap without re-approving.