curl --request GET \
--url https://api-partner.houdiniswap.com/v2/chains \
--header 'Authorization: <api-key>'import requests
url = "https://api-partner.houdiniswap.com/v2/chains"
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/chains', 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/chains",
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/chains"
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/chains")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-partner.houdiniswap.com/v2/chains")
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{
"chains": [
{
"id": "6689b0d3c52f263938c44844",
"name": "Ethereum Mainnet",
"shortName": "ethereum",
"memoNeeded": false,
"explorerUrl": "https://etherscan.io/tx/{txHash}",
"addressUrl": "https://etherscan.io/address/{address}",
"icon": "https://api.houdiniswap.com/assets/networks/ETH.png",
"priority": 2,
"kind": "evm",
"addressValidation": "^(0x)[0-9A-Za-z]{40}$",
"tokenAddressValidation": "^(0x)[0-9A-Za-z]{40}$",
"chainId": 1
}
],
"totalPages": 1,
"total": 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 chains
Returns the list of available chains for CEX and DEX swaps.
Use the shortName field wherever another endpoint takes a chain.
curl --request GET \
--url https://api-partner.houdiniswap.com/v2/chains \
--header 'Authorization: <api-key>'import requests
url = "https://api-partner.houdiniswap.com/v2/chains"
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/chains', 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/chains",
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/chains"
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/chains")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-partner.houdiniswap.com/v2/chains")
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{
"chains": [
{
"id": "6689b0d3c52f263938c44844",
"name": "Ethereum Mainnet",
"shortName": "ethereum",
"memoNeeded": false,
"explorerUrl": "https://etherscan.io/tx/{txHash}",
"addressUrl": "https://etherscan.io/address/{address}",
"icon": "https://api.houdiniswap.com/assets/networks/ETH.png",
"priority": 2,
"kind": "evm",
"addressValidation": "^(0x)[0-9A-Za-z]{40}$",
"tokenAddressValidation": "^(0x)[0-9A-Za-z]{40}$",
"chainId": 1
}
],
"totalPages": 1,
"total": 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
Filter by chain name (case-insensitive search in name, shortName)
50Filter by chain kind, exact match against the kind field returned by this endpoint (e.g., "evm", "sol", "bitcoin", "xmr", "ltc"). Call this endpoint without filters to discover available kinds. Each value must be 16 characters or less.
10Chain kind filter value (exact match against the kind field).
16Filter by numeric EVM chain ID (e.g. 1 for Ethereum, 42161 for Arbitrum)
x >= 1Filter chains that support CEX swaps
Filter chains that support DEX swaps
Filter chains by whether they require a destination memo/tag
Page number
1 <= x <= 10000Page size
1 <= x <= 100