# Subscribe an account to a strategy

URL: https://docs.fxapis.com/api-reference/copy-trading/subscribe-an-account-to-a-strategy

> Subscribe an account to a strategy. The follower copies the strategy's master from now on, with its own settings; every setting has a default.

`POST https://api.fxapis.com/v1/copy/subscriptions`

The follower copies the strategy's master from now on, with its own settings; every setting has a default. Same workspace, hedging accounts only, and an account cannot be a master and a follower at once. Counts against the plan's followers when it starts `active`. A member confirms it is them (step-up). While copy trading is paused on this server (`GET /v1/copy/status`), this answers 503 `COPY_TRADING_PAUSED`.

Authentication: `Authorization: Bearer <API key>`.

#### Request body (application/json, required)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `strategyId` | string (uuid) | yes |  |
| `followerAccountId` | string (uuid) | yes |  |
| `settings` | object | no | How this follower copies. Every field has a default; send only what differs. On a change, objects merge key by key and lists (and `symbols.map`) replace. |
| `settings.sizing` | object | no |  |
| `settings.sizing.mode` | "balance_ratio" \| "equity_ratio" \| "multiplier" \| "fixed_lots" \| "risk_percent" | no | Default: `"balance_ratio"`. |
| `settings.sizing.multiplier` | number | no | Default: `1`. |
| `settings.sizing.lots` | string | no |  |
| `settings.sizing.riskPercent` | number | no |  |
| `settings.reverse` | boolean | no | Default: `false`. |
| `settings.copySlTp` | "off" \| "on_open" \| "always" | no | Default: `"always"`. |
| `settings.symbols` | object | no |  |
| `settings.symbols.allow` | string[] | no |  |
| `settings.symbols.block` | string[] | no |  |
| `settings.symbols.map` | object | no |  |
| `settings.limits` | object | no |  |
| `settings.limits.maxLots` | string \| null | no | Default: `null`. |
| `settings.limits.maxOpenPositions` | integer \| null | no | Default: `null`. |
| `settings.limits.minLots` | "skip" \| "use_min" | no | Default: `"skip"`. |
| `settings.late` | object | no |  |
| `settings.late.maxDelaySeconds` | integer | no | Default: `30`. |
| `settings.late.maxDeviationPoints` | integer \| null | no | Default: `null`. |
| `settings.late.copyExistingOnStart` | boolean | no | Default: `false`. |
| `settings.risk` | object | no |  |
| `settings.risk.limits` | object[] | no |  |
| `settings.risk.limits[].period` | "day" \| "week" \| "month" \| "lifetime" | yes |  |
| `settings.risk.limits[].metric` | "balance" \| "equity" | yes |  |
| `settings.risk.limits[].maxLossPercent` | number | no |  |
| `settings.risk.limits[].maxLossAmount` | string | no |  |
| `settings.risk.limits[].closePositions` | boolean | no | Default: `false`. |
| `status` | "active" \| "paused" | no | Default: `"active"`. |

#### Responses

- `201`
- `400`
- `401`
- `402`
- `403`
- `404`
- `409`
- `503`

Failures return `{ "error": { "code", "message" } }`; every code is listed at https://docs.fxapis.com/errors.

#### 201 response fields

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `data` | object | no |  |
| `data.id` | string (uuid) | no |  |
| `data.strategyId` | string (uuid) | no |  |
| `data.followerAccountId` | string (uuid) | no |  |
| `data.status` | "active" \| "paused" \| "close_only" \| "stopped" | no | `active` copies everything; `paused` nothing; `close_only` closes and partial closes only; `stopped` nothing until reset (a risk limit, a netting follower, a revoked creator) — or, with `deleting`, until it is gone. |
| `data.stopReason` | null \| string | no | Why it stopped: `risk_limit:<day\|week\|month\|lifetime>:<balance\|equity>`, with `:unverified` when the account's deposits and withdrawals could not be confirmed; `netting_not_supported`; `creator_revoked`; `deleted` while a deletion closes its positions. Example: `"risk_limit:day:equity"` |
| `data.stopDetail` | null \| string | no | `stopReason` in words. |
| `data.stoppedAt` | null \| string (date-time) | no |  |
| `data.deleting` | boolean | no | Deleted with `closePositions=true` and still closing its positions: it is removed once they are closed. Delete again to retry closes that failed. |
| `data.settings` | object | no | How this follower copies, every field filled in. |
| `data.settings.sizing` | object | yes |  |
| `data.settings.sizing.mode` | "balance_ratio" \| "equity_ratio" \| "multiplier" \| "fixed_lots" \| "risk_percent" | yes |  |
| `data.settings.sizing.multiplier` | number | yes |  |
| `data.settings.sizing.lots` | string | no |  |
| `data.settings.sizing.riskPercent` | number | no |  |
| `data.settings.reverse` | boolean | yes |  |
| `data.settings.copySlTp` | "off" \| "on_open" \| "always" | yes |  |
| `data.settings.symbols` | object | yes |  |
| `data.settings.symbols.allow` | string[] | yes |  |
| `data.settings.symbols.block` | string[] | yes |  |
| `data.settings.symbols.map` | object | yes |  |
| `data.settings.limits` | object | yes |  |
| `data.settings.limits.maxLots` | string \| null | yes |  |
| `data.settings.limits.maxOpenPositions` | integer \| null | yes |  |
| `data.settings.limits.minLots` | "skip" \| "use_min" | yes |  |
| `data.settings.late` | object | yes |  |
| `data.settings.late.maxDelaySeconds` | integer | yes |  |
| `data.settings.late.maxDeviationPoints` | integer \| null | yes |  |
| `data.settings.late.copyExistingOnStart` | boolean | yes |  |
| `data.settings.risk` | object | yes |  |
| `data.settings.risk.limits` | object[] | yes |  |
| `data.settings.risk.limits[].period` | "day" \| "week" \| "month" \| "lifetime" | yes |  |
| `data.settings.risk.limits[].metric` | "balance" \| "equity" | yes |  |
| `data.settings.risk.limits[].maxLossPercent` | number | no |  |
| `data.settings.risk.limits[].maxLossAmount` | string | no |  |
| `data.settings.risk.limits[].closePositions` | boolean | yes |  |
| `data.follower` | object | no |  |
| `data.follower.id` | string (uuid) | no |  |
| `data.follower.label` | null \| string | no |  |
| `data.follower.login` | string | no |  |
| `data.follower.server` | string | no |  |
| `data.follower.state` | string | no |  |
| `data.follower.equity` | null \| string | no |  |
| `data.follower.todayProfit` | null \| string | no | Equity now against the first figures read today (UTC) for a day risk limit; null until there are both. |
| `data.lastExecution` | null \| object | no |  |
| `data.lastExecution.status` | string | no |  |
| `data.lastExecution.reason` | null \| string | no |  |
| `data.lastExecution.createdAt` | string (date-time) | no |  |
| `data.createdAt` | string (date-time) | no |  |
| `data.updatedAt` | string (date-time) | no |  |