curl https://api.arcus.xyz/v1/pricesimport requests
r = requests.get("https://api.arcus.xyz/v1/prices")
print(r.json())
const res = await fetch("https://api.arcus.xyz/v1/prices");
console.log(await res.json());
const options = {method: 'GET'};
fetch('https://api.arcus.xyz/v1/prices', 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.arcus.xyz/v1/prices",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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.arcus.xyz/v1/prices"
req, _ := http.NewRequest("GET", url, nil)
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.arcus.xyz/v1/prices")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.arcus.xyz/v1/prices")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"0": {
"marketDisplayName": "BTC-USD",
"oraclePrice": "65000.50",
"markPrice": "65000.50",
"sequencer": 42
},
"1": {
"marketDisplayName": "ETH-USD",
"oraclePrice": "3200.10",
"markPrice": "3200.10",
"sequencer": 17
}
}{
"error": "Invalid request body",
"code": "GEO_RESTRICTED",
"errorSource": "Order",
"errorType": "Tick",
"rejectionReason": "POST_ONLY_WOULD_CROSS"
}{
"error": "rate limited",
"reason": "account_empty",
"retryAfterMs": 850,
"clientId": "my-order-42"
}{
"error": "Invalid request body",
"code": "GEO_RESTRICTED",
"errorSource": "Order",
"errorType": "Tick",
"rejectionReason": "POST_ONLY_WOULD_CROSS"
}Get live prices for all markets
Returns the latest oracle / mark price and per-market sequence number for every configured market, keyed by numeric marketId (as a string).
curl https://api.arcus.xyz/v1/pricesimport requests
r = requests.get("https://api.arcus.xyz/v1/prices")
print(r.json())
const res = await fetch("https://api.arcus.xyz/v1/prices");
console.log(await res.json());
const options = {method: 'GET'};
fetch('https://api.arcus.xyz/v1/prices', 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.arcus.xyz/v1/prices",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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.arcus.xyz/v1/prices"
req, _ := http.NewRequest("GET", url, nil)
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.arcus.xyz/v1/prices")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.arcus.xyz/v1/prices")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"0": {
"marketDisplayName": "BTC-USD",
"oraclePrice": "65000.50",
"markPrice": "65000.50",
"sequencer": 42
},
"1": {
"marketDisplayName": "ETH-USD",
"oraclePrice": "3200.10",
"markPrice": "3200.10",
"sequencer": 17
}
}{
"error": "Invalid request body",
"code": "GEO_RESTRICTED",
"errorSource": "Order",
"errorType": "Tick",
"rejectionReason": "POST_ONLY_WOULD_CROSS"
}{
"error": "rate limited",
"reason": "account_empty",
"retryAfterMs": 850,
"clientId": "my-order-42"
}{
"error": "Invalid request body",
"code": "GEO_RESTRICTED",
"errorSource": "Order",
"errorType": "Tick",
"rejectionReason": "POST_ONLY_WOULD_CROSS"
}marketId (as a string). Data is served entirely from in-memory caches on the gateway and refreshed in-process from the oracle feed, so this endpoint is safe to poll at high frequency.
Notes:
markPricecurrently mirrorsoraclePrice. The field is kept separate so a future mark-price feed can be introduced without changing the response shape.sequenceronly advances from engine-sourced updates. Prices seeded via the HTTP ingestion path (which has no engine sequence yet) leavesequencerat its previous value (or0if none).
Query Parameters
Restrict the response to a single market. Accepts either the display name (e.g. BTC-USD, case-insensitive) or the numeric market id (e.g. 1). Omit to return every online market. An unresolvable value → 400. A filter naming an OFFLINE market returns an empty object, matching how the unfiltered response omits offline markets.
"BTC-USD"
Response
Live prices keyed by stringified marketId.
Map keyed by stringified numeric marketId (e.g. "0", "1", ...), where each value is the live price snapshot for that market. One entry is returned for every configured market; markets that have not yet received a price carry "0" values and sequencer: 0.
Show child attributes
Show child attributes
Was this page helpful?