# Tern > Cross-chain and same-chain swaps on any supported chain. Every swap completes or refunds. ## Docs - [Introduction](/index): Swap anything. Across any supported chain. - [Quickstart](/quickstart): Get your first swap running in minutes: request a quote, send the transaction, and track it to completion. - [How Tern works](/concepts/how-it-works): The lifecycle of a swap, from quote to deposit, execution, settlement, and refunds. - [Quotes and statuses](/concepts/quotes): How prices become firm quotes, what amounts a quote promises, how long it lasts, and how a swap's status moves. - [Fees and pricing](/concepts/fees): What a swap costs, how every quote breaks that cost down in dollars, and what to show your users. - [Refunds](/concepts/refunds): When a swap doesn't complete, what the user gets back, and how long it takes. - [Security](/concepts/security): What users rely on when they swap through Tern, what they don't have to, and the few things your app must get right. - [Supported chains](/concepts/chains): Where Tern is available today, and how to refer to chains, tokens, and amounts in the API. - [Cross-chain swaps](/guides/cross-chain-swaps): Swap a token on one chain for a token on another, from the first quote to the user receiving their tokens. - [Same-chain swaps](/guides/same-chain-swaps): Swap one token for another on the same chain, in a single transaction, with a guaranteed minimum. - [Private swaps on Starknet](/guides/private-swaps): Swap from a shielded balance on Starknet without exposing the user's account in the transaction. - [Track a swap](/guides/track-a-swap): Follow a swap until it's done, get updates sooner, and show users their swap history. - [Webhooks](/guides/webhooks): Get every status change of your swaps sent to your server, instead of checking for them. - [Escrow specification](/protocol/specification): The full technical rules behind cross-chain swaps: how deposits are locked, paid out, and refunded on every chain. - [TernSwap](/protocol/same-chain-swaps): The full technical rules behind same-chain and private swaps: one transaction, any DEX route, and a guaranteed minimum. - [Contract addresses](/protocol/deployments): Where Tern's contracts live on each chain, so you can hard-code them in your app. - [Introduction](/api-reference/introduction): Where the API lives, what each endpoint does, and the formats every request uses. - [Authentication and limits](/api-reference/authentication): API keys, rate limits, and request IDs. - [Idempotency](/api-reference/idempotency): Retry a request safely after a network error, without creating a second quote, reveal, or submission. - [Errors](/api-reference/errors): What every error means, and how to handle it. - [Get a quote](/api-reference/quotes/get-a-quote): Prices a swap, or commits to one. Across chains a swap settles through two escrows and a solver: without `executionCondition` the answer is an indicative price; with it, a firm quote with everything needed to fund it. On one chain it settles in one transaction through the chain's `TernSwap` and a DEX aggregator: indicative without `sender` and `recipient`, firm with both. A firm quote's `execute` lists what to send: EVM `transactions` in order, or Starknet `calls` as one multicall. An escrow quote also has a `depositAddress`, to which the exact `from.amount` can be sent from any wallet instead. - [Get a quote's status](/api-reference/quotes/get-a-quotes-status): Where a firm quote stands. `status` is `awaiting_deposit` until the deposit is final, `deposit_confirmed` while the solver fills, `in_progress` once the destination funds are locked, then `completed`, `refunded`, or `expired`. A swap is `awaiting_deposit` until its transaction is final, then `completed`. Amounts are the on-chain ones once known. - [Search quotes](/api-reference/quotes/search-quotes): The firm quotes, cross-chain and same-chain, that `address` sends or receives, or that the transaction `txHash` belongs to (a deposit, sweep, fill, settlement, refund, or swap), newest first. Give one of the two. Pass a page's `next` as `before` to get the next page. - [Reveal the fulfillment](/api-reference/quotes/reveal-the-fulfillment): Reveals the 32-byte fulfillment whose SHA-256 is the quote's `executionCondition`, once the solver has locked the destination funds. The relayer then claims them for the recipient. Check the destination escrows on chain before revealing: once revealed, the fulfillment is public. - [Submit a private swap](/api-reference/quotes/submit-a-private-swap): Hands the private swap the user's wallet proved (`strk20PrepareInvoke` over the quote's `execute.strk20`) to Tern's relayer. The relayer simulates it with its proof and sends it only if it calls the pool's `apply_actions`, pays the relayer the quoted fee, and swaps for this quote; its account is the sender, so the user's never appears. Submit before `expiresAt`. A repeated call returns the same transaction. - [List chains](/api-reference/chains/list-chains): Supported chains, and the assets solvers connected now advertise on each. `anyAsset` is true when any token with enough DEX liquidity can be quoted on the chain: a connected solver accepts any token there, or the chain has same-chain swaps, whose routers price any token. Each asset has a `logoURI` (null until one is found) and `verified`: true when CoinGecko lists the token at that address. Logos are matched by address, never by symbol, so an unverified token may carry a familiar symbol. To show a quote leg's logo, look up its (chain, asset) here. - [Index a transaction now](/api-reference/index/index-a-transaction-now): Optional: the indexer finds every deposit and fulfill on its own. Sending a transaction's hash right after it is mined makes the quote's status move sooner.