Messages
{
"message": "emitOptionsPositions",
"content": {
"clientRequestId": "b8c56794-c7f8-467d-b331-be8c765a5378",
"market": "BTC-10JUL26-55000-C"
}
}{
"resultType": "optionsPositions",
"market": "BTC-10JUL26-55000-C",
"data": {
"positions": [
{
"contract": "BTC-10JUL26-55000-C",
"side": "long",
"optionType": "C",
"qty": "1",
"value": "6948.86",
"fees": "3.47443",
"entryPrice": "6948.86",
"markPrice": "7194.0717439",
"markIV": "0.490087689370473",
"underlyingPrice": "62142.5973392596",
"breakEvenPrice": "61952.33443",
"initialMargin": "0",
"realizedPnl": "0",
"unrealizedPnl": "245.2117439",
"notionalValue": "7194.0717439",
"updatedAt": 1783079880460
}
],
"statusCode": 200,
"clientRequestId": "b8c56794-c7f8-467d-b331-be8c765a5378"
}
}{
"resultType": "optionsPositionsDelta",
"market": "BTC-10JUL26-55000-C",
"data": {
"positions": [
{
"contract": "BTC-10JUL26-55000-C",
"side": "long",
"optionType": "C",
"qty": "1",
"value": "6948.86",
"fees": "3.47443",
"entryPrice": "6948.86",
"markPrice": "7250.5",
"markIV": "0.4915",
"underlyingPrice": "62200.1",
"breakEvenPrice": "61952.33443",
"initialMargin": "0",
"realizedPnl": "0",
"unrealizedPnl": "301.64",
"notionalValue": "7250.5",
"updatedAt": 1783351516417
}
],
"statusCode": 200
}
}WebSocket API Reference
Positions Stream
Open positions with mark price, margin, and PnL.
WSS
?product=options&market=
{market}
&expiration=
{expiration}
&strike=
{strike}
&type=
{type}
&subscriptions=optionsPositions
This stream is available on the Closed Positions Arrive as
When a position is closed, the delta reports it with
optionsPositions subscription. It provides your open option positions with mark price, margin, and PnL.
Snapshot vs. Delta
TheemitOptionsPositions request returns a snapshot via optionsPositions. Once subscribed, optionsPositionsDelta messages carry changed positions in the same shape. A delta has no clientRequestId — that is what distinguishes the live push from a snapshot response. The snapshot reaches you only while you hold optionsPositions with a filter covering the request’s market.
Closed Positions Arrive as flat
When a position is closed, the delta reports it with side flat and qty 0. This is the only message that tells you the position is gone.
Handle
flat explicitly: remove the position from your book when you receive it. A client that only switches on long and short will ignore the message and keep showing a position it no longer holds — no further delta and no snapshot will ever correct it, because the snapshot omits closed positions entirely.flat only ever appears on a delta. The emitOptionsPositions snapshot returns open positions only, so a closed position is simply absent from it.
See Position Metrics for how value, notionalValue, unrealizedPnl, and breakEvenPrice are derived.Messages
{
"message": "emitOptionsPositions",
"content": {
"clientRequestId": "b8c56794-c7f8-467d-b331-be8c765a5378",
"market": "BTC-10JUL26-55000-C"
}
}{
"resultType": "optionsPositions",
"market": "BTC-10JUL26-55000-C",
"data": {
"positions": [
{
"contract": "BTC-10JUL26-55000-C",
"side": "long",
"optionType": "C",
"qty": "1",
"value": "6948.86",
"fees": "3.47443",
"entryPrice": "6948.86",
"markPrice": "7194.0717439",
"markIV": "0.490087689370473",
"underlyingPrice": "62142.5973392596",
"breakEvenPrice": "61952.33443",
"initialMargin": "0",
"realizedPnl": "0",
"unrealizedPnl": "245.2117439",
"notionalValue": "7194.0717439",
"updatedAt": 1783079880460
}
],
"statusCode": 200,
"clientRequestId": "b8c56794-c7f8-467d-b331-be8c765a5378"
}
}{
"resultType": "optionsPositionsDelta",
"market": "BTC-10JUL26-55000-C",
"data": {
"positions": [
{
"contract": "BTC-10JUL26-55000-C",
"side": "long",
"optionType": "C",
"qty": "1",
"value": "6948.86",
"fees": "3.47443",
"entryPrice": "6948.86",
"markPrice": "7250.5",
"markIV": "0.4915",
"underlyingPrice": "62200.1",
"breakEvenPrice": "61952.33443",
"initialMargin": "0",
"realizedPnl": "0",
"unrealizedPnl": "301.64",
"notionalValue": "7250.5",
"updatedAt": 1783351516417
}
],
"statusCode": 200
}
}market
type:string
required
A specific market (e.g. BTC-USDT) or ALL.
expiration
type:string
required
Contract expiration, e.g. 24JUN26. Requires market; omit to match every expiration.
strike
type:string
required
Strike price, e.g. 62000. Requires expiration; omit to match every strike.
type
type:string
required
C (call) or P (put). Requires strike; omit to match both.
Sec-WebSocket-Protocol
type:httpApiKey
Supply as authorization#<JWT> during the WebSocket handshake.
Emit Options Positions
type:object
Positions Snapshot
type:object
Response to emitOptionsPositions.
Position Delta
type:object
Pushed whenever your positions change; carries changed positions in the same shape as the snapshot. A delta has no clientRequestId — that is what distinguishes the live push from a snapshot response. A closed position arrives with side flat and qty 0; this is the only message that tells you the position is gone.