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

# Why Olympex

> Aggregated liquidity, cross-chain routes, limit orders, DCA strategies and integrator fees on EVM chains, behind one signed REST API.

The new economy doesn't wait. Olympex started as the trader's terminal on Mount Olympus, and the REST API brings its routing to your product: one signed request returns the best route Olympex finds across its liquidity sources, and a second returns the unsigned transaction that executes it. The same API runs limit orders and DCA strategies that Olympex executes for your users.

## The case for Olympex

<CardGroup cols={2}>
  <Card title="Aggregated liquidity" icon="route" href="/concepts/aggregation-and-routing">
    Quotes compare routes from sources that include OKX, 1inch, OpenOcean, 0x, Uniswap and Symbiosis, ranked by output by default.
  </Card>

  <Card title="Cross-chain in one quote" icon="link" href="/concepts/cross-chain-mechanics">
    The source-chain swap, the bridge and the destination-chain swap come back as one route, with status tracking after you send.
  </Card>

  <Card title="Limit orders and DCA" icon="clock" href="/concepts/limit-orders">
    Create an order or a strategy once, and Olympex executes it on-chain from the maker's wallet.
  </Card>

  <Card title="Chains and tokens from the API" icon="list-check" href="/api-reference/tokens/list-tokens">
    List the enabled chains and each chain's tokens, with addresses, symbols and decimals.
  </Card>

  <Card title="Non-custodial by design" icon="shield-halved" href="/concepts/security-model">
    The API never asks for a private key. Swaps return unsigned calldata for your wallet to send, and orders spend only the allowance you grant.
  </Card>

  <Card title="Integrator fees" icon="magnifying-glass-dollar" href="/concepts/gas-and-fees">
    Add your own fee of up to 1% to quotes and swaps, paid to an address you choose.
  </Card>

  <Card title="One signed REST surface" icon="code" href="/api-reference/overview">
    19 endpoints, one response envelope and a public OpenAPI spec.
  </Card>

  <Card title="Test in the browser" icon="terminal" href="/api-reference/console">
    Create a test API key in one click and send signed requests from the endpoint reference pages.
  </Card>
</CardGroup>

## Aggregated liquidity

You don't pick a venue: you ask for a quote. [`POST /quotes`](/api-reference/quotes/get-quote) requests routes from the liquidity sources Olympex integrates, ranks them by `orderBy` (highest output by default), and returns the winner's `outAmount`, the DEXes its route uses (`routes`) and the source that produced it (`aggregatorId`).

| Source | `aggregatorId` |
| - | - |
| OKX | `okx` |
| 1inch | `oneInch` |
| OpenOcean | `openOceanV3`, `openOceanV4` |
| 0x | `zeroExV2AllowanceHolder` |
| Uniswap v3 and v4 | `uniswapV3Hermes`, `uniswapV4Hermes` |

The response also lists every source that quoted, best first, in `aggregatorOrder`. If building the swap with the winning source fails, or its calldata reverts when you estimate gas, build it with the next one. To leave a source out, pass its ID in `excludeMetaAggregatorId`. [Aggregation and routing](/concepts/aggregation-and-routing) explains the ranking in detail.

## One request shape on every chain

A quote on Arbitrum has the same shape as a quote on Polygon: you change `chainId` and the token addresses. [`GET /chains`](/api-reference/chains/list-chains) returns the chains Olympex has enabled, and [`GET /tokens`](/api-reference/tokens/list-tokens) returns the tokens it lists on each one, with `address`, `symbol`, `name`, `decimals` and, when one exists, a logo URL, so you can build chain and token pickers from the API.

| Chain | Chain ID | Single-chain swaps | Cross-chain source | Limit orders and DCA |
| - | - | - | - | - |
| <img src="https://mintcdn.com/olympex/Hv2idqJvAaUqU38v/images/chains/ethereum.svg?fit=max&auto=format&n=Hv2idqJvAaUqU38v&q=85&s=293c0e1b97dc747a3955f204461beb6f" alt="" width="24" height="24" style={{background:"#fff",borderRadius:"6px",verticalAlign:"middle",marginRight:"8px",display:"inline-block"}} data-path="images/chains/ethereum.svg" /> Ethereum | `1` | Yes | Yes | Yes |
| <img src="https://mintcdn.com/olympex/Hv2idqJvAaUqU38v/images/chains/optimism.svg?fit=max&auto=format&n=Hv2idqJvAaUqU38v&q=85&s=cf6a4bcfad7bd05a78cf8faa7f216968" alt="" width="24" height="24" style={{background:"#fff",borderRadius:"6px",verticalAlign:"middle",marginRight:"8px",display:"inline-block"}} data-path="images/chains/optimism.svg" /> Optimism | `10` | Yes | Yes | Yes |
| <img src="https://mintcdn.com/olympex/Hv2idqJvAaUqU38v/images/chains/bnb.svg?fit=max&auto=format&n=Hv2idqJvAaUqU38v&q=85&s=17fb2131b216c51121697b697c161133" alt="" width="24" height="24" style={{background:"#fff",borderRadius:"6px",verticalAlign:"middle",marginRight:"8px",display:"inline-block"}} data-path="images/chains/bnb.svg" /> BNB Chain | `56` | Yes | Yes | Yes |
| <img src="https://mintcdn.com/olympex/Hv2idqJvAaUqU38v/images/chains/polygon.svg?fit=max&auto=format&n=Hv2idqJvAaUqU38v&q=85&s=f9ef4e672e0743e17ce9fe99d1506f4b" alt="" width="24" height="24" style={{background:"#fff",borderRadius:"6px",verticalAlign:"middle",marginRight:"8px",display:"inline-block"}} data-path="images/chains/polygon.svg" /> Polygon | `137` | Yes | Yes | Yes |
| <img src="https://mintcdn.com/olympex/Hv2idqJvAaUqU38v/images/chains/base.svg?fit=max&auto=format&n=Hv2idqJvAaUqU38v&q=85&s=f9a8742fcbf950055443d8581fa13f6d" alt="" width="24" height="24" style={{background:"#fff",borderRadius:"6px",verticalAlign:"middle",marginRight:"8px",display:"inline-block"}} data-path="images/chains/base.svg" /> Base | `8453` | Yes | No | Yes |
| <img src="https://mintcdn.com/olympex/Hv2idqJvAaUqU38v/images/chains/arbitrum.svg?fit=max&auto=format&n=Hv2idqJvAaUqU38v&q=85&s=70d855119ee63c451321c7db0e731eba" alt="" width="24" height="24" style={{background:"#fff",borderRadius:"6px",verticalAlign:"middle",marginRight:"8px",display:"inline-block"}} data-path="images/chains/arbitrum.svg" /> Arbitrum | `42161` | Yes | Yes | Yes |
| <img src="https://mintcdn.com/olympex/Hv2idqJvAaUqU38v/images/chains/avalanche.svg?fit=max&auto=format&n=Hv2idqJvAaUqU38v&q=85&s=5940c1ce2e4ea155ac4cc6400725f442" alt="" width="24" height="24" style={{background:"#fff",borderRadius:"6px",verticalAlign:"middle",marginRight:"8px",display:"inline-block"}} data-path="images/chains/avalanche.svg" /> Avalanche | `43114` | Yes | Yes | Yes |
| <img src="https://mintcdn.com/olympex/Hv2idqJvAaUqU38v/images/chains/linea.svg?fit=max&auto=format&n=Hv2idqJvAaUqU38v&q=85&s=0246b017a75e24be1d41ba6fde70c3c5" alt="" width="24" height="24" style={{background:"#fff",borderRadius:"6px",verticalAlign:"middle",marginRight:"8px",display:"inline-block"}} data-path="images/chains/linea.svg" /> Linea | `59144` | Yes | No | Yes |

A cross-chain transfer starts on a chain marked Yes in the cross-chain source column and ends on another chain in the table. Whether a specific pair has a route depends on the providers when you ask, so request a quote to confirm it.

Limit orders and DCA execute only on the chains marked Yes in the last column, through the Olympex order contract on each one. [Order signatures and allowances](/concepts/order-authorization#the-order-contract) lists the contract address on each chain.

`GET /chains` returns chain IDs only, without names, logos or capabilities. If your product needs them, keep this table's names and columns in your code, and use [`GET /chains`](/api-reference/chains/list-chains) to decide which of these chains to offer: offer a chain only while its ID is in the response. [`POST /support-chain`](/api-reference/chains/check-chain-support) checks one chain ID against the same list.

## Cross-chain in one quote

Set `mode` to `cross-chain` and `POST /quotes` returns a route between two chains. It can include a swap on the source chain, the bridge and a swap on the destination chain (`middlewareRoute`), and it reports the expected amount you receive (`toTokenAmount`), the minimum after slippage (`minimumReceived`), the bridge used (`bridgeInfo`) and the provider's estimate of the transfer's cost in USD (`estimateCostInUSD`). Cross-chain routes come from cross-chain providers; signed API accounts receive routes from OKX (`okx`) and Rango (`rango`).

After you broadcast, [`POST /tx-status`](/api-reference/transactions/get-transaction-status) reports the provider's status for the transfer until it settles. [Cross-chain mechanics](/concepts/cross-chain-mechanics) covers the full lifecycle.

## Limit orders and DCA

Olympex also executes orders on your users' behalf:

* A **limit order** sells `amount` of `inTokenAddress` for `outTokenAddress`. The order executes when the market price of `inTokenAddress`, in `outTokenAddress`, reaches `priceTrigger` or better. You create it with [`POST /limit-order`](/api-reference/limit-orders/create-limit-order), follow it with [`GET /limit-order/{id}`](/api-reference/limit-orders/get-limit-order), and can cancel it while it is `pending`.
* A **DCA strategy** spends `totalAmount` of one token in `iterations` equal orders, one every `frequency` seconds, to buy another: for example 100 USDC into WETH in 10 daily orders. You create it with [`POST /dca-order/strategies`](/api-reference/dca/create-dca-strategy), and Olympex places the orders one `frequency` apart.

Both products work the same way on-chain. The maker wallet signs the token pair once and approves the Olympex order contract. Nothing moves when you create an order: when it executes, Olympex pulls the tokens from the maker's wallet through that contract, swaps them and sends the output back to the same wallet. [Limit orders](/concepts/limit-orders), [DCA](/concepts/dca) and [Order signatures and allowances](/concepts/order-authorization) cover the details.

## Non-custodial by design

The API never asks for a private key.

* **Swaps.** [`POST /swap`](/api-reference/swap/build-swap) returns the transaction fields (`to`, `data` or `calldata`, `value`) and the ERC-20 spender to approve (`contractToApprove`). Your wallet signs and sends the transaction, so funds move only when you broadcast.
* **Limit orders and DCA.** Olympex sends the execution transactions. Your token allowance to the Olympex order contract is the on-chain limit on what it can move, so approve only what your open orders need.

Each swap transaction also carries safeguards:

* It is bound to the `account` you pass to `/swap`, which sends the transaction and receives the output.
* It carries an on-chain expiry, 5 minutes on most routes.
* A single-chain swap reverts if the output would fall below `minOutAmount`.

[Security model](/concepts/security-model) describes what Olympex can and can't do with your transactions.

## Integrator fees

Add the same `fees` object to your signed quote and swap: `feeBps` from `0` to `100` (100 is 1%) and the `feeRecipient` address that receives it. The quote's `integratorFeeBreakdown` reports your margin and the Olympex protocol fee separately, so you can show both to your users. Fees apply to signed requests from API accounts. [Gas and fees](/concepts/gas-and-fees) explains the units.

## Built to integrate

* **One surface.** 19 endpoints under one base URL, using `GET`, `POST`, `PATCH` and `DELETE`. Olympex answers success and failure with one JSON envelope; responses from the API gateway, such as a rejected signature, carry only `{"message": …}`.
* **Traceable.** Every response envelope carries `meta.requestId`, and gateway responses carry an `apigw-requestid` header, so support can find your exact request.
* **Verifiable signing.** Reference signers in TypeScript, Python and bash are checked against [published known-answer vectors](/authentication/sign-requests).
* **Machine-readable.** The [OpenAPI 3.0 spec](/api-reference/openapi-spec) is public at `https://docs.olympex.io/api-reference/openapi.json`. Generate a typed client from it and wrap it with the signer.
* **Hands-on.** The [API console](/api-reference/console) signs requests in your browser, and [a test API key](/get-started/create-an-api-key) takes one click. If your browser blocks a call, use the console's **Copy as cURL** or [create the key from a terminal](/get-started/create-an-api-key#create-a-key-from-a-terminal).

## Start building

Create a key, then follow the [quickstart](/get-started/quickstart) to send your first signed request.

<CardGroup cols={2}>
  <Card title="Create a test API key" icon="key" href="/get-started/create-an-api-key">
    Get working credentials in one click and send your first signed request.
  </Card>

  <Card title="Talk to us" icon="calendar" href="https://calendar.app.google/zZGNMcrzbQwMjVMJA">
    Integrator fees, volume, or anything else: book a call or email [partners@olympex.io](mailto:partners@olympex.io).
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.