Get User Security
GET/v1/quote/user-securityGet the watchlist (user security list) for a specified group. Returns each security's code, name, lot size, security type, and derivative information.
Request Parameters
| Parameter | Type | Position | Required | Description |
|---|---|---|---|---|
group_name | string | query | yes | Group name (URL-encoded), max 100 characters. Group names can be obtained from user-security-group. |
X-Futu-Client-Nnid | string | header | yes | User identity (Moomoo ID). |
Request Example
bash
curl -G "$ip/v1/quote/user-security" \
--data-urlencode 'group_name=美股期权' \
-H 'X-Futu-Client-Nnid: 99034182' | jqResponse Fields
| Field | Type | Description |
|---|---|---|
code | string | Security code, e.g. US.AAPL. |
name | string | Security name. |
lot_size | int | Shares per lot (options=contract shares, futures=contract multiplier). |
stock_type | string | Security type: STOCK / ETF / WARRANT / IDX / DRVT / FUTURE / FOREX / CRYPTO / BOND etc. |
stock_child_type | int | Security child type numeric value. |
stock_owner | string | Underlying code; empty string for non-derivatives. |
option_type | string | Option direction: ALL (non-option) / CALL / PUT. |
strike_time | string | Option strike date (yyyy-MM-dd); empty string for non-options. |
strike_price | double | Option strike price; 0 for non-options. |
listing_date | string | Listing date (yyyy-MM-dd); empty string if unavailable. |
stock_id | int | Security internal numeric ID. |
main_contract | bool | Whether it is a futures main continuous contract; always false for non-futures. |
last_trade_time | string | Option/futures last trading date (yyyy-MM-dd); empty string if not applicable. |
Supported Markets
- Markets: No restriction. Watchlist can contain securities from HK / US / A-shares / JP / SG / AU / KR / MY / CA and any other market.
- Categories: No restriction. Stocks / ETF / warrants / options / futures / indices / bonds / cryptocurrency etc. can all appear.
- An empty group returns
security_listas an empty array (valid, not an error).
Error Codes
| ret_code | error.code | Trigger Condition | Handling |
|---|---|---|---|
| 0 | -- | Success (empty group returns empty array). | Parse security_list normally. |
| -3 | invalid_parameter | Missing group_name / exceeds 100 chars / group name does not exist. | Validate input; use user-security-group to confirm group name. |
| -9 | permission_denied | Missing X-Futu-Client-Nnid auth header. | Add user identity and retry. |
| -5 | internal_error | Gateway orchestration / backend RPC error. | Retry; contact support if persistent. |
Response Example
json
{
"ret_code": 0,
"ret_msg": "success",
"data": {
"security_list": [
{
"code": "US.SPY260526C735000",
"name": "SPY 260526 735.00C",
"lot_size": 100,
"stock_type": "DRVT",
"stock_child_type": 8002,
"stock_owner": "US.SPY",
"option_type": "CALL",
"strike_time": "2026-05-26",
"strike_price": 735.0,
"listing_date": "",
"stock_id": 507601755,
"main_contract": false,
"last_trade_time": ""
}
]
}
}