ToolAssay

Price several amounts or pairs at one block

Price several amounts or pairs at one block. Prices several quotes, each a pair with one or more amounts, against one chain state and reports its block. Prefer it to sequential quote calls when prices must be comparable, such as both sides of a book. Charged once per request. Supports exact-output amounts per quote and historical state for approximately 35 days; the first request for a block may take 1-7 seconds.

Answeringour last check, 2026-09-24
1 of 1checks answered this week
1021 msmedian answer time
$0.00003listed price per call
$0.00003price it asked us

Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.

Endpoint

POST https://api.3route.io/v1/pro/:chainId/quote/batch

CategoryMarket data
Provider hostapi.3route.io
Networkseip155:42793, eip155:8453, solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp
Payment schemesbatch-settlement, exact
Self-reported calls, 30 days0 from 0 payers (the provider's figure, not ours)

Our checks, last 30 days

DayResultHTTPAskedTime
2026-09-24 valid payment request 402$0.00003 1021 ms

Example input (from the provider)

{
  "body": {
    "blockNumber": 70524414,
    "quotes": [
      {
        "amounts": [
          "10000000",
          "20000000"
        ],
        "dst": "0xaf3d76f1834a1d425780943c99ea8a608f8a93f9",
        "src": "0x5fc5360d0400a0fd4f2af552add042d716f1d168"
      },
      {
        "amounts": [
          "30000000000000000"
        ],
        "dst": "0x5fc5360d0400a0fd4f2af552add042d716f1d168",
        "src": "0xaf3d76f1834a1d425780943c99ea8a608f8a93f9"
      }
    ]
  },
  "bodyType": "json",
  "method": "POST",
  "pathParams": {
    "chainId": "42793"
  },
  "type": "http"
}

Promised output schema (from the provider)

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "input": {
      "additionalProperties": false,
      "properties": {
        "body": {
          "additionalProperties": false,
          "description": "Every quote in the batch is answered from one chain state. The state selectors belong to the envelope only; blockNumber or timestamp inside a quote is rejected as an unknown field.",
          "properties": {
            "blockNumber": {
              "description": "Use historical state at this block for every quote. Cannot be combined with timestamp or reference a future block.",
              "minimum": 0,
              "type": "integer"
            },
            "quotes": {
              "description": "Quotes to answer, currently at most 4 per request, with at most 100 amounts summed over all quotes. The limits can change; a request over them answers 400 naming the current limit.",
              "items": {
                "additionalProperties": false,
                "description": "One quote in a batch: a pair and the amounts to price for it. Options apply to this quote only, so the two sides of a book can be filtered or priced differently.",
                "properties": {
                  "amounts": {
                    "description": "Positive amounts in smallest units, as integer strings, priced against this pair. Uses src units by default, or dst units when isExactOutput=true. The response holds one element per amount, in request order.",
                    "example": [
                      "10000000",
                      "20000000"
                    ],
                    "items": {
                      "pattern": "^[0-9]+$",
                      "type": "string"
                    },
                    "minItems": 1,
                    "type": "array"
                  },
                  "dst": {
                    "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.",
                    "example": "0xaf3d76f1834a1d425780943c99ea8a608f8a93f9",
                    "pattern": "^0x[0-9a-fA-F]{40}$",
                    "type": "string"
                  },
                  "excludedProtocols": {
                    "description": "Comma-separated deny-list of DEX provider names to exclude from routing. Unknown names are ignored.",
                    "type": "string"
                  },
                  "fee": {
                    "default": 0,
                    "description": "Referral fee in percent. It is deducted from the input and reflected in srcAmount. A value outside the range is rejected with 400.",
                    "maximum": 3,
                    "minimum": 0,
                    "type": "number"
                  },
                  "includeProtocols": {
                    "default": false,
                    "description": "Include route hops, pool addresses, expected input and output amounts, and shares in basis points.",
                    "type": "boolean"
                  },
                  "includeTokensInfo": {
                    "default": false,
                    "description": "Set true to add the srcToken and dstToken metadata objects to the response",
                    "type": "boolean"
                  },
                  "isExactOutput": {
                    "default": false,
                    "description": "Set true to use each entry of amounts as the desired dst output and calculate the required srcAmount.",
                    "type": "boolean"
                  },
                  "protocols": {
                    "description": "Comma-separated allow-list of DEX provider names to route through. Omit it to allow every provider. Unknown names are ignored when at least one name is known, but a list in which no name is known is rejected with 400. Provider names come back in protocols when includeProtocols=true.",
                    "type": "string"
                  },
                  "src": {
                    "description": "Address of the token being sold; use the zero address, or the case-insensitive sentinel 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee, for the chain's native asset",
                    "example": "0x5fc5360d0400a0fd4f2af552add042d716f1d168",
                    "pattern": "^0x[0-9a-fA-F]{40}$",
                    "type": "string"
                  }
                },
                "required": [
                  "src",
                  "dst",
                  "amounts"
                ],
                "type": "object"
              },
              "minItems": 1,
              "type": "array"
            },
            "timestamp": {
              "description": "Use historical state at this Unix timestamp in seconds for every quote. Cannot be combined with blockNumber or reference a future time.",
              "minimum": 0,
              "type": "integer"
            }
          },
          "required": [
            "quotes"
          ],
          "type": "object"
        },
        "bodyType": {
          "enum": [
            "json",
            "form-data",
            "text"
          ],
          "type": "string"
        },
        "method": {
          "enum": [
            "POST"
          ],
          "type": "string"
        },
        "pathParams": {
          "additionalProperties": false,
          "properties": {
            "chainId": {
              "description": "Chain ID for the operation.",
              "enum": [
                "4663",
                "42793"
              ],
              "example": "4663",
              "pattern": "^[0-9]+$",
              "type": "string"
            }
          },
          "required": [
            "chainId"
          ],
          "type": "object"
        },
        "type": {
       

This page as JSON