List Perpetuals Positions
curl --request GET \
--url https://api.coinbase.com/api/v3/brokerage/intx/positions/{portfolio_uuid} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.coinbase.com/api/v3/brokerage/intx/positions/{portfolio_uuid}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.coinbase.com/api/v3/brokerage/intx/positions/{portfolio_uuid}', 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://api.coinbase.com/api/v3/brokerage/intx/positions/{portfolio_uuid}",
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://api.coinbase.com/api/v3/brokerage/intx/positions/{portfolio_uuid}"
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://api.coinbase.com/api/v3/brokerage/intx/positions/{portfolio_uuid}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.coinbase.com/api/v3/brokerage/intx/positions/{portfolio_uuid}")
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{
"positions": [
{
"product_id": "<string>",
"product_uuid": "<string>",
"portfolio_uuid": "<string>",
"symbol": "<string>",
"vwap": {
"value": "<string>",
"currency": "<string>"
},
"entry_vwap": {
"value": "<string>",
"currency": "<string>"
},
"position_side": "POSITION_SIDE_UNKNOWN",
"margin_type": "MARGIN_TYPE_UNSPECIFIED",
"net_size": "<string>",
"buy_order_size": "<string>",
"sell_order_size": "<string>",
"im_contribution": "<string>",
"unrealized_pnl": {
"value": "<string>",
"currency": "<string>"
},
"mark_price": {
"value": "<string>",
"currency": "<string>"
},
"liquidation_price": {
"value": "<string>",
"currency": "<string>"
},
"leverage": "<string>",
"im_notional": {
"value": "<string>",
"currency": "<string>"
},
"mm_notional": {
"value": "<string>",
"currency": "<string>"
},
"position_notional": {
"value": "<string>",
"currency": "<string>"
},
"aggregated_pnl": {
"value": "<string>",
"currency": "<string>"
}
}
],
"summary": {
"aggregated_pnl": {
"value": "<string>",
"currency": "<string>"
}
}
}{
"error": "<string>",
"code": 123,
"message": "<string>",
"details": [
{
"type_url": "<string>",
"value": "aSDinaTvuI8gbWludGxpZnk="
}
]
}International Derivatives (INTX, deprecated)
List Perpetuals Positions
Get a list of open positions in your Perpetuals portfolio
GET
/
api
/
v3
/
brokerage
/
intx
/
positions
/
{portfolio_uuid}
List Perpetuals Positions
curl --request GET \
--url https://api.coinbase.com/api/v3/brokerage/intx/positions/{portfolio_uuid} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.coinbase.com/api/v3/brokerage/intx/positions/{portfolio_uuid}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.coinbase.com/api/v3/brokerage/intx/positions/{portfolio_uuid}', 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://api.coinbase.com/api/v3/brokerage/intx/positions/{portfolio_uuid}",
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://api.coinbase.com/api/v3/brokerage/intx/positions/{portfolio_uuid}"
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://api.coinbase.com/api/v3/brokerage/intx/positions/{portfolio_uuid}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.coinbase.com/api/v3/brokerage/intx/positions/{portfolio_uuid}")
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{
"positions": [
{
"product_id": "<string>",
"product_uuid": "<string>",
"portfolio_uuid": "<string>",
"symbol": "<string>",
"vwap": {
"value": "<string>",
"currency": "<string>"
},
"entry_vwap": {
"value": "<string>",
"currency": "<string>"
},
"position_side": "POSITION_SIDE_UNKNOWN",
"margin_type": "MARGIN_TYPE_UNSPECIFIED",
"net_size": "<string>",
"buy_order_size": "<string>",
"sell_order_size": "<string>",
"im_contribution": "<string>",
"unrealized_pnl": {
"value": "<string>",
"currency": "<string>"
},
"mark_price": {
"value": "<string>",
"currency": "<string>"
},
"liquidation_price": {
"value": "<string>",
"currency": "<string>"
},
"leverage": "<string>",
"im_notional": {
"value": "<string>",
"currency": "<string>"
},
"mm_notional": {
"value": "<string>",
"currency": "<string>"
},
"position_notional": {
"value": "<string>",
"currency": "<string>"
},
"aggregated_pnl": {
"value": "<string>",
"currency": "<string>"
}
}
],
"summary": {
"aggregated_pnl": {
"value": "<string>",
"currency": "<string>"
}
}
}{
"error": "<string>",
"code": 123,
"message": "<string>",
"details": [
{
"type_url": "<string>",
"value": "aSDinaTvuI8gbWludGxpZnk="
}
]
}Deprecated — retires September 9, 2026. This INTX perpetuals endpoint is being replaced by the Deribit-powered derivatives gateway. Migrate before the cutover — see the Migration Overview.
Authorizations
A JWT signed using your CDP API Key Secret, encoded in base64. Refer to the Creating API Keys section of our Coinbase App Authentication docs for information on how to generate your Bearer Token.
Path Parameters
The portfolio UUID.
Was this page helpful?
⌘I