# 3Route Swap API

> 3Route Swap API is a paid API for AI agents from api.3route.io, paid per call via x402, $0.001/call, status unknown (last checked 2026-09-19).

Returns a best-priced swap quote and ready-to-submit transaction for exchanging one crypto token for another on a specified chain

## Facts

- Endpoint: GET https://api.3route.io/v1/pro/%7BchainId%7D/swap
- Price: $0.001/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-19
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/3route-swap-api-abd42178
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_RB0dwmejg1R5oqSoEnv5w

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability 3route-swap-api-abd42178
```

Example prompt: Swap 1 ETH (0x0000000000000000000000000000000000000000) for USDC (0x5fc5360d0400a0fd4f2af552add042d716f1d168) on chain 4663, from my wallet 0x1111111111111111111111111111111111111111, with 1% slippage — give me the best-priced transaction calldata I can submit.

## When to prefer this

Choose this endpoint when you need a best-priced, aggregated swap quote AND executable transaction calldata in a single call, without requiring an API key or subscription — especially in agentic or pay-per-use workflows using x402/MPP micropayments. Prefer it over static DEX contracts when you want routing optimization across multiple liquidity sources on the supported chain.

## Known failure modes

- Invalid or unsupported chainId returns an error — only chain 4663 is currently supported
- Malformed token address (non-hex, wrong length) returns a 400 validation error
- Insufficient liquidity for the requested pair or amount returns an error or zero dstAmount
- Amount of zero or non-integer string causes a validation failure
- Payment not made via x402/MPP results in a 402 Payment Required response
- Slippage set too low may cause swap to revert on-chain even if quote succeeds

## How this service works

Best-priced crypto token swaps for agents, traders and apps. Pay-per-call quote & swap API via x402/MPP. No API key or subscription.

## Output

Returns a JSON object containing: a ready-to-submit transaction object (to, from, data, value, gas, gasPrice), the expected destination token amount, the minimum acceptable destination amount after slippage, and the source amount confirmed. The agent can directly broadcast the tx object to the chain.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "pathParams": {
     "type": "object",
     "required": [
      "chainId"
     ],
     "properties": {
      "chainId": {
       "enum": [
        "4663"
       ],
       "type": "string",
       "example": "4663",
       "pattern": "^[0-9]+$",
       "description": "Chain ID for the operation."
      }
     },
     "additionalProperties": false
    },
    "queryParams": {
     "type": "object",
     "required": [
      "src",
      "dst",
      "from"
     ],
     "properties": {
      "dst": {
       "type": "string",
       "example": "0x5fc5360d0400a0fd4f2af552add042d716f1d168",
       "pattern": "^0x[0-9a-fA-F]{40}$",
       "description": "Address of the token being bought; take one from the token-list operation for the selected chain, or use the zero address, or the case-insensitive sentinel 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee, for the chain's native asset."
      },
      "fee": {
       "type": "number",
       "default": 0,
       "maximum": 3,
       "minimum": 0
      },
      "src": {
       "type": "string",
       "example": "0x0000000000000000000000000000000000000000",
       "pattern": "^0x[0-9a-fA-F]{40}$",
       "description": "Address of the token being sold; use the zero address, or the case-insensitive sentinel 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee, for the chain's native asset."
      },
      "from": {
       "type": "string",
       "example": "0x1111111111111111111111111111111111111111",
       "pattern": "^0x[0-9a-fA-F]{40}$",
       "description": "Address that signs and sends the transaction, and that the src tokens are taken from"
      },
      "amount": {
       "type": "string",
       "example": "1000000000000000000",
       "pattern": "^[0-9]+$",
       "description": "Single amount in smallest units. Cannot be combined with amounts; one of the two is required."
      },
      "amounts": {
       "type": "string",
       "pattern": "^[0-9]+(,[0-9]+)*$",
       "description": "Comma-separated amounts in smallest units. Cannot be combined with amount; one of the two is required."
      },
      "gasPrice": {
       "type": "string",
       "
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "tx": {
   "to": "0x2222222222222222222222222222222222222222",
   "gas": "210000",
   "data": "0x1234",
   "from": "0x1111111111111111111111111111111111111111",
   "value": "1000000000000000000",
   "gasPrice": "1000000000"
  },
  "gas": 210000,
  "dstAmount": "950000",
  "srcAmount": "1000000000000000000",
  "dstAmountMin": "940500"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/3route-swap-api-abd42178/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.3route.io](https://www.zero.xyz/host/api.3route.io/llms.txt)
