curl --request GET \
--url https://perps-api.vooi.io/exchange/quotes \
--header 'Authorization: Bearer <token>'import requests
url = "https://perps-api.vooi.io/exchange/quotes"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://perps-api.vooi.io/exchange/quotes', 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/quotes",
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: Bearer <token>"
],
]);
$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/quotes"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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/quotes")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://perps-api.vooi.io/exchange/quotes")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body[
{
"exchange": "aster",
"quote": {
"averageExecutionPrice": "1850.50",
"baseSize": "0.001",
"baseSymbol": "ETH",
"feesBps": "4.5",
"fundingRateBps": "0.12",
"liquidationPrice": "1650.25",
"nextFundingTime": "2025-01-15T12:00:00.000Z",
"quoteSymbol": "USDC",
"slippageBps": "1.2"
}
}
]{
"message": "Invalid order id: 123",
"statusCode": 503
}Get quotes for markets
Authorization is optional: without a valid session, quotes are returned with liquidationPrice set to null.
curl --request GET \
--url https://perps-api.vooi.io/exchange/quotes \
--header 'Authorization: Bearer <token>'import requests
url = "https://perps-api.vooi.io/exchange/quotes"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://perps-api.vooi.io/exchange/quotes', 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/quotes",
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: Bearer <token>"
],
]);
$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/quotes"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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/quotes")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://perps-api.vooi.io/exchange/quotes")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body[
{
"exchange": "aster",
"quote": {
"averageExecutionPrice": "1850.50",
"baseSize": "0.001",
"baseSymbol": "ETH",
"feesBps": "4.5",
"fundingRateBps": "0.12",
"liquidationPrice": "1650.25",
"nextFundingTime": "2025-01-15T12:00:00.000Z",
"quoteSymbol": "USDC",
"slippageBps": "1.2"
}
}
]{
"message": "Invalid order id: 123",
"statusCode": 503
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
Asset identifier: a base symbol (e.g. ETH), a full pair (e.g. ETHUSDC), or a common short name (e.g. gold, sp500, 1000pepe) for cross-venue lookup. Tickers vary across venues for the same underlying — if you only have a common name, pass it as lowercase with no spaces or punctuation. Look up an unfamiliar market with get_markets({ query: "<name>" }) first if needed.
1"ETH"
One or more exchanges to get quotes from Supported perpetual exchange
aster, binance, bybit, extended, gate, hyperliquid, lighter, mexc, ondo, robinhood Leverage multiplier used to estimate the liquidation price for isolated margin positions.
\d+(\.\d+)?"10"
Margin mode used to estimate the liquidation price. Defaults to cross.
cross, isolated Order size in quote currency (USD)
\d+(\.\d+)?"1000.00"
Order side: buy (long) or sell (short)
buy, sell