---
title: "Create an account"
method: POST
path: "/rest/api/v1/accounts"
tags: ["Account API"]
---

# Create an account

`POST /rest/api/v1/accounts`

Creates a new account. If a callbackUrl is provided in the request body, the account creation is processed asynchronously: the API returns 202 Accepted immediately with a requestId, and POSTs the result to the callback URL once done. Only one account creation per project is processed at a time; additional async requests are queued and processed sequentially.

## Request body

- AccountDTO
  - `accountInformation` AccountInformationDTO — Is synced every minute
    - `accountDuplicationInProjectDetected` boolean — Indicates whether an account duplication has been detected in this project
    - `accountMode` 'NETTING' | 'HEDGING' | 'EXCHANGE' — Account margin mode: HEDGING, NETTING, or EXCHANGE
    - `avgDrawdown` number — Average drawdown percentage during trading period (%)
    - `balance` number
    - `brokeTimeOffsetToUtc` integer
    - `configuredProxy` ProxyDTO — Read-only. The system will reserve the proxy servers per region and list them in this field.
      - `id` integer
      - `ipAddress` string
      - `region` ProxyRegionDTO
        - `id` integer, required
        - `name` string
      - `usedByAccounts` string[]
    - `connected` boolean
    - `credit` number — Only for MT4/MT5
    - `currency` string
    - `drawdown` number — The drawdown percentage of the account
    - `environment` 'LIVE' | 'DEMO' — Indicates the account environment: LIVE or DEMO. Testnet/sim/paper environments are reported as DEMO. Null if detection is not supported for this broker type
    - `equity` number
    - `fallbackMode` boolean — The fallback mode is active (This means something is not working properly, and the system switches to the fallback mode)
    - `freeMargin` number
    - `historyDeactivated` boolean — Indicates if history fetching has been deactivated for this account
    - `isHyperactive` boolean — Indicates if the account is performing excessive trading activity. When true, history fetching may be disabled to reduce broker load
    - `isInvestorPassword` boolean
    - `isNative` boolean — Indicates if the account is using native mode
    - `latencyInMs` integer — Latency to the broker's access server
    - `leverage` integer
    - `maxDrawdown` number — Maximum drawdown percentage - worst peak-to-trough decline (%)
    - `missingSymbolMappings` MissingSymbolMappingDTO[] — List of missing symbol mappings for this account
      - `copierId` string, uuid
      - `fromAccount` string
      - `fromAccountId` string, uuid
      - `lastTimestampDetected` integer
      - `symbol` string
    - `openPositions` boolean — True if there is an open position (buy or sell)
    - `openPositionsCount` integer — Number of open positions (buy or sell)
    - `pendingApprovals` ApprovalDTO[]
      - `accountFromId` string, uuid, required — The account UUID
      - `ticket` integer, required — The ticket number of the position
      - `volume` number — You can override the volume (lots). If not specified, it will use the lot size specified by the copier
    - `pendingOrders` boolean — True if there is a pending order (buy limit, sell limit, etc
    - `pendingOrdersCount` integer — Number of pending orders (buy limit, sell limit, etc)
    - `positionMismatch` boolean — Indicates that the open positions between the master and slave accounts are not synchronized due to failed open or close operations
    - `profitTargetsStatus` ProfitTargetStatusDTO[]
      - `balanceLastUpdate` string, date-time
      - `profitTargetFeatureId` string, uuid
      - `profitTargetIsHit` boolean
      - `referenceBalance` number
    - `profitThisMonth` number
    - `profitThisWeek` number
    - `profitToday` number
    - `proxy` ProxyDTO — Read-only. The system will reserve the proxy servers per region and list them in this field.
      - `id` integer
      - `ipAddress` string
      - `region` ProxyRegionDTO
        - `id` integer, required
        - `name` string
      - `usedByAccounts` string[]
    - `riskLimitsStatus` RiskLimitStatusDTO[]
      - `balanceLastUpdate` string, date-time
      - `limitIsHit` boolean
      - `referenceBalance` number
      - `riskLimitId` string, uuid
    - `status` string
    - `unrealizedProfit` number
    - `usedMargin` number
    - `walletBalances` WalletDTO[]
      - `asset` string
      - `balance` number
    - `wrongCredentials` boolean
  - `alias` string
  - `callbackUrl` string — Optional callback URL for async account creation. When provided, the API returns 202 Accepted immediately and POSTs the result (AccountDTO or error) to this URL once processing completes. Only 1 account creation per project is processed at a time; additional requests are queued.
  - `closeUnmanagedPositions` boolean — When enabled, any open positions on the account that were originally opened by MetaCopier but are no longer managed, due to technical issues, will be automatically closed. However, this mechanism can occasionally result in false positives. If disabled, such unmanaged positions will remain open, and a notification will be sent to the notification center or to Telegram (if configured). In this case, manual intervention is required. We recommend keeping this option disabled to avoid accidental closures.
  - `created` string, date-time — ISO 8601
  - `ctraderClientId` string
  - `ctraderClientSecret` string
  - `dedicatedIp` FeatureDedicatedIpDTO — DTO for assigning a dedicated IP feature (account) (PRO)
    - `dedicatedProxyServerId` integer, required — Enter an dedicated proxy server id (see "FeatureDedicatedIpPoolDTO")
  - `deleted` string, date-time — ISO 8601
  - `failIfAccountExistsInProject` boolean — If true, the create-account call fails when the account already exists in the project
  - `hasActiveCopiers` boolean — Indicates whether this account has any active copiers. Returns true if at least one copier has active=true, false otherwise.
  - `hasDisabledCopiers` boolean — Indicates whether this account has any disabled only copiers. Returns true if at least one copier has active=false, false otherwise.
  - `hasMonitorOnlyCopiers` boolean — Indicates whether this account has any monitor-only copiers. Returns true if at least one copier is in monitor only mode (monitoring without copying trades), false otherwise.
  - `id` string, uuid
  - `labels` string[] — Set labels for your account. If null, this field will not add, update, or delete anything. To delete all labels, set this field to an empty list.
  - `loginAccountNumber` string — For Binance, Bybit, Bitget, BloFin, OKX, Tradovate and Alpaca leave it empty
  - `loginAccountPassword` string, required — For cTrader 'token|refreshToken'. For TradeStation 'token|refreshToken'. For Binance and Bybit 'apiKey|secretKey'. For Bitget, BloFin and OKX 'apiKey|secretKey|passphrase'. For Tradovate and Alpaca 'apiKey|secretKey'. Only fill this field if you want to update the password or at account creation. When updating the account, you can leave this field empty "" - you don't have to send the password every time.
  - `loginServer` string, required — Enter the server address, for example, ICMarketsSC-MT5-4 for MetaTrader, or the URL such as dxtrade.instantfunding.io for DXtrade or mtr-demo-prod.match-trader.com MatchTrader. For CTrader, live.ctraderapi.com:5035 or demo.ctraderapi.com:5035. For TradeLocker, live.tradelocker.com or demo.tradelocker.com. For Binance, Bybit, Bitget, BloFin and OKX 'live', 'testnet' or 'demo'. For TradeStation 'sim' or 'live'. For Tradovate 'demo' or 'live'. For Alpaca 'paper' or 'live'.
  - `myHomeIp` FeatureMyHomeIpDTO — DTO for defining a my home ip feature (project) (PRO)
    - `host` string, required — Your IP address or DNS hostname.
    - `httpPort` integer — The port number for HTTP proxy.
    - `password` string, required — The password for SOCKS/HTTP authentication.
    - `socksPort` integer — The port number for SOCKS proxy.
    - `username` string, required — The username for SOCKS/HTTP authentication.
  - `nativeMode` boolean — Indicates whether the integration runs in native mode (applies only to MetaTrader 4/5 connectors). If true, the solution operates via the official MetaTrader terminal (native). If false, it connects directly to the server without using the terminal (non-native). Non-native mode can achieve lower latency for high-frequency trading (HFT) strategies, but for 99% of typical use cases native mode is sufficiently fast. If the non-native mode fails or becomes unavailable, the system will automatically fall back to native mode. For all other connectors, the integration is always native.
  - `propFirm` boolean — Indicates whether this is a prop firm account.
  - `region` RegionDTO, required — Select allowed regions for the white-label solution. If empty or not specified, all regions are allowed.
    - `id` integer, required
    - `name` string
  - `skipCredentialCheck` boolean — When set to true, skips credential validation during account creation. Use with caution, the account will be created without verifying login credentials.
  - `status` AccountStatusDTO — Read only
    - `id` integer, required
    - `name` string
  - `statusMessage` string
  - `tradingDisabled` boolean — When enabled, puts the account in read-only mode, preventing any new trades from being opened or existing trades from being modified or closed. Use this when you want to use the account as a read-only master.
  - `type` AccountTypeDTO, required — Select allowed account types for the white-label solution. If not specified, all account types are allowed.
    - `id` integer, required
    - `name` string

## Response `200`

OK

- object

---

[API](https://skmtc.net/metacopier/apis/metacopier-api.md) · [All operations](https://skmtc.net/metacopier/apis/metacopier-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/metacopier/metacopier-api/revisions/ff1699330afa/schema)
