API for developers Signals to MT4/MT5

Signal copier API: channels to MT4/MT5

Signal copier API: copy a Telegram, WhatsApp or Discord channel to a cloud MT4/MT5 account from your code, with the link and every order it placed.

Telegram channel to a cloud MT4/MT5 account

# 1. sign in to Telegram once: the phone, then the code Telegram sends (and the two-step password, if it has one)
curl -X POST -H "Authorization: Bearer $TPC_KEY" -H "Content-Type: application/json" -d '{"phone":"+441234567890"}' https://tpcopier.com/api/v1/telegram/phone
curl -X POST -H "Authorization: Bearer $TPC_KEY" https://tpcopier.com/api/v1/telegram/send-code
curl -X POST -H "Authorization: Bearer $TPC_KEY" -H "Content-Type: application/json" -d '{"code":"12345"}' https://tpcopier.com/api/v1/telegram/verify-code
curl -X POST -H "Authorization: Bearer $TPC_KEY" -H "Content-Type: application/json" -d '{"password":"TWO_STEP_PASSWORD"}' https://tpcopier.com/api/v1/telegram/verify-password

# 2. your chats - each one's id (C)
curl -H "Authorization: Bearer $TPC_KEY" https://tpcopier.com/api/v1/channels

# 3. a cloud MT5 account that trades chat C: it starts with the TPcopier EA, already linked
curl -X POST -H "Authorization: Bearer $TPC_KEY" -H "Content-Type: application/json" \
     -d '{"platform":"mt5","login":"7001234","password":"TRADING_PASSWORD","server":"Broker-Live","label":"Gold","bridge":"tg-mt","links":[{"kind":"signal","source_id":C}]}' \
     https://tpcopier.com/api/v1/hosting/accounts

# 4. every message, what it was read as, and what the EA did with it - placed, closed, refused and why
curl -H "Authorization: Bearer $TPC_KEY" https://tpcopier.com/api/v1/bridge/links/LINK_ID/history

Further reading: MetaTrader 5's help on signing in to an account.

Endpoints in this guide

Base address https://tpcopier.com. Send your key with every request - Authorization: Bearer tpc_... - up to 120 requests a minute. Open an endpoint for its fields, its answers and an example.

bridgeSignal sources, accounts and the links between them
GET/api/v1/bridge/links/{lid}/historyLink History

One link's results and trades, from the moment it was made.

Parameters

lid *pathinteger
limitqueryinteger

Responses

200 Successful Response · 422 Validation Error · 401 402 403 429 - see Errors

Example

curl -H "Authorization: Bearer $TPC_KEY" \
     "https://tpcopier.com/api/v1/bridge/links/{lid}/history"
POST/api/v1/bridge/linksAdd Link

Request body

{
  "kind": "",
  "source_id": 0,
  "target_account_id": 0,
  "stake_mode": "",
  "stake_value": 0
}

Responses

200 Successful Response · 422 Validation Error · 401 402 403 429 - see Errors

Example

curl -X POST -H "Authorization: Bearer $TPC_KEY" -H "Content-Type: application/json" \
     -d '{"kind": "", "source_id": 0, "target_account_id": 0, "stake_mode": "", "stake_value": 0}' \
     "https://tpcopier.com/api/v1/bridge/links"
PATCH/api/v1/bridge/links/{lid}Patch Link

Parameters

lid *pathinteger

Request body

{
  "enabled": false,
  "stake_mode": "",
  "stake_value": 0
}

Responses

200 Successful Response · 422 Validation Error · 401 402 403 429 - see Errors

Example

curl -X PATCH -H "Authorization: Bearer $TPC_KEY" -H "Content-Type: application/json" \
     -d '{"enabled": false, "stake_mode": "", "stake_value": 0}' \
     "https://tpcopier.com/api/v1/bridge/links/{lid}"
DELETE/api/v1/bridge/links/{lid}Delete Link

Parameters

lid *pathinteger

Responses

200 Successful Response · 422 Validation Error · 401 402 403 429 - see Errors

Example

curl -X DELETE -H "Authorization: Bearer $TPC_KEY" \
     "https://tpcopier.com/api/v1/bridge/links/{lid}"
metatraderMT4/MT5 accounts, TradingView feeds and alerts
GET/api/v1/mt/accountsMt Accounts

Responses

200 Successful Response · 422 Validation Error · 401 402 403 429 - see Errors

Example

curl -H "Authorization: Bearer $TPC_KEY" \
     "https://tpcopier.com/api/v1/mt/accounts"
POST/api/v1/mt/accountsMt Create

Request body

{
  "platform": "mt5",
  "label": "",
  "bridge": ""
}

Responses

200 Successful Response · 422 Validation Error · 401 402 403 429 - see Errors

Example

curl -X POST -H "Authorization: Bearer $TPC_KEY" -H "Content-Type: application/json" \
     -d '{"platform": "mt5", "label": "", "bridge": ""}' \
     "https://tpcopier.com/api/v1/mt/accounts"
GET/api/v1/mt/accounts/{aid}/keyMt Key

Parameters

aid *pathinteger

Responses

200 Successful Response · 422 Validation Error · 401 402 403 429 - see Errors

Example

curl -H "Authorization: Bearer $TPC_KEY" \
     "https://tpcopier.com/api/v1/mt/accounts/{aid}/key"
POST/api/v1/mt/accounts/{aid}/key/rotateMt Rotate

Parameters

aid *pathinteger

Responses

200 Successful Response · 422 Validation Error · 401 402 403 429 - see Errors

Example

curl -X POST -H "Authorization: Bearer $TPC_KEY" \
     "https://tpcopier.com/api/v1/mt/accounts/{aid}/key/rotate"
POST/api/v1/mt/accounts/{aid}/unbindMt Unbind

Parameters

aid *pathinteger

Responses

200 Successful Response · 422 Validation Error · 401 402 403 429 - see Errors

Example

curl -X POST -H "Authorization: Bearer $TPC_KEY" \
     "https://tpcopier.com/api/v1/mt/accounts/{aid}/unbind"
POST/api/v1/mt/accounts/{aid}/pingMt Ping

A connection test: the Telegram EA answers it and trades nothing.

Parameters

aid *pathinteger

Responses

200 Successful Response · 422 Validation Error · 401 402 403 429 - see Errors

Example

curl -X POST -H "Authorization: Bearer $TPC_KEY" \
     "https://tpcopier.com/api/v1/mt/accounts/{aid}/ping"
GET/api/v1/mt/accounts/{aid}/ping/{rid}Mt Ping Result

Parameters

aid *pathinteger
rid *pathinteger

Responses

200 Successful Response · 422 Validation Error · 401 402 403 429 - see Errors

Example

curl -H "Authorization: Bearer $TPC_KEY" \
     "https://tpcopier.com/api/v1/mt/accounts/{aid}/ping/{rid}"
GET/api/v1/mt/feedMt Feed

Messages read for MetaTrader, newest first, with each connected EA's last word on it. only: 'signals' (orders), 'errors' (not read), or '' for everything.

Parameters

limitqueryinteger
channel_idqueryinteger
onlyquerystring

Responses

200 Successful Response · 422 Validation Error · 401 402 403 429 - see Errors

Example

curl -H "Authorization: Bearer $TPC_KEY" \
     "https://tpcopier.com/api/v1/mt/feed"
GET/api/v1/mt/statsMt Stats

The MetaTrader dashboard's numbers - every one counted from the tables, none estimated. account: what reached that account and what its EA answered (a channel's messages are every account's, so they are not split).

Parameters

daysqueryinteger
accountqueryinteger

Responses

200 Successful Response · 422 Validation Error · 401 402 403 429 - see Errors

Example

curl -H "Authorization: Bearer $TPC_KEY" \
     "https://tpcopier.com/api/v1/mt/stats"
GET/api/v1/mt/keywordsMt Keywords

Responses

200 Successful Response · 422 Validation Error · 401 402 403 429 - see Errors

Example

curl -H "Authorization: Bearer $TPC_KEY" \
     "https://tpcopier.com/api/v1/mt/keywords"
PUT/api/v1/mt/keywordsMt Keywords Save

Save the lists; keywords=None puts the defaults back.

Request body

{
  "keywords": {}
}

Responses

200 Successful Response · 422 Validation Error · 401 402 403 429 - see Errors

Example

curl -X PUT -H "Authorization: Bearer $TPC_KEY" -H "Content-Type: application/json" \
     -d '{"keywords": {}}' \
     "https://tpcopier.com/api/v1/mt/keywords"
POST/api/v1/mt/parse-testMt Parse Test

Read a message the way a channel's would be read - nothing is sent to any EA.

Request body

{
  "text": "",
  "reply": false
}

Responses

200 Successful Response · 422 Validation Error · 401 402 403 429 - see Errors

Example

curl -X POST -H "Authorization: Bearer $TPC_KEY" -H "Content-Type: application/json" \
     -d '{"text": "", "reply": false}' \
     "https://tpcopier.com/api/v1/mt/parse-test"
GET/api/v1/ea/filesEa List

Responses

200 Successful Response · 422 Validation Error · 401 402 403 429 - see Errors

Example

curl -H "Authorization: Bearer $TPC_KEY" \
     "https://tpcopier.com/api/v1/ea/files"
GET/api/v1/ea/download/{code}Ea Download

Parameters

code *pathstring

Responses

200 Successful Response · 422 Validation Error · 401 402 403 429 - see Errors

Example

curl -H "Authorization: Bearer $TPC_KEY" \
     "https://tpcopier.com/api/v1/ea/download/{code}"
hostingCloud MetaTrader and the MT4/5 trade copier
GET/api/v1/hostingHosting

Responses

200 Successful Response · 422 Validation Error · 401 402 403 429 - see Errors

Example

curl -H "Authorization: Bearer $TPC_KEY" \
     "https://tpcopier.com/api/v1/hosting"
POST/api/v1/hosting/accountsAdd Hosted

Request body

{
  "platform": "mt5",
  "login": "",
  "password": "",
  "server": "",
  "label": "",
  "bridge": "",
  "role": "",
  "links": [
    {
      "kind": "",
      "source_id": 0
    }
  ],
  "sender_id": 0,
  "broker": ""
}

Responses

200 Successful Response · 422 Validation Error · 401 402 403 429 - see Errors

Example

curl -X POST -H "Authorization: Bearer $TPC_KEY" -H "Content-Type: application/json" \
     -d '{"platform": "mt5", "login": "", "password": "", "server": "", "label": "", "bridge": "", "role": "", "links": [{"kind": "", "source_id": 0}], "sender_id": 0, "broker": ""}' \
     "https://tpcopier.com/api/v1/hosting/accounts"
GET/api/v1/hosting/accountsHosted Accounts

Every cloud account of the workspace - the API's, the copier's, the bridges' - however it was added (the owner, 2026-10-12: "jitne bhi accounts API se connect hote hai vo unke server par bhi dikhne chahiye"): its state, money and positions as last reported, and its slot - from, until, renews by itself, the wallet short of its renewal.

Responses

200 Successful Response · 422 Validation Error · 401 402 403 429 - see Errors

Example

curl -H "Authorization: Bearer $TPC_KEY" \
     "https://tpcopier.com/api/v1/hosting/accounts"
POST/api/v1/hosting/accounts/{aid}/passwordHosted Password

Parameters

aid *pathinteger

Request body

{
  "password": ""
}

Responses

200 Successful Response · 422 Validation Error · 401 402 403 429 - see Errors

Example

curl -X POST -H "Authorization: Bearer $TPC_KEY" -H "Content-Type: application/json" \
     -d '{"password": ""}' \
     "https://tpcopier.com/api/v1/hosting/accounts/{aid}/password"
POST/api/v1/hosting/accounts/{aid}/actionHosted Action

start / stop the account's cloud terminal, reconnect it (a fresh sign-in), or delete it (terminal and data).

Parameters

aid *pathinteger

Request body

{
  "action": "reconnect"
}

Responses

200 Successful Response · 422 Validation Error · 401 402 403 429 - see Errors

Example

curl -X POST -H "Authorization: Bearer $TPC_KEY" -H "Content-Type: application/json" \
     -d '{"action": "reconnect"}' \
     "https://tpcopier.com/api/v1/hosting/accounts/{aid}/action"
GET/api/v1/hosting/accounts/{aid}/logHosted Log

This hosted account's log: connecting, Algo Trading, refusals, trades and copies.

Parameters

aid *pathinteger

Responses

200 Successful Response · 422 Validation Error · 401 402 403 429 - see Errors

Example

curl -H "Authorization: Bearer $TPC_KEY" \
     "https://tpcopier.com/api/v1/hosting/accounts/{aid}/log"
GET/api/v1/hosting/ea-formEa Form

Every input of the TPcopier Telegram EA, in its own groups - read from the EA itself (MT4's own source for an MT4 account).

Parameters

platformquerystring

Responses

200 Successful Response · 422 Validation Error · 401 402 403 429 - see Errors

Example

curl -H "Authorization: Bearer $TPC_KEY" \
     "https://tpcopier.com/api/v1/hosting/ea-form"
PUT/api/v1/hosting/accounts/{aid}/eaHosted Ea

Parameters

aid *pathinteger

Request body

{
  "inputs": {}
}

Responses

200 Successful Response · 422 Validation Error · 401 402 403 429 - see Errors

Example

curl -X PUT -H "Authorization: Bearer $TPC_KEY" -H "Content-Type: application/json" \
     -d '{"inputs": {}}' \
     "https://tpcopier.com/api/v1/hosting/accounts/{aid}/ea"
POST/api/v1/hosting/accounts/{aid}/replaceReplace Hosted

Another MetaTrader account in this one's slot: it takes over its Bridge links, copier pipelines, EA inputs, API limits and equity protection on the same cloud server; the old account goes. Returns the new account's id.

Parameters

aid *pathinteger

Request body

{
  "platform": "",
  "login": "",
  "password": "",
  "server": "",
  "label": "",
  "broker": ""
}

Responses

200 Successful Response · 422 Validation Error · 401 402 403 429 - see Errors

Example

curl -X POST -H "Authorization: Bearer $TPC_KEY" -H "Content-Type: application/json" \
     -d '{"platform": "", "login": "", "password": "", "server": "", "label": "", "broker": ""}' \
     "https://tpcopier.com/api/v1/hosting/accounts/{aid}/replace"
GET/api/v1/hosting/accounts/{aid}/prices/streamAccount Price Stream

Live: prices as they move - Server-Sent Events, one `data:` line per move: {"symbol" (the name you sent), "name" (the account's own), "bid", "ask", "time_msc" (the broker's clock), "at"}. Up to 20 symbols, comma separated, for up to max_s seconds (3600 at most - connect again for more). `event: missing` names the symbols the account has not got, `event: error` a moment its terminal could not answer. Read only while you listen.

Parameters

aid *pathinteger
symbols *querystring
max_squeryinteger

Responses

200 Successful Response · 422 Validation Error · 401 402 403 429 - see Errors

Example

curl -H "Authorization: Bearer $TPC_KEY" \
     "https://tpcopier.com/api/v1/hosting/accounts/{aid}/prices/stream?symbols=..."
PUT/api/v1/hosting/accounts/{aid}/protectionAccount Protection

Equity protection: when the account loses daily_pct % in a day or total_pct % from its peak, our cloud server tells you (notify), stops copying into it (stop_copying) or closes everything and stops (close_all) - checked every few seconds there. reset: true starts it again.

Parameters

aid *pathinteger

Request body

{
  "daily_pct": 0,
  "total_pct": 0,
  "action": "",
  "reset": false
}

Responses

200 Successful Response · 422 Validation Error · 401 402 403 429 - see Errors

Example

curl -X PUT -H "Authorization: Bearer $TPC_KEY" -H "Content-Type: application/json" \
     -d '{"daily_pct": 0, "total_pct": 0, "action": "", "reset": false}' \
     "https://tpcopier.com/api/v1/hosting/accounts/{aid}/protection"