TypeScript
// First-party cookie auth: this runs in a signed-in trdrs session, not under an API key.
const res = await fetch('https://app.trdrs.co/api/challenges', {
credentials: 'include',
})
const data = await res.json()curl 'https://app.trdrs.co/api/challenges' \
-b "session=$TRDRS_SESSION"import requests
url = "https://app.trdrs.co/api/challenges"
headers = {"cookie": "session="}
response = requests.get(url, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.trdrs.co/api/challenges",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_COOKIE => "session=",
]);
$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/challenges"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("cookie", "session=")
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/challenges")
.header("cookie", "session=")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.trdrs.co/api/challenges")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["cookie"] = 'session='
response = http.request(request)
puts response.read_body{
"challenges": [
{
"id": "3f8a1c2e-9b47-4d10-a3fe-2c61b7c90d84",
"name": "50K Evaluation",
"description": "Two-stage evaluation on a 50K account.",
"isActive": true,
"stage": 1,
"nextChallengeId": "8d2f5a90-1e4b-4c7a-9f3d-6b0a8c4e2f17",
"allowedTypes": [
"standard"
],
"accountSizes": [
50000
],
"currency": "USD",
"priceCents": 0,
"profitTargetPct": 8,
"maxDailyDdPct": 4,
"maxTotalDdPct": 8,
"ddMode": "trailing_max_equity_eod",
"minTradingDays": 5,
"maxDurationDays": null,
"allowWeekendHold": false,
"profitSharePct": null
}
]
}Challenges
List challenge programs
Preview: outside the additive-only guarantee. These shapes are the pre-contract v1 scaffold; the Phase-1 rebuild will change them. Read them, do not pin to them.
Served only when the engine runs with CHALLENGES_ENABLED. The route bundle is not merely disabled without it. It is never constructed, so every path here answers 404.
Returns the active challenge programs. Draft (inactive) programs are never listed.
GET
/
api
/
challenges
TypeScript
// First-party cookie auth: this runs in a signed-in trdrs session, not under an API key.
const res = await fetch('https://app.trdrs.co/api/challenges', {
credentials: 'include',
})
const data = await res.json()curl 'https://app.trdrs.co/api/challenges' \
-b "session=$TRDRS_SESSION"import requests
url = "https://app.trdrs.co/api/challenges"
headers = {"cookie": "session="}
response = requests.get(url, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.trdrs.co/api/challenges",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_COOKIE => "session=",
]);
$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/challenges"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("cookie", "session=")
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/challenges")
.header("cookie", "session=")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.trdrs.co/api/challenges")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["cookie"] = 'session='
response = http.request(request)
puts response.read_body{
"challenges": [
{
"id": "3f8a1c2e-9b47-4d10-a3fe-2c61b7c90d84",
"name": "50K Evaluation",
"description": "Two-stage evaluation on a 50K account.",
"isActive": true,
"stage": 1,
"nextChallengeId": "8d2f5a90-1e4b-4c7a-9f3d-6b0a8c4e2f17",
"allowedTypes": [
"standard"
],
"accountSizes": [
50000
],
"currency": "USD",
"priceCents": 0,
"profitTargetPct": 8,
"maxDailyDdPct": 4,
"maxTotalDdPct": 8,
"ddMode": "trailing_max_equity_eod",
"minTradingDays": 5,
"maxDurationDays": null,
"allowWeekendHold": false,
"profitSharePct": null
}
]
}