Build an unsigned swap transaction for the best route
Build an unsigned swap transaction for the best route. Compare it with a fresh quote, validate every returned transaction field, obtain signing approval, and broadcast it through the chain's RPC. The parameters permit and usePermit2 are ignored. An ERC-20 source must approve the router in tx.to for at least srcAmount first. Supports exact-output amounts, historical state for approximately 35 days, and multiple amounts at once; the first request for a block may take 1-7 seconds.
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
GET https://api.3route.io/v1/pro/:chainId/swap
| Category | Everything else |
|---|---|
| Provider host | api.3route.io |
| Networks | eip155:42793, eip155:8453, solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp |
| Payment schemes | batch-settlement, exact |
| Self-reported calls, 30 days | 1 from 1 payers (the provider's figure, not ours) |
Our checks, last 30 days
We never call tools that send, buy, move money or file anything, not even without paying.
Example input (from the provider)
{
"method": "GET",
"pathParams": {
"chainId": "4663"
},
"queryParams": {
"amount": "1000000000000000000",
"dst": "0x5fc5360d0400a0fd4f2af552add042d716f1d168",
"fee": 0,
"from": "0x1111111111111111111111111111111111111111",
"gasPrice": "1000000000",
"includeBlockNumber": false,
"includeProtocols": false,
"includeTokensInfo": false,
"isExactOutput": false,
"receiver": "0x1111111111111111111111111111111111111111",
"referrer": "0x1111111111111111111111111111111111111111",
"slippage": 1,
"src": "0x0000000000000000000000000000000000000000"
},
"type": "http"
}
Promised output schema (from the provider)
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"method": {
"enum": [
"GET"
],
"type": "string"
},
"pathParams": {
"additionalProperties": false,
"properties": {
"chainId": {
"description": "Chain ID for the operation.",
"enum": [
"4663"
],
"example": "4663",
"pattern": "^[0-9]+$",
"type": "string"
}
},
"required": [
"chainId"
],
"type": "object"
},
"queryParams": {
"additionalProperties": false,
"properties": {
"amount": {
"description": "Single amount in smallest units. Cannot be combined with amounts; one of the two is required.",
"example": "1000000000000000000",
"pattern": "^[0-9]+$",
"type": "string"
},
"amounts": {
"description": "Comma-separated amounts in smallest units. Cannot be combined with amount; one of the two is required.",
"pattern": "^[0-9]+(,[0-9]+)*$",
"type": "string"
},
"blockNumber": {
"minimum": 0,
"type": "integer"
},
"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": "0x5fc5360d0400a0fd4f2af552add042d716f1d168",
"pattern": "^0x[0-9a-fA-F]{40}$",
"type": "string"
},
"excludedProtocols": {
"type": "string"
},
"fee": {
"default": 0,
"maximum": 3,
"minimum": 0,
"type": "number"
},
"from": {
"description": "Address that signs and sends the transaction, and that the src tokens are taken from",
"example": "0x1111111111111111111111111111111111111111",
"pattern": "^0x[0-9a-fA-F]{40}$",
"type": "string"
},
"gasPrice": {
"example": "1000000000",
"pattern": "^[0-9]+$",
"type": "string"
},
"includeBlockNumber": {
"default": false,
"type": "boolean"
},
"includeProtocols": {
"default": false,
"type": "boolean"
},
"includeTokensInfo": {
"default": false,
"type": "boolean"
},
"isExactOutput": {
"default": false,
"type": "boolean"
},
"protocols": {
"type": "string"
},
"receiver": {
"example": "0x1111111111111111111111111111111111111111",
"pattern": "^0x[0-9a-fA-F]{40}$",
"type": "string"
},
"referrer": {
"example": "0x1111111111111111111111111111111111111111",
"pattern": "^0x[0-9a-fA-F]{40}$",
"type": "string"
},
"slippage": {
"default": 1,
"example": 1,
"maximum": 50,
"minimum": 0,
"type": "number"
},
"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": "0x0000000000000000000000000000000000000000",
"pattern": "^0x[0-9a-fA-F]{40}$",
"type": "string"
},
"timestamp": {
"minimum": 0,
"type": "integer"
}
},
"required": [
"src",
"dst",
"from"
],
"type": "object"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method"
],
"type": "object"
},
"output": {
"properties": {
"example": {
"type": "object"
},
"type": {
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}
},
"required": [
"input"
],
"type": "object"
}