Perp markets
curl --request GET \
--url https://router.raze.bot/perp/markets \
--header 'x-api-key: <api-key>'import requests
url = "https://router.raze.bot/perp/markets"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://router.raze.bot/perp/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://router.raze.bot/perp/markets",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$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://router.raze.bot/perp/markets"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://router.raze.bot/perp/markets")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://router.raze.bot/perp/markets")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"quoteId": "38a66df90000000f",
"venues": [
{
"venue": "jupiter",
"ready": true,
"markets": [
{
"marketId": "jupiter:SOL-PERP",
"venue": "jupiter",
"symbol": "SOL",
"collateralMintLong": "So11111111111111111111111111111111111111112",
"collateralMintShort": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"mark": {
"priceE6": 117432055,
"slot": 452412207,
"publishTime": 1790891137,
"source": "doves"
},
"openFeePpm": 600,
"isolatedOnly": false
},
{
"marketId": "jupiter:ETH-PERP",
"venue": "jupiter",
"symbol": "ETH",
"collateralMintLong": "7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs",
"collateralMintShort": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"mark": {
"priceE6": 2689357665,
"slot": 452412207,
"publishTime": 1790891137,
"source": "doves"
},
"openFeePpm": 600,
"isolatedOnly": false
},
{
"marketId": "jupiter:BTC-PERP",
"venue": "jupiter",
"symbol": "BTC",
"collateralMintLong": "3NZ9JMVBmGAqocybic2c7LQCJScmgsAZ6vQqTDzcqmJh",
"collateralMintShort": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"mark": {
"priceE6": 84468816646,
"slot": 452412207,
"publishTime": 1790891137,
"source": "doves"
},
"openFeePpm": 600,
"isolatedOnly": false
}
]
},
{
"venue": "gmtrade",
"ready": true,
"markets": [
{
"marketId": "gmtrade:BTC-USDC-USDC-PERP",
"venue": "gmtrade",
"symbol": "BTC-USDC-USDC",
"collateralMintLong": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"collateralMintShort": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"mark": {
"priceE6": 84466904622,
"slot": 452412209,
"publishTime": 1790891132,
"source": "chainlink"
},
"isolatedOnly": true
},
{
"marketId": "gmtrade:SOL-WSOL-USDC-PERP",
"venue": "gmtrade",
"symbol": "SOL-WSOL-USDC",
"collateralMintLong": "So11111111111111111111111111111111111111112",
"collateralMintShort": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"mark": {
"priceE6": 117427558,
"slot": 452412209,
"publishTime": 1790891134,
"source": "chainlink"
},
"isolatedOnly": true
},
{
"marketId": "gmtrade:XAU-PERP",
"venue": "gmtrade",
"symbol": "XAU",
"collateralMintLong": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"collateralMintShort": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"isolatedOnly": true
},
{
"marketId": "gmtrade:ZEC-PERP",
"venue": "gmtrade",
"symbol": "ZEC",
"collateralMintLong": "9wX6Qz1Y5YQe71dfnFYFfZYXZhKqjYKQwdqfrRkmYUSX",
"collateralMintShort": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"isolatedOnly": true
}
]
}
]
}{
"error": "bad_request",
"reason": "venue: jupiter | gmtrade",
"quoteId": "23e14e01000044fa"
}{
"error": "venue_disabled",
"reason": "jupiter is not enabled on this host (ROUTER_PERP)",
"quoteId": "23e14e01000044f9"
}{
"error": "not_ready",
"reasons": [
"<string>"
],
"quoteId": "<string>"
}Perps
Perp markets
The markets of every enabled venue (or of the one asked), with the live mark price.
- Jupiter: three markets,
SOL,ETH,BTC. Longs are collateralised in the asset, shorts in USDC. The mark is Jupiter’s Doves oracle. - GMTrade: the markets of its catalog that the venue has enabled. The mark is the latest Chainlink Data Streams report published on chain; it is omitted when that report is older than the token’s heartbeat (120 s for most tokens, 300 s for FX, metals and oil, 30 s for PUMP): outside market hours for stocks and FX, and whenever a feed lags.
A market without mark cannot be quoted or opened right now: /perp/quote and
/perp/instructions decline it with 503 oracle.
GET
/
perp
/
markets
Perp markets
curl --request GET \
--url https://router.raze.bot/perp/markets \
--header 'x-api-key: <api-key>'import requests
url = "https://router.raze.bot/perp/markets"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://router.raze.bot/perp/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://router.raze.bot/perp/markets",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$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://router.raze.bot/perp/markets"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://router.raze.bot/perp/markets")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://router.raze.bot/perp/markets")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"quoteId": "38a66df90000000f",
"venues": [
{
"venue": "jupiter",
"ready": true,
"markets": [
{
"marketId": "jupiter:SOL-PERP",
"venue": "jupiter",
"symbol": "SOL",
"collateralMintLong": "So11111111111111111111111111111111111111112",
"collateralMintShort": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"mark": {
"priceE6": 117432055,
"slot": 452412207,
"publishTime": 1790891137,
"source": "doves"
},
"openFeePpm": 600,
"isolatedOnly": false
},
{
"marketId": "jupiter:ETH-PERP",
"venue": "jupiter",
"symbol": "ETH",
"collateralMintLong": "7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs",
"collateralMintShort": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"mark": {
"priceE6": 2689357665,
"slot": 452412207,
"publishTime": 1790891137,
"source": "doves"
},
"openFeePpm": 600,
"isolatedOnly": false
},
{
"marketId": "jupiter:BTC-PERP",
"venue": "jupiter",
"symbol": "BTC",
"collateralMintLong": "3NZ9JMVBmGAqocybic2c7LQCJScmgsAZ6vQqTDzcqmJh",
"collateralMintShort": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"mark": {
"priceE6": 84468816646,
"slot": 452412207,
"publishTime": 1790891137,
"source": "doves"
},
"openFeePpm": 600,
"isolatedOnly": false
}
]
},
{
"venue": "gmtrade",
"ready": true,
"markets": [
{
"marketId": "gmtrade:BTC-USDC-USDC-PERP",
"venue": "gmtrade",
"symbol": "BTC-USDC-USDC",
"collateralMintLong": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"collateralMintShort": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"mark": {
"priceE6": 84466904622,
"slot": 452412209,
"publishTime": 1790891132,
"source": "chainlink"
},
"isolatedOnly": true
},
{
"marketId": "gmtrade:SOL-WSOL-USDC-PERP",
"venue": "gmtrade",
"symbol": "SOL-WSOL-USDC",
"collateralMintLong": "So11111111111111111111111111111111111111112",
"collateralMintShort": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"mark": {
"priceE6": 117427558,
"slot": 452412209,
"publishTime": 1790891134,
"source": "chainlink"
},
"isolatedOnly": true
},
{
"marketId": "gmtrade:XAU-PERP",
"venue": "gmtrade",
"symbol": "XAU",
"collateralMintLong": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"collateralMintShort": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"isolatedOnly": true
},
{
"marketId": "gmtrade:ZEC-PERP",
"venue": "gmtrade",
"symbol": "ZEC",
"collateralMintLong": "9wX6Qz1Y5YQe71dfnFYFfZYXZhKqjYKQwdqfrRkmYUSX",
"collateralMintShort": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"isolatedOnly": true
}
]
}
]
}{
"error": "bad_request",
"reason": "venue: jupiter | gmtrade",
"quoteId": "23e14e01000044fa"
}{
"error": "venue_disabled",
"reason": "jupiter is not enabled on this host (ROUTER_PERP)",
"quoteId": "23e14e01000044f9"
}{
"error": "not_ready",
"reasons": [
"<string>"
],
"quoteId": "<string>"
}Guide: Perps.
Authorizations
Query Parameters
Only this venue. Aliases jup, gmsol and gm are accepted. Omit for every enabled venue
Available options:
jupiter, gmtrade ⌘I