WebSocket API

Portfolio Channel

Authenticated account-level portfolio summary stream

Channel name: portfolio

Authentication

You must send a successful auth message before subscribing.

{ "op": "sub", "channel": "portfolio" }

No params field is required. The stream is account-scoped.

Message Types

Snapshot

Sent immediately after subscribing. Contains the full portfolio summary including positions and collateral assets.

{
  "channel": "portfolio",
  "type": "snapshot",
  "data": {
    "coll_mode": "COLLATERAL_MODE_MULTI",
    "tot_coll_val": "100000.00",
    "coll_mrgn_bal": "95000.00",
    "cross_mrgn_bal": "90000.00",
    "cross_mrgn_ratio": "0.05",
    "cross_mrgn_usg": "0.10",
    "cross_acct_lev": "1.5",
    "free_coll": "85000.00",
    "tot_acct_val": "102000.00",
    "tot_cross_ntnl": "150000.00",
    "tot_cross_init_mrgn": "10000.00",
    "tot_cross_maint_mrgn": "5000.00",
    "tot_unrlzd_pnl": "2000.00",
    "rlzd_pnl": "500.00",
    "mrgn_health": "0.95",
    "tot_iso_ord_rsrv": "0",
    "in_cross_liq": false,
    "has_pnd_wdraw": false,
    "has_pnd_stake": false,
    "has_pnd_unstake": false,
    "coll_assets": [],
    "pos": [
      {
        "mkt_idx": 1,
        "mkt_id": "BTC-PERP",
        "net_sz": "1.5",
        "avg_entry_px": "50000.00",
        "quote_bal": "-75000.00",
        "mark_px": "50100.00",
        "idx_px": "50095.00",
        "mrgn_mode": "MARGIN_MODE_CROSS",
        "lev": "10",
        "mrgn_bal": "7500.00",
        "init_mrgn_req": "5000.00",
        "maint_mrgn_req": "2500.00",
        "liq_px": "45100.00",
        "unrlzd_pnl": "150.00",
        "tot_fund_paid": "5.00",
        "iso_usdc_bal": "0",
        "free_iso_usdc_bal": "0",
        "in_iso_liq": false,
        "mrgn_ratio": "0.033"
      }
    ]
  },
  "gsn": 12345,
  "ts": "1234567890000000000"
}

Update

Incremental updates to portfolio state. Follows the same structure as snapshot messages.

Fields

Top-level

FieldTypeDescription
data.coll_modestringCollateral mode
data.tot_coll_valstringTotal collateral value
data.coll_mrgn_balstringCollateral margin balance
data.cross_mrgn_balstringCross margin balance
data.cross_mrgn_ratiostringCross margin ratio
data.cross_mrgn_usgstringCross margin usage
data.cross_acct_levstringCross account leverage
data.free_collstringFree collateral
data.tot_acct_valstringTotal account value
data.tot_cross_ntnlstringTotal cross notional
data.tot_cross_init_mrgnstringTotal cross initial margin
data.tot_cross_maint_mrgnstringTotal cross maintenance margin
data.tot_unrlzd_pnlstringTotal unrealized PnL
data.rlzd_pnlstringRealized PnL
data.mrgn_healthstringMargin health score
data.tot_iso_ord_rsrvstringTotal isolated order reserve
data.in_cross_liqbooleanAccount is in cross liquidation
data.has_pnd_wdrawbooleanHas pending withdrawal
data.has_pnd_stakebooleanHas pending stake
data.has_pnd_unstakebooleanHas pending unstake
data.coll_assetsarrayCollateral asset breakdown (see below)
data.posarrayPosition objects per enabled market (same schema as Position Channel)

Collateral Asset Fields (coll_assets items)

FieldTypeDescription
assetstringAsset symbol (e.g. "USDC")
addrstringToken contract address
balstringRaw balance
wdrawable_amtstringAmount available to withdraw
mkt_val_usdstringMarket value in USD
coll_val_usdstringCollateral value in USD (after haircut)
coll_val_compstringPercentage of total collateral value (0–100, 6 decimal places)

See the full schema in GET /portfolio.

On this page