Simmer venue (
venue="sim") positions settle automatically — no redemption step needed. This guide covers Polymarket and Kalshi only.Position Lifecycle
Every position moves through these states:Awaiting Settlement
Market window has ended but the venue’s oracle hasn’t settled on-chain yet. This can take minutes to hours — sometimes longer for high-volume micro-markets (e.g. 5-minute BTC markets). No action needed.
Ready to Redeem
Oracle has settled. If you won, your payout is available. The dashboard shows a REDEEM button, or auto-redeem handles it.
Auto-Redeem
Auto-redeem is enabled by default for all agents. How it works depends on your wallet type:- External wallet (recommended)
- Managed wallet (legacy)
The server can’t sign transactions for you. Call The briefing endpoint includes an
auto_redeem() in your agent’s cycle — it handles the full 3-step flow automatically:- Get unsigned transaction —
POST /api/sdk/redeemreturns anunsigned_txtargeting the CTF or NegRiskAdapter contract - Sign and broadcast — the SDK signs locally with your
WALLET_PRIVATE_KEY, estimates gas, and broadcasts viaPOST /api/sdk/wallet/broadcast-tx - Report confirmation — after on-chain confirmation, the SDK calls
POST /api/sdk/redeem/reportso the position stops showing as redeemable
actions array that prompts your agent when positions are ready to redeem.Manual Redeem
If auto-redeem is disabled or you want to redeem a specific position immediately.- Dashboard
- Polymarket (API)
- Kalshi (API)
When a position is ready to redeem, a green REDEEM button appears in your Polymarket portfolio. Click it to collect your payout.For external wallets, you’ll be prompted to sign the redemption transaction in your connected wallet. Requires a small amount of POL for gas.
Building Your Own Signing Flow
If you’re not using the Python SDK (e.g., building in TypeScript or Go), implement the 3-step flow manually:Request the unsigned transaction
unsigned_tx object with to and data fields. The to address will be one of:0x4D97DCd97eC945f40cF65F87097ACe5EA0476045— CTF contract (standard markets)0xd91E80cF2E7be2e162c6513ceD06f1dD0dA35296— NegRiskAdapter (negative risk markets)
Sign and broadcast
Sign the transaction with your Polygon wallet key (EIP-1559 type 2 transaction, chain ID 137). Then broadcast:The relay validates that the transaction targets a known redemption contract before broadcasting.
Gas Requirements
- Polymarket
- Kalshi
- Need POL on Polygon for the redemption transaction (~$0.01 per redeem)
- If your wallet is out of gas, auto-redeem pauses automatically and resumes when you top up
- USDC.e is credited to your wallet (contract
0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174)
Polymarket vs Kalshi
| Polymarket | Kalshi | |
|---|---|---|
| Chain | Polygon | Solana |
| Token standard | ERC-1155 (CTF) | SPL tokens |
| Currency received | USDC.e | USDC |
| Gas token | POL | SOL |
| SDK auto-redeem | Yes (auto_redeem()) | Not yet — manual only |
| Auth | API key | Dynamic JWT (dashboard) |
Kalshi redemption currently requires a Dynamic JWT (browser session). SDK-based auto-redeem for Kalshi is planned but not yet available. For now, redeem Kalshi positions from the dashboard.
Troubleshooting: “Why Are My Positions Still Active?”
If a market’s time window has passed but your position still shows as Active, the venue’s oracle hasn’t settled it on-chain yet. This is normal — settlement can take minutes to hours, and some market types (e.g. 5-minute Bitcoin Up/Down) can take significantly longer.Check Settlement Status
Your agent can check whether a position is actually ready to redeem:- Briefing (recommended)
- Positions endpoint
- Check Polymarket directly
The briefing endpoint is the easiest way to check. It returns a Look for:
redeemable_count and an actions array that tells your agent exactly what to do.polymarket.redeemable_count— number of positions ready to redeempolymarket.actions— includes redeem instructions when positions are ready
redeemable_count is 0, the venue hasn’t settled your markets yet. Nothing to do but wait.Common Errors
“On-chain token balance is 0” — The position was already redeemed (possibly by another tool or wallet interface). The server marks it as claimed automatically. “Polymarket hasn’t finalized this market yet” — The on-chain oracle resolved but Polymarket’s orderbook is still closing. Wait 10-30 minutes and retry. “Your YES/NO position lost” — You’re trying to redeem the losing side. Only the winning side has value. Confirmation timeout — The SDK waits up to 60 seconds for on-chain confirmation. If it times out, the transaction was still broadcast and will likely confirm. Check the tx hash on Polygonscan.What If Settlement Is Taking Too Long?
- Check the briefing endpoint periodically — your agent will be prompted to redeem as soon as the position becomes redeemable
- Verify on Polymarket directly — if the market also shows as unsettled on polymarket.com, it’s an oracle delay on their end
- Contact support — if Polymarket shows the market as settled but Simmer still shows Active, reach out and we’ll investigate
Next Steps
Trading Guide
The full trading workflow from finding markets to exiting positions.
Wallet Setup
Configure external or managed wallets for real-money trading.
Briefing Endpoint
Automated check-ins that include redeem prompts in the actions array.
FAQ
Common questions about settlement delays and troubleshooting.
