Get order history v2
curl --request GET \
--url https://perp-api.phoenix.trade/v1/traders/{trader_pubkey}/orders_v2 \
--header 'Authorization: Bearer <token>'import requests
url = "https://perp-api.phoenix.trade/v1/traders/{trader_pubkey}/orders_v2"
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/traders/{trader_pubkey}/orders_v2', 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/traders/{trader_pubkey}/orders_v2",
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/traders/{trader_pubkey}/orders_v2"
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/traders/{trader_pubkey}/orders_v2")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://perp-api.phoenix.trade/v1/traders/{trader_pubkey}/orders_v2")
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{
"data": [
{
"createdAt": "2023-11-07T05:31:56Z",
"eventIndex": 123,
"instructionIndex": 123,
"instructionType": "<string>",
"intended": {
"baseLots": 123,
"baseQty": "<string>",
"cancelExisting": true,
"hasPriceLimit": true,
"isPostOnly": true,
"isReduceOnly": true,
"isStopLoss": true,
"isTakeOnly": true,
"orderFlags": 123,
"orderKind": "<string>",
"side": "<string>",
"clientOrderId": "<string>",
"isConditionalOrder": true,
"isStopLossDirection": true,
"lastValidSlot": 123,
"matchLimit": 123,
"priceInTicks": 123,
"priceUsd": "<string>",
"quoteLotBudget": 123
},
"isConditionalOrder": true,
"isReduceOnly": true,
"isStopLoss": true,
"isStopLossDirection": true,
"marketSymbol": "<string>",
"orderType": "<string>",
"price": "<string>",
"slot": 123,
"slotIndex": 123,
"status": "<string>",
"traderId": 123,
"traderPdaIndex": 123,
"traderSubaccountIndex": 123,
"userId": 123,
"currentOrderState": {
"baseQty": "<string>",
"filledBaseQty": "<string>",
"orderSequenceNumber": 123,
"orderStatus": "<string>",
"price": "<string>",
"releasedBaseQty": "<string>",
"remainingBaseQty": "<string>",
"side": "<string>",
"cancelledAt": "2023-11-07T05:31:56Z",
"lastFillAt": "2023-11-07T05:31:56Z",
"placedAt": "2023-11-07T05:31:56Z"
},
"fillBeforePlacement": {
"numTrades": 123,
"totalBaseQtyFilled": "<string>",
"totalNumFills": 123,
"totalQuoteQtyFilled": "<string>",
"totalTakerFee": "<string>"
},
"placedOrder": {
"baseQty": "<string>",
"eventIndex": 123,
"orderSequenceNumber": 123,
"price": "<string>",
"side": "<string>",
"transactionTimestamp": "2023-11-07T05:31:56Z",
"initialSlot": 123,
"lastValidSlot": 123,
"orderFlags": 123
}
}
],
"hasMore": true,
"nextCursor": "<string>",
"prevCursor": "<string>"
}Trader
Get order history v2
Handles GET /v1/traders/{trader_pubkey}/orders_v2 via get.v1.traders.by_trader_pubkey.orders_v2.
GET
/
v1
/
traders
/
{trader_pubkey}
/
orders_v2
Get order history v2
curl --request GET \
--url https://perp-api.phoenix.trade/v1/traders/{trader_pubkey}/orders_v2 \
--header 'Authorization: Bearer <token>'import requests
url = "https://perp-api.phoenix.trade/v1/traders/{trader_pubkey}/orders_v2"
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/traders/{trader_pubkey}/orders_v2', 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/traders/{trader_pubkey}/orders_v2",
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/traders/{trader_pubkey}/orders_v2"
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/traders/{trader_pubkey}/orders_v2")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://perp-api.phoenix.trade/v1/traders/{trader_pubkey}/orders_v2")
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{
"data": [
{
"createdAt": "2023-11-07T05:31:56Z",
"eventIndex": 123,
"instructionIndex": 123,
"instructionType": "<string>",
"intended": {
"baseLots": 123,
"baseQty": "<string>",
"cancelExisting": true,
"hasPriceLimit": true,
"isPostOnly": true,
"isReduceOnly": true,
"isStopLoss": true,
"isTakeOnly": true,
"orderFlags": 123,
"orderKind": "<string>",
"side": "<string>",
"clientOrderId": "<string>",
"isConditionalOrder": true,
"isStopLossDirection": true,
"lastValidSlot": 123,
"matchLimit": 123,
"priceInTicks": 123,
"priceUsd": "<string>",
"quoteLotBudget": 123
},
"isConditionalOrder": true,
"isReduceOnly": true,
"isStopLoss": true,
"isStopLossDirection": true,
"marketSymbol": "<string>",
"orderType": "<string>",
"price": "<string>",
"slot": 123,
"slotIndex": 123,
"status": "<string>",
"traderId": 123,
"traderPdaIndex": 123,
"traderSubaccountIndex": 123,
"userId": 123,
"currentOrderState": {
"baseQty": "<string>",
"filledBaseQty": "<string>",
"orderSequenceNumber": 123,
"orderStatus": "<string>",
"price": "<string>",
"releasedBaseQty": "<string>",
"remainingBaseQty": "<string>",
"side": "<string>",
"cancelledAt": "2023-11-07T05:31:56Z",
"lastFillAt": "2023-11-07T05:31:56Z",
"placedAt": "2023-11-07T05:31:56Z"
},
"fillBeforePlacement": {
"numTrades": 123,
"totalBaseQtyFilled": "<string>",
"totalNumFills": 123,
"totalQuoteQtyFilled": "<string>",
"totalTakerFee": "<string>"
},
"placedOrder": {
"baseQty": "<string>",
"eventIndex": 123,
"orderSequenceNumber": 123,
"price": "<string>",
"side": "<string>",
"transactionTimestamp": "2023-11-07T05:31:56Z",
"initialSlot": 123,
"lastValidSlot": 123,
"orderFlags": 123
}
}
],
"hasMore": true,
"nextCursor": "<string>",
"prevCursor": "<string>"
}Authorizations
Query Parameters
Response
200 - application/json
Generic paginated response wrapper with bidirectional cursor support.
The cursor system supports both forward (newer) and backward (older) pagination:
prev_cursor: Use this cursor to poll for new items (items newer than the current result set)next_cursor: Use this cursor to load more items (items older than the current result set)
The direction is embedded in the cursor itself, so clients just need to pass
the appropriate cursor to the cursor parameter.