Get Smart Balance Info
Query the current status and details of a Smart Balance portfolio, including all legs, fills, fees, and dynamic state.
Endpoint
GET /tt/themis-broker/openapi/portfolios/info
Authentication: HMAC apiKey signature via REST headers. See Authentication.
Parameters
Query string parameters.
| Parameter | Type | Required | Description |
|---|---|---|---|
| portfolioId | long | true | Portfolio ID to query |
Request Example
GET /tt/themis-broker/openapi/portfolios/info?portfolioId=144115188955249274 HTTP/1.1
Authorization: Bearer pkQJQ1
Signalplus-API-Timestamp: 1776665215780
Signalplus-API-Nonce: e43b0618-6965-4b0b-a62d-a3a4f78eed52
Signalplus-API-Signature: <base64 hmac>
Response Example
{
"succ": true,
"code": 0,
"message": "",
"value": {
"uid": "13554298",
"nickname": "tyx100681",
"accountId": "10003443",
"accountName": "rfq-test-01",
"exchange": "DERIBIT",
"portfolioId": "144115188955249274",
"submitTimestamp": "1776668666388",
"updateTimestamp": "1776668676325",
"portfolioStatus": 2,
"portfolioType": "BALANCE",
"balanceTrade": {
"parts": 3,
"eachLimitMs": "15000",
"totalLimitMs": "0",
"totalEndAction": 2,
"totalMs": "9937",
"fees": [
{"fee": "0.00053717", "defaultPvCcy": "BTC"}
]
},
"customizedNote": "themis openapi test",
"lastEditedUid": "13554298",
"legs": [
{
"legId": "216172783206681210",
"side": 1,
"instrument": "BTC-25DEC26-40000-P",
"instrumentType": "OPTION",
"legStatus": 2,
"placeQuantity": "1.5",
"quantityIn": "BTC",
"placePriceOptions": {
"priceType": "DYNAMIC",
"priceIn": "IV",
"price": "0.6",
"dynamicPriceStrategy": "MARK",
"dynamicPriceOffset": "0",
"dynamicMs": "30000"
},
"priceSnapshot": [
{"price": "2144.89", "priceIn": "USD", "placePrice": "2144.89", "placePriceIn": "USD"},
{"price": "0.031", "priceIn": "BTC", "placePrice": "0.031", "placePriceIn": "BTC"},
{"price": "0.6", "priceIn": "IV", "placePrice": "0.6", "placePriceIn": "IV"}
],
"timeInForce": 1,
"postOnly": false,
"reduceOnly": false,
"hidden": false,
"pendingPrice": null,
"filledAvgPrice": "0.155",
"filledQuantity": "1.5",
"remainingQuantity": "0",
"cancelledQuantity": "0",
"cancelType": null,
"cancelledReason": null,
"fee": "0.00045",
"exOrderId": null,
"forCcy": "BTC",
"domCcy": "USD",
"markCcy": "BTC",
"notionalCcy": "BTC",
"defaultPvCcy": "BTC",
"tradeMode": null,
"positionSide": null,
"leverage": null,
"updateTimestamp": "1776668678243",
"comboLegs": []
}
]
}
}
Response
Top-level fields inside
value.
| Name | Type | Description |
|---|---|---|
| uid | string | User ID |
| nickname | string | User display name |
| accountId | string | Account ID (stringified long) |
| accountName | string | Account display name |
| exchange | string | DERIBIT |
| portfolioId | string | Portfolio ID (stringified long) |
| submitTimestamp | string | Submit time in ms |
| updateTimestamp | string | Last update time in ms |
| portfolioStatus | int | 1=PENDING/ACTIVE, 2=FILLED, 3=CANCELLED (see Enum Reference) |
| portfolioType | string | BALANCE |
| balanceTrade | object | Non-null when portfolioType = BALANCE; see below |
| customizedNote | string | User-supplied note at submit |
| lastEditedUid | string | UID of last editor |
| legs | array | Array of Leg objects; per-leg runtime state |
balanceTradefields.
| Name | Type | Description |
|---|---|---|
| parts | int | Configured split count |
| eachLimitMs | string | Configured per-part time budget (ms) |
| totalLimitMs | string | Configured total time budget (ms); "0" disables |
| totalEndAction | int | 1=CANCEL_REMAINING / 2=FILL_BY_MARKET |
| totalMs | string | Actual elapsed ms — running value while in-flight, final value when terminal |
| fees | array | Aggregate fee per settlement ccy: [{fee, defaultPvCcy}, ...] |
legs[].Legfields — info-side shape.
| Name | Type | Description |
|---|---|---|
| legId | string | Leg ID (stringified long) |
| side | int | 1=BUY / 2=SELL |
| instrument | string | Exchange symbol |
| instrumentType | string | OPTION / PERPETUAL / DELIVERY_FUTURES / SPOT |
| legStatus | int | 1=ACTIVE/PENDING, 2=FILLED, 3=CANCELLED, 4=CANCELLING |
| placeQuantity | string | Placed amount |
| quantityIn | string | Denomination currency |
| placePriceOptions | object | Nested price configuration; see below |
| priceSnapshot | array | [{price, priceIn, placePrice, placePriceIn}, ...] reference prices at submit |
| timeInForce | int | 1=GTC / 2=IOC / 3=FOK / 4=GTD |
| postOnly | boolean | |
| reduceOnly | boolean | |
| hidden | boolean | |
| pendingPrice | string | Current dynamic price (null if never repriced) |
| filledAvgPrice | string | Weighted average fill price |
| filledQuantity | string | Total filled |
| remainingQuantity | string | Unfilled quantity |
| cancelledQuantity | string | Cancelled quantity |
| cancelType | int | Non-null only when cancelled: 1=by system, 2=by user, 5=by no dynamic price |
| cancelledReason | string | Human-readable cancel reason |
| fee | string | Per-leg fee (denominated in defaultPvCcy) |
| exOrderId | string | Exchange-side order ID (may be null) |
| forCcy | string | Foreign currency |
| domCcy | string | Domestic currency |
| markCcy | string | Mark currency |
| notionalCcy | string | Notional currency |
| defaultPvCcy | string | Default PV currency |
| tradeMode | int | 1=CASH / 2=CROSS / 3=ISOLATED |
| positionSide | int | 1=LONG / 2=SHORT / 3=NET |
| leverage | string | Leverage multiplier |
| updateTimestamp | string | Leg last update time in ms |
| comboLegs | array | Combo sub-legs (empty for native legs) |
| priority | boolean | true if this leg is the priority (leading) leg that drives portfolio pacing; others follow by ratio. Absent or false otherwise |
| hedge | boolean | true if this leg is an auto-derived hedge leg (non-option leg in a mixed option+linear portfolio). Absent or false otherwise |
placePriceOptionsfields.
| Name | Type | Description |
|---|---|---|
| priceType | string | LIMIT / MARKET / DYNAMIC |
| priceIn | string | USD / USDT / USDC / BTC / IV |
| price | string | Configured price |
| dynamicPriceStrategy | string | MID / MARK / MODEL / BID / ASK (non-null when priceType=DYNAMIC) |
| dynamicPriceOffset | string | Offset from dynamic reference |
| dynamicMs | string | Reprice interval in ms |
Naming inconsistency across surfaces — the same conceptual "price config" is named differently:
Submit request body →
leg.priceOptionsInfo response →
leg.placePriceOptions(this document)WebSocket
trade-newspush → flatplacePrice/placePriceIn/placePriceLabeldirectly on legClient mapping code must handle all three shapes.