const res = await fetch('https://app.trdrs.co/api/partner/connect/accounts', {
method: 'POST',
headers: {
'content-type': 'application/json',
Authorization: `Bearer ${process.env.TRDRS_API_KEY}`,
},
body: JSON.stringify({
"email": "trader@example.com",
"accountNumber": "PA-4821-07",
"venueLogin": "jsmith-apex"
}),
})
const data = await res.json()curl -X POST 'https://app.trdrs.co/api/partner/connect/accounts' \
-H "Authorization: Bearer $TRDRS_API_KEY" \
-H 'content-type: application/json' \
-d '{"email":"trader@example.com","accountNumber":"PA-4821-07","venueLogin":"jsmith-apex"}'import requests
url = "https://app.trdrs.co/api/partner/connect/accounts"
payload = {
"email": "trader@example.com",
"accountNumber": "PA-4821-07",
"venueLogin": "jsmith-apex"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.trdrs.co/api/partner/connect/accounts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'email' => 'trader@example.com',
'accountNumber' => 'PA-4821-07',
'venueLogin' => 'jsmith-apex'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.trdrs.co/api/partner/connect/accounts"
payload := strings.NewReader("{\n \"email\": \"trader@example.com\",\n \"accountNumber\": \"PA-4821-07\",\n \"venueLogin\": \"jsmith-apex\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.trdrs.co/api/partner/connect/accounts")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"trader@example.com\",\n \"accountNumber\": \"PA-4821-07\",\n \"venueLogin\": \"jsmith-apex\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.trdrs.co/api/partner/connect/accounts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"email\": \"trader@example.com\",\n \"accountNumber\": \"PA-4821-07\",\n \"venueLogin\": \"jsmith-apex\"\n}"
response = http.request(request)
puts response.read_body{
"registration": {
"id": "reg_7f3ka9",
"email": "trader@example.com",
"connector": "rithmic",
"system": "Apex",
"accountNumber": "PA-4821-07",
"venueLogin": "jsmith-apex",
"status": "pending",
"expiresAt": "2026-09-23T14:32:00Z",
"createdAt": "2026-08-24T14:32:00Z",
"linkedAt": null
}
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}Create an account registration
Creates a pending account registration: it tells trdrs an account exists on your venue and names the trader who should see it in Connect. The trader finds it in the connect flow when they sign in with email; the connect step pre-fills your firm and system, and the trader enters their own credential to finish. venueLogin is the login name you issued; never send a password (there is no field for one, by design). Your firm is solely responsible for notifying the trader and delivering every venue credential directly; trdrs sends no customer handoff email. The retired handover field is rejected. Idempotent: per (email, accountNumber), re-registering refreshes the 30-day expiry instead of duplicating.
const res = await fetch('https://app.trdrs.co/api/partner/connect/accounts', {
method: 'POST',
headers: {
'content-type': 'application/json',
Authorization: `Bearer ${process.env.TRDRS_API_KEY}`,
},
body: JSON.stringify({
"email": "trader@example.com",
"accountNumber": "PA-4821-07",
"venueLogin": "jsmith-apex"
}),
})
const data = await res.json()curl -X POST 'https://app.trdrs.co/api/partner/connect/accounts' \
-H "Authorization: Bearer $TRDRS_API_KEY" \
-H 'content-type: application/json' \
-d '{"email":"trader@example.com","accountNumber":"PA-4821-07","venueLogin":"jsmith-apex"}'import requests
url = "https://app.trdrs.co/api/partner/connect/accounts"
payload = {
"email": "trader@example.com",
"accountNumber": "PA-4821-07",
"venueLogin": "jsmith-apex"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.trdrs.co/api/partner/connect/accounts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'email' => 'trader@example.com',
'accountNumber' => 'PA-4821-07',
'venueLogin' => 'jsmith-apex'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.trdrs.co/api/partner/connect/accounts"
payload := strings.NewReader("{\n \"email\": \"trader@example.com\",\n \"accountNumber\": \"PA-4821-07\",\n \"venueLogin\": \"jsmith-apex\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.trdrs.co/api/partner/connect/accounts")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"trader@example.com\",\n \"accountNumber\": \"PA-4821-07\",\n \"venueLogin\": \"jsmith-apex\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.trdrs.co/api/partner/connect/accounts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"email\": \"trader@example.com\",\n \"accountNumber\": \"PA-4821-07\",\n \"venueLogin\": \"jsmith-apex\"\n}"
response = http.request(request)
puts response.read_body{
"registration": {
"id": "reg_7f3ka9",
"email": "trader@example.com",
"connector": "rithmic",
"system": "Apex",
"accountNumber": "PA-4821-07",
"venueLogin": "jsmith-apex",
"status": "pending",
"expiresAt": "2026-09-23T14:32:00Z",
"createdAt": "2026-08-24T14:32:00Z",
"linkedAt": null
}
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}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.
Body
Response
The registration as created
Show child attributes
Show child attributes