# Bitget order

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/order, 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 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.

- Message: `order`
- Interface: Bitget WebSocket API
- Group: Private channels
- Status: verified. Source: [bitget.com](https://www.bitget.com/docs/uta/websocket/private/Order-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: `order`
- Direction: Subscription, opened by the client and then fed by the server
- Subscribed to as: `order`
- 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 or not: not stated): subscribe to start the channel, unsubscribe to stop it.
- `args` (type List\<Object>, required or not: not stated): The channels to act on. Each entry names one.
- `args[].instType` (type String, required or not: not stated): Always UTA, for the unified trading account.
- `args[].topic` (type String, required or not: not stated): Always order.

## What arrives

`order`: 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. The page's table holds further fields, among them amount, holdMode, delegateType, marginMode, marginCoin, reduceOnly, totalProfit, cancelReason, leverage, feeDetail, stpMode and requestId.

- `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.
- `data` (type List\<Object>, required or not: not stated): The orders.
- `data[].category` (type String, required or not: not stated): The business line: spot, margin, usdt-futures, coin-futures or usdc-futures.
- `data[].symbol` (type String, required or not: not stated): The symbol.
- `data[].orderId` (type String, required or not: not stated): The id of the order.
- `data[].clientOid` (type String, required or not: not stated): The client's own id for the order.
- `data[].price` (type String, required or not: not stated): The price of the order.
- `data[].qty` (type String, required or not: not stated): The quantity of the order.
- `data[].orderType` (type String, required or not: not stated): limit or market.
- `data[].timeInForce` (type String, required or not: not stated): ioc, fok, gtc, post_only or rpi.
- `data[].side` (type String, required or not: not stated): buy or sell.
- `data[].holdSide` (type String, required or not: not stated): The side of the position: long or short.
- `data[].tradeSide` (type String, required or not: not stated): open or close.
- `data[].orderStatus` (type String, required or not: not stated): new, partially_filled, filled or cancelled.
- `data[].cumExecQty` (type String, required or not: not stated): The quantity executed so far.
- `data[].cumExecValue` (type String, required or not: not stated): The value executed so far.
- `data[].avgPrice` (type String, required or not: not stated): The average execution price. 0 where nothing has been executed.
- `data[].createdTime` (type String, required or not: not stated): When the order was created, as Unix time in milliseconds.
- `data[].updatedTime` (type String, required or not: not stated): When the order was last updated, as Unix time in milliseconds.

## 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": "order"
    }
  ]
}
```

## 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

- [account](https://openbrokerapi.com/brokers/bitget/messages/account): 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.
- [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.
- [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 order. Broker API Hub, https://openbrokerapi.com/brokers/bitget/messages/order, 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.
