Documentation

How 10inch quotes.

A router for crypto and tokenized equities that treats the closing bell as a first-class input, and hands back a quote you can audit rather than a number you have to trust.

Overview

What this is

10inch aggregates liquidity across venues and returns a single best route. Two things make it different from a generic swap aggregator. First, it understands that a tokenized equity tracks a market that closes, and prices that fact explicitly instead of quoting a stale number. Second, every quote carries the evidence behind it: which venues were consulted, what spread was applied, and the instant it was true.

The quoting layer runs server-side. Venue API keys never reach the browser; the client only ever talks to /api/quote.

The claim

Exactly what we prove

This wording is deliberate and is used verbatim across the product:

We do not promise the best price in the world. We prove the best price available among the venues quoted at instant T.

The distinction matters. A claim of universal best price is unverifiable. A claim about a named set of venues at a named moment is checkable, and the quote carries the list. Note also that 10inch is an aggregation layer: it holds no custody, issues no token, runs no pool of its own.

Market-hours guard

Quotes that respect the bell

Any pair containing a tokenized equity passes through the guard. Crypto-only pairs bypass it entirely and are marked 24_7. The guard never blocks trading outside market hours; it prices the added risk and says so in the response.

PhaseWindow (ET)Guard spread
open09:30 – 16:00+0 bps
pre04:00 – 09:30+50 bps
post16:00 – 20:00+50 bps
closedovernight, trading day+150 bps
closedweekend or holiday+250 bps

The calendar is NYSE, daylight-saving correct, with holidays and the two early closes (13:00 ET) handled. Widening is applied by worsening the quoted buyAmount, and the amount is reported as guardAdjustmentBps so it can never be silent. Outside market hours staleness.isStale is true and referencePriceAt points at the last close.

Quote Object

The contract

One shape is returned by every quoting path, and it is the stable contract between the interface, this service, and anything that replaces it later.

typescript
interface Quote {
  id: string;                  // quote uuid
  chainId: number;
  sellToken: string;           // address
  buyToken: string;
  sellAmount: string;          // base units, bigint-safe string
  buyAmount: string;
  price: string;               // buy/sell, decimal string
  marketPhase: "open" | "pre" | "post" | "closed" | "24_7";
  spreadBps: number;           // total spread applied
  guardAdjustmentBps: number;  // how much the guard widened (0 when 24_7)
  staleness: {
    referencePriceAt: string;  // ISO; last close when stale
    isStale: boolean;
  };
  bestAmong: string[];         // venues consulted, e.g. ["0x:uniswap_v3"]
  route: { source: string; proportionBps: number }[];
  expiresAt: string;           // ISO; invalid afterwards
  transaction?: {              // firm quotes only
    to: string; data: string; value: string; gas: string;
  };
  issues?: { allowance?: { spender: string } | null; balance?: boolean };
}

A note on bestAmong: it records the underlying venues that were quoted, never an aggregator as a single opaque name. That is what makes the count in the claim meaningful.

Quoting API

GET /api/quote

ParamMeaning
chainIdsupported EVM chain id
sellTokenaddress; native asset uses 0xEeee…EEeE
buyTokenaddress
sellAmountbase units, integer string
takerrequired for a firm quote
modeprice (indicative) or quote (firm, with transaction)
slippageBpsoptional, 1–1000; omitted uses the venue default
curl
curl "https://10inch.io/api/quote?\
chainId=8453&\
sellToken=0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE&\
buyToken=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&\
sellAmount=1000000000000000000&\
mode=price"

Quotes are never cached, anywhere. Every request reaches the venue live and the response carries Cache-Control: no-store. A cached quote is a stale price, which is the exact failure the guard exists to prevent. Indicative quotes live 15 seconds, firm quotes 30.

Tokens API

GET /api/tokens

Returns the curated token list, optionally filtered by chainId. Every listed token was verified to have a live route before being added. Each entry carries isRWA and marketCalendar, which is how the interface knows to group tokenized equities separately and when to show the market-phase badge.

curl
curl "https://10inch.io/api/tokens?chainId=8453"
Execution

From quote to settled trade

The interface performs these steps in order:

  1. 01Networkswitches the wallet to the quoted chain if needed.
  2. 02Approvalfor ERC-20 sells, an exact-amount approval — never unlimited, so a compromised venue can reach one trade, not a balance.
  3. 03Firm quotefetched after the approval confirms, so wallet-confirmation time never consumes the quote's validity window.
  4. 04Expiry guarda firm quote is refused past expiresAt, with a 1.5s buffer for wallet latency.
  5. 05Send and confirmthe transaction is submitted, the receipt awaited, and reverts surfaced explicitly.

Settlement runs through audited venue contracts. 10inch never takes custody of funds at any point in this flow.

Errors

Failure is explicit

Every failure returns a readable code. The interface never renders an empty quote or an endless spinner.

CodeHTTPCause
INVALID_REQUEST400malformed or missing parameter
UNSUPPORTED_PAIR422no venue covers this pair on this chain
NO_LIQUIDITY422no route with available liquidity
TAKER_REQUIRED422firm quote requested without a taker
UPSTREAM_BAD_REQUEST422the venue rejected the request
UPSTREAM_UNAVAILABLE502the venue is unreachable
Chains

Where it works today

Quoting and execution run on Ethereum 1, Optimism 10, Polygon 137, Base 8453 and Arbitrum 42161. Base is the default: it carries the deepest routable liquidity for the listed token set.

Solana and Bitcoin wallets connect and are recognised, but trading on them is not live: the interface says so plainly and makes no quote request for those networks.

Roadmap

What comes next

  1. 01Attested executionorderbook snapshots signed at the millisecond of execution and Merkle-anchored on chain, with a public verifier, so a historical quote can be checked by anyone rather than taken on trust.
  2. 02Agent-native accessa machine interface with per-quote metering, letting autonomous agents price and trade under scoped, expiring permissions.
  3. 03Intent matchingopposing orders matched peer-to-peer at mid-price before the open market is touched, which produces price improvement without any pool of our own.
  4. 04Cross-protocol yieldborrow and lending rates aggregated across protocols, with one-click collateral migration and no balance-sheet risk taken by 10inch.