> ## Documentation Index
> Fetch the complete documentation index at: https://docs.arcus.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Spot positions

> > **Endpoint:** `wss://api.arcus.xyz/v1/ws` — one socket multiplexes every channel and RPC request. Click **Connect**, then send the example subscribe message below to start receiving data.

Spot collateral holdings for a single sub-account, on a dedicated channel so clients can follow collateral without subscribing to the full perp `positions` stream. Driven by spot-collateral holding-change events.

Snapshot contents (`SpotPositionsSnapshot`): `isSnapshot: true`, `lastSequenceId`, `address`, `accountIndex`, and a `spotPositions` map of open collateral holdings keyed by spot asset id (omitted when empty). Entries use the REST `SpotPositionEntry` shape (`size`, `value`, `oraclePrice`).

Updates (`SpotPositionsUpdate`) carry a single changed holding in a `spotPositions` array (no `positions` array). Event rows carry the post-event `size` in asset units ("0" = holding closed), event valuation `price`, and a `reason` (`DEPOSIT`, `WITHDRAWAL`, `SEIZURE`, `RELEASE`, `TRANSFER`, `UNKNOWN`). The asset is identified by `spotAssetId` / `spotAssetDisplayName` (e.g. "SPY-USD-SPOT"), a separate namespace from perp market ids.




## AsyncAPI

````yaml api-reference/asyncapi.yaml spotPositions
id: spotPositions
title: Spot positions
description: >
  > **Endpoint:** `wss://api.arcus.xyz/v1/ws` — one socket multiplexes every
  channel and RPC request. Click **Connect**, then send the example subscribe
  message below to start receiving data.


  Spot collateral holdings for a single sub-account, on a dedicated channel so
  clients can follow collateral without subscribing to the full perp `positions`
  stream. Driven by spot-collateral holding-change events.


  Snapshot contents (`SpotPositionsSnapshot`): `isSnapshot: true`,
  `lastSequenceId`, `address`, `accountIndex`, and a `spotPositions` map of open
  collateral holdings keyed by spot asset id (omitted when empty). Entries use
  the REST `SpotPositionEntry` shape (`size`, `value`, `oraclePrice`).


  Updates (`SpotPositionsUpdate`) carry a single changed holding in a
  `spotPositions` array (no `positions` array). Event rows carry the post-event
  `size` in asset units ("0" = holding closed), event valuation `price`, and a
  `reason` (`DEPOSIT`, `WITHDRAWAL`, `SEIZURE`, `RELEASE`, `TRANSFER`,
  `UNKNOWN`). The asset is identified by `spotAssetId` / `spotAssetDisplayName`
  (e.g. "SPY-USD-SPOT"), a separate namespace from perp market ids.
servers:
  - id: mainnet
    protocol: wss
    host: api.arcus.xyz
    bindings: []
    variables: []
  - id: testnet
    protocol: wss
    host: api.testnet.arcus.xyz
    bindings: []
    variables: []
address: /v1/ws?channel=spotPositions
parameters: []
bindings: []
operations: []
sendOperations: []
receiveOperations: []
sendMessages: []
receiveMessages: []
extensions:
  - id: x-parser-unique-object-id
    value: spotPositions
securitySchemes: []

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.