Move funds between the deposit wallet, a venue trading wallet, or an external address — one verb for every direction.
Documentation Index
Fetch the complete documentation index at: https://docs.predexon.com/llms.txt
Use this file to discover all available pages before exploring further.
POST /transfers is the single endpoint for every fund-movement direction. <venue> is one of polymarket, predict, opinion, limitless:
from | to | Use case |
|---|---|---|
deposit | <venue> | Fund a venue from the deposit wallet |
<venue> | deposit | Drain a venue back to the deposit wallet |
deposit | external | Withdraw USDC to a partner-supplied address |
400 synchronously:
| Route | errorCode | Why |
|---|---|---|
<venue> → <venue> | unsupported_route_v1 | Accepted by the schema, rejected at execution in v1. Drain to deposit first, then fund the other venue. |
<venue> → external | withdraw_via_deposit | Drain to deposit first, then withdraw from there. |
external → anywhere via POST | inbound_requires_quote | Inbound deposits use Quote Transfer; the partner submits the bridge tx themselves. |
from === to | same_endpoint | Source and destination must differ. |
hyperliquid on either side | hyperliquid_uses_across | Hyperliquid is funded via Across and withdrawn via the per-venue POST /withdraw — see Funding & Withdrawals. |
status is a 3-state partner-facing enum:
| Value | Meaning |
|---|---|
pending | Still settling. Includes routes in automated recovery — keep polling. |
completed | Funds landed at the destination. Terminal. |
failed | Did not deliver. Terminal. See error / errorCode. |
substatus adds context:
| Value | Meaning |
|---|---|
recoveryInProgress | A transient on-chain step is being retried. Funds are not lost. |
escalated | Automated recovery exhausted — contact support. |
legacyPartial | Historical pre-recovery row; ignore for new integrations. |
deposit ↔ limitless) settle synchronously and return status: "completed" on the POST response. Cross-token routes (e.g. deposit → predict) involve a swap and may return pending — poll Get Transfer until terminal.clientReferenceId to make retries safe. The first request creates the transfer; a retry with the same clientReferenceId returns the existing record rather than starting a duplicate. Use a fresh value per logical operation — reusing one across different routes returns the first transfer regardless of the new body.Move funds between the account's deposit wallet, a venue trading wallet, or an external address. Supported routes today: deposit ↔ <venue> (fund / drain a venue), deposit → external (withdraw). See the Transfers guide for the full route matrix.
Source wallet. deposit is the account's Base USDC deposit wallet; venue values are the account's venue trading wallets.
deposit, polymarket, predict, opinion, limitless Destination wallet. external is a partner-supplied address — see destination.
deposit, polymarket, predict, opinion, limitless, external Amount in the source token's natural unit (USDC for deposit source; USDT/pUSD for venue sources). Decimal string, e.g. "100.00".
Required when to === "external". Recipient address + delivery chain/token.
Partner-supplied idempotency key. Retries with the same key return the existing transfer rather than creating a duplicate.
Transfer created. status reaches completed synchronously for most routes; cross-token routes can return pending (poll the detail endpoint).
A single fund-movement operation. Same envelope returned by POST /transfers, GET /transfers, and GET /transfers/{transferId}. status is the partner-facing 3-state enum; substatus carries additional context where useful.
Stable identifier (tfr-...). Use for GET /transfers/{transferId}.
Source side of the transfer.
Destination side of the transfer.
Source-side amount (echo of the request).
Destination-side amount actually delivered. Populated once the transfer settles.
Partner-facing 3-state status. pending includes routes still in active recovery; failed includes routes that exhausted recovery (see substatus).
pending, completed, failed Optional context. recoveryInProgress — a transient on-chain step is being retried (poll until terminal). escalated — automated recovery exhausted; contact support. legacyPartial — historical pre-recovery-worker rows only.
recoveryInProgress, escalated, legacyPartial On-chain transaction hashes for each step that fired. Most routes use only source/dest (sometimes approve); venue-specific routes add wrap/unwrap (Polymarket), safeExtract/safeDeposit (Opinion), or swap (cross-token routes).
Bridge-explorer URL for cross-chain transfers. null for same-chain transfers.
Human-readable failure message. Present iff status === "failed".
Machine-readable failure code. Present iff status === "failed".