curl --request GET \
--url https://api-partner.houdiniswap.com/v2/tokens \
--header 'Authorization: <api-key>'import requests
url = "https://api-partner.houdiniswap.com/v2/tokens"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api-partner.houdiniswap.com/v2/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-partner.houdiniswap.com/v2/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 => [
"Authorization: <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-partner.houdiniswap.com/v2/tokens"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<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-partner.houdiniswap.com/v2/tokens")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-partner.houdiniswap.com/v2/tokens")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"tokens": [
{
"address": null,
"chain": "ethereum",
"decimals": 18,
"symbol": "ETH",
"name": "Ethereum",
"created": "2024-07-06T21:29:34.823Z",
"modified": "2026-09-16T07:06:46.700Z",
"chainData": {
"created": "2024-07-06T21:02:11.672Z",
"modified": "2026-09-14T10:01:00.292Z",
"name": "Ethereum Mainnet",
"shortName": "ethereum",
"addressValidation": "^(0x)[0-9A-Za-z]{40}$",
"tokenAddressValidation": "^(0x)[0-9A-Za-z]{40}$",
"memoNeeded": false,
"explorerUrl": "https://etherscan.io/tx/{txHash}",
"addressUrl": "https://etherscan.io/address/{address}",
"priority": 2,
"kind": "evm",
"chainId": 1,
"enabled": true,
"shortNameV1": "ETH",
"id": "6689b0d3c52f263938c44844",
"icon": "https://api.houdiniswap.com/assets/networks/ETH.png"
},
"description": "Ethereum is a global, open-source platform for decentralized applications. In other words, the vision is to create a world computer that anyone can build applications in a decentralized manner; while all states and data are distributed and publicly accessible. Ethereum supports smart contracts in which developers can write code in order to program digital value. Examples of decentralized apps (dapps) that are built on Ethereum includes tokens, non-fungible tokens, decentralized finance apps, lending protocol, decentralized exchanges, and much more.\r\n\r\nOn Ethereum, all transactions and smart contract executions require a small fee to be paid. This fee is called Gas. In technical terms, Gas refers to the unit of measure on the amount of computational effort required to execute an operation or a smart contract. The more complex the execution operation is, the more gas is required to fulfill that operation. Gas fees are paid entirely in Ether (ETH), which is the native coin of the blockchain. The price of gas can fluctuate from time to time depending on the network demand.",
"mainnet": true,
"enabled": true,
"unverified": false,
"hasDex": true,
"hasCex": true,
"hasSelfPrivate": true,
"cexTokenId": "ETH",
"rank": 2,
"cgId": "ethereum",
"marketCapChange24h": -3.15312,
"circulatingSupply": 122053082.69974948,
"price": 2401.7,
"marketCap": 293069408497,
"volume": 18775255556,
"fdv": 293069408497,
"change": -3.1168,
"priority": 2,
"securityScan": {
"provider": "blockaid",
"resultType": "Unscanned",
"features": [],
"unscannedReason": "NATIVE_TOKEN",
"unscannedDetail": "ETH has no contract address to scan",
"scannedAt": "2026-09-15T08:25:54.920Z",
"expiresAt": "2026-09-16T08:25:54.920Z"
},
"id": "6689b73ec90e45f3b3e51566",
"icon": "https://api.houdiniswap.com/assets/tokens/ETH-ETH-lejbdy.png"
}
],
"total": 1,
"totalPages": 1
}{
"message": "<string>",
"code": "<string>",
"requestId": "<string>"
}{}{
"message": "<string>",
"code": "<string>",
"fields": {},
"requestId": "<string>"
}{
"message": "<string>",
"code": "<string>",
"requestId": "<string>"
}{
"message": "<string>",
"code": "<string>",
"requestId": "<string>"
}Get tokens
Returns the list of available tokens. Use the returned id as the from / to of a quote.
Without filters this returns every enabled token, 1000 per page and several MB per response. Narrow it with:
term— search by name, symbol, address or cexTokenIdhasCex— tokens available for private and standard swapshasDex— tokens available for DEX swapshasBundler— tokens the bundler can fund in one transactionchain— one chain only, e.g.ethereum. Use ashortNamefrom Get chains
Tokens we have not reviewed are excluded unless you pass unverified=true.
curl --request GET \
--url https://api-partner.houdiniswap.com/v2/tokens \
--header 'Authorization: <api-key>'import requests
url = "https://api-partner.houdiniswap.com/v2/tokens"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api-partner.houdiniswap.com/v2/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-partner.houdiniswap.com/v2/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 => [
"Authorization: <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-partner.houdiniswap.com/v2/tokens"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<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-partner.houdiniswap.com/v2/tokens")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-partner.houdiniswap.com/v2/tokens")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"tokens": [
{
"address": null,
"chain": "ethereum",
"decimals": 18,
"symbol": "ETH",
"name": "Ethereum",
"created": "2024-07-06T21:29:34.823Z",
"modified": "2026-09-16T07:06:46.700Z",
"chainData": {
"created": "2024-07-06T21:02:11.672Z",
"modified": "2026-09-14T10:01:00.292Z",
"name": "Ethereum Mainnet",
"shortName": "ethereum",
"addressValidation": "^(0x)[0-9A-Za-z]{40}$",
"tokenAddressValidation": "^(0x)[0-9A-Za-z]{40}$",
"memoNeeded": false,
"explorerUrl": "https://etherscan.io/tx/{txHash}",
"addressUrl": "https://etherscan.io/address/{address}",
"priority": 2,
"kind": "evm",
"chainId": 1,
"enabled": true,
"shortNameV1": "ETH",
"id": "6689b0d3c52f263938c44844",
"icon": "https://api.houdiniswap.com/assets/networks/ETH.png"
},
"description": "Ethereum is a global, open-source platform for decentralized applications. In other words, the vision is to create a world computer that anyone can build applications in a decentralized manner; while all states and data are distributed and publicly accessible. Ethereum supports smart contracts in which developers can write code in order to program digital value. Examples of decentralized apps (dapps) that are built on Ethereum includes tokens, non-fungible tokens, decentralized finance apps, lending protocol, decentralized exchanges, and much more.\r\n\r\nOn Ethereum, all transactions and smart contract executions require a small fee to be paid. This fee is called Gas. In technical terms, Gas refers to the unit of measure on the amount of computational effort required to execute an operation or a smart contract. The more complex the execution operation is, the more gas is required to fulfill that operation. Gas fees are paid entirely in Ether (ETH), which is the native coin of the blockchain. The price of gas can fluctuate from time to time depending on the network demand.",
"mainnet": true,
"enabled": true,
"unverified": false,
"hasDex": true,
"hasCex": true,
"hasSelfPrivate": true,
"cexTokenId": "ETH",
"rank": 2,
"cgId": "ethereum",
"marketCapChange24h": -3.15312,
"circulatingSupply": 122053082.69974948,
"price": 2401.7,
"marketCap": 293069408497,
"volume": 18775255556,
"fdv": 293069408497,
"change": -3.1168,
"priority": 2,
"securityScan": {
"provider": "blockaid",
"resultType": "Unscanned",
"features": [],
"unscannedReason": "NATIVE_TOKEN",
"unscannedDetail": "ETH has no contract address to scan",
"scannedAt": "2026-09-15T08:25:54.920Z",
"expiresAt": "2026-09-16T08:25:54.920Z"
},
"id": "6689b73ec90e45f3b3e51566",
"icon": "https://api.houdiniswap.com/assets/tokens/ETH-ETH-lejbdy.png"
}
],
"total": 1,
"totalPages": 1
}{
"message": "<string>",
"code": "<string>",
"requestId": "<string>"
}{}{
"message": "<string>",
"code": "<string>",
"fields": {},
"requestId": "<string>"
}{
"message": "<string>",
"code": "<string>",
"requestId": "<string>"
}{
"message": "<string>",
"code": "<string>",
"requestId": "<string>"
}Authorizations
Send Authorization: <ApiKey>:<ApiSecret> — joined by a colon, raw. No Bearer prefix, no base64.
Query Parameters
Search term that matches against name, symbol, address, keyword, cexTokenId fields
100Filter by chain, e.g. "ethereum". Use a shortName from Get chains
Filter by exact token symbol, e.g. "USDT"
20Filter tokens by contract address
200Filter tokens available for private and standard swaps.
Filter tokens available for DEX swaps.
Filter tokens that support self-to-self private swaps — send a token and receive the same token at another address, with no on-chain link between them.
Filter tokens the bundler can fund — paying for a whole multi-exchange group with one transaction instead of a deposit per order.
Filter by token type. true returns each chain's native coin (e.g. ETH on Ethereum, BNB on BSC); false returns issued tokens (e.g. USDT). Omit to return both.
Include tokens we have not reviewed. Defaults to false. Any contract address quoted through the API is added automatically, so this list contains arbitrary tokens — check securityScan before offering one to users.
1 <= x <= 10000Number of results to return per page
1 <= x <= 1000