curl --request GET \
--url https://perps-api.vooi.io/exchange/marketsimport requests
url = "https://perps-api.vooi.io/exchange/markets"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://perps-api.vooi.io/exchange/markets', 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://perps-api.vooi.io/exchange/markets",
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://perps-api.vooi.io/exchange/markets"
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://perps-api.vooi.io/exchange/markets")
.asString();require 'uri'
require 'net/http'
url = URI("https://perps-api.vooi.io/exchange/markets")
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[
{
"baseDecimals": 3,
"baseSymbol": "ETH",
"category": "stocks-us",
"data": "<unknown>",
"exchange": "aster",
"fundingInterval": 1,
"fundingRate": "0.001",
"id": "<string>",
"maxLeverage": 50,
"nextFundingTime": "2025-01-15T12:00:00.000Z",
"open": true,
"openInterest": "12345678.9",
"price": "1850.50",
"price24hPercent": -2.27,
"priceDecimals": 2,
"quoteDecimals": 6,
"quoteSymbol": "USDC",
"schedule": {
"session": "0930-1600:23456",
"timezone": "America/New_York",
"corrections": "0930-1300:20261127",
"sessionHolidays": "20261225,20270101"
},
"unifiedSymbol": "alias:aapl",
"volume24h": 100000.1234
}
]{
"message": "Invalid order id: 123",
"statusCode": 503
}Get available trading markets
curl --request GET \
--url https://perps-api.vooi.io/exchange/marketsimport requests
url = "https://perps-api.vooi.io/exchange/markets"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://perps-api.vooi.io/exchange/markets', 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://perps-api.vooi.io/exchange/markets",
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://perps-api.vooi.io/exchange/markets"
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://perps-api.vooi.io/exchange/markets")
.asString();require 'uri'
require 'net/http'
url = URI("https://perps-api.vooi.io/exchange/markets")
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[
{
"baseDecimals": 3,
"baseSymbol": "ETH",
"category": "stocks-us",
"data": "<unknown>",
"exchange": "aster",
"fundingInterval": 1,
"fundingRate": "0.001",
"id": "<string>",
"maxLeverage": 50,
"nextFundingTime": "2025-01-15T12:00:00.000Z",
"open": true,
"openInterest": "12345678.9",
"price": "1850.50",
"price24hPercent": -2.27,
"priceDecimals": 2,
"quoteDecimals": 6,
"quoteSymbol": "USDC",
"schedule": {
"session": "0930-1600:23456",
"timezone": "America/New_York",
"corrections": "0930-1300:20261127",
"sessionHolidays": "20261225,20270101"
},
"unifiedSymbol": "alias:aapl",
"volume24h": 100000.1234
}
]{
"message": "Invalid order id: 123",
"statusCode": 503
}Query Parameters
Supported perpetual exchange
aster, binance, bybit, extended, gate, hyperliquid, lighter, mexc, ondo, robinhood Response
0 <= x <= 90071992547409913
"ETH"
Asset class of the underlying: crypto (digital assets, including tokenized-RWA protocol tokens), stocks-us (equities listed on a US exchange, including foreign companies trading as depositary receipts), stocks-asia (equities listed on an Asian exchange and not on a US one — an Asian company with a US listing is stocks-us, so Sony and Alibaba sit there while Tencent sits here), etf-index (equity, commodity and macro index products and ETFs, including funds whose exposure is a metal or commodity; crypto-native index perps such as BTCDOM and DEFI stay in crypto), commodities (physical goods priced directly — metals, energy, agricultural and hardware spot indices such as GPU rental and memory — including gold-backed tokens), forex (currency pairs and the dollar index), or pre-ipo (private companies traded ahead of listing). The value belongs to the underlying rather than the venue, so every market sharing a unifiedSymbol reports the same category.
commodities, crypto, etf-index, forex, pre-ipo, stocks-asia, stocks-us "stocks-us"
Custom metadata for specific market
Perpetual exchange
aster, binance, bybit, extended, gate, hyperliquid, lighter, mexc, ondo, robinhood Funding settlement interval in hours
x <= 90071992547409911
Hourly funding rate for the market as a decimal.
"0.001"
Highest leverage this market allows, for any account.
50
Next funding settlement time
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$"2025-01-15T12:00:00.000Z"
true
Open interest as USD notional, one-sided. Multiply by 2 for two-sided.
"12345678.9"
"1850.50"
Price change over the last 24 hours, as percent (e.g. -2.27 for -2.27%).
-2.27
0 <= x <= 90071992547409912
0 <= x <= 90071992547409916
"USDC"
The market's trading schedule in TradingView session format (24x7 for crypto, weekday or custom session windows for tokenized stocks and other TradFi instruments).
Show child attributes
Show child attributes
Cross-exchange grouping key: the alias key (e.g. alias:aapl) for assets listed under different venue symbols, otherwise equal to baseSymbol.
"alias:aapl"
24h volume
x >= 0100000.1234