Get system metadata
curl --request GET \
--url https://demo-api.mobula.io/api/2/system-metadataimport requests
url = "https://demo-api.mobula.io/api/2/system-metadata"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://demo-api.mobula.io/api/2/system-metadata', 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://demo-api.mobula.io/api/2/system-metadata",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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://demo-api.mobula.io/api/2/system-metadata"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://demo-api.mobula.io/api/2/system-metadata")
.asString();require 'uri'
require 'net/http'
url = URI("https://demo-api.mobula.io/api/2/system-metadata")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"data": {
"poolTypes": [
"<string>"
],
"chains": [
{
"id": "<string>",
"name": "<string>",
"type": "<string>",
"chainId": 123,
"testnet": true,
"indexing": true,
"averageBlockTimeInSeconds": 123,
"native": {
"name": "<string>",
"symbol": "<string>",
"decimals": 123,
"address": "<string>"
},
"branding": {
"logo": "<string>",
"color": "<string>"
},
"blockExplorers": {
"default": {
"name": "<string>",
"url": "<string>",
"apiUrl": "<string>"
}
},
"integrations": {
"geckoterminal": "<string>",
"dexscreener": "<string>",
"coingecko": "<string>"
}
}
],
"factories": [
{
"chainId": "<string>",
"address": "<string>",
"status": "<string>",
"name": "<string>",
"metadata": {
"ui_name": "<string>",
"logo": "<string>",
"website": "<string>"
}
}
]
}
}Metacore
Get System Metadata
Returns supported pool types, indexed chains, and registered factories with optional filtering.
GET
/
2
/
system-metadata
Get system metadata
curl --request GET \
--url https://demo-api.mobula.io/api/2/system-metadataimport requests
url = "https://demo-api.mobula.io/api/2/system-metadata"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://demo-api.mobula.io/api/2/system-metadata', 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://demo-api.mobula.io/api/2/system-metadata",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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://demo-api.mobula.io/api/2/system-metadata"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://demo-api.mobula.io/api/2/system-metadata")
.asString();require 'uri'
require 'net/http'
url = URI("https://demo-api.mobula.io/api/2/system-metadata")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"data": {
"poolTypes": [
"<string>"
],
"chains": [
{
"id": "<string>",
"name": "<string>",
"type": "<string>",
"chainId": 123,
"testnet": true,
"indexing": true,
"averageBlockTimeInSeconds": 123,
"native": {
"name": "<string>",
"symbol": "<string>",
"decimals": 123,
"address": "<string>"
},
"branding": {
"logo": "<string>",
"color": "<string>"
},
"blockExplorers": {
"default": {
"name": "<string>",
"url": "<string>",
"apiUrl": "<string>"
}
},
"integrations": {
"geckoterminal": "<string>",
"dexscreener": "<string>",
"coingecko": "<string>"
}
}
],
"factories": [
{
"chainId": "<string>",
"address": "<string>",
"status": "<string>",
"name": "<string>",
"metadata": {
"ui_name": "<string>",
"logo": "<string>",
"website": "<string>"
}
}
]
}
}Overview
The System Metadata endpoint provides reference data about the Mobula platform: the list of supported pool types (DEX types), all indexed blockchains with their configuration, and registered factories with optional metadata. By default all three sections are returned. PasspoolTypes=true, chains=true, or factories=true to select specific sections and reduce payload size.
Query Parameters
Section selectors
poolTypes(optional, boolean) — Include the list of supported pool types (e.g.uniswap-v2,pumpfun,raydium, etc.)chains(optional, boolean) — Include the list of supported blockchainsfactories(optional, boolean) — Include the list of registered factories
Chain filters
indexed(optional, boolean) — Filter chains by indexing status (true= actively indexed)type(optional, string) — Filter chains by type (e.g.evm,solana,sui,starknet,stellar)
Factory filters
hasMetadata(optional, boolean) — Only return factories that have metadata (true) or don’t (false)status(optional, string) — Filter by approval status:APPROVED,WAITING_APPROVAL, orNOT_APPROVEDchainId(optional, string) — Filter factories by chain ID (e.g.evm:1,solana)name(optional, string) — Case-insensitive partial match on factory name
Usage Examples
# Get everything (pool types + chains + factories)
curl -X GET "https://api.mobula.io/api/2/system-metadata"
# Get only supported pool types
curl -X GET "https://api.mobula.io/api/2/system-metadata?poolTypes=true"
# Get only indexed EVM chains
curl -X GET "https://api.mobula.io/api/2/system-metadata?chains=true&indexed=true&type=evm"
# Get approved factories on Base
curl -X GET "https://api.mobula.io/api/2/system-metadata?factories=true&status=APPROVED&chainId=evm:8453"
# Get factories with metadata
curl -X GET "https://api.mobula.io/api/2/system-metadata?factories=true&hasMetadata=true"
Response Format
{
"data": {
"poolTypes": [
"uniswap-v2",
"uniswap-v3",
"uniswap-v4",
"pumpfun",
"raydium",
"meteora",
"..."
],
"chains": [
{
"id": "evm:1",
"name": "Ethereum",
"type": "evm",
"chainId": 1,
"testnet": false,
"indexing": true,
"averageBlockTimeInSeconds": 12,
"native": {
"name": "Ethereum",
"symbol": "ETH",
"decimals": 18,
"address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
},
"branding": {
"logo": "https://metadata.mobula.io/assets/logos/...",
"color": "#7E87A7"
},
"blockExplorers": {
"default": {
"name": "Etherscan",
"url": "https://etherscan.io",
"apiUrl": "https://api.etherscan.io/api"
}
},
"integrations": {
"geckoterminal": "eth",
"dexscreener": "ethereum",
"coingecko": "ethereum"
}
}
],
"factories": [
{
"chainId": "evm:56",
"address": "0xee638aa41e12b6c6df71f88410eb1ddd2fb28973",
"status": "APPROVED",
"name": "PancakeSwap V2",
"metadata": {
"ui_name": "PancakeSwap",
"logo": "https://...",
"website": "https://pancakeswap.finance"
}
}
]
}
}
Response Field Definitions
Pool Types
A flat array of strings representing all DEX/AMM types supported by the indexer.Chain Object
| Field | Type | Description |
|---|---|---|
id | string | Unique chain identifier (e.g. evm:1, solana) |
name | string | Human-readable chain name |
type | string | Chain type (evm, solana, sui, starknet, stellar, etc.) |
chainId | number | string | Numeric chain ID (EVM) or string identifier |
testnet | boolean | Whether this is a testnet |
indexing | boolean | Whether Mobula actively indexes this chain |
averageBlockTimeInSeconds | number | null | Average block time |
native | object | Native token info (name, symbol, decimals, address) |
branding | object | Chain logo URL and theme color |
blockExplorers | object | undefined | Default block explorer (name, url, apiUrl) |
integrations | object | undefined | Third-party platform identifiers (GeckoTerminal, DexScreener, CoinGecko) |
Factory Object
| Field | Type | Description |
|---|---|---|
chainId | string | Chain identifier |
address | string | Factory contract address |
status | string | Approval status |
name | string | undefined | Factory name |
metadata | object | undefined | Display metadata (ui_name, logo, website) |
Use Cases
- UI configuration — Populate chain selectors, DEX type filters, and factory dropdowns
- Integration discovery — Find which chains and DEXs are supported
- Factory lookup — Search for specific factories by name, chain, or approval status
Query Parameters
Include the list of registered factories.
Include the list of supported pool types.
Include the list of supported chains.
Filter factories by metadata presence.
Filter factories by approval status.
Available options:
APPROVED, WAITING_APPROVAL, NOT_APPROVED Filter factories by chain ID.
Case-insensitive partial match on factory name.
Filter chains by indexing status.
Filter chains by type (e.g. "evm", "solana").
Response
200 - application/json
System metadata response
Show child attributes
Show child attributes