Swap
Spot swap and cross-chain swap
Spot swap (meta-aggregator)
Execute a spot swap via the meta-aggregator. Omit `account` for quote-only. Include `account` to build full transaction calldata.
Spot swap (submit signed permits)
Same parameters as GET. The JSON body carries the two-call permit contract: `permits` (signed offers from a previous response) and optionally `builds` (the previous response's buildIds, spliced without re-quoting).
Cross-chain swap (bridge aggregation)
Quote a cross-chain swap across all supported bridge aggregators (Across, LI.FI, Squid, Stargate, Symbiosis, XY Finance, DZap, …) and build the winning transactions. Omit `account` for quote-only. Include `account` to build full transaction calldata. Each build quote carries `approvalTarget`/`approvalRequired`, and `actions.permissions` holds one ERC-20 approve per unique spender (composed routes share the 1delta composer; plain bridges use their own deposit contract) with a `spender` field — execute only the permission whose `spender` equals your chosen quote's `approvalTarget`. When `fromChainId` equals `toChainId` the request falls back to the spot meta-aggregator (same response shape with `aggregator` instead of `bridge` per quote, marked `fallback: 'spot'`). **Uncurated tokens:** a leg missing from its chain's curated token list is resolved on-chain (per chain — the two legs live on different chains), so uncurated EVM tokens still quote; such a leg has no USD price. Non-EVM legs (Solana) are not resolved this way. An address that is not an ERC-20 answers `Unknown Token: <address> on <chainId>`.
Cross-chain swap (submit signed permits)
Same parameters as GET. The JSON body carries `permits` (signed offers from a previous response). The endpoint re-quotes with the permit legs riding INSIDE the composed calldata — safe on value because this endpoint is EXACT_INPUT only — and answers with `permitApplied: true` on every route whose assembled bytes actually carry the leg (verified, never assumed); those routes need no approve. Router-spender routes are untouched. On the same-chain spot fallback, `builds` from the previous response are honoured too (spliced without re-quoting).