Websocket Reference

The Order Status WebSocket allows you to receive real-time updates about your single/multi orders directly into your application or script. You can subscribe using your API access token and get instant notifications when an order event occurs.

wss://<server>/ws/orders/

Authentication

Pass your API token as a query parameter in the WebSocket URL. If authentication fails, the connection will be automatically closed.

wss://<server>/ws/orders/?token=<API_token>

Subscribing to Order Updates

After connecting, you must send a subscription message to start receiving updates.

Subscribe

{
  "command": "subscribe",
  "data_type": "user_orders"
}

Keep-Alive

To prevent disconnects (after 30s inactivity), send this message every 5–10 seconds:

{
  "command": "keep_alive"
}

Unsubscribe (optional)

{
  "command": "unsubscribe",
  "data_type": "user_orders"
}

Order Updates

{
  "type": "order_update",
  "data": {
    "order_id": "<order_id>",
    "update_type": "<event_type>",
    "order": { /* order details */ }
  }
}

After successfully subscribing, you will receive order_update messages with an update_type field for your orders. The possible values depend on whether the update is for a single order or a multi-order (parent/child).

Single Orders Update Types

  • order_created — The order was created.

  • order_activated — The order became active.

  • order_canceled — The order was canceled.

  • order_completed — The order was fully completed.

  • order_fill_received — The order received a fill (partial or full execution).

  • order_paused — The order was paused.

Multi-Orders Update Types

  • order_created — The parent order was created.

  • order_activated — The parent order became active.

  • order_canceled — The parent order was canceled.

  • order_completed — The parent order was completed (all child orders finished).

  • order_paused — The parent order was paused.

  • child_order_created — A child order was created.

  • child_order_activated — A child order became active.

  • child_order_canceled — A child order was canceled.

  • child_order_completed — A child order was completed.

  • child_order_fill_received — A child order received a fill.

Example Update

Single Orders

{
  "type": "order_update",
  "data": {
    "order_id": "0c31d512-f2c8-4600-9002-493bada22b39",
    "update_type": "order_fill_received",
    "order": {
      "id": "0c31d512-f2c8-4600-9002-493bada22b39",
      "custom_order_id": "",
      "parent_order_id": null,
      "notes": "",
      "pair": "BTC:PERP-USDT",
      "side": "buy",
      "exchanges": [
        "Bybit"
      ],
      "buy_token": "BTC:PERP",
      "buy_token_amount": "1",
      "sell_token": "USDT",
      "sell_token_amount": "118841.3044",
      "executed_qty": "9388.5216",
      "executed_buy_qty": "0.079",
      "average_executed_price": "118842.0455696411",
      "executed_notional": "9388.5216",
      "target_order_qty": "1",
      "target_remaining_qty": "0.921",
      "target_token": "BTC:PERP",
      "target_executed_qty": "0.079",
      "pct_filled": "7.9",
      "total_fee": "3.37511478",
      "strategy": "VWAP",
      "super_strategy": "Impact Minimization",
      "duration": 120,
      "accounts": [
        "f574fe0f-f188-47d0-a348-9ea8fefb9d37"
      ],
      "account_names": [
        "test_bybit"
      ],
      "engine_passiveness": "0.02",
      "schedule_discretion": "0.06",
      "pov_limit": null,
      "pov_target": null,
      "alpha_tilt": "0",
      "strategy_params": {
        "ool_pause": false,
        "max_clip_size": null
      },
      "user": "2",
      "status": "ACTIVE",
      "active": true,
      "is_simple": false,
      "failure_reason": "",
      "limit_price": "",
      "is_reverse_limit_price": false,
      "time_start": "2025-07-15T01:21:45.448162+00:00",
      "time_end": "2025-07-15T01:23:45.448162+00:00",
      "created_at": "2025-07-15T01:21:45.481837+00:00",
      "updated_at": "2025-07-15T01:21:45.499214+00:00"
    }
  }
}

Multi-Orders

{
  "type": "order_update",
  "data": {
    "order_id": "5092dba5-ec3c-4ae9-84ad-43aa29090bb0",
    "update_type": "order_activated",
    "order": {
      "id": "5092dba5-ec3c-4ae9-84ad-43aa29090bb0",
      "created_at": "2025-07-15T01:23:07.588678+00:00",
      "updated_at": "2025-07-15T01:23:07.588700+00:00",
      "time_start": "2025-07-15T01:23:07.567613+00:00",
      "duration": 60,
      "exposure_tolerance": "0.1",
      "notional_exposure": "0.462",
      "executed_notional": "14255.514",
      "child_order_ids": [
        "4c1b8f6b-a204-43f6-aac9-4ed06198fe27",
        "f0a78f07-f52c-4a7f-aa32-5b80fa0ff78e"
      ],
      "accounts": [
        "test_bybit"
      ],
      "strategy": "TWAP",
      "strategy_params": {
        "max_clip_size": 10000
      },
      "engine_passiveness": "0.02",
      "schedule_discretion": "0.06",
      "alpha_tilt": "0",
      "limit_price_spread": null,
      "failure_reason": "",
      "pct_filled": "6",
      "account_names": [
        "test_bybit"
      ],
      "pairs": "BTC:PERP-USDT,BTC-USDT",
      "status": "ACTIVE",
      "is_active": true,
      "is_paused": false,
      "fee_notional": "8.5531236",
      "order_condition": "",
      "child_orders": [
        {
          "id": "4c1b8f6b-a204-43f6-aac9-4ed06198fe27",
          "custom_order_id": "",
          "parent_order_id": "5092dba5-ec3c-4ae9-84ad-43aa29090bb0",
          "notes": "",
          "pair": "BTC:PERP-USDT",
          "side": "buy",
          "exchanges": [
            "Bybit"
          ],
          "buy_token": "BTC:PERP",
          "buy_token_amount": "1",
          "sell_token": "USDT",
          "sell_token_amount": "118799.9",
          "executed_qty": "7127.988",
          "executed_buy_qty": "0.06",
          "average_executed_price": "118799.8",
          "executed_notional": "7127.988",
          "target_order_qty": "1",
          "target_remaining_qty": "0.94",
          "target_token": "BTC:PERP",
          "target_executed_qty": "0.06",
          "pct_filled": "6",
          "total_fee": "1.4255976",
          "strategy": "TWAP",
          "super_strategy": null,
          "duration": 73,
          "accounts": [
            "f574fe0f-f188-47d0-a348-9ea8fefb9d37"
          ],
          "account_names": [
            "test_bybit"
          ],
          "engine_passiveness": "0.02",
          "schedule_discretion": "0.06",
          "pov_limit": null,
          "pov_target": null,
          "alpha_tilt": "0",
          "strategy_params": {
            "max_clip_size": 10000
          },
          "user": "2",
          "status": "ACTIVE",
          "active": true,
          "is_simple": false,
          "failure_reason": "",
          "limit_price": "",
          "is_reverse_limit_price": false,
          "time_start": "2025-07-15T01:23:07.639390+00:00",
          "time_end": "2025-07-15T01:24:20.639390+00:00",
          "created_at": "2025-07-15T01:23:07.722411+00:00",
          "updated_at": "2025-07-15T01:23:07.725840+00:00"
        },
        {
          "id": "f0a78f07-f52c-4a7f-aa32-5b80fa0ff78e",
          "custom_order_id": "",
          "parent_order_id": "5092dba5-ec3c-4ae9-84ad-43aa29090bb0",
          "notes": "",
          "pair": "BTC-USDT",
          "side": "sell",
          "exchanges": [
            "Bybit"
          ],
          "buy_token": "USDT",
          "buy_token_amount": null,
          "sell_token": "BTC",
          "sell_token_amount": "1",
          "executed_qty": "0.06",
          "executed_buy_qty": "7127.526",
          "average_executed_price": "118792.1",
          "executed_notional": "7127.526",
          "target_order_qty": "1",
          "target_remaining_qty": "0.94",
          "target_token": "BTC",
          "target_executed_qty": "0.06",
          "pct_filled": "6",
          "total_fee": "7.127526",
          "strategy": "TWAP",
          "super_strategy": null,
          "duration": 73,
          "accounts": [
            "f574fe0f-f188-47d0-a348-9ea8fefb9d37"
          ],
          "account_names": [
            "test_bybit"
          ],
          "engine_passiveness": "0.02",
          "schedule_discretion": "0.06",
          "pov_limit": null,
          "pov_target": null,
          "alpha_tilt": "0",
          "strategy_params": {
            "max_clip_size": 10000
          },
          "user": "2",
          "status": "ACTIVE",
          "active": true,
          "is_simple": false,
          "failure_reason": "",
          "limit_price": "",
          "is_reverse_limit_price": false,
          "time_start": "2025-07-15T01:23:07.643916+00:00",
          "time_end": "2025-07-15T01:24:20.643916+00:00",
          "created_at": "2025-07-15T01:23:07.914559+00:00",
          "updated_at": "2025-07-15T01:23:07.916364+00:00"
        }
      ]
    }
  }
}
{
  "type": "order_update",
  "data": {
    "order_id": "5092dba5-ec3c-4ae9-84ad-43aa29090bb0",
    "update_type": "child_order_fill_received",
    "order": {
      "id": "5092dba5-ec3c-4ae9-84ad-43aa29090bb0",
      "created_at": "2025-07-15T01:23:07.588678+00:00",
      "updated_at": "2025-07-15T01:23:07.588700+00:00",
      "time_start": "2025-07-15T01:23:07.567613+00:00",
      "duration": 60,
      "exposure_tolerance": "0.1",
      "notional_exposure": "-7523.5824552",
      "executed_notional": "21779.5584552",
      "child_order_ids": [
        "4c1b8f6b-a204-43f6-aac9-4ed06198fe27",
        "f0a78f07-f52c-4a7f-aa32-5b80fa0ff78e"
      ],
      "accounts": [
        "test_bybit"
      ],
      "strategy": "TWAP",
      "strategy_params": {
        "max_clip_size": 10000
      },
      "engine_passiveness": "0.02",
      "schedule_discretion": "0.06",
      "alpha_tilt": "0",
      "limit_price_spread": null,
      "failure_reason": "",
      "pct_filled": "9.1668",
      "account_names": [
        "test_bybit"
      ],
      "pairs": "BTC:PERP-USDT,BTC-USDT",
      "status": "ACTIVE",
      "is_active": true,
      "is_paused": false,
      "fee_notional": "16.0771680552",
      "order_condition": "",
      "child_orders": [
        {
          "id": "4c1b8f6b-a204-43f6-aac9-4ed06198fe27",
          "custom_order_id": "",
          "parent_order_id": "5092dba5-ec3c-4ae9-84ad-43aa29090bb0",
          "notes": "",
          "pair": "BTC:PERP-USDT",
          "side": "buy",
          "exchanges": [
            "Bybit"
          ],
          "buy_token": "BTC:PERP",
          "buy_token_amount": "1",
          "sell_token": "USDT",
          "sell_token_amount": "118794.442",
          "executed_qty": "7127.988",
          "executed_buy_qty": "0.06",
          "average_executed_price": "118799.8",
          "executed_notional": "7127.988",
          "target_order_qty": "1",
          "target_remaining_qty": "0.94",
          "target_token": "BTC:PERP",
          "target_executed_qty": "0.06",
          "pct_filled": "6",
          "total_fee": "1.4255976",
          "strategy": "TWAP",
          "super_strategy": null,
          "duration": 73,
          "accounts": [
            "f574fe0f-f188-47d0-a348-9ea8fefb9d37"
          ],
          "account_names": [
            "test_bybit"
          ],
          "engine_passiveness": "0.02",
          "schedule_discretion": "0.06",
          "pov_limit": null,
          "pov_target": null,
          "alpha_tilt": "0",
          "strategy_params": {
            "max_clip_size": 10000
          },
          "user": "2",
          "status": "ACTIVE",
          "active": true,
          "is_simple": false,
          "failure_reason": "",
          "limit_price": "",
          "is_reverse_limit_price": false,
          "time_start": "2025-07-15T01:23:07.639390+00:00",
          "time_end": "2025-07-15T01:24:20.639390+00:00",
          "created_at": "2025-07-15T01:23:07.722411+00:00",
          "updated_at": "2025-07-15T01:23:07.725840+00:00"
        },
        {
          "id": "f0a78f07-f52c-4a7f-aa32-5b80fa0ff78e",
          "custom_order_id": "",
          "parent_order_id": "5092dba5-ec3c-4ae9-84ad-43aa29090bb0",
          "notes": "",
          "pair": "BTC-USDT",
          "side": "sell",
          "exchanges": [
            "Bybit"
          ],
          "buy_token": "USDT",
          "buy_token_amount": null,
          "sell_token": "BTC",
          "sell_token_amount": "1",
          "executed_qty": "0.123336",
          "executed_buy_qty": "14651.5704552",
          "average_executed_price": "118793.9486865149",
          "executed_notional": "14651.5704552",
          "target_order_qty": "1",
          "target_remaining_qty": "0.876664",
          "target_token": "BTC",
          "target_executed_qty": "0.123336",
          "pct_filled": "12.3336",
          "total_fee": "14.6515704552",
          "strategy": "TWAP",
          "super_strategy": null,
          "duration": 73,
          "accounts": [
            "f574fe0f-f188-47d0-a348-9ea8fefb9d37"
          ],
          "account_names": [
            "test_bybit"
          ],
          "engine_passiveness": "0.02",
          "schedule_discretion": "0.06",
          "pov_limit": null,
          "pov_target": null,
          "alpha_tilt": "0",
          "strategy_params": {
            "max_clip_size": 10000
          },
          "user": "2",
          "status": "ACTIVE",
          "active": true,
          "is_simple": false,
          "failure_reason": "",
          "limit_price": "",
          "is_reverse_limit_price": false,
          "time_start": "2025-07-15T01:23:07.643916+00:00",
          "time_end": "2025-07-15T01:24:20.643916+00:00",
          "created_at": "2025-07-15T01:23:07.914559+00:00",
          "updated_at": "2025-07-15T01:23:07.916364+00:00"
        }
      ]
    }
  }
}

Troubleshooting

  • Connection closes immediately

    • Check your API token and WebSocket URL.

  • No updates received

    • Make sure you sent the subscription message after connecting.

  • Timeouts

    • Ensure you are sending keep-alive messages regularly.

Best Practices

  • Send keep-alive messages to avoid disconnects.

  • Subscribe after connecting; unsubscribe when done.

  • Handle disconnection properly in your client.

Last updated

Was this helpful?