Accounts

List your accounts, retrieve one, and expand it with equity curve, monthly returns and per-symbol breakdowns.

List accounts

GET /api/v1/accounts

Returns the accounts and portfolios you own, newest first. Private accounts are included: they are yours.

Query parameters

type
string
account or portfolio. Omit for both.
platform
string
MT4, MT5, cTrader or TradeLocker.
page
integer
Defaults to 1.
limit
integer
Defaults to 50, maximum 200.

Response

Response
{
  "data": [
    {
      "type": "account",
      "slug": "dark-algo",
      "name": "Dark Algo (EURUSD) - VT Market",
      "platform": "MT4",
      "currency": "USD",
      "broker": "VT Markets (Pty) Ltd",
      "server": "VTMarkets-Live 4",
      "leverage": 2000,
      "demo": false,
      "history_cut_at": null,
      "published": true,
      "verified": { "identity": false, "track_record": false },
      "balance": 1022.98,
      "equity": 996.96,
      "created_at": "2026-06-21T09:53:58Z",
      "updated_at": "2026-08-22T13:42:48Z",
      "performance": {
        "twr_percent": 5.96,
        "absolute_gain_percent": 5.89,
        "max_drawdown_percent": 0.15,
        "avg_daily_return_percent": 0.11,
        "avg_monthly_return_percent": 3.26,
        "deposits": 1000,
        "withdrawals": 35.91
      },
      "owner": { "slug": "hope-algo-trading", "name": "Hope Algo Trading" },
      "attribution": {
        "required": true,
        "text": "Data from ShowMyTrades",
        "url": "https://showmytrades.com/account/dark-algo",
        "account_url": "https://showmytrades.com/account/dark-algo"
      }
    }
  ],
  "pagination": { "page": 1, "limit": 50, "total": 1, "has_more": false }
}

Retrieve an account

GET /api/v1/accounts/{slug}

Works for any account you own, and for any account someone has published. A private account that is not yours returns 404, not 403, because confirming that a private account exists would already leak something.

For a published account no key is needed: the request works without an Authorization header, with the attribution required and the anonymous rate limit (see Authentication). The slug is the last part of the account's public URL, https://showmytrades.com/account/{slug}.

The account object

type
string
account or portfolio.
slug
string
Stable identifier, same as in the public URL.
name
string
The label the owner chose for the account. Not the name of the account holder at the broker, which this API never returns.
platform
string
MT4, MT5, cTrader or TradeLocker.
currency
string
The account's deposit currency. Every money figure in the response is in this currency.
demo
boolean | null
Whether this is a demo account. null when the type has not been detected yet: the account has never sent data.
history_cut_at
string | null
Date (YYYY-MM-DD) before which the owner permanently removed the account's history (a "permanent cut"). Everything in the response starts from that date: the balance at that date counts as the starting capital, and older trades, deposits and drawdowns are not included. null when the history was never cut. If you show this account's performance, say that it was cut. Always null for portfolios.
published
boolean
Whether the account has a public page. Always true for accounts you do not own.
verified
object
identity: the owner proved they control the account. track_record: the history is read directly from the broker rather than self-reported.
balance
number
Closed-trade balance.
equity
number
Balance including the profit or loss of positions still open.
performance
object
Headline figures. See conventions for what twr_percent and absolute_gain_percent each measure, and note max_drawdown_percent is positive.
owner
object
slug and name, where name is the owner's public brand name and is null when they have not set one. Personal names are never returned.
attribution
object
The credit to show next to this account's data: text, the url to link it to, and required (true on the free plan). See Attribution.

Expanding with include

The account object above is the summary: current balance and equity, headline return and drawdown, deposits and withdrawals. Everything behind those numbers (the curve, the calendar, the breakdowns) is opt-in, because the full payload is around 50 KB and most callers want a fraction of it.

GET /api/v1/accounts/dark-algo?include=equity_curve,monthly

Comma-separated, in any order. One request either way: asking for four sections is not four round trips. Each section comes back as a key with the same name on the account object.

Which section do I need?

You want to…Ask for
Draw the equity or balance chart, or get the return day by dayequity_curve
Get the time-weighted return after each tradetwr
Show a month-by-month or year-by-year table, or "how is this week going"monthly
Compare instruments (which pairs make money, which lose)by_symbol
Compare strategies on MT4/MT5 (each EA usually has its own magic number)by_magic_number
Risk and consistency metrics: profit factor, expectancy, Sharpe, Z-score…advanced

What each section contains

equity_curve
The account's history one row per trading day, plus the money movements.daily_performance is an array of days. Each day carries the state of the account at the end of that day: cumulative_balance, cumulative_equity and cumulative_profit (the running totals), twr_percent (the time-weighted return so far, in percent: this is the daily TWR series) and twr_equity_percent (the same, measured on equity instead of balance, so it includes positions still open), drawdown (distance from the running peak; negative here, e.g. -12.4, unlike max_drawdown_percent in the summary which is positive), peak_balance, trades_count and win_rate for that day. Days without closed trades are not listed.deposits_withdrawals lists every money movement as {date, amount}: positive for deposits, negative for withdrawals. Use it to mark them on the chart: the return series already excludes them, which is what "time-weighted" means.
twr
twr_trade_by_trade: a plain array of numbers, one per closed trade in chronological order, each being the cumulative time-weighted return in percent after that trade ([0, 0.22, 0.44, …]). It is the same return as equity_curve, at a finer grain: a curve with one point per trade instead of one per day. There are no dates in this array: pair it with the trades list if you need them.
monthly
The calendar view, as on the public page.monthly_performance: one row per month, {date: "2026-06", monthly_profit, monthly_percent}: money and time-weighted return for that month. yearly_performance: the same per year. period_returns: four ready-made snapshots (today, this_week, this_month, this_year), each with profit, twr_percent, trades_count, win_rate and volume, so you can show "this month so far" without computing anything.
by_symbol
An object keyed by instrument ("EURUSD", "XAUUSD"…). Each entry has total, longs and shorts. total gives trades, won, lost, won_percentage, profit and pips; longs and shorts give trades, profit and pips for that side. Note that profit and pips are returned as strings here ("-4.95"), a legacy of the statistics engine: parse them.
by_magic_number
Same shape as by_symbol, keyed by magic number ("1234"). On MT4 and MT5 every Expert Advisor stamps its trades with its own magic number, so this is effectively results per strategy; manual trades sit under "0". cTrader and TradeLocker have no magic numbers, so there the whole account sits under "0" and this section adds nothing over by_symbol.
advanced
The full statistics block of the public page, as one flat object. The main groups:
  • Edge: profit_factor, expectancy ({currency, pips}: average result per trade), win_rate, ahpr and ghpr (arithmetic and geometric average return per trade, in percent).
  • Risk and consistency: sharpe_ratio (per trade: mean net result / standard deviation, same convention as Myfxbook), sharpe_ratio_annualized (daily equity returns × √252, risk-free 0; null with fewer than 30 weekdays of history), standard_deviation, z_score ({value, probability}: whether wins and losses come in streaks more than chance would predict).
  • Size of wins and losses: avg_win, avg_loss, best_trade_profit and worst_trade_profit ({date, value}), best_trade_pips, worst_trade_pips.
  • Direction: longs_won and shorts_won ({count, total, percentage}).
  • Totals: total_trades, total_lots, total_pips, total_swap, total_commissions, avg_trade_length_hours.
  • How it is traded: autotrading_trades, manual_trades, autotrading_percentage.
  • charts: three ready-to-plot series: trades_by_hour ({hour, won, lost} for 0–23), trades_by_weekday ({day, won, lost}, 1 = Monday) and recent_trades_duration (the last trades with their duration in seconds and net_profit).
The owner of an account can hide sections of it (for example the per-instrument breakdown, or lots and comments inside trades). When a section is hidden, include returns it as null rather than failing the request; so ask for what you need and handle null.
Every money figure is in the account's currency; every *_percent is a plain percentage (3.3 means 3.3%). What twr_percent measures, and how it differs from absolute_gain_percent, is explained in conventions.

Reading someone else's account

Nothing special is required: pass the public slug to the same endpoint. Your key needs the public:read scope, which every key has by default.

curl https://showmytrades.com/api/v1/accounts/dark-algo \
  -H "Authorization: Bearer smt_live_YOUR_KEY"

You get the same shape, minus anything the owner has chosen to hide.