const res = await fetch('https://app.trdrs.co/api/partner/venues/{venueId}/accounts/{accountId}/instruments', {
headers: { Authorization: `Bearer ${process.env.TRDRS_VENUE_KEY}` },
})
const data = await res.json()curl 'https://app.trdrs.co/api/partner/venues/{venueId}/accounts/{accountId}/instruments' \
-H "Authorization: Bearer $TRDRS_VENUE_KEY"import requests
url = "https://app.trdrs.co/api/partner/venues/{venueId}/accounts/{accountId}/instruments"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.trdrs.co/api/partner/venues/{venueId}/accounts/{accountId}/instruments",
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://app.trdrs.co/api/partner/venues/{venueId}/accounts/{accountId}/instruments"
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://app.trdrs.co/api/partner/venues/{venueId}/accounts/{accountId}/instruments")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.trdrs.co/api/partner/venues/{venueId}/accounts/{accountId}/instruments")
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{
"items": [
{
"instrumentId": "BTC-USD-SPOT",
"symbol": "BTCUSD",
"instrumentVersionId": "00000000-0000-0000-0000-000000000001",
"version": "v1",
"blockedBy": [],
"tradingReady": false
},
{
"instrumentId": "ETH-USD-SPOT",
"symbol": "ETHUSD",
"instrumentVersionId": "00000000-0000-0000-0000-000000000001",
"version": "v1",
"blockedBy": [
"entry_halted"
],
"tradingReady": false
}
],
"nextCursor": null,
"basis": "account_configuration_only"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}Read what one account may trade
Private preview, disabled unless VENUE_CONFIGURATION_ENABLED is enabled and the vault is configured. This branch has not enabled these routes in the public sandbox. Existing trdrs_sk partner/tenant keys do not authorize these routes. Requires venue:read, and the account must belong to this venue. The venue’s activated catalog resolved against THIS account: its conditions, its route and its open liquidation. Every reason is an ENTRY gate - a halted, de-listed or over-limit account can still close what it holds, and this read never says otherwise. It answers configuration only: it cannot see a price, a balance or a stream, so basis is always account_configuration_only and an empty blockedBy is not a promise that an order will be accepted. An account belonging to another venue is refused rather than answered empty, because an empty catalog reads as “nothing to trade” when the truth is “not your account”.
const res = await fetch('https://app.trdrs.co/api/partner/venues/{venueId}/accounts/{accountId}/instruments', {
headers: { Authorization: `Bearer ${process.env.TRDRS_VENUE_KEY}` },
})
const data = await res.json()curl 'https://app.trdrs.co/api/partner/venues/{venueId}/accounts/{accountId}/instruments' \
-H "Authorization: Bearer $TRDRS_VENUE_KEY"import requests
url = "https://app.trdrs.co/api/partner/venues/{venueId}/accounts/{accountId}/instruments"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.trdrs.co/api/partner/venues/{venueId}/accounts/{accountId}/instruments",
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://app.trdrs.co/api/partner/venues/{venueId}/accounts/{accountId}/instruments"
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://app.trdrs.co/api/partner/venues/{venueId}/accounts/{accountId}/instruments")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.trdrs.co/api/partner/venues/{venueId}/accounts/{accountId}/instruments")
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{
"items": [
{
"instrumentId": "BTC-USD-SPOT",
"symbol": "BTCUSD",
"instrumentVersionId": "00000000-0000-0000-0000-000000000001",
"version": "v1",
"blockedBy": [],
"tradingReady": false
},
{
"instrumentId": "ETH-USD-SPOT",
"symbol": "ETHUSD",
"instrumentVersionId": "00000000-0000-0000-0000-000000000001",
"version": "v1",
"blockedBy": [
"entry_halted"
],
"tradingReady": false
}
],
"nextCursor": null,
"basis": "account_configuration_only"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}Authorizations
Private-preview venue operator key (trdrs_vk_sandbox_… or trdrs_vk_production_…). Bound to one venue/environment and explicit scopes. Issued by a verified owner session; accepted only on documented /api/partner/venues/{venueId} routes. Existing trdrs_sk keys are not interchangeable. Never grants trader, login or key-management authority.
Query Parameters
Copy nextCursor unchanged; it is the last instrument ID of the previous page.