curl --request POST \
--url https://api.hydric.org/v1/pools/search \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"tokensA": [
{
"chainId": 1,
"address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"
},
{
"chainId": 1,
"address": "0x6B175474E89094C44Da98b954EedeAC495271d0F"
},
{
"chainId": 8453,
"address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
}
],
"basketsA": [
{
"basketId": "usd-stablecoins",
"chainIds": [
1,
8453
]
}
],
"tokensB": [
{
"chainId": 1,
"address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
},
{
"chainId": 8453,
"address": "0x4200000000000000000000000000000000000006"
}
],
"basketsB": [
{
"basketId": "usd-stablecoins",
"chainIds": [
1,
8453
]
}
],
"filters": {
"minimumTotalValueLockedUsd": 10000,
"blockedPoolTypes": [],
"blockedProtocols": [],
"protocols": [],
"poolTypes": []
},
"config": {
"limit": 10,
"orderBy": {
"field": "tvl",
"direction": "desc",
"timeframe": "24h"
},
"cursor": "",
"parseWrappedToNative": "AUTO",
"useWrappedForNative": true
}
}
'import requests
url = "https://api.hydric.org/v1/pools/search"
payload = {
"tokensA": [
{
"chainId": 1,
"address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"
},
{
"chainId": 1,
"address": "0x6B175474E89094C44Da98b954EedeAC495271d0F"
},
{
"chainId": 8453,
"address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
}
],
"basketsA": [
{
"basketId": "usd-stablecoins",
"chainIds": [1, 8453]
}
],
"tokensB": [
{
"chainId": 1,
"address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
},
{
"chainId": 8453,
"address": "0x4200000000000000000000000000000000000006"
}
],
"basketsB": [
{
"basketId": "usd-stablecoins",
"chainIds": [1, 8453]
}
],
"filters": {
"minimumTotalValueLockedUsd": 10000,
"blockedPoolTypes": [],
"blockedProtocols": [],
"protocols": [],
"poolTypes": []
},
"config": {
"limit": 10,
"orderBy": {
"field": "tvl",
"direction": "desc",
"timeframe": "24h"
},
"cursor": "",
"parseWrappedToNative": "AUTO",
"useWrappedForNative": True
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
tokensA: [
{chainId: 1, address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'},
{chainId: 1, address: '0x6B175474E89094C44Da98b954EedeAC495271d0F'},
{chainId: 8453, address: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'}
],
basketsA: [{basketId: 'usd-stablecoins', chainIds: [1, 8453]}],
tokensB: [
{chainId: 1, address: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'},
{chainId: 8453, address: '0x4200000000000000000000000000000000000006'}
],
basketsB: [{basketId: 'usd-stablecoins', chainIds: [1, 8453]}],
filters: {
minimumTotalValueLockedUsd: 10000,
blockedPoolTypes: [],
blockedProtocols: [],
protocols: [],
poolTypes: []
},
config: {
limit: 10,
orderBy: {field: 'tvl', direction: 'desc', timeframe: '24h'},
cursor: '',
parseWrappedToNative: 'AUTO',
useWrappedForNative: true
}
})
};
fetch('https://api.hydric.org/v1/pools/search', 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.hydric.org/v1/pools/search",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'tokensA' => [
[
'chainId' => 1,
'address' => '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'
],
[
'chainId' => 1,
'address' => '0x6B175474E89094C44Da98b954EedeAC495271d0F'
],
[
'chainId' => 8453,
'address' => '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
]
],
'basketsA' => [
[
'basketId' => 'usd-stablecoins',
'chainIds' => [
1,
8453
]
]
],
'tokensB' => [
[
'chainId' => 1,
'address' => '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'
],
[
'chainId' => 8453,
'address' => '0x4200000000000000000000000000000000000006'
]
],
'basketsB' => [
[
'basketId' => 'usd-stablecoins',
'chainIds' => [
1,
8453
]
]
],
'filters' => [
'minimumTotalValueLockedUsd' => 10000,
'blockedPoolTypes' => [
],
'blockedProtocols' => [
],
'protocols' => [
],
'poolTypes' => [
]
],
'config' => [
'limit' => 10,
'orderBy' => [
'field' => 'tvl',
'direction' => 'desc',
'timeframe' => '24h'
],
'cursor' => '',
'parseWrappedToNative' => 'AUTO',
'useWrappedForNative' => true
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.hydric.org/v1/pools/search"
payload := strings.NewReader("{\n \"tokensA\": [\n {\n \"chainId\": 1,\n \"address\": \"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\"\n },\n {\n \"chainId\": 1,\n \"address\": \"0x6B175474E89094C44Da98b954EedeAC495271d0F\"\n },\n {\n \"chainId\": 8453,\n \"address\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\"\n }\n ],\n \"basketsA\": [\n {\n \"basketId\": \"usd-stablecoins\",\n \"chainIds\": [\n 1,\n 8453\n ]\n }\n ],\n \"tokensB\": [\n {\n \"chainId\": 1,\n \"address\": \"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2\"\n },\n {\n \"chainId\": 8453,\n \"address\": \"0x4200000000000000000000000000000000000006\"\n }\n ],\n \"basketsB\": [\n {\n \"basketId\": \"usd-stablecoins\",\n \"chainIds\": [\n 1,\n 8453\n ]\n }\n ],\n \"filters\": {\n \"minimumTotalValueLockedUsd\": 10000,\n \"blockedPoolTypes\": [],\n \"blockedProtocols\": [],\n \"protocols\": [],\n \"poolTypes\": []\n },\n \"config\": {\n \"limit\": 10,\n \"orderBy\": {\n \"field\": \"tvl\",\n \"direction\": \"desc\",\n \"timeframe\": \"24h\"\n },\n \"cursor\": \"\",\n \"parseWrappedToNative\": \"AUTO\",\n \"useWrappedForNative\": true\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.hydric.org/v1/pools/search")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"tokensA\": [\n {\n \"chainId\": 1,\n \"address\": \"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\"\n },\n {\n \"chainId\": 1,\n \"address\": \"0x6B175474E89094C44Da98b954EedeAC495271d0F\"\n },\n {\n \"chainId\": 8453,\n \"address\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\"\n }\n ],\n \"basketsA\": [\n {\n \"basketId\": \"usd-stablecoins\",\n \"chainIds\": [\n 1,\n 8453\n ]\n }\n ],\n \"tokensB\": [\n {\n \"chainId\": 1,\n \"address\": \"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2\"\n },\n {\n \"chainId\": 8453,\n \"address\": \"0x4200000000000000000000000000000000000006\"\n }\n ],\n \"basketsB\": [\n {\n \"basketId\": \"usd-stablecoins\",\n \"chainIds\": [\n 1,\n 8453\n ]\n }\n ],\n \"filters\": {\n \"minimumTotalValueLockedUsd\": 10000,\n \"blockedPoolTypes\": [],\n \"blockedProtocols\": [],\n \"protocols\": [],\n \"poolTypes\": []\n },\n \"config\": {\n \"limit\": 10,\n \"orderBy\": {\n \"field\": \"tvl\",\n \"direction\": \"desc\",\n \"timeframe\": \"24h\"\n },\n \"cursor\": \"\",\n \"parseWrappedToNative\": \"AUTO\",\n \"useWrappedForNative\": true\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hydric.org/v1/pools/search")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"tokensA\": [\n {\n \"chainId\": 1,\n \"address\": \"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\"\n },\n {\n \"chainId\": 1,\n \"address\": \"0x6B175474E89094C44Da98b954EedeAC495271d0F\"\n },\n {\n \"chainId\": 8453,\n \"address\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\"\n }\n ],\n \"basketsA\": [\n {\n \"basketId\": \"usd-stablecoins\",\n \"chainIds\": [\n 1,\n 8453\n ]\n }\n ],\n \"tokensB\": [\n {\n \"chainId\": 1,\n \"address\": \"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2\"\n },\n {\n \"chainId\": 8453,\n \"address\": \"0x4200000000000000000000000000000000000006\"\n }\n ],\n \"basketsB\": [\n {\n \"basketId\": \"usd-stablecoins\",\n \"chainIds\": [\n 1,\n 8453\n ]\n }\n ],\n \"filters\": {\n \"minimumTotalValueLockedUsd\": 10000,\n \"blockedPoolTypes\": [],\n \"blockedProtocols\": [],\n \"protocols\": [],\n \"poolTypes\": []\n },\n \"config\": {\n \"limit\": 10,\n \"orderBy\": {\n \"field\": \"tvl\",\n \"direction\": \"desc\",\n \"timeframe\": \"24h\"\n },\n \"cursor\": \"\",\n \"parseWrappedToNative\": \"AUTO\",\n \"useWrappedForNative\": true\n }\n}"
response = http.request(request)
puts response.read_body{
"statusCode": 200,
"timestamp": "2026-01-11T00:00:00.000Z",
"path": "/pools",
"traceId": "req_123abc",
"data": {
"pools": [
{
"address": "0x8ad599c3a01ae48104127aeeb893430d0bc41221",
"tokens": [
{
"chainId": 1,
"address": "0x0000000000000000000000000000000000000000",
"decimals": 18,
"name": "Ether",
"symbol": "ETH",
"logoUrl": "https://cdn.jsdelivr.net/gh/atomiclabs/cryptocurrency-icons@1a63530be6e374711a8554f31b17e4cb92c25fa5/128/color/eth.png"
},
{
"chainId": 1,
"address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"decimals": 18,
"name": "USDC",
"symbol": "USDC",
"logoUrl": "https://cdn.jsdelivr.net/gh/atomiclabs/cryptocurrency-icons@1a63530be6e374711a8554f31b17e4cb92c25fa5/128/color/usdc.png"
}
],
"balance": {
"totalValueLockedUsd": 3001.32,
"tokens": [
{
"amount": 1,
"amountUsd": 1500.11,
"token": {
"chainId": 1,
"address": "0x0000000000000000000000000000000000000000",
"decimals": 18,
"name": "Ether",
"symbol": "ETH",
"logoUrl": "https://cdn.jsdelivr.net/gh/atomiclabs/cryptocurrency-icons@1a63530be6e374711a8554f31b17e4cb92c25fa5/128/color/eth.png"
}
},
{
"amount": 1500.11,
"amountUsd": 1501.21,
"token": {
"chainId": 1,
"address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"decimals": 18,
"name": "USDC",
"symbol": "USDC",
"logoUrl": "https://cdn.jsdelivr.net/gh/atomiclabs/cryptocurrency-icons@1a63530be6e374711a8554f31b17e4cb92c25fa5/128/color/usdc.png"
}
}
]
},
"chainId": 1,
"createdAtTimestamp": 1768429616,
"feeTier": {
"feeTierPercentage": 0.4,
"isDynamic": false
},
"type": "V3",
"stats": {
"stats24h": {
"feesUsd": 12450.55,
"swapVolumeUsd": 4124500.22,
"yield": 12.5,
"netInflowUsd": 450000,
"liquidityVolumeUsd": 120000
},
"stats7d": {
"feesUsd": 85400.12,
"swapVolumeUsd": 28450100.45,
"yield": 11.2,
"netInflowUsd": 1200000,
"liquidityVolumeUsd": 850000
},
"stats30d": {
"feesUsd": 345200.55,
"swapVolumeUsd": 115045000.11,
"yield": 10.8,
"netInflowUsd": 5400000,
"liquidityVolumeUsd": 3200000
},
"stats90d": {
"feesUsd": 1120400.88,
"swapVolumeUsd": 375200400.55,
"yield": 10.5,
"netInflowUsd": 12500000,
"liquidityVolumeUsd": 9800000
}
},
"protocol": {
"id": "uniswap-v3",
"logoUrl": "https://cryptologos.cc/logos/uniswap-uni-logo.png",
"name": "Uniswap V3",
"url": "https://app.uniswap.org"
},
"metadata": {
"latestSqrtPriceX96": "1564073352721610496185854744476",
"tickSpacing": 60,
"latestTick": "201235",
"positionManagerAddress": "0xC36442b4a4522E871399CD717aBDD847Ab11FE88"
}
}
],
"filters": {
"blockedPoolTypes": [
"V3"
],
"blockedProtocols": [
"uniswap-v3"
],
"minimumTotalValueLockedUsd": 10000,
"protocols": [],
"poolTypes": []
},
"nextCursor": "Y3Vyc29yXzE2NjMwMDAwMDA="
}
}{
"statusCode": 400,
"timestamp": "2026-02-28T19:40:59.629Z",
"path": "/pools/search",
"traceId": "doc_sample_trace_id",
"error": {
"code": "VALIDATION_ERROR",
"title": "Invalid Parameters",
"message": "Invalid query parameters.",
"details": "Check the 'meta' field for specific field-level violations.",
"metadata": {
"property": "minTvl",
"value": "invalid",
"constraints": {
"isNumber": [
"minTvl must be a number"
]
}
}
}
}Search liquidity pools
Find liquidity pools across multiple chains and protocols with advanced filtering and sorting.
curl --request POST \
--url https://api.hydric.org/v1/pools/search \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"tokensA": [
{
"chainId": 1,
"address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"
},
{
"chainId": 1,
"address": "0x6B175474E89094C44Da98b954EedeAC495271d0F"
},
{
"chainId": 8453,
"address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
}
],
"basketsA": [
{
"basketId": "usd-stablecoins",
"chainIds": [
1,
8453
]
}
],
"tokensB": [
{
"chainId": 1,
"address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
},
{
"chainId": 8453,
"address": "0x4200000000000000000000000000000000000006"
}
],
"basketsB": [
{
"basketId": "usd-stablecoins",
"chainIds": [
1,
8453
]
}
],
"filters": {
"minimumTotalValueLockedUsd": 10000,
"blockedPoolTypes": [],
"blockedProtocols": [],
"protocols": [],
"poolTypes": []
},
"config": {
"limit": 10,
"orderBy": {
"field": "tvl",
"direction": "desc",
"timeframe": "24h"
},
"cursor": "",
"parseWrappedToNative": "AUTO",
"useWrappedForNative": true
}
}
'import requests
url = "https://api.hydric.org/v1/pools/search"
payload = {
"tokensA": [
{
"chainId": 1,
"address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"
},
{
"chainId": 1,
"address": "0x6B175474E89094C44Da98b954EedeAC495271d0F"
},
{
"chainId": 8453,
"address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
}
],
"basketsA": [
{
"basketId": "usd-stablecoins",
"chainIds": [1, 8453]
}
],
"tokensB": [
{
"chainId": 1,
"address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
},
{
"chainId": 8453,
"address": "0x4200000000000000000000000000000000000006"
}
],
"basketsB": [
{
"basketId": "usd-stablecoins",
"chainIds": [1, 8453]
}
],
"filters": {
"minimumTotalValueLockedUsd": 10000,
"blockedPoolTypes": [],
"blockedProtocols": [],
"protocols": [],
"poolTypes": []
},
"config": {
"limit": 10,
"orderBy": {
"field": "tvl",
"direction": "desc",
"timeframe": "24h"
},
"cursor": "",
"parseWrappedToNative": "AUTO",
"useWrappedForNative": True
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
tokensA: [
{chainId: 1, address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'},
{chainId: 1, address: '0x6B175474E89094C44Da98b954EedeAC495271d0F'},
{chainId: 8453, address: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'}
],
basketsA: [{basketId: 'usd-stablecoins', chainIds: [1, 8453]}],
tokensB: [
{chainId: 1, address: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'},
{chainId: 8453, address: '0x4200000000000000000000000000000000000006'}
],
basketsB: [{basketId: 'usd-stablecoins', chainIds: [1, 8453]}],
filters: {
minimumTotalValueLockedUsd: 10000,
blockedPoolTypes: [],
blockedProtocols: [],
protocols: [],
poolTypes: []
},
config: {
limit: 10,
orderBy: {field: 'tvl', direction: 'desc', timeframe: '24h'},
cursor: '',
parseWrappedToNative: 'AUTO',
useWrappedForNative: true
}
})
};
fetch('https://api.hydric.org/v1/pools/search', 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.hydric.org/v1/pools/search",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'tokensA' => [
[
'chainId' => 1,
'address' => '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'
],
[
'chainId' => 1,
'address' => '0x6B175474E89094C44Da98b954EedeAC495271d0F'
],
[
'chainId' => 8453,
'address' => '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
]
],
'basketsA' => [
[
'basketId' => 'usd-stablecoins',
'chainIds' => [
1,
8453
]
]
],
'tokensB' => [
[
'chainId' => 1,
'address' => '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'
],
[
'chainId' => 8453,
'address' => '0x4200000000000000000000000000000000000006'
]
],
'basketsB' => [
[
'basketId' => 'usd-stablecoins',
'chainIds' => [
1,
8453
]
]
],
'filters' => [
'minimumTotalValueLockedUsd' => 10000,
'blockedPoolTypes' => [
],
'blockedProtocols' => [
],
'protocols' => [
],
'poolTypes' => [
]
],
'config' => [
'limit' => 10,
'orderBy' => [
'field' => 'tvl',
'direction' => 'desc',
'timeframe' => '24h'
],
'cursor' => '',
'parseWrappedToNative' => 'AUTO',
'useWrappedForNative' => true
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.hydric.org/v1/pools/search"
payload := strings.NewReader("{\n \"tokensA\": [\n {\n \"chainId\": 1,\n \"address\": \"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\"\n },\n {\n \"chainId\": 1,\n \"address\": \"0x6B175474E89094C44Da98b954EedeAC495271d0F\"\n },\n {\n \"chainId\": 8453,\n \"address\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\"\n }\n ],\n \"basketsA\": [\n {\n \"basketId\": \"usd-stablecoins\",\n \"chainIds\": [\n 1,\n 8453\n ]\n }\n ],\n \"tokensB\": [\n {\n \"chainId\": 1,\n \"address\": \"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2\"\n },\n {\n \"chainId\": 8453,\n \"address\": \"0x4200000000000000000000000000000000000006\"\n }\n ],\n \"basketsB\": [\n {\n \"basketId\": \"usd-stablecoins\",\n \"chainIds\": [\n 1,\n 8453\n ]\n }\n ],\n \"filters\": {\n \"minimumTotalValueLockedUsd\": 10000,\n \"blockedPoolTypes\": [],\n \"blockedProtocols\": [],\n \"protocols\": [],\n \"poolTypes\": []\n },\n \"config\": {\n \"limit\": 10,\n \"orderBy\": {\n \"field\": \"tvl\",\n \"direction\": \"desc\",\n \"timeframe\": \"24h\"\n },\n \"cursor\": \"\",\n \"parseWrappedToNative\": \"AUTO\",\n \"useWrappedForNative\": true\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.hydric.org/v1/pools/search")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"tokensA\": [\n {\n \"chainId\": 1,\n \"address\": \"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\"\n },\n {\n \"chainId\": 1,\n \"address\": \"0x6B175474E89094C44Da98b954EedeAC495271d0F\"\n },\n {\n \"chainId\": 8453,\n \"address\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\"\n }\n ],\n \"basketsA\": [\n {\n \"basketId\": \"usd-stablecoins\",\n \"chainIds\": [\n 1,\n 8453\n ]\n }\n ],\n \"tokensB\": [\n {\n \"chainId\": 1,\n \"address\": \"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2\"\n },\n {\n \"chainId\": 8453,\n \"address\": \"0x4200000000000000000000000000000000000006\"\n }\n ],\n \"basketsB\": [\n {\n \"basketId\": \"usd-stablecoins\",\n \"chainIds\": [\n 1,\n 8453\n ]\n }\n ],\n \"filters\": {\n \"minimumTotalValueLockedUsd\": 10000,\n \"blockedPoolTypes\": [],\n \"blockedProtocols\": [],\n \"protocols\": [],\n \"poolTypes\": []\n },\n \"config\": {\n \"limit\": 10,\n \"orderBy\": {\n \"field\": \"tvl\",\n \"direction\": \"desc\",\n \"timeframe\": \"24h\"\n },\n \"cursor\": \"\",\n \"parseWrappedToNative\": \"AUTO\",\n \"useWrappedForNative\": true\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hydric.org/v1/pools/search")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"tokensA\": [\n {\n \"chainId\": 1,\n \"address\": \"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\"\n },\n {\n \"chainId\": 1,\n \"address\": \"0x6B175474E89094C44Da98b954EedeAC495271d0F\"\n },\n {\n \"chainId\": 8453,\n \"address\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\"\n }\n ],\n \"basketsA\": [\n {\n \"basketId\": \"usd-stablecoins\",\n \"chainIds\": [\n 1,\n 8453\n ]\n }\n ],\n \"tokensB\": [\n {\n \"chainId\": 1,\n \"address\": \"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2\"\n },\n {\n \"chainId\": 8453,\n \"address\": \"0x4200000000000000000000000000000000000006\"\n }\n ],\n \"basketsB\": [\n {\n \"basketId\": \"usd-stablecoins\",\n \"chainIds\": [\n 1,\n 8453\n ]\n }\n ],\n \"filters\": {\n \"minimumTotalValueLockedUsd\": 10000,\n \"blockedPoolTypes\": [],\n \"blockedProtocols\": [],\n \"protocols\": [],\n \"poolTypes\": []\n },\n \"config\": {\n \"limit\": 10,\n \"orderBy\": {\n \"field\": \"tvl\",\n \"direction\": \"desc\",\n \"timeframe\": \"24h\"\n },\n \"cursor\": \"\",\n \"parseWrappedToNative\": \"AUTO\",\n \"useWrappedForNative\": true\n }\n}"
response = http.request(request)
puts response.read_body{
"statusCode": 200,
"timestamp": "2026-01-11T00:00:00.000Z",
"path": "/pools",
"traceId": "req_123abc",
"data": {
"pools": [
{
"address": "0x8ad599c3a01ae48104127aeeb893430d0bc41221",
"tokens": [
{
"chainId": 1,
"address": "0x0000000000000000000000000000000000000000",
"decimals": 18,
"name": "Ether",
"symbol": "ETH",
"logoUrl": "https://cdn.jsdelivr.net/gh/atomiclabs/cryptocurrency-icons@1a63530be6e374711a8554f31b17e4cb92c25fa5/128/color/eth.png"
},
{
"chainId": 1,
"address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"decimals": 18,
"name": "USDC",
"symbol": "USDC",
"logoUrl": "https://cdn.jsdelivr.net/gh/atomiclabs/cryptocurrency-icons@1a63530be6e374711a8554f31b17e4cb92c25fa5/128/color/usdc.png"
}
],
"balance": {
"totalValueLockedUsd": 3001.32,
"tokens": [
{
"amount": 1,
"amountUsd": 1500.11,
"token": {
"chainId": 1,
"address": "0x0000000000000000000000000000000000000000",
"decimals": 18,
"name": "Ether",
"symbol": "ETH",
"logoUrl": "https://cdn.jsdelivr.net/gh/atomiclabs/cryptocurrency-icons@1a63530be6e374711a8554f31b17e4cb92c25fa5/128/color/eth.png"
}
},
{
"amount": 1500.11,
"amountUsd": 1501.21,
"token": {
"chainId": 1,
"address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"decimals": 18,
"name": "USDC",
"symbol": "USDC",
"logoUrl": "https://cdn.jsdelivr.net/gh/atomiclabs/cryptocurrency-icons@1a63530be6e374711a8554f31b17e4cb92c25fa5/128/color/usdc.png"
}
}
]
},
"chainId": 1,
"createdAtTimestamp": 1768429616,
"feeTier": {
"feeTierPercentage": 0.4,
"isDynamic": false
},
"type": "V3",
"stats": {
"stats24h": {
"feesUsd": 12450.55,
"swapVolumeUsd": 4124500.22,
"yield": 12.5,
"netInflowUsd": 450000,
"liquidityVolumeUsd": 120000
},
"stats7d": {
"feesUsd": 85400.12,
"swapVolumeUsd": 28450100.45,
"yield": 11.2,
"netInflowUsd": 1200000,
"liquidityVolumeUsd": 850000
},
"stats30d": {
"feesUsd": 345200.55,
"swapVolumeUsd": 115045000.11,
"yield": 10.8,
"netInflowUsd": 5400000,
"liquidityVolumeUsd": 3200000
},
"stats90d": {
"feesUsd": 1120400.88,
"swapVolumeUsd": 375200400.55,
"yield": 10.5,
"netInflowUsd": 12500000,
"liquidityVolumeUsd": 9800000
}
},
"protocol": {
"id": "uniswap-v3",
"logoUrl": "https://cryptologos.cc/logos/uniswap-uni-logo.png",
"name": "Uniswap V3",
"url": "https://app.uniswap.org"
},
"metadata": {
"latestSqrtPriceX96": "1564073352721610496185854744476",
"tickSpacing": 60,
"latestTick": "201235",
"positionManagerAddress": "0xC36442b4a4522E871399CD717aBDD847Ab11FE88"
}
}
],
"filters": {
"blockedPoolTypes": [
"V3"
],
"blockedProtocols": [
"uniswap-v3"
],
"minimumTotalValueLockedUsd": 10000,
"protocols": [],
"poolTypes": []
},
"nextCursor": "Y3Vyc29yXzE2NjMwMDAwMDA="
}
}{
"statusCode": 400,
"timestamp": "2026-02-28T19:40:59.629Z",
"path": "/pools/search",
"traceId": "doc_sample_trace_id",
"error": {
"code": "VALIDATION_ERROR",
"title": "Invalid Parameters",
"message": "Invalid query parameters.",
"details": "Check the 'meta' field for specific field-level violations.",
"metadata": {
"property": "minTvl",
"value": "invalid",
"constraints": {
"isNumber": [
"minTvl must be a number"
]
}
}
}
}Authorizations
Use the docs sandbox API key for authentication: hydric_docs_4N4ocuirsN8Sh
Body
Search criteria and pagination config.
Primary set of token addresses. The search engine returns pools containing at least one of these tokens.
- Single Token Search: Provide 'tokensA' and omit 'tokensB' (or alternatively use 'basketsA').
- Pair Search: Used in conjunction with 'tokensB' or 'basketsB'.
- Note: Token ordering does not affect search results.
Show child attributes
Show child attributes
[
{
"chainId": 1,
"address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"
},
{
"chainId": 1,
"address": "0x6B175474E89094C44Da98b954EedeAC495271d0F"
},
{
"chainId": 8453,
"address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
}
]
Primary set of token baskets. The search engine automatically resolves these baskets into tokens server-side. Returns pools containing at least one token from any of the provided baskets.
- Behaviour: This joins with tokensA, so if you pass tokensA and basketsA, the search engine will return pools containing at least one token from tokensA OR at least one token from basketsA.
- Note: Either 'tokensA' or 'basketsA' must be provided.
Show child attributes
Show child attributes
Secondary set of token identifiers used to narrow the search to specific pairs.
- Relationship: Returns pools containing (one token from 'tokensA'/'basketsA') AND (one token from 'tokensB'/'basketsB').
- Broad Search: If omitted, the search returns any pool containing a token from 'tokensA'/'basketsA'.
- Note: Evaluation is order-independent.
Show child attributes
Show child attributes
[
{
"chainId": 1,
"address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
},
{
"chainId": 8453,
"address": "0x4200000000000000000000000000000000000006"
}
]
Secondary set of token baskets used to narrow the search to specific pairs. This cannot be used alone, needs either tokensA or basketsA.
- Relationship: Returns pools that contain at least one token from 'tokensA'/'basketsA' AND at least one token from 'tokensB'/'basketsB'.
Show child attributes
Show child attributes
Filters based on pool attributes like TVL and protocol types.
Show child attributes
Show child attributes
{
"minimumTotalValueLockedUsd": 10000,
"blockedPoolTypes": [],
"blockedProtocols": [],
"protocols": [],
"poolTypes": []
}
Configuration for the search such as limit, cursor, etc.
Show child attributes
Show child attributes
Response
Successfully retrieved a list of matching liquidity pools.
Global Success Response that every endpoint returns if the request was successful (not errors).
HTTP status code.
200
ISO 8601 Timestamp.
"2026-01-11T00:00:00.000Z"
Request Path.
"/pools"
Unique Trace ID for observability.
"req_123abc"
The requested data payload.
Show child attributes
Show child attributes
Was this page helpful?