const res = await fetch('https://app.trdrs.co/api/partner/accounts/eligibility?account=EVAL-7C21A9&stageId=evaluation-1&profitTarget=3000&minimumTradingDays=2', {
headers: { Authorization: `Bearer ${process.env.TRDRS_API_KEY}` },
})
const data = await res.json()curl 'https://app.trdrs.co/api/partner/accounts/eligibility?account=EVAL-7C21A9&stageId=evaluation-1&profitTarget=3000&minimumTradingDays=2' \
-H "Authorization: Bearer $TRDRS_API_KEY"import requests
url = "https://app.trdrs.co/api/partner/accounts/eligibility"
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/accounts/eligibility",
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/accounts/eligibility"
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/accounts/eligibility")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.trdrs.co/api/partner/accounts/eligibility")
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{
"accountNumber": "EVAL-7C21A9",
"asOf": "2026-09-12T15:00:00.000Z",
"snapshotId": "snapshot-hash",
"cycleId": "cycle-hash",
"stage": {
"stageId": "evaluation-1",
"profitTarget": 3000,
"minimumTradingDays": 2
},
"policyId": "policy-hash",
"eligible": true,
"reasons": [],
"netTradingPnl": 3000,
"tradingDays": 2,
"transitionReference": "stage-example",
"evaluatedRules": [
"net_trading_profit",
"minimum_trading_days",
"flat",
"no_working_orders",
"no_unresolved_commands",
"recorded_risk_breaches",
"firm_halt"
]
}Check stage eligibility
Read-only, fail-closed check of the firm-supplied stage rules. Requires complete trading and risk evidence, the profit target, minimum fill-based session days, no positions/orders/unresolved commands, no recorded disqualifying loss/evaluation breach, and an active firm_halt. Does not advance a challenge. Poll safely; transitionReference is stable for account cycle + stageId and can be used as the next account creation referenceId. It is not a reservation or permanent pass certificate. Keep the old account halted and serialize stage transitions in your backend. Rules outside evaluatedRules must be checked by your firm.
const res = await fetch('https://app.trdrs.co/api/partner/accounts/eligibility?account=EVAL-7C21A9&stageId=evaluation-1&profitTarget=3000&minimumTradingDays=2', {
headers: { Authorization: `Bearer ${process.env.TRDRS_API_KEY}` },
})
const data = await res.json()curl 'https://app.trdrs.co/api/partner/accounts/eligibility?account=EVAL-7C21A9&stageId=evaluation-1&profitTarget=3000&minimumTradingDays=2' \
-H "Authorization: Bearer $TRDRS_API_KEY"import requests
url = "https://app.trdrs.co/api/partner/accounts/eligibility"
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/accounts/eligibility",
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/accounts/eligibility"
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/accounts/eligibility")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.trdrs.co/api/partner/accounts/eligibility")
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{
"accountNumber": "EVAL-7C21A9",
"asOf": "2026-09-12T15:00:00.000Z",
"snapshotId": "snapshot-hash",
"cycleId": "cycle-hash",
"stage": {
"stageId": "evaluation-1",
"profitTarget": 3000,
"minimumTradingDays": 2
},
"policyId": "policy-hash",
"eligible": true,
"reasons": [],
"netTradingPnl": 3000,
"tradingDays": 2,
"transitionReference": "stage-example",
"evaluatedRules": [
"net_trading_profit",
"minimum_trading_days",
"flat",
"no_working_orders",
"no_unresolved_commands",
"recorded_risk_breaches",
"firm_halt"
]
}Authorizations
A partner-scoped API key (trdrs_sk_…), issued to a trdrs Connect partner firm and accepted only under /api/partner/. Same format as the firm (tenant) key, different scope: a firm API key is refused here, and this key is refused everywhere else.
Query Parameters
Account issued by your firm.
For analytics history pagination, use equityHistory.nextBefore to retrieve the next older page. Verify cycle.id has not changed.
IANA timezone for qualifying fill days. Keep fixed throughout a stage.
Local session roll hour. Midnight uses calendar dates; other rolls label the session by its ending date. DST-aware.
0 <= x <= 23Your stable stage identifier, 1–80 letters, digits, underscores or hyphens.
Net trading profit required, in account currency, at most two decimals.
x <= 100000000Distinct sessions with at least one fill.
0 <= x <= 3650Response
Snapshot; eligible=false is a successful check with unmet conditions.
Show child attributes
Show child attributes