const res = await fetch('https://app.trdrs.co/api/market/config', {
headers: { Authorization: `Bearer ${process.env.TRDRS_API_KEY}` },
})
const data = await res.json()curl 'https://app.trdrs.co/api/market/config' \
-H "Authorization: Bearer $TRDRS_API_KEY"import requests
url = "https://app.trdrs.co/api/market/config"
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/market/config",
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/market/config"
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/market/config")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.trdrs.co/api/market/config")
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{
"timeframes": {
"units": [
{
"unit": "t",
"maxCount": 1000,
"nominalSeconds": 60
},
{
"unit": "s",
"maxCount": 3600,
"nominalSeconds": 1
},
{
"unit": "m",
"maxCount": 1440,
"nominalSeconds": 60
},
{
"unit": "h",
"maxCount": 168,
"nominalSeconds": 3600
},
{
"unit": "d",
"maxCount": 365,
"nominalSeconds": 86400
},
{
"unit": "w",
"maxCount": 52,
"nominalSeconds": 604800
},
{
"unit": "mo",
"maxCount": 120,
"nominalSeconds": 2592000
}
],
"presets": [
"1s",
"5s",
"15s",
"30s",
"1m",
"3m",
"5m",
"15m",
"30m",
"1h",
"2h",
"4h",
"1d",
"1w"
]
},
"limits": {
"maxBars": 5000,
"maxSymbolsPerPage": 100,
"maxQuoteSymbols": 50
},
"assetClasses": [
"futures",
"crypto"
]
}Get market-data limits
Returns the timeframe format, symbol caps, and rate limits. Fetch before your first data call: it answers the question the other routes cannot — which timeframes are legal, and how large an ask will be honoured.
timeframes.units is the format itself, each unit with its inclusive count ceiling, so 1..maxCount of any listed unit is accepted. The token is <N><unit>, which means custom values like 45s, 90m, 250t and 3mo are legal even though no preset lists them; validate against units and you reach the same verdict the engine does, without a round trip. timeframes.presets is the standard menu a client renders: a suggestion, never the boundary.
nominalSeconds is exact for the fixed-duration units and a coarse nominal for t (~1 minute) and mo (~30 days); it bounds ranges and orders menus, and is never a promise about bar spacing. limits.maxBars is both the countBack ceiling and the plain window’s width cap on /api/market/history. assetClasses lists what the catalog can actually answer for on this deployment, so a filter you offer always has rows behind it.
const res = await fetch('https://app.trdrs.co/api/market/config', {
headers: { Authorization: `Bearer ${process.env.TRDRS_API_KEY}` },
})
const data = await res.json()curl 'https://app.trdrs.co/api/market/config' \
-H "Authorization: Bearer $TRDRS_API_KEY"import requests
url = "https://app.trdrs.co/api/market/config"
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/market/config",
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/market/config"
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/market/config")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.trdrs.co/api/market/config")
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{
"timeframes": {
"units": [
{
"unit": "t",
"maxCount": 1000,
"nominalSeconds": 60
},
{
"unit": "s",
"maxCount": 3600,
"nominalSeconds": 1
},
{
"unit": "m",
"maxCount": 1440,
"nominalSeconds": 60
},
{
"unit": "h",
"maxCount": 168,
"nominalSeconds": 3600
},
{
"unit": "d",
"maxCount": 365,
"nominalSeconds": 86400
},
{
"unit": "w",
"maxCount": 52,
"nominalSeconds": 604800
},
{
"unit": "mo",
"maxCount": 120,
"nominalSeconds": 2592000
}
],
"presets": [
"1s",
"5s",
"15s",
"30s",
"1m",
"3m",
"5m",
"15m",
"30m",
"1h",
"2h",
"4h",
"1d",
"1w"
]
},
"limits": {
"maxBars": 5000,
"maxSymbolsPerPage": 100,
"maxQuoteSymbols": 50
},
"assetClasses": [
"futures",
"crypto"
]
}Authorizations
Your firm’s API key (the API calls this the tenant key; trdrs_sk_…), server-to-server only.