Skip to main content

Token Price API User Guide

This guide is for integration developers. It explains how to use the Token Price API to query multi-chain token prices, asset information, and DEX liquidity pool data.


Table of contents


1. Quick start

1.1 Service overview

The Token Price API is a multi-chain token price aggregation service. It provides these core capabilities:

  • Query supported blockchain lists and basic chain information
  • Batch real-time quotes by token ID or contract address
  • Query token asset information, including cross-chain platform distribution
  • Query fiat currency lists and exchange rates
  • Search DEX liquidity pool data sourced from the CoinGecko Onchain API

All public endpoints are mounted under the /api/v1 path prefix and use HTTP/JSON. The current public service does not provide WebSocket, SSE, or subscription push APIs. Public API requests must include X-API-Key, which is used for API authentication and billing.


1.2 Base URL

Use the following production host as the root path for all API requests:

https://api.gelabs.org

Example:

https://api.gelabs.org/api/v1/chains

1.3 Unified response shape

All endpoints use a { code, msg, data } response body. On business success, code is always 0. Common validation failures usually still return HTTP 200 and are distinguished by business error code. Upstream service failures or internal exceptions may return HTTP 503/500.

The response body always has this structure:

{
"code": 0,
"msg": "success",
"data": {}
}
FieldTypeDescription
codeintegerBusiness status code. Success is always 0; failures use the corresponding error code
msgstringResponse message. Usually success on success
dataobject / stringBusiness payload. On failure, this is usually an empty string ""

Successful response example:

{
"code": 0,
"msg": "success",
"data": {
"total": 1,
"items": [...]
}
}

Error response example:

{
"code": 20001,
"msg": "ids is required",
"data": ""
}

Note: Check both the HTTP status code and the response-body code. Business success is indicated by code: 0. Parameter errors are often HTTP 200 plus a business error code. Upstream or internal failures may be HTTP 503/500.


1.4 Business error codes

CodeMeaningTypical trigger
0SuccessNormal response
20001Invalid query parameterRequired query parameter is missing or malformed
20002Invalid path parameterPath parameter is malformed or the resource was not found
20003Invalid request bodyJSON is malformed, or a required body field is missing or empty
30001Server errorUpstream data source request failed or an internal service error occurred

1.5 Common request header

All public service requests must include the following header:

HeaderRequiredDescription
X-API-KeyYesAPI key used for request authentication and billing.

Some endpoints also return cache-control response headers. See the individual endpoint descriptions.


2. Chain information

This module provides basic blockchain information for supported chains. Use it to:

  • Display the list of chains supported by the platform
  • Resolve chain configuration by chain name or ID, including icons and explorer links

2.1 List chains

Returns basic information for all blockchains currently supported by the system.

Request

GET /api/v1/chains

Request parameters

None.

curl example

curl -H "X-API-Key: $API_KEY" https://api.gelabs.org/api/v1/chains

Successful response example

{
"code": 0,
"msg": "success",
"data": {
"total": 2,
"items": [
{
"id": 1,
"name": "Ethereum",
"short_name": "eth",
"chain_id": 1,
"chain_type": "evm",
"chain_icon_url": "https://example.com/icons/eth.png",
"explorer_url": "https://etherscan.io"
},
{
"id": 2,
"name": "Solana",
"short_name": "sol",
"chain_type": "svm",
"chain_icon_url": "https://example.com/icons/sol.png",
"explorer_url": "https://explorer.solana.com"
}
]
}
}

Response fields (data.items[])

FieldTypeAlways returnedDescription
idintegerYesInternal primary key ID for the chain
namestringYesChain name, such as Ethereum
short_namestringYesChain short name, such as eth
chain_idintegerNoProtocol-level chain ID. EVM chains usually have this field
chain_typestringNoChain type, such as evm, svm, tvm, utxo, cosmos, or move
chain_icon_urlstringNoChain icon URL
explorer_urlstringNoChain block explorer URL

2.2 Get chain by ID or name

Returns a single chain by numeric ID or chain name.

Request

GET /api/v1/chains/{id_or_name}

Path parameters

ParameterTypeRequiredDescription
id_or_namestringYesChain numeric ID, such as 1, or chain name, such as Ethereum

curl example

# Query by numeric ID
curl -H "X-API-Key: $API_KEY" https://api.gelabs.org/api/v1/chains/1

# Query by chain name
curl -H "X-API-Key: $API_KEY" https://api.gelabs.org/api/v1/chains/Ethereum

Successful response example

{
"code": 0,
"msg": "success",
"data": {
"total": 1,
"items": [
{
"id": 1,
"name": "Ethereum",
"short_name": "eth",
"chain_id": 1,
"chain_type": "evm",
"chain_icon_url": "https://example.com/icons/eth.png",
"explorer_url": "https://etherscan.io"
}
]
}
}

Response when not found

Note: When a chain is not found, the HTTP status code is still 200. The failure is indicated by business code 20002.

{
"code": 20002,
"msg": "chain not found",
"data": ""
}

3. Token quote queries

This module provides real-time token quote capabilities with two query modes:

  • By token ID: suitable when you already know the system's internal token IDs. Returns quote data with full market fields.
  • By contract address: suitable when you know the chain and contract address. Returns chain-specific price data.

3.1 Batch latest quotes

Gets latest quotes in batch by token ID list, with optional target fiat.

Request

GET /api/v1/quotes/latest

Query parameters

ParameterTypeRequiredDefaultDescription
idsstringYesToken ID list. Separate multiple values with commas, such as 1,1027,825
fiatstringNoUSDTarget fiat code, such as USD or CNY. Defaults to USD when omitted

curl example

# Query USD quotes for BTC (id=1) and ETH (id=1027)
curl -H "X-API-Key: $API_KEY" "https://api.gelabs.org/api/v1/quotes/latest?ids=1,1027"

# Specify CNY as the fiat
curl -H "X-API-Key: $API_KEY" "https://api.gelabs.org/api/v1/quotes/latest?ids=1,1027&fiat=CNY"

Caching

Successful responses from this endpoint include the following cache header, allowing clients and CDNs to cache for 3 seconds:

Cache-Control: public, max-age=3, s-maxage=3

Successful response example

{
"code": 0,
"msg": "success",
"data": {
"items": [
{
"token_id": 1,
"name": "Bitcoin",
"symbol": "BTC",
"fiat_id": 1,
"fiat_code": "USD",
"price": "65000.12345678",
"market_cap": "1280000000000",
"volume_24h": "38000000000",
"volume_change_24h": "0",
"percent_change_1h": "0.12",
"percent_change_24h": "2.35",
"percent_change_7d": "-1.08",
"percent_change_30d": "15.20",
"fully_diluted_valuation": "1365000000000",
"circulating_supply": "19700000",
"total_supply": "19700000",
"max_supply": "21000000"
}
]
}
}

Response fields (data.items[])

FieldTypeDescription
token_idintegerInternal token ID
namestringToken name
symbolstringToken symbol
fiat_idintegerInternal fiat ID for the quote currency
fiat_codestringQuote fiat code, such as USD
pricestringCurrent price as a string
market_capstringMarket capitalization as a string
volume_24hstring24-hour volume as a string
volume_change_24hstring24-hour volume change as a string
percent_change_1hstring1-hour percentage change as a string
percent_change_24hstring24-hour percentage change as a string
percent_change_7dstring7-day percentage change as a string
percent_change_30dstring30-day percentage change as a string
fully_diluted_valuationstringFully diluted valuation as a string
circulating_supplystringCirculating supply as a string
total_supplystringTotal supply as a string
max_supplystringMaximum supply as a string

Note: All price, market-cap, supply, and similar numeric fields in this endpoint are strings. Parse them into numbers in your own application as needed.

Error response when ids is missing

{
"code": 20001,
"msg": "ids is required",
"data": ""
}

3.2 Batch prices by contract address

Returns token price information in batch by chain type, chain ID, and token contract address. This is suitable when you know on-chain addresses and need to locate token prices precisely at the chain level.

Request

POST /api/v1/quotes/batch
Content-Type: application/json

Request body

{
"token_addrs": [
{
"chain_type": "evm",
"chain_id": 1,
"token_address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"
}
],
"fiat": "USD"
}

Request body fields

FieldTypeRequiredDescription
token_addrsarrayYesArray of token addresses to query. Must not be empty
token_addrs[].chain_typestringYesChain type. Standard values are evm, svm, tvm, utxo, cosmos, and move. Aliases such as ethereum, solana, and tron are also normalized automatically
token_addrs[].chain_idintegerNoProtocol chain ID. Required for EVM chains, such as 1 for Ethereum mainnet. Other chains may use null
token_addrs[].token_addressstringYesToken contract address or on-chain identifier
fiatstringNoTarget fiat code. Defaults to USD; the current underlying processing is mainly based on USD prices

curl example

curl -X POST "https://api.gelabs.org/api/v1/quotes/batch" \
-H "X-API-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"token_addrs": [
{
"chain_type": "evm",
"chain_id": 1,
"token_address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"
},
{
"chain_type": "svm",
"chain_id": null,
"token_address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
}
],
"fiat": "USD"
}'

Successful response example

{
"code": 0,
"msg": "success",
"data": {
"items": [
{
"token_id": 3408,
"name": "USD Coin",
"symbol": "USDC",
"chain_type": "evm",
"chain_id": 1,
"address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"external_id": "usd-coin",
"price_usd": 0.9998,
"market_cap_usd": 43000000000,
"volume_24h_usd": 8500000000,
"percent_change_1h": 0.01,
"percent_change_24h": -0.02,
"percent_change_7d": 0.05,
"percent_change_30d": -0.01,
"last_updated": "2026-04-21T08:00:00Z",
"market_cap": 43000000000,
"fully_diluted_valuation": 43000000000,
"total_volume": 8500000000,
"circulating_supply": 43000000000,
"total_supply": 43000000000,
"max_supply": null
}
]
}
}

Response fields (data.items[])

FieldTypeDescription
token_idintegerInternal token ID
namestringToken name
symbolstringToken symbol
chain_typestringChain type
chain_idintegerProtocol chain ID
addressstringToken address
external_idstringUnique token identifier in the external data source, such as CoinGecko
price_usdnumberUSD price as a number
market_cap_usdnumberUSD market capitalization as a number
volume_24h_usdnumber24-hour volume in USD as a number
percent_change_1hnumber1-hour percentage change as a number
percent_change_24hnumber24-hour percentage change as a number
percent_change_7dnumber7-day percentage change as a number
percent_change_30dnumber30-day percentage change as a number
last_updatedstringLast update time in ISO 8601 format
market_capnumberMarket capitalization as a number
fully_diluted_valuationnumberFully diluted valuation as a number
total_volumenumberTotal volume as a number
circulating_supplynumberCirculating supply as a number
total_supplynumberTotal supply as a number
max_supplynumberMaximum supply as a number

Difference from /api/v1/quotes/latest: price, market-cap, and similar numeric fields in this endpoint are numbers, while /api/v1/quotes/latest returns strings.

Common error responses

// token_addrs is an empty array
{
"code": 20003,
"msg": "token_addrs is required",
"data": ""
}

// Request body JSON is malformed
{
"code": 20003,
"msg": "invalid JSON body",
"data": ""
}

4. Asset information

This module provides basic token and fiat asset information. Use it to:

  • Build token selectors and search boxes
  • Display cross-chain platform distribution for a token
  • Get fiat currency lists and real-time exchange rates

4.1 List tokens

Queries token information in the system. Three query modes are supported. The full list supports pagination, and a single request returns at most 1000 items.

Request

GET /api/v1/tokens

Query parameters

ParameterTypeRequiredDefaultDescription
chain_idstringNoInternal chain ID used to limit the query scope
addressstringNoToken contract address. Usually used together with chain_id
pageintegerNo1Page number starting from 1. Only applies when neither chain_id nor address is provided
limitintegerNo100Items per page, maximum 1000. Only applies when neither chain_id nor address is provided

Query modes

Parameter combinationBehavior
No parametersReturns a paginated list of active tokens, controlled by page and limit
Only chain_idAttempts to return the chain's native token without pagination
Both chain_id and addressPerforms an exact match for one token by chain ID and contract address, without pagination

curl example

# Get the first page of tokens, defaulting to 100 items per page
curl -H "X-API-Key: $API_KEY" "https://api.gelabs.org/api/v1/tokens"

# Paginated query: page 2, 200 items per page
curl -H "X-API-Key: $API_KEY" "https://api.gelabs.org/api/v1/tokens?page=2&limit=200"

# Get native ETH on Ethereum (chain_id=1)
curl -H "X-API-Key: $API_KEY" "https://api.gelabs.org/api/v1/tokens?chain_id=1"

# Exact query for USDC by chain and contract address
curl -H "X-API-Key: $API_KEY" "https://api.gelabs.org/api/v1/tokens?chain_id=1&address=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"

Successful response example (full paginated list)

{
"code": 0,
"msg": "success",
"data": {
"total": 5432,
"page": 1,
"limit": 100,
"items": [
{
"id": 1001,
"name": "Ether",
"symbol": "ETH",
"decimals": 18,
"logo_url": "https://example.com/eth.png",
"chain_id": 1,
"chain_name": "Ethereum",
"is_native": true
},
{
"id": 1002,
"name": "USD Coin",
"symbol": "USDC",
"decimals": 6,
"logo_url": "https://example.com/usdc.png",
"chain_id": 1,
"chain_name": "Ethereum",
"contract_address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"is_native": false
}
]
}
}

Top-level response fields (data)

FieldTypeDescription
totalintegerTotal number of tokens matching the condition
pageintegerCurrent page number. In exact query mode, this is fixed to 1
limitintegerPage size for this request. In exact query mode, this equals the number of returned items
itemsarrayToken list for the current page

Response fields (data.items[])

FieldTypeAlways returnedDescription
idintegerYesInternal token ID
namestringYesToken name
symbolstringYesToken symbol
decimalsintegerYesToken precision, in decimal places
logo_urlstringNoToken icon URL
chain_idintegerYesInternal ID of the chain the token belongs to
chain_namestringYesName of the chain the token belongs to
contract_addressstringNoToken contract address. Native tokens do not return this field
is_nativebooleanYesWhether this is the chain's native token, such as ETH or SOL

Pagination example: To fetch all data, calculate the total page count from total and limit, then request each page in sequence:
total_pages = Math.ceil(total / limit), then loop from page=1 to page=total_pages.


4.2 Search token platform records

Searches for a token's platform records across multiple chains by contract address, name, or symbol.

Request

GET /api/v1/tokens/platforms/{keyword}

Path parameters

ParameterTypeRequiredDescription
keywordstringYesToken contract address, name, or symbol. Matching is exact and case-insensitive

Matching priority

  1. First, try to match keyword exactly as a contract address, case-insensitively.
  2. If no result is found, match exactly by token name or symbol, case-insensitively.

curl example

# Search platform distribution for USDC by symbol
curl -H "X-API-Key: $API_KEY" "https://api.gelabs.org/api/v1/tokens/platforms/USDC"

# Search by contract address
curl -H "X-API-Key: $API_KEY" "https://api.gelabs.org/api/v1/tokens/platforms/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"

Successful response example

{
"code": 0,
"msg": "success",
"data": {
"total": 3,
"items": [
{
"id": 1002,
"name": "USD Coin",
"symbol": "USDC",
"decimals": 6,
"chain_id": 1,
"chain_name": "Ethereum",
"contract_address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"is_native": false
},
{
"id": 1003,
"name": "USD Coin",
"symbol": "USDC",
"decimals": 6,
"chain_id": 2,
"chain_name": "BNB Smart Chain",
"contract_address": "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d",
"is_native": false
}
]
}
}

The response fields have the same meaning as the TokenItem fields in 4.1 List tokens.


4.3 List fiat currencies

Returns the fiat currencies supported by the system.

Request

GET /api/v1/fiats

Request parameters

None.

curl example

curl -H "X-API-Key: $API_KEY" "https://api.gelabs.org/api/v1/fiats"

Successful response example

{
"code": 0,
"msg": "success",
"data": {
"total": 3,
"items": [
{
"id": 1,
"code": "USD",
"name": "US Dollar",
"symbol": "$",
"icon_url": "https://example.com/usd.png",
"precision": 2
},
{
"id": 2,
"code": "CNY",
"name": "Chinese Yuan",
"symbol": "¥",
"icon_url": "https://example.com/cny.png",
"precision": 2
}
]
}
}

Response fields (data.items[])

FieldTypeAlways returnedDescription
idintegerYesInternal fiat ID
codestringYesFiat code, such as USD or CNY
namestringYesFiat name
symbolstringYesFiat symbol, such as $ or ¥. Returns an empty string when not configured
icon_urlstringNoFiat icon URL
precisionintegerYesDisplay precision in decimal places. Defaults to 2 when not configured

4.4 Fiat exchange rates

Returns exchange rates between the base fiat code and other fiat currencies.

Request

GET /api/v1/fiats/rates/{base}

Path parameters

ParameterTypeRequiredDescription
basestringYesBase fiat code, such as USD or CNY

Note: The base parameter is case-insensitive. The server converts it to uppercase automatically.

curl example

# Get all fiat exchange rates based on USD
curl -H "X-API-Key: $API_KEY" "https://api.gelabs.org/api/v1/fiats/rates/USD"

Successful response example

{
"code": 0,
"msg": "success",
"data": {
"total": 2,
"items": [
{
"target_fiat_id": 2,
"target_fiat_code": "CNY",
"rate": "7.24000000"
},
{
"target_fiat_id": 3,
"target_fiat_code": "EUR",
"rate": "0.92000000"
}
]
}
}

Response fields (data.items[])

FieldTypeDescription
target_fiat_idintegerInternal ID of the target fiat
target_fiat_codestringTarget fiat code
ratestringExchange-rate value as a string with 8 decimal places

Description: When the queried base fiat has no exchange-rate data, the endpoint still returns a successful structure, but items is an empty array and total is 0.


5. DEX liquidity pool queries

This module provides exact DEX liquidity pool queries. Data is passed through from the CoinGecko Onchain API. Use it to:

  • Query details for a single liquidity pool by chain information and pool contract address
  • View pool prices, trading volume, and liquidity depth
  • Monitor real-time on-chain trading activity

5.1 Query a liquidity pool

Queries details for a single DEX liquidity pool by chain type, chain ID, and pool contract address. Internally, the service looks up the corresponding CoinGecko network identifier from the database, then forwards the request to the CoinGecko Onchain API.

Request

GET /api/v1/pools

Query parameters

ParameterTypeRequiredDescription
chain_typestringYesChain type. Standard values: evm, svm, tvm, utxo, cosmos, move. Supported aliases: ethereumevm, solanasvm, trontvm, bitcoin/litecoin/dogecoin/bitcoin cashutxo, sui/aptosmove
chain_idstringYesProtocol chain ID, corresponding to the chain_id field in the blockchains table, such as 1 for Ethereum mainnet
pool_addressstringYesPool contract address

curl example

# Query a specified pool on Ethereum mainnet
curl -H "X-API-Key: $API_KEY" "https://api.gelabs.org/api/v1/pools?chain_type=evm&chain_id=1&pool_address=0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640"

# Use a chain_type alias. ethereum is normalized to evm automatically
curl -H "X-API-Key: $API_KEY" "https://api.gelabs.org/api/v1/pools?chain_type=ethereum&chain_id=1&pool_address=0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640"

# Query a pool on Solana. Use the corresponding chain_id value
curl -H "X-API-Key: $API_KEY" "https://api.gelabs.org/api/v1/pools?chain_type=svm&chain_id=900&pool_address=<pool_address>"

Caching

Results from this endpoint are cached for 1 hour. The cache key is determined by chain_type, chain_id, and pool_address together.

Successful response example (data found)

{
"code": 0,
"msg": "success",
"data": {
"id": "eth_0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640",
"name": "WETH / USDC 0.05%",
"address": "0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640",
"network": "eth",
"dex": "uniswap_v3",
"pool_created_at": "2021-12-29T12:35:14Z",
"base_token": {
"address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
"name": "Wrapped Ether",
"symbol": "WETH",
"image_url": "https://assets.coingecko.com/coins/images/2518/small/weth.png"
},
"quote_token": {
"address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"name": "USD Coin",
"symbol": "USDC",
"image_url": "https://assets.coingecko.com/coins/images/6319/small/usdc.png"
},
"base_token_price_usd": "3653.12",
"quote_token_price_usd": "0.9983",
"fdv_usd": "11007041041",
"market_cap_usd": null,
"price_change_percentage": {
"m5": "0",
"h1": "0.51",
"h6": "1.23",
"h24": "7.71"
},
"volume_usd": {
"h1": "16798158.01",
"h24": "536545444.90"
},
"reserve_in_usd": "163988541.38",
"transactions": {
"h24": {
"buys": 2966,
"sells": 3847,
"buyers": 1625,
"sellers": 2399
}
}
}
}

Successful response example (data not found)

When the chain or pool does not exist, the HTTP status code is still 200 and data is null.

{
"code": 0,
"msg": "success",
"data": null
}

Response fields when data is not null

FieldTypeDescription
idstringCoinGecko pool unique identifier, formatted as {network}_{pool_address}
namestringPool name, such as WETH / USDC 0.05%
addressstringPool contract address
networkstringCoinGecko network ID for the network
dexstringDEX identifier, such as uniswap_v3
pool_created_atstringPool creation time in ISO 8601 format
base_tokenobjectBase token information. See below
quote_tokenobjectQuote token information. See below
base_token_price_usdstringUSD price of the base token as a string
quote_token_price_usdstringUSD price of the quote token as a string
fdv_usdstring / nullFully diluted valuation in USD. null when unavailable
market_cap_usdstring / nullMarket capitalization in USD. null when unavailable
price_change_percentageobjectMulti-window percentage changes. Keys are m5, m15, m30, h1, h6, and h24
volume_usdobjectMulti-window USD trading volume. Uses the same keys as above
reserve_in_usdstringTotal pool liquidity in USD as a string
transactionsobjectMulti-window transaction statistics. Uses the same keys as above; see below

base_token / quote_token fields

FieldTypeDescription
addressstringToken contract address
namestringToken name
symbolstringToken symbol
image_urlstringToken icon URL

transactions fields for each time window

FieldTypeDescription
buysintegerNumber of buy trades
sellsintegerNumber of sell trades
buyersintegerNumber of unique buyer addresses
sellersintegerNumber of unique seller addresses

Common error responses

// Missing chain_type parameter
{
"code": 20001,
"msg": "chain_type is required",
"data": ""
}

// Missing chain_id parameter
{
"code": 20001,
"msg": "chain_id is required",
"data": ""
}

// Missing pool_address parameter
{
"code": 20001,
"msg": "pool_address is required",
"data": ""
}

// Upstream CoinGecko API or internal query service request failed (HTTP 503)
{
"code": 30001,
"msg": "Failed to fetch pool data",
"data": ""
}

6. Real-time protocols and WebSocket

The current version only provides HTTP/JSON APIs. It does not provide WebSocket, SSE, or other long-lived real-time protocols.

ItemCurrent supportDescription
WebSocket upgrade pathNot supportedNo ws:// / wss:// entry point and no HTTP Upgrade handling
Protocol constantsNoneNo constants for subscribe, unsubscribe, channels, or event types
Client message shapeNoneNo WS request frames, subscription frames, or heartbeat frames
Server push message shapeNoneNo WS response frames, error frames, or market-data push frames
Heartbeat and reconnectNoneUse HTTP endpoints for polling as needed

For near-real-time prices, poll GET /api/v1/quotes/latest. Successful responses from that endpoint include Cache-Control: public, max-age=3, s-maxage=3, so clients can control polling frequency according to business needs and the cache header.


7. Health checks (appendix)

This module provides three probe endpoints for operations monitoring systems and container orchestration platforms such as Kubernetes. These endpoints do not involve business data.

EndpointPurposeTypical scenario
GET /api/v1/healthOverall health check, reflecting the service's general statusMain probe for external monitoring systems
GET /api/v1/readyReadiness check, reflecting whether the service can accept requestsKubernetes Readiness Probe
GET /api/v1/liveLiveness check, reflecting whether the process is aliveKubernetes Liveness Probe

7.1 Health check

Request

GET /api/v1/health

curl example

curl -H "X-API-Key: $API_KEY" "https://api.gelabs.org/api/v1/health"

Response example

{
"code": 0,
"msg": "success",
"data": {
"status": "ok"
}
}

7.2 Readiness check

Request

GET /api/v1/ready

curl example

curl -H "X-API-Key: $API_KEY" "https://api.gelabs.org/api/v1/ready"

Response example

{
"code": 0,
"msg": "success",
"data": {
"status": "ready"
}
}

7.3 Liveness check

Request

GET /api/v1/live

curl example

curl -H "X-API-Key: $API_KEY" "https://api.gelabs.org/api/v1/live"

Response example

{
"code": 0,
"msg": "success",
"data": {
"status": "alive"
}
}

Document version: v1.2.0 | Last updated: 2026-04-28