Get orderbook
curl --request GET \
--url https://perp-api.phoenix.trade/v1/view/orderbook/{symbol} \
--header 'Authorization: Bearer <token>'import requests
url = "https://perp-api.phoenix.trade/v1/view/orderbook/{symbol}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://perp-api.phoenix.trade/v1/view/orderbook/{symbol}', 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://perp-api.phoenix.trade/v1/view/orderbook/{symbol}",
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://perp-api.phoenix.trade/v1/view/orderbook/{symbol}"
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://perp-api.phoenix.trade/v1/view/orderbook/{symbol}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://perp-api.phoenix.trade/v1/view/orderbook/{symbol}")
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{
"asks": [
[
123,
123
]
],
"bids": [
[
123,
123
]
],
"slot": 1,
"symbol": "<string>",
"mid": 123,
"splines": [
{
"askFilledAmount": "<string>",
"askRegions": [
{
"density": 123,
"end": 123,
"filledSize": "<string>",
"start": 123,
"totalSize": "<string>"
}
],
"bidFilledAmount": "<string>",
"bidRegions": [
{
"density": 123,
"end": 123,
"filledSize": "<string>",
"start": 123,
"totalSize": "<string>"
}
],
"midPrice": 123,
"traderKey": "<string>"
}
]
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Exchange
Get orderbook
Handles GET /v1/view/orderbook/{symbol} via get.v1.view.orderbook.by_symbol.
GET
/
v1
/
view
/
orderbook
/
{symbol}
Get orderbook
curl --request GET \
--url https://perp-api.phoenix.trade/v1/view/orderbook/{symbol} \
--header 'Authorization: Bearer <token>'import requests
url = "https://perp-api.phoenix.trade/v1/view/orderbook/{symbol}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://perp-api.phoenix.trade/v1/view/orderbook/{symbol}', 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://perp-api.phoenix.trade/v1/view/orderbook/{symbol}",
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://perp-api.phoenix.trade/v1/view/orderbook/{symbol}"
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://perp-api.phoenix.trade/v1/view/orderbook/{symbol}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://perp-api.phoenix.trade/v1/view/orderbook/{symbol}")
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{
"asks": [
[
123,
123
]
],
"bids": [
[
123,
123
]
],
"slot": 1,
"symbol": "<string>",
"mid": 123,
"splines": [
{
"askFilledAmount": "<string>",
"askRegions": [
{
"density": 123,
"end": 123,
"filledSize": "<string>",
"start": 123,
"totalSize": "<string>"
}
],
"bidFilledAmount": "<string>",
"bidRegions": [
{
"density": 123,
"end": 123,
"filledSize": "<string>",
"start": 123,
"totalSize": "<string>"
}
],
"midPrice": 123,
"traderKey": "<string>"
}
]
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Authorizations
Bearer access token issued by /v1/auth/* login endpoints.
Path Parameters
Trading symbol (BTC, ETH, SOL)
Query Parameters
Whether to include splines in response and use them for parsed orderbook
Opt in to receive the full orderbook during commodities after-hours (no-op otherwise)
Response
Phoenix Eternal orderbook
View orderbook
Ask levels as (price, size).
Show child attributes
Show child attributes
Bid levels as (price, size).
Show child attributes
Show child attributes
Solana slot of this orderbook snapshot.
Required range:
x >= 0Market symbol.
Mid price, if both sides exist.
Optional spline levels.
Show child attributes
Show child attributes
⌘I