# Overview

> What the Algo Trader Tools API does, the concepts behind it and the conventions every endpoint follows.

The Algo Trader Tools API is a REST API for managing copy trading between MetaTrader 4 and MetaTrader 5 accounts. With it you connect accounts, create copiers that watch a master account, attach follower accounts with their own rules, and read what was copied. It's the same setup you do under **Accounts** and **Copiers** in the app, done from your own code.

The copying itself runs in our cloud, so you don't need a VPS or a MetaTrader terminal of your own. The API sets things up and reports what the copier engine did.

## How it works [#how-it-works]

1. **Connect your accounts.** `POST /v1/accounts` with the broker server, login and password. A MetaTrader terminal starts in our cloud and logs in, which takes two to three minutes.
2. **Create a copier.** `POST /v1/copiers` with the master, the account whose trades should be copied.
3. **Attach followers.** `POST /v1/copiers/{copier_id}/followers` with each account that should copy the master, and the rules it copies with: lot sizing, symbols, trading sessions, stops.
4. **Watch it copy.** Each follower reports a live status, and every copied, skipped or failed trade is an entry in the copier's events.

```bash
curl https://api.algotradertools.com/v1/copiers \
  -H "Authorization: Bearer $ATT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "name": "Gold strategy", "master_id": "4f6c2a1e-8b3d-4e7a-9c5f-1d2e3a4b5c6d" }'
```

## Core concepts [#core-concepts]

### Accounts and terminals [#accounts-and-terminals]

An account is one MetaTrader 4 or MetaTrader 5 broker account you have connected. Each one runs in its own terminal: a MetaTrader instance in our cloud that logs in with the password you give when you connect the account. The password is stored encrypted with that terminal, used only to log it in, and never shown again.

You connect an account with either of its passwords. The **investor** (read-only) password is enough for a master. A master's trades only need to be read, and nothing is ever traded on it. An account that receives copied trades needs its **master** (trading) password. That is MetaTrader's name for the trading password and has nothing to do with being a copier's master. Your plan decides how many accounts can be connected at once. See [Accounts](/docs/accounts).

### Copiers [#copiers]

A copier watches one master account and copies its trades to the copier's followers. You can pause and resume a copier as a whole. You can also have several copiers with the same master, for example one per group of followers. See [Copiers](/docs/copiers).

### Followers and rules [#followers-and-rules]

A follower is an account that copies one copier's master. Each follower has rules of its own: how lots are sized, the largest lot it trades, whether it trades in the opposite direction, which symbols it copies and at what times, and how its broker's symbol names map to the master's. An account is either a master or a follower, never both. See [Followers](/docs/followers).

### The copier engine and follower status [#the-copier-engine-and-follower-status]

The copier engine is the part of our cloud that does the copying. It watches every master's terminal and places the trades on the followers' terminals. For each follower it reports a status: whether the follower is copying, paused or needs attention, whether both terminals are connected, and how many copied trades are open. If a status is older than 60 seconds, the engine isn't reporting, and `engine_online` turns `false`.

### Copy events [#copy-events]

Every action the engine takes on a follower, or decides not to take, is a copy event: an open, a close, a partial close, a stop loss or take profit change, a skipped trade, or a copy recovered after a restart. Each event includes the terminal's reply and how long each step took. Events are kept for 90 days. See [Copy events](/docs/events).

## API conventions [#api-conventions]

| Topic              | Convention                                                                                                                                            |
| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| Base URL           | `https://api.algotradertools.com/v1`                                                                                                                  |
| Authentication     | `Authorization: Bearer att_…`                                                                                                                         |
| Request bodies     | JSON with `Content-Type: application/json`. A field the resource doesn't have is refused (`unknown_field`). Read-only fields such as `id` are ignored |
| Partial updates    | `PATCH` changes only the fields you send                                                                                                              |
| Errors             | `application/problem+json` (RFC 9457) with a stable `code`                                                                                            |
| IDs                | UUIDs for accounts, copiers and followers; integers for copy events                                                                                   |
| Timestamps         | RFC 3339 in UTC, for example `2026-10-25T14:03:51.204Z`                                                                                               |
| Booleans and enums | JSON booleans and lowercase strings                                                                                                                   |
| Numbers            | Lot sizes, multipliers and slippage are JSON numbers                                                                                                  |
| Pagination         | Cursor-based, with `limit` (1–100, default 50) and `cursor` query parameters                                                                          |
| Request IDs        | `X-Request-Id` response header, also in error bodies                                                                                                  |
| Rate limits        | `RateLimit-Policy` and `RateLimit` response headers; `Retry-After` on 429                                                                             |
| Versioning         | The major version is part of the path. Additive changes, such as new fields, endpoints or enum values, don't change it                                |
| Trailing slashes   | None: `/v1/copiers`, not `/v1/copiers/`                                                                                                               |

Paging through lists and rate limits are covered in [Limits and pagination](/docs/limits), and request IDs in [Authentication](/docs/authentication#request-ids).

## Next steps [#next-steps]

- [Quickstart](/docs/quickstart): Create a key, connect two accounts and start copying in a few requests.

- [Authentication](/docs/authentication): API keys, scopes, revoking keys and request IDs.

- [Accounts](/docs/accounts): Connecting MT4 and MT5 accounts, their status, figures and reconnecting.

- [Copiers](/docs/copiers): Creating, pausing, resuming and deleting copiers, and what gets copied.

- [Followers](/docs/followers): Lot sizing, symbol filters and mapping, trading sessions and follower status.

- [Copy events](/docs/events): What the engine did on each follower, with timings and terminal replies.

- [Equity Guard](/docs/equity-guard): Floors, daily loss limits and profit targets, and how they pause followers, skip trades and close copies.

- [Errors](/docs/errors): Problem details and every error code with what to do about it.

- [API reference](/docs/api-reference): Every endpoint, parameter and response schema.
