Account
Get all trading accounts for the authenticated user
Returns every trading account the user owns, each with full details: organization info, plan info, rule info, balances, P&L, and lockout status.
Accounts are fetched fresh from the database on every call (not cached) so newly purchased accounts appear immediately.
Use this to populate an account selector or dashboard showing all accounts at once.
GET
/
trade
/
accounts
fetch
const response = await fetch('/trade/accounts', {
headers: { 'Authorization': `Bearer ${token}` }
});
const { data: accounts } = await response.json();
console.log('Accounts:', accounts.map(a => a.account_number));curl --request GET \
--url https://api.hyperprop.com/trade/accountsimport requests
url = "https://api.hyperprop.com/trade/accounts"
response = requests.get(url)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.hyperprop.com/trade/accounts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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://api.hyperprop.com/trade/accounts"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.hyperprop.com/trade/accounts")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hyperprop.com/trade/accounts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"code": null,
"data": [
{
"account_number": "HP-12345",
"account_type": "evaluation",
"completed_at": null,
"created_at": "2024-01-10T08:00:00Z",
"current_balance": 51250.5,
"current_drawdown": 249.5,
"daily_pnl": 750.5,
"daily_starting_balance": 50500,
"high_water_mark": 51500,
"id": "550e8400-e29b-41d4-a716-446655440000",
"initial_balance": 50000,
"lockout": {
"active": true,
"ends_at": "2026-02-28T16:00:00Z",
"mode": "hours",
"reason": "Initiated by user",
"remaining_minutes": 180,
"starts_at": "2026-02-28T13:00:00Z"
},
"markets": [
"CME",
"CBOT",
"NYMEX",
"COMEX"
],
"max_drawdown": 500,
"organization": {
"id": "org-550e8400-e29b-41d4-a716-446655440000",
"logo_url": "https://cdn.example.com/logos/demo.png",
"name": "Demo Firm",
"slug": "demo-firm"
},
"plan": {
"account_size": 50000,
"id": "plan-550e8400-e29b-41d4-a716-446655440000",
"name": "50K Evaluation"
},
"rule": {
"consistency": 30,
"daily_loss": 1500,
"description": "Standard evaluation rules for 50K accounts",
"drawdown_type": "trailing",
"id": "rule-550e8400-e29b-41d4-a716-446655440000",
"max_contracts": 5,
"max_drawdown": 5,
"max_loss": 2500,
"micro_conversion_ratio": 10,
"name": "Standard 50K Rules",
"profit_target": 3000
},
"started_at": "2024-01-15T10:00:00Z",
"status": "InProgress",
"total_pnl": 1250.5,
"updated_at": "2024-01-15T14:30:00Z",
"violation_reason": null
},
{
"account_number": "HP-12346",
"account_type": "sim_funded",
"completed_at": "2024-01-14T16:45:00Z",
"created_at": "2024-01-08T12:00:00Z",
"current_balance": 94500,
"current_drawdown": 7500,
"daily_pnl": -3500,
"daily_starting_balance": 98000,
"high_water_mark": 102000,
"id": "550e8400-e29b-41d4-a716-446655440001",
"initial_balance": 100000,
"lockout": null,
"markets": [
"CME",
"CBOT",
"NYMEX",
"COMEX"
],
"max_drawdown": 7500,
"organization": {
"id": "org-550e8400-e29b-41d4-a716-446655440001",
"logo_url": "https://cdn.example.com/logos/acme.png",
"name": "Acme Trading",
"slug": "acme-trading"
},
"plan": {
"account_size": 100000,
"id": "plan-550e8400-e29b-41d4-a716-446655440001",
"name": "Pro 100K"
},
"rule": {
"consistency": 0,
"daily_loss": 2000,
"description": "Standard rules for 100K accounts",
"drawdown_type": "static",
"id": "rule-550e8400-e29b-41d4-a716-446655440001",
"max_contracts": 10,
"max_drawdown": 6,
"max_loss": 5000,
"micro_conversion_ratio": 10,
"name": "Pro 100K Rules",
"profit_target": 6000
},
"started_at": "2024-01-12T09:00:00Z",
"status": "Violated",
"total_pnl": -5500,
"updated_at": "2024-01-14T16:45:00Z",
"violation_reason": "Max Loss exceeded: $5500 loss >= $5000 limit"
}
],
"error": null,
"success": true
}{
"code": "ERROR_CODE",
"data": null,
"error": "Error message describing what went wrong",
"success": false
}Related topics
Get copy trading configurationGet current trading account with equity and P&LGet all dismissalsDelete all copy trading configsList demo accounts⌘I
fetch
const response = await fetch('/trade/accounts', {
headers: { 'Authorization': `Bearer ${token}` }
});
const { data: accounts } = await response.json();
console.log('Accounts:', accounts.map(a => a.account_number));curl --request GET \
--url https://api.hyperprop.com/trade/accountsimport requests
url = "https://api.hyperprop.com/trade/accounts"
response = requests.get(url)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.hyperprop.com/trade/accounts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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://api.hyperprop.com/trade/accounts"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.hyperprop.com/trade/accounts")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hyperprop.com/trade/accounts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"code": null,
"data": [
{
"account_number": "HP-12345",
"account_type": "evaluation",
"completed_at": null,
"created_at": "2024-01-10T08:00:00Z",
"current_balance": 51250.5,
"current_drawdown": 249.5,
"daily_pnl": 750.5,
"daily_starting_balance": 50500,
"high_water_mark": 51500,
"id": "550e8400-e29b-41d4-a716-446655440000",
"initial_balance": 50000,
"lockout": {
"active": true,
"ends_at": "2026-02-28T16:00:00Z",
"mode": "hours",
"reason": "Initiated by user",
"remaining_minutes": 180,
"starts_at": "2026-02-28T13:00:00Z"
},
"markets": [
"CME",
"CBOT",
"NYMEX",
"COMEX"
],
"max_drawdown": 500,
"organization": {
"id": "org-550e8400-e29b-41d4-a716-446655440000",
"logo_url": "https://cdn.example.com/logos/demo.png",
"name": "Demo Firm",
"slug": "demo-firm"
},
"plan": {
"account_size": 50000,
"id": "plan-550e8400-e29b-41d4-a716-446655440000",
"name": "50K Evaluation"
},
"rule": {
"consistency": 30,
"daily_loss": 1500,
"description": "Standard evaluation rules for 50K accounts",
"drawdown_type": "trailing",
"id": "rule-550e8400-e29b-41d4-a716-446655440000",
"max_contracts": 5,
"max_drawdown": 5,
"max_loss": 2500,
"micro_conversion_ratio": 10,
"name": "Standard 50K Rules",
"profit_target": 3000
},
"started_at": "2024-01-15T10:00:00Z",
"status": "InProgress",
"total_pnl": 1250.5,
"updated_at": "2024-01-15T14:30:00Z",
"violation_reason": null
},
{
"account_number": "HP-12346",
"account_type": "sim_funded",
"completed_at": "2024-01-14T16:45:00Z",
"created_at": "2024-01-08T12:00:00Z",
"current_balance": 94500,
"current_drawdown": 7500,
"daily_pnl": -3500,
"daily_starting_balance": 98000,
"high_water_mark": 102000,
"id": "550e8400-e29b-41d4-a716-446655440001",
"initial_balance": 100000,
"lockout": null,
"markets": [
"CME",
"CBOT",
"NYMEX",
"COMEX"
],
"max_drawdown": 7500,
"organization": {
"id": "org-550e8400-e29b-41d4-a716-446655440001",
"logo_url": "https://cdn.example.com/logos/acme.png",
"name": "Acme Trading",
"slug": "acme-trading"
},
"plan": {
"account_size": 100000,
"id": "plan-550e8400-e29b-41d4-a716-446655440001",
"name": "Pro 100K"
},
"rule": {
"consistency": 0,
"daily_loss": 2000,
"description": "Standard rules for 100K accounts",
"drawdown_type": "static",
"id": "rule-550e8400-e29b-41d4-a716-446655440001",
"max_contracts": 10,
"max_drawdown": 6,
"max_loss": 5000,
"micro_conversion_ratio": 10,
"name": "Pro 100K Rules",
"profit_target": 6000
},
"started_at": "2024-01-12T09:00:00Z",
"status": "Violated",
"total_pnl": -5500,
"updated_at": "2024-01-14T16:45:00Z",
"violation_reason": "Max Loss exceeded: $5500 loss >= $5000 limit"
}
],
"error": null,
"success": true
}{
"code": "ERROR_CODE",
"data": null,
"error": "Error message describing what went wrong",
"success": false
}