List tokens
curl --request GET \
--url https://api.eco.com/v1/tokens \
--header 'x-api-key: <api-key>'import requests
url = "https://api.eco.com/v1/tokens"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.eco.com/v1/tokens', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.eco.com/v1/tokens",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.eco.com/v1/tokens"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.eco.com/v1/tokens")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.eco.com/v1/tokens")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"tokens": [
{
"chainId": 1,
"address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"symbol": "USDC",
"decimals": 6,
"supports": {
"quote": [
"erc-3009",
"permit2",
"permit3"
],
"depositAddress": [
"erc-2612",
"erc-3009"
]
}
},
{
"chainId": 1,
"address": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
"symbol": "USDT",
"decimals": 6,
"supports": {
"quote": [
"erc-3009",
"permit2",
"permit3"
],
"depositAddress": [
"erc-2612",
"erc-3009"
]
}
},
{
"chainId": 10,
"address": "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85",
"symbol": "USDC",
"decimals": 6,
"supports": {
"quote": [
"erc-3009",
"permit2",
"permit3"
],
"depositAddress": [
"erc-2612",
"erc-3009"
]
}
},
{
"chainId": 8453,
"address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"symbol": "USDC",
"decimals": 6,
"supports": {
"quote": [
"erc-3009",
"permit2",
"permit3"
],
"depositAddress": [
"erc-2612",
"erc-3009"
]
}
},
{
"chainId": 8453,
"address": "0x1217BfE6c773EEC6cc4A38b5Dc45B92292B6E189",
"symbol": "oUSDT",
"decimals": 6,
"supports": {
"quote": [
"erc-3009",
"permit2",
"permit3"
],
"depositAddress": [
"erc-2612",
"erc-3009"
]
}
},
{
"chainId": 42161,
"address": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
"symbol": "USDC",
"decimals": 6,
"supports": {
"quote": [
"erc-3009",
"permit2",
"permit3"
],
"depositAddress": [
"erc-2612",
"erc-3009"
]
}
},
{
"chainId": 1399811149,
"address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"symbol": "USDC",
"decimals": 6,
"supports": {
"quote": [
"erc-3009",
"permit2",
"permit3"
],
"depositAddress": [
"erc-2612",
"erc-3009"
]
}
}
],
"nextCursor": null
}Discovery and quotes
List tokens
Returns every token the API can quote, with decimals and the gasless funding standards each supports.
GET
/
v1
/
tokens
List tokens
curl --request GET \
--url https://api.eco.com/v1/tokens \
--header 'x-api-key: <api-key>'import requests
url = "https://api.eco.com/v1/tokens"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.eco.com/v1/tokens', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.eco.com/v1/tokens",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.eco.com/v1/tokens"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.eco.com/v1/tokens")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.eco.com/v1/tokens")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"tokens": [
{
"chainId": 1,
"address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"symbol": "USDC",
"decimals": 6,
"supports": {
"quote": [
"erc-3009",
"permit2",
"permit3"
],
"depositAddress": [
"erc-2612",
"erc-3009"
]
}
},
{
"chainId": 1,
"address": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
"symbol": "USDT",
"decimals": 6,
"supports": {
"quote": [
"erc-3009",
"permit2",
"permit3"
],
"depositAddress": [
"erc-2612",
"erc-3009"
]
}
},
{
"chainId": 10,
"address": "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85",
"symbol": "USDC",
"decimals": 6,
"supports": {
"quote": [
"erc-3009",
"permit2",
"permit3"
],
"depositAddress": [
"erc-2612",
"erc-3009"
]
}
},
{
"chainId": 8453,
"address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"symbol": "USDC",
"decimals": 6,
"supports": {
"quote": [
"erc-3009",
"permit2",
"permit3"
],
"depositAddress": [
"erc-2612",
"erc-3009"
]
}
},
{
"chainId": 8453,
"address": "0x1217BfE6c773EEC6cc4A38b5Dc45B92292B6E189",
"symbol": "oUSDT",
"decimals": 6,
"supports": {
"quote": [
"erc-3009",
"permit2",
"permit3"
],
"depositAddress": [
"erc-2612",
"erc-3009"
]
}
},
{
"chainId": 42161,
"address": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
"symbol": "USDC",
"decimals": 6,
"supports": {
"quote": [
"erc-3009",
"permit2",
"permit3"
],
"depositAddress": [
"erc-2612",
"erc-3009"
]
}
},
{
"chainId": 1399811149,
"address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"symbol": "USDC",
"decimals": 6,
"supports": {
"quote": [
"erc-3009",
"permit2",
"permit3"
],
"depositAddress": [
"erc-2612",
"erc-3009"
]
}
}
],
"nextCursor": null
}Returns every token the API can quote, with decimals and the gasless standards each token supports for quote funding (
permit3, permit2, erc-3009) and deposit-address funding (erc-2612, erc-3009). chainId filters to one chain. A listed token does not guarantee that every pair and amount can be quoted.
Requires x-api-key. Partner pricing, attribution, and enabled features are tied to the key. Without a key the gateway answers 403 with a plain JSON body ({"Message": "User is not authorized ..."}); a key that is unknown, revoked, or not enabled for v1 answers 401 invalid-api-key. No requests-per-second quota is published. Handle 429 and honor Retry-After when present.
Examples use real mainnet token and contract addresses with placeholder wallets, hashes, signatures, and IDs.