Get a CEX market quote
curl --request GET \
--url https://api.portfobit.com/api/v1/market-data/quote \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.portfobit.com/api/v1/market-data/quote"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.portfobit.com/api/v1/market-data/quote', 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.portfobit.com/api/v1/market-data/quote",
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.portfobit.com/api/v1/market-data/quote"
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.portfobit.com/api/v1/market-data/quote")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.portfobit.com/api/v1/market-data/quote")
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": {
"symbol": "BTC/USDT",
"instrument_type": "spot",
"source": "ccxt",
"source_venue": "binance",
"last": "60000.00",
"bid": "59999.90",
"ask": "60000.10",
"open_24h": "59000.00",
"high_24h": "61000.00",
"low_24h": "58500.00",
"base_volume_24h": "1234.56",
"quote_volume_24h": "74000000.00",
"change_24h": "1000.00",
"change_percent_24h": "1.694915254237288136",
"price_as_of": "2026-08-07T08:00:00Z",
"fetched_at": "2026-08-07T08:00:01Z"
},
"meta": {
"request_id": "req_01J2K8B7QW",
"generated_at": "2026-08-07T08:00:01Z"
}
}{
"error": {
"code": "invalid_candle_interval",
"message": "interval must be a supported CCXT timeframe",
"details": {}
},
"meta": {
"request_id": "req_01J2K8B7QW",
"generated_at": "2026-08-14T08:00:00Z"
}
}{
"error": {
"code": "market_venue_not_available",
"message": "The requested market venue is not available.",
"details": {
"venue": "binance"
}
},
"meta": {
"request_id": "req_01J2K8B7QW",
"generated_at": "2026-08-08T08:00:00Z"
}
}{
"error": {
"code": "market_quote_unavailable",
"message": "market quote has no last price",
"details": {}
},
"meta": {
"request_id": "req_01J2K8B7QW",
"generated_at": "2026-08-14T08:00:00Z"
}
}{
"error": {
"code": "market_upstream_rate_limited",
"message": "The market-data provider is rate limited.",
"details": {}
},
"meta": {
"request_id": "req_01J2K8B7QW",
"generated_at": "2026-08-08T08:00:00Z"
}
}{
"error": {
"code": "unavailable",
"message": "market data is unavailable",
"details": {}
},
"meta": {
"request_id": "req_01J2K8B7QW",
"generated_at": "2026-08-14T08:00:00Z"
}
}Market data
Get a CEX market quote
Requires marketdata:read. Returns one raw normalized ticker from a CEX credential already connected by this user. It never reads a balance or position, uses the internal valuation price or cache, persists the quote, or falls back to another venue. An omitted venue selects one healthy connected CEX and returns its actual source_venue; a supplied venue is a strict constraint.
GET
/
market-data
/
quote
Get a CEX market quote
curl --request GET \
--url https://api.portfobit.com/api/v1/market-data/quote \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.portfobit.com/api/v1/market-data/quote"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.portfobit.com/api/v1/market-data/quote', 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.portfobit.com/api/v1/market-data/quote",
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.portfobit.com/api/v1/market-data/quote"
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.portfobit.com/api/v1/market-data/quote")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.portfobit.com/api/v1/market-data/quote")
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": {
"symbol": "BTC/USDT",
"instrument_type": "spot",
"source": "ccxt",
"source_venue": "binance",
"last": "60000.00",
"bid": "59999.90",
"ask": "60000.10",
"open_24h": "59000.00",
"high_24h": "61000.00",
"low_24h": "58500.00",
"base_volume_24h": "1234.56",
"quote_volume_24h": "74000000.00",
"change_24h": "1000.00",
"change_percent_24h": "1.694915254237288136",
"price_as_of": "2026-08-07T08:00:00Z",
"fetched_at": "2026-08-07T08:00:01Z"
},
"meta": {
"request_id": "req_01J2K8B7QW",
"generated_at": "2026-08-07T08:00:01Z"
}
}{
"error": {
"code": "invalid_candle_interval",
"message": "interval must be a supported CCXT timeframe",
"details": {}
},
"meta": {
"request_id": "req_01J2K8B7QW",
"generated_at": "2026-08-14T08:00:00Z"
}
}{
"error": {
"code": "market_venue_not_available",
"message": "The requested market venue is not available.",
"details": {
"venue": "binance"
}
},
"meta": {
"request_id": "req_01J2K8B7QW",
"generated_at": "2026-08-08T08:00:00Z"
}
}{
"error": {
"code": "market_quote_unavailable",
"message": "market quote has no last price",
"details": {}
},
"meta": {
"request_id": "req_01J2K8B7QW",
"generated_at": "2026-08-14T08:00:00Z"
}
}{
"error": {
"code": "market_upstream_rate_limited",
"message": "The market-data provider is rate limited.",
"details": {}
},
"meta": {
"request_id": "req_01J2K8B7QW",
"generated_at": "2026-08-08T08:00:00Z"
}
}{
"error": {
"code": "unavailable",
"message": "market data is unavailable",
"details": {}
},
"meta": {
"request_id": "req_01J2K8B7QW",
"generated_at": "2026-08-14T08:00:00Z"
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
CCXT unified symbol, for example BTC/USDT or ETH/USDT:USDT.
Optional connected CEX venue. When supplied, it is a strict source constraint; when omitted, one healthy connected venue is selected.