const res = await fetch('https://sandbox.trdrs.co/api/connect/links/{linkId}', {
headers: { Authorization: `Bearer ${process.env.TRDRS_API_KEY}` },
})
const data = await res.json()curl 'https://sandbox.trdrs.co/api/connect/links/{linkId}' \
-H "Authorization: Bearer $TRDRS_API_KEY"import requests
url = "https://sandbox.trdrs.co/api/connect/links/{linkId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://sandbox.trdrs.co/api/connect/links/{linkId}",
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://sandbox.trdrs.co/api/connect/links/{linkId}"
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://sandbox.trdrs.co/api/connect/links/{linkId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.trdrs.co/api/connect/links/{linkId}")
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{
"link": {
"id": "00000000-0000-0000-0000-000000000001",
"state": "connected",
"trader": "trader-8841",
"result": {
"status": "connected",
"accountId": "4f1c2a9b8e7d6c5b4a39281706f5e4d3"
},
"expiresAt": "2026-09-14T12:00:00.000Z",
"createdAt": "2026-09-14T12:00:00.000Z",
"updatedAt": "2026-09-14T12:00:00.000Z"
}
}{
"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 a Connect link
Reads where one of your Connect links stands: created until hosted Connect opens it, mounted once it opened, connected once the trader connected an account or opened your white-label paper, with that account’s accountId in result, and closed once you closed it. A link past expiresAt that was never opened stays created, and one whose trader closed Connect without connecting stays mounted. Confirm a connection here rather than trust your page’s connected event. It takes your app’s API key, sent from your server: a request that also carries a cookie or a browser’s Origin is refused. Preview: served on the sandbox, where it is free.
const res = await fetch('https://sandbox.trdrs.co/api/connect/links/{linkId}', {
headers: { Authorization: `Bearer ${process.env.TRDRS_API_KEY}` },
})
const data = await res.json()curl 'https://sandbox.trdrs.co/api/connect/links/{linkId}' \
-H "Authorization: Bearer $TRDRS_API_KEY"import requests
url = "https://sandbox.trdrs.co/api/connect/links/{linkId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://sandbox.trdrs.co/api/connect/links/{linkId}",
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://sandbox.trdrs.co/api/connect/links/{linkId}"
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://sandbox.trdrs.co/api/connect/links/{linkId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.trdrs.co/api/connect/links/{linkId}")
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{
"link": {
"id": "00000000-0000-0000-0000-000000000001",
"state": "connected",
"trader": "trader-8841",
"result": {
"status": "connected",
"accountId": "4f1c2a9b8e7d6c5b4a39281706f5e4d3"
},
"expiresAt": "2026-09-14T12:00:00.000Z",
"createdAt": "2026-09-14T12:00:00.000Z",
"updatedAt": "2026-09-14T12:00:00.000Z"
}
}{
"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
A Connect app's API key (trdrs_ck_sandbox_… or trdrs_ck_production_…), in preview. It belongs to one app in one environment, has a name and an expiry, and carries the whole Connect API. An owner of the app creates it in the Connect dashboard. It creates, reads and closes the app's Connect links under /api/connect/links, and on the account, market and trading routes it reads the app's own traders' accounts and market data and routes their orders, each request naming its trader in x-trdrs-trader. It stops working when it is revoked or expires, or when the owner who created it stops being an owner. Keep it on your server.
Path Parameters
Response
Success. The response is sent with Cache-Control: no-store, so don't cache it.
One of your Connect links as your backend reads it: where it stands, its trader and how it ended.
Show child attributes
Show child attributes