> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sodax.com/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> SODAX is mainnet-only (no testnet chains or RPC endpoints exist) with a hub-and-spoke architecture; Sonic is the hub. SODAX is non-custodial protocol/software: it routes and settles; independent solvers on the marketplace fill — never say 'our solver', 'the SODAX solver', that SODAX trades, takes custody, or fills orders. For frontend/React integrations, prefer @sodax/dapp-kit hooks over calling @sodax/sdk directly. SDK operations — the methods that build, submit or await a transaction, and the API/quote calls — return Result<T, E> ({ ok: true, value } or { ok: false, error }): check result.ok, never wrap them in try/catch or branch on error.message; discriminate on the narrow error.code union instead. Synchronous config getters (getPartnerFee, getSupportedSwapTokens, getVault, ...) return their value directly, not a Result.

# Liquidity and execution, across every network

> A liquidity and cross-network execution solution. Pick API or SDK, then install → quote → execute.

<div className="sodax-home-hero">
  <p className="sodax-home-hero-kicker">SODAX Docs</p>
  <p className="sodax-home-hero-sub">What can we help you build?</p>
</div>

<p className="sodax-stat-line">
  <span data-sodax-config="count" data-metric="networks" data-suffix="+">22+</span> networks · <span data-sodax-config="count" data-metric="reserve-assets" data-suffix="+">30+</span> lending assets · <span data-sodax-config="count" data-metric="swap-tokens" data-suffix="+">140+</span> tokens · <span>8</span> audit reports
</p>

### Latest product updates

<CardGroup cols={2}>
  <Card title="Leveraged staking vaults in Balanced widgets" img="https://mintcdn.com/sodax-25c31491/YnMHVfjQxt61ISz8/images/news/balanced-vault-widget.jpg?fit=max&auto=format&n=YnMHVfjQxt61ISz8&q=85&s=1a04504642963723bdaea7670ec4fa69" href="/yield" arrow width="1200" height="750" data-path="images/news/balanced-vault-widget.jpg">
    Vault positions enter and exit as ordinary intent-based swaps.
  </Card>

  <Card title="Candlestick price data, direct to your app" img="https://mintcdn.com/sodax-25c31491/YnMHVfjQxt61ISz8/images/news/candlestick-price-data.jpg?fit=max&auto=format&n=YnMHVfjQxt61ISz8&q=85&s=9ae29b926ed06c1fb948391a3fedc802" href="/developers/http-api/oracle" arrow width="1200" height="750" data-path="images/news/candlestick-price-data.jpg">
    Fixed-interval USD candles over an unauthenticated `GET`.
  </Card>
</CardGroup>

[All product updates →](/resources/product-updates)

### Building with an AI agent?

Add the [Builders MCP](/builders-mcp) (`https://builders.sodax.com/mcp`) for live chains, tokens, quotes, and API + SDK docs while you integrate, and [`@sodax/skills`](/ai-integration-guide) so the code it writes is v2-correct.

### How it works

SODAX is not a router you operate. **SODAX routes and settles.** Independent **solvers** on the marketplace **fill**. You submit an intent (the outcome you want) — not the hop-by-hop route.

1. **Submit** — Quote and submit an intent. Declare the outcome, not the hop-by-hop route.
2. **Fill** — Independent solvers fill across networks from coordinated liquidity.
3. **Settle** — Poll until solved or failed — terminal states, not a silent partial fill.

[Full execution model →](/home/how-execution-works)

***

Pick a solution. Then choose the **HTTP API** or the **open-source SDK**.

<Tabs>
  <Tab title="Swap">
    <h3 className="text-lg font-bold mb-2">Cross-network swaps, filled by solvers</h3>

    <p className="text-gray-500 mt-2 mb-5">
      Quote and execute an intent across networks. Solvers fill it — you don't manage liquidity or routing.
    </p>

    <CardGroup cols={2}>
      <Card title="HTTP API" icon="server" href="/developers/http-api/swaps" horizontal arrow>
        Quote, build intent, submit-tx, and status — any language.
      </Card>

      <Card title="Open-source SDK" icon="code" href="/developers/packages/foundation/sdk/functional-modules/swaps" horizontal arrow>
        End-to-end `sodax.swaps` in TypeScript.
      </Card>
    </CardGroup>

    <CardGroup cols={2}>
      <Card title="Solution hub" icon="compass" href="/swap" horizontal arrow>
        All Swap docs in one place.
      </Card>

      <Card title="Make a swap (SDK)" icon="repeat" href="/developers/how-to/how_to_make_a_swap" horizontal arrow>
        Walkthrough: init, quote, execute, errors.
      </Card>
    </CardGroup>

    <CodeGroup>
      ```bash curl theme={null}
      curl -s -X POST 'https://api.sodax.com/v1/swaps/quote' \
        -H 'content-type: application/json' \
        -d '{
          "tokenSrc": "0x…",
          "tokenSrcChainKey": "sonic",
          "tokenDst": "0x…",
          "tokenDstChainKey": "0x2105.base",
          "amount": "1000000",
          "quoteType": "exact_input"
        }'
      ```

      ```typescript sdk.ts theme={null}
      import { Sodax, ChainKeys } from '@sodax/sdk';

      const sodax = new Sodax();
      const deadlineResult = await sodax.swaps.getSwapDeadline(300n);
      if (!deadlineResult.ok) throw deadlineResult.error;

      const result = await sodax.swaps.swap({
        params: {
          inputToken: '0x2170...f9338',
          outputToken: '0x2f2a...fC5B0f',
          inputAmount: 1_000_000_000_000_000n,
          minOutputAmount: 900_000n,
          deadline: deadlineResult.value,
          allowPartialFill: false,
          srcChainKey: ChainKeys.BSC_MAINNET,
          dstChainKey: ChainKeys.ARBITRUM_MAINNET,
          srcAddress: await evmWalletProvider.getWalletAddress(),
          dstAddress: '0x...',
          data: '0x',
        },
        walletProvider: evmWalletProvider,
      });

      if (result.ok) console.log('Swap submitted', result.value);
      ```
    </CodeGroup>
  </Tab>

  <Tab title="Lend & Borrow">
    <h3 className="text-lg font-bold mb-2">One money market, every network</h3>

    <p className="text-gray-500 mt-2 mb-5">
      Supply collateral from any spoke network, borrow against it. The money market lives on the Sonic hub.
    </p>

    <CardGroup cols={2}>
      <Card title="Open-source SDK" icon="code" href="/developers/packages/foundation/sdk/functional-modules/money_market" horizontal arrow>
        Supply, borrow, withdraw, repay, and reserve data.
      </Card>

      <Card title="HTTP API" icon="server" href="/developers/http-api" horizontal arrow>
        Reserve/position reads exist. No write API yet — use the SDK to supply and borrow.
      </Card>
    </CardGroup>

    <Card title="Solution hub" icon="compass" href="/money-market" horizontal arrow>
      All Money Market docs in one place.
    </Card>

    <CodeGroup>
      ```typescript supply.ts theme={null}
      import { Sodax, ChainKeys } from '@sodax/sdk';

      const sodax = new Sodax();

      const result = await sodax.moneyMarket.supply({
        params: {
          srcChainKey: ChainKeys.BSC_MAINNET,
          srcAddress: '0x...',
          token: '0x...',
          amount: 1000n,
          action: 'supply',
        },
        walletProvider: evmWalletProvider,
      });

      if (result.ok) console.log('Supplied', result.value);
      ```
    </CodeGroup>
  </Tab>

  <Tab title="Bridge">
    <h3 className="text-lg font-bold mb-2">Move assets, network to network</h3>

    <p className="text-gray-500 mt-2 mb-5">
      Hub-and-spoke transfer primitives when you need asset movement without swap logic.
    </p>

    <CardGroup cols={2}>
      <Card title="Open-source SDK" icon="code" href="/developers/packages/foundation/sdk/functional-modules/bridge" horizontal arrow>
        Spoke → hub, hub → spoke, and spoke → spoke.
      </Card>

      <Card title="HTTP API" icon="server" href="/developers/http-api" horizontal arrow>
        No Bridge write API yet. Live HTTP surfaces: Swaps, Yield, Oracle, and Stats.
      </Card>
    </CardGroup>

    <Card title="Solution hub" icon="compass" href="/bridge" horizontal arrow>
      All Bridge docs in one place.
    </Card>

    <CodeGroup>
      ```typescript bridge.ts theme={null}
      import { Sodax, ChainKeys } from '@sodax/sdk';

      const sodax = new Sodax();

      const result = await sodax.bridge.bridge({
        params: {
          srcChainKey: ChainKeys.BASE_MAINNET,
          srcAddress: '0xYourAddress...',
          srcToken: '0x1234...cdef',
          amount: 1_000_000_000_000_000_000n,
          dstChainKey: ChainKeys.POLYGON_MAINNET,
          dstToken: '0xabcd...567890',
          recipient: '0x9876...dcba',
        },
        walletProvider: evmWalletProvider,
      });

      if (result.ok) console.log('Bridged', result.value);
      ```
    </CodeGroup>
  </Tab>

  <Tab title="Yield">
    <h3 className="text-lg font-bold mb-2">Leveraged yield vaults, one swap away</h3>

    <p className="text-gray-500 mt-2 mb-5">
      Enter and exit vault positions as ordinary intent-based swaps — no vault-specific approvals.
    </p>

    <CardGroup cols={2}>
      <Card title="HTTP API" icon="server" href="/developers/http-api/leverage" horizontal arrow>
        Vault deposit / withdraw over HTTP.
      </Card>

      <Card title="Open-source SDK" icon="code" href="/developers/packages/foundation/sdk/functional-modules/leverage_yield" horizontal arrow>
        Deposit, withdraw, APR, and position data.
      </Card>
    </CardGroup>

    <Card title="Solution hub" icon="compass" href="/yield" horizontal arrow>
      All Yield docs in one place.
    </Card>

    <CodeGroup>
      ```typescript deposit.ts theme={null}
      import { ChainKeys } from '@sodax/sdk';

      const vault = sodax.leverageYield.getVault('lsodaWEETH');

      const intentResult = await sodax.leverageYield.deposit({
        vault: vault.vault,
        srcChainKey: ChainKeys.ARBITRUM_MAINNET,
        srcAddress: '0xYourArbitrumEOA...',
        inputToken: '0x...weETHonArbitrum',
        inputAmount: 1_000_000_000_000_000_000n,
        minOutputAmount: 900_000_000_000_000_000n,
      });

      if (intentResult.ok) {
        const swapResult = await sodax.leverageYield.vaultSwap({
          ...intentResult.value,
          walletProvider: evmWalletProvider,
        });
      }
      ```
    </CodeGroup>
  </Tab>
</Tabs>

***

<Note>
  **Building a React frontend?** [`@sodax/dapp-kit`](/developers/packages/experience/dapp-kit) wraps swap, bridge, money market, staking, and migration in hooks, with wallet connection included.
</Note>

### Audits

Eight published reports covering contracts across Sui, Solana, Soroban (Stellar), Near, Stacks, the Relay, and collaborative reviews (including a Sherlock collaborative on the LST / leverage-yield vault).

<Card title="Audit reports" icon="shield-halved" href="/developers/audits" horizontal arrow>
  Named reports and PDF downloads.
</Card>

***

### What you get

* **One surface, every network.** Integrate once via API or SDK.
* **Execution that settles.** Swaps, borrows, and deposits complete under real cross-network conditions.
* **Your app stays yours.** You own UX, pricing, and risk — SODAX is infrastructure underneath.

***

### Go deeper

<CardGroup cols={2}>
  <Card title="Your first swap" icon="bolt" href="/quickstart">
    Install → quote → execute on mainnet.
  </Card>

  <Card title="Get started" icon="signs-post" href="/introduction">
    Solana, Bitcoin, SDK, API, AI agents, or talk to the team.
  </Card>

  <Card title="AI coding agents" icon="robot" href="/ai-integration-guide">
    Wire `@sodax/skills` into Cursor, Claude Code, or Copilot.
  </Card>

  <Card title="Why build with SODAX" icon="chart-line" href="/home/why-sodax">
    Proof points and ecosystem reach.
  </Card>
</CardGroup>
