# Bitget account

Independent and unofficial. Not affiliated with or endorsed by any broker or platform named here. Educational only: nothing here is advice, and nothing here recommends a broker or a trade.

This is the markdown version of https://openbrokerapi.com/brokers/bitget/messages/account, written from the same records as that page.

Risk warning: CFDs and spread bets are complex instruments and come with a high risk of losing money rapidly due to leverage. You can lose money on these products, and each provider publishes its own loss figure under FCA rules. You should consider whether you understand how they work and whether you can afford to take the high risk of losing your money. Automated and API trading can amplify losses through bugs, connectivity failures and runaway orders.

The unified trading account: equity, margin figures and the balance of each coin. Bitget says data is pushed on first subscribing, when orders are filled, when funds are settled and when a balance changes.

- Message: `account`
- Interface: Bitget WebSocket API
- Group: Private channels
- Status: verified. Source: [bitget.com](https://www.bitget.com/docs/uta/websocket/private/Account-Channel), checked 2026-10-12.

This is a subscription of the Bitget WebSocket API, not an HTTP endpoint. It has no method and no path: it is sent as JSON over an open WebSocket connection. It is in no OpenAPI file on this site and the request builder does not list it.

## The message

- Name: `account`
- Direction: Subscription, opened by the client and then fed by the server
- Subscribed to as: `account`
- Carried by: WebSocket. This channel is in the private section of Bitget's WebSocket documentation, so the connection has to send login first. The addresses are the ones on Bitget's quick start page (bitget.com/docs/uta/quick-start), opened the same day, which also lists VIP and low latency hosts.
- Private channel: `wss://ws.bitget.com/v3/ws/private`
- Private channel, demo trading: `wss://wspap.bitget.com/v3/ws/private`

## Fields

- `op` (type String, required): subscribe to start the channel, unsubscribe to stop it.
- `args` (type List\<Object>, required): The channels to act on. Each entry names one.
- `args[].instType` (type String, required): Always UTA, for the unified trading account.
- `args[].topic` (type String, required): Always account.

## What arrives

`account`: A message with the event subscribe and the same arg confirms the subscription, with a connId for the connection. On an error the event is error, with a code and a msg. Data then arrives as below.

- `arg` (type Object, required or not: not stated): The channel the data belongs to: the instType, the topic and, on a public channel, the symbol that were subscribed to.
- `action` (type String, required or not: not stated): snapshot for full data, update for incremental data.
- `ts` (type Number, required or not: not stated): The time of the push.
- `data` (type List, required or not: not stated): The account data.
- `data[].totalEquity` (type String, required or not: not stated): The equity of the account, in US dollars.
- `data[].effEquity` (type String, required or not: not stated): The effective margin, in US dollars.
- `data[].mmr` (type String, required or not: not stated): The maintenance margin, in US dollars.
- `data[].imr` (type String, required or not: not stated): The initial margin, in US dollars.
- `data[].mgnRatio` (type String, required or not: not stated): The margin ratio.
- `data[].positionMgnRatio` (type String, required or not: not stated): The margin ratio of held positions.
- `data[].unrealisedPnL` (type String, required or not: not stated): The unrealised profit and loss.
- `data[].coin` (type List, required or not: not stated): One entry for each coin held.
- `data[].coin[].coin` (type String, required or not: not stated): The name of the coin.
- `data[].coin[].balance` (type String, required or not: not stated): The balance of the coin.
- `data[].coin[].balanceOriginal` (type String, required or not: not stated): The balance worked out without deducting amounts related to borrowing.
- `data[].coin[].locked` (type String, required or not: not stated): The amount locked. For spot orders only.
- `data[].coin[].equity` (type String, required or not: not stated): The equity of the coin, in US dollars.
- `data[].coin[].usdValue` (type String, required or not: not stated): The value of the coin, in US dollars.
- `data[].coin[].available` (type String, required or not: not stated): The balance available.
- `data[].coin[].borrow` (type String, required or not: not stated): The amount borrowed.
- `data[].coin[].debts` (type String, required or not: not stated): The debt. For margin trading only.
- `data[].coin[].bonus` (type String, required or not: not stated): The USDT bonus amount.

## Sample

Written by this site from the fields recorded on this page. It has not been run against a terminal, a server or an account, and the values in it are placeholders. No credential is typed into it: where a field holds one, the placeholder says where it comes from. Nothing is entered on this site.

```json
{
  "op": "subscribe",
  "args": [
    {
      "instType": "UTA",
      "topic": "account"
    }
  ]
}
```

## Limits that apply at Bitget

- Public market data, legacy v1 API: 20 per 2 s per IP, public market data
  - Scope: Per IP address, public market data endpoints of the legacy v1 API
  - Status: verified. Source: [bitgetlimited.github.io](https://bitgetlimited.github.io/apidoc/en/spot/), checked 2026-10-12.
  - Note: Re-read on the legacy v1 documentation on 12 Oct 2026: 20 requests in 2 seconds. Authenticated endpoints there are set per endpoint per UID, and a general endpoint with no figure of its own is 10 a second. HTTP 429 on breach. The window is 2 seconds, which a single unit cannot state, so the figure stays as wording. The current API states its own overall limit, held in a separate record.
- Overall requests a minute: 6,000 requests per minute
  - Scope: Per IP address, all requests to the common domain name, with REST and WebSocket sharing one allowance
  - Status: verified. Source: [bitget.com](https://www.bitget.com/docs/uta/quick-start), checked 2026-10-12.
  - Note: Each endpoint also carries its own limit on its own documentation page, counted separately. HTTP 429 on breach.
- Concurrent WebSocket connections: 100 connections
  - Scope: Per IP address
  - Status: verified. Source: [bitget.com](https://www.bitget.com/docs/uta/quick-start), checked 2026-10-12.
  - Note: Also 300 connection requests per IP in 5 minutes.
- WebSocket messages a second: 10 messages per second
  - Scope: Per WebSocket connection, counting ping, login, subscribe and unsubscribe messages
  - Status: verified. Source: [bitget.com](https://www.bitget.com/docs/uta/quick-start), checked 2026-10-12.
  - Note: A connection that sends more is disconnected, and an IP that is disconnected repeatedly may be blocked.
- WebSocket subscription requests an hour: 240 subscription requests per hour
  - Scope: Per WebSocket connection
  - Status: verified. Source: [bitget.com](https://www.bitget.com/docs/uta/quick-start), checked 2026-10-12.
- Concurrent WebSocket channel subscriptions: 1,000 channel subscriptions
  - Scope: Per WebSocket connection
  - Status: verified. Source: [bitget.com](https://www.bitget.com/docs/uta/quick-start), checked 2026-10-12.
  - Note: Bitget recommends fewer than 50 channels on one connection.

## Related Bitget messages: Private channels

- [fill](https://openbrokerapi.com/brokers/bitget/messages/fill): The fills of the unified trading account in real time. Bitget says nothing is pushed on first subscribing, and that a push follows when a spot, leveraged or futures order is filled.
- [order](https://openbrokerapi.com/brokers/bitget/messages/order): The orders of the unified trading account. Bitget says nothing is pushed on first subscribing, and that a push follows when a spot, margin or futures order is placed, filled or cancelled.
- [position](https://openbrokerapi.com/brokers/bitget/messages/position): The positions of the unified trading account. Bitget says data is pushed on first subscribing, and then incrementally when futures positions are opened or closed and when orders that close a position are placed, changed or cancelled.

## More on Bitget

- [All Bitget messages](https://openbrokerapi.com/brokers/bitget/messages): 10 documented here, grouped by what they do.
- [Subscribe to a stream: the call at each API](https://openbrokerapi.com/endpoints/streaming-subscribe): The same job at every broker and platform API recorded here, HTTP or not.
- [Bitget API page](https://openbrokerapi.com/brokers/bitget): The full record: access, authentication, limits and the source for each.

## Licence and how to cite

The records behind this page are all rights reserved. This file is the page itself, at its own address, in another format. It is not part of the CC BY 4.0 downloads listed at https://openbrokerapi.com/data. Quote from it with a link to the page.

Cite as: Bitget account. Broker API Hub, https://openbrokerapi.com/brokers/bitget/messages/account, newest check 2026-10-12.

Where you rely on a single figure, cite the source and the checked date printed beside it as well. Where this page and a broker's own documentation differ, the documentation wins.
