138 lines
4.4 KiB
Markdown
138 lines
4.4 KiB
Markdown
# Bridge
|
||||
|
|
|
|||
|
|
Polymarket uses **USDC.e** (Bridged USDC) on Polygon as collateral. The Bridge API handles deposits from and withdrawals to multiple chains.
|
|||
|
|
|
|||
|
|
Base URL: `https://bridge.polymarket.com`
|
|||
|
|
|
|||
|
|
## Deposit Flow
|
|||
|
|
|
|||
|
|
1. `POST /deposit` with your Polymarket wallet address → get deposit addresses
|
|||
|
|
2. Verify token is supported via `/supported-assets`
|
|||
|
|
3. Send assets to the appropriate address for your source chain
|
|||
|
|
4. Assets are bridged and auto-swapped to USDC.e on Polygon
|
|||
|
|
5. Track status via `/status/{deposit_address}`
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Create deposit addresses
|
|||
|
|
curl -X POST https://bridge.polymarket.com/deposit \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-d '{"address": "0xYOUR_POLYMARKET_WALLET"}'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Response includes three address types:
|
|||
|
|
|
|||
|
|
| Address | Use For |
|
|||
|
|
|---------|---------|
|
|||
|
|
| `evm` | Ethereum, Arbitrum, Base, Optimism, and other EVM chains |
|
|||
|
|
| `svm` | Solana |
|
|||
|
|
| `btc` | Bitcoin |
|
|||
|
|
| `tvm` | Tron |
|
|||
|
|
|
|||
|
|
Each address is unique to your wallet.
|
|||
|
|
|
|||
|
|
## Supported Chains
|
|||
|
|
|
|||
|
|
| Chain | Address Type | Min Deposit | Example Tokens |
|
|||
|
|
|-------|--------------|-------------|----------------|
|
|||
|
|
| Ethereum | EVM | $7 | ETH, USDC, USDT, WBTC, DAI, LINK, UNI, AAVE |
|
|||
|
|
| Polygon | EVM | $2 | POL, USDC, USDT, DAI, WETH, SAND |
|
|||
|
|
| Arbitrum | EVM | $2 | ETH, ARB, USDC, USDT, DAI, WBTC, USDe |
|
|||
|
|
| Base | EVM | $2 | ETH, USDC, USDT, DAI, cbBTC, AERO, USDS |
|
|||
|
|
| Optimism | EVM | $2 | ETH, OP, USDC, USDT, DAI, USDe |
|
|||
|
|
| BNB Smart Chain | EVM | $2 | BNB, USDC, USDT, DAI, ETH, BTCB, BUSD |
|
|||
|
|
| Solana | SVM | $2 | SOL, USDC, USDT, USDe, TRUMP |
|
|||
|
|
| Bitcoin | BTC | $9 | BTC |
|
|||
|
|
| Tron | TVM | $9 | USDT |
|
|||
|
|
| HyperEVM | EVM | $2 | HYPE, USDC, USDe, stHYPE, UBTC, UETH |
|
|||
|
|
| Abstract | EVM | $2 | ETH, USDC, USDT |
|
|||
|
|
| Monad | EVM | $2 | MON, USDC, USDT |
|
|||
|
|
| Ethereal | EVM | $2 | USDe, WUSDe |
|
|||
|
|
| Katana | EVM | $2 | AUSD |
|
|||
|
|
| Lighter | EVM | $2 | USDC |
|
|||
|
|
|
|||
|
|
Always call `/supported-assets` for the current list — assets change over time.
|
|||
|
|
|
|||
|
|
## Withdrawal Flow
|
|||
|
|
|
|||
|
|
1. Check destination chain/token via `/supported-assets`
|
|||
|
|
2. Preview fees via `POST /quote`
|
|||
|
|
3. `POST /withdraw` with wallet address, destination chain, token, and recipient → get deposit addresses
|
|||
|
|
4. Send USDC.e from Polymarket wallet to the appropriate address
|
|||
|
|
5. Track status via `/status/{address}`
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Create withdrawal addresses
|
|||
|
|
curl -X POST https://bridge.polymarket.com/withdraw \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-d '{
|
|||
|
|
"address": "0xYOUR_POLYMARKET_WALLET",
|
|||
|
|
"toChainId": "1",
|
|||
|
|
"toTokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
|
|||
|
|
"recipientAddr": "0xDESTINATION_ADDRESS"
|
|||
|
|
}'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Do not pre-generate withdrawal addresses.** Generate them only when ready to execute.
|
|||
|
|
|
|||
|
|
## Quote
|
|||
|
|
|
|||
|
|
Preview fees and estimated output for deposits and withdrawals. Withdrawals are **instant** and **free** — Polymarket does not charge withdrawal fees.
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
POST https://bridge.polymarket.com/quote
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Status Tracking
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Use the deposit address (not your wallet address)
|
|||
|
|
curl https://bridge.polymarket.com/status/0xDEPOSIT_ADDRESS
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Transaction Statuses
|
|||
|
|
|
|||
|
|
| Status | Terminal | Description |
|
|||
|
|
|--------|----------|-------------|
|
|||
|
|
| `DEPOSIT_DETECTED` | No | Funds detected on source chain, not yet processing |
|
|||
|
|
| `PROCESSING` | No | Being routed and swapped |
|
|||
|
|
| `ORIGIN_TX_CONFIRMED` | No | Source chain transaction confirmed |
|
|||
|
|
| `SUBMITTED` | No | Submitted to Polygon |
|
|||
|
|
| `COMPLETED` | Yes | Funds arrived — success |
|
|||
|
|
| `FAILED` | Yes | Error occurred |
|
|||
|
|
|
|||
|
|
Poll every 10–30 seconds until `COMPLETED` or `FAILED`.
|
|||
|
|
|
|||
|
|
### Response
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"transactions": [{
|
|||
|
|
"fromChainId": "1",
|
|||
|
|
"fromTokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
|
|||
|
|
"fromAmountBaseUnit": "1000000000",
|
|||
|
|
"toChainId": "137",
|
|||
|
|
"toTokenAddress": "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174",
|
|||
|
|
"status": "COMPLETED",
|
|||
|
|
"txHash": "0x...",
|
|||
|
|
"createdTimeMs": 1697875200000
|
|||
|
|
}]
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Empty `transactions` array = no deposits detected yet.
|
|||
|
|
|
|||
|
|
## Recovery
|
|||
|
|
|
|||
|
|
If you deposited the wrong token:
|
|||
|
|
- **Ethereum deposits**: https://recovery.polymarket.com/
|
|||
|
|
- **Polygon deposits**: https://matic-recovery.polymarket.com/
|
|||
|
|
|
|||
|
|
Sending unsupported tokens may cause **irrecoverable loss**.
|
|||
|
|
|
|||
|
|
## Caveats
|
|||
|
|
|
|||
|
|
- **Withdrawals >$50,000**: break into smaller amounts to minimize slippage
|
|||
|
|
- **Uniswap pool exhaustion**: USDC.e → USDC swap goes through Uniswap v3 pool. If pool is exhausted, use smaller amounts or wait for rebalance
|
|||
|
|
- **Deposits below minimum**: will not be processed
|
|||
|
|
- **Supported assets change**: always check `/supported-assets` before depositing
|