REST API Complete Reference¶
Added in v1.4.85. Auto-generated by the FutuOpenD-rs build pipeline and refreshed with every daemon release.
This page covers all 127 REST endpoints of futu-opend,
organized into 9 functional groups. Each endpoint documents:
- HTTP method + URL
- Backend
proto_id - Required auth scope
- Parameter docs (in proto definitions)
- Error hints
- curl example
Quick nav:
| Group | Endpoints | Link |
|---|---|---|
| System / Status | 7 | System / Status |
| Quote Subscriptions | 5 | Quote Subscriptions |
| Quote Queries | 20 | Quote Queries |
| Plates / Filter / Metadata | 8 | Plates / Filter / Metadata |
| Reference / Derivatives | 48 | Reference / Derivatives |
| Price Reminders | 2 | Price Reminders |
| Trading Accounts (Read) | 27 | Trading Accounts (Read) |
| Trading Write | 7 | Trading Write |
| Admin | 3 | Admin |
Global conventions¶
- Base URL:
http://127.0.0.1:22499(default REST port, change via--rest-port) - Content-Type:
application/json - Auth:
Authorization: Bearer <API_KEY>(ifkeys.jsonis configured; otherwise legacy mode without auth — and since v1.4.86 fail-closed is the production default) -
Response envelope:
ret_type == 0means success; other values see common error codes. -
Field naming: v1.4.83+ accepts aliases (SDK-style
code/stocks/trd_env); canonical is snake_case (symbol/symbols/env). At the REST layer, enum fields (trd_market/trd_env/kl_type/op/reference_type…) accept int only (½/3...); the string form ("HK"/"US"/"day") is supported only at the MCP layer (futu_*tools) which auto-converts to int. Unknown fields since v1.4.84 loud fail (unknown fielderror). -
Rate / limits: Controlled via startup flags (
--allowed-markets,--max-order-value, etc.). Seedocs/guide/auth.en.md.
System / Status¶
Health checks are public. /api/* system read endpoints stay public in legacy mode without keys.json, and use the listed scope in scope-mode.
GET /api/delay-statistics¶
proto_id: GET_DELAY_STATISTICS (1007)
Scope: legacy/public: —; scope-mode: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
POST /api/delay-statistics¶
proto_id: GET_DELAY_STATISTICS (1007)
Scope: legacy/public: —; scope-mode: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"type_list":[1],"qot_push_stage":1}' \
http://127.0.0.1:22499/api/delay-statistics
GET /api/global-state¶
proto_id: GET_GLOBAL_STATE (1002)
Scope: legacy/public: —; scope-mode: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
GET /api/ping¶
proto_id: GET_GLOBAL_STATE (1002)
Scope: legacy/public: —; scope-mode: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
GET /api/push-subscriber-info¶
proto_id: — (non-proto / no backend forwarding)
Scope: legacy/public: —; scope-mode: acc:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
GET /api/quote-rights¶
proto_id: TEST_CMD (1008)
Scope: legacy/public: —; scope-mode: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
GET /api/user-info¶
proto_id: GET_USER_INFO (1005)
Scope: legacy/public: —; scope-mode: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
Quote Subscriptions¶
Subscribe/unsubscribe quote push, query subscription state. Receive push via WebSocket /ws. Since v1.4.106 /api/subscribe and /api/unsubscribe require qot:state (user-state write); transitional qot:read keys still accepted.
POST /api/query-subscription¶
proto_id: QOT_GET_SUB_INFO (3003)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"is_req_all_conn":true}' \
http://127.0.0.1:22499/api/query-subscription
GET /api/sub-info¶
proto_id: QOT_GET_SUB_INFO (3003)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
POST /api/subscribe¶
proto_id: QOT_SUB (3001)
Scope: qot:state
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"symbols":["HK.00700"],"sub_types":[1],"is_sub_or_un_sub":true}' \
http://127.0.0.1:22499/api/subscribe
POST /api/unsubscribe¶
proto_id: QOT_SUB (3001)
Scope: qot:state
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"symbols":["HK.00700"],"sub_types":[1],"is_sub_or_un_sub":false}' \
http://127.0.0.1:22499/api/unsubscribe
GET /ws¶
proto_id: — (non-proto / no backend forwarding)
Scope: legacy/public: —; scope-mode: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Legacy mode without keys.json stays public for compatibility. In scope-mode,
the handshake must carry ?token= or Authorization: Bearer <key>, and the key
must have qot:read.
Example:
Quote Queries¶
Real-time quotes, K-line, order book, broker queue, time-sharing, ticker, ticker statistics, risk-free rate, spread table, and quote quota. Requires qot:read.
POST /api/broker¶
proto_id: QOT_GET_BROKER (3014)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"symbol":"HK.00700"}' \
http://127.0.0.1:22499/api/broker
POST /api/capital-distribution¶
proto_id: QOT_GET_CAPITAL_DISTRIBUTION (3212)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"symbol":"HK.00700"}' \
http://127.0.0.1:22499/api/capital-distribution
POST /api/capital-flow¶
proto_id: QOT_GET_CAPITAL_FLOW (3211)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"symbol":"HK.00700","period_type":1}' \
http://127.0.0.1:22499/api/capital-flow
POST /api/history-kl-quota¶
proto_id: QOT_REQUEST_HISTORY_KL_QUOTA (3104)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"market":1,"acc_id":123456,"env":1,"begin_time":"2026-01-01 00:00:00","end_time":"2026-04-01 23:59:59"}' \
http://127.0.0.1:22499/api/history-kl-quota
POST /api/history-kline¶
proto_id: QOT_REQUEST_HISTORY_KL (3103)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Note: REST kl_type accepts integers only (e.g. 1=Day / 2=Week / 3=Month / 5=Min1 / 6=Min5 / 7=Min15 / 8=Min30 / 9=Min60 / 10=Min3 / 11=Min4); the string form ("day") is supported only at the MCP layer. Field count is alias-mapped to proto req_num (both accepted).
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"symbol":"HK.00700","rehab_type":0,"kl_type":1,"max_count":100,"begin_time":"2026-01-01 00:00:00","end_time":"2026-04-01 23:59:59"}' \
http://127.0.0.1:22499/api/history-kline
POST /api/kline¶
proto_id: QOT_GET_KL (3006)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Note: Same as /api/history-kline — REST kl_type accepts integers only; proto field is canonical req_num, count is the v1.4.83+ alias.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"symbol":"HK.00700","rehab_type":0,"kl_type":1,"req_num":100}' \
http://127.0.0.1:22499/api/kline
POST /api/market-state¶
proto_id: QOT_GET_MARKET_STATE (3223)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"symbols":["HK.00700"]}' \
http://127.0.0.1:22499/api/market-state
POST /api/orderbook¶
proto_id: QOT_GET_ORDER_BOOK (3012)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"symbol":"HK.00700","depth":10}' \
http://127.0.0.1:22499/api/orderbook
POST /api/quote¶
proto_id: QOT_GET_BASIC_QOT (3004)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"symbol":"HK.00700"}' \
http://127.0.0.1:22499/api/quote
GET /api/risk-free-rate¶
proto_id: QOT_GET_RISK_FREE_RATE (20231)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Purpose: Risk-free rate for HK / US / JP, required for Black-Scholes option pricing.
Field table (no required field):
| Field | Type | Required | Description |
|---|---|---|---|
rate_time |
int64 | optional | Unix ms timestamp; omit for latest rate |
Response: s2c includes hk_rate_pct / us_rate_pct / jp_rate_pct (percent, e.g. 4.5 for 4.5%). The raw uint64 (×10^9) values are also exposed so callers can verify on their own.
Example:
POST /api/risk-free-rate¶
proto_id: QOT_GET_RISK_FREE_RATE (20231)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Purpose: Risk-free rate for HK / US / JP, required for Black-Scholes option pricing.
Field table (no required field):
| Field | Type | Required | Description |
|---|---|---|---|
rate_time |
int64 | optional | Unix ms timestamp; omit for latest rate |
Response: s2c includes hk_rate_pct / us_rate_pct / jp_rate_pct (percent, e.g. 4.5 for 4.5%). The raw uint64 (×10^9) values are also exposed so callers can verify on their own.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{}' \
http://127.0.0.1:22499/api/risk-free-rate
POST /api/rt¶
proto_id: QOT_GET_RT (3008)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"symbol":"HK.00700"}' \
http://127.0.0.1:22499/api/rt
POST /api/snapshot¶
proto_id: QOT_GET_SECURITY_SNAPSHOT (3203)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"symbol":"HK.00700"}' \
http://127.0.0.1:22499/api/snapshot
GET /api/spread-table¶
proto_id: QOT_GET_SPREAD_TABLE (6503)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Purpose: Spread table for tick-size lookup across price bands (e.g. HK stocks 0.01~0.25 → step 0.001). Required for client-side price validation in PlaceOrder / ModifyOrder.
Field table (no business parameter):
| Field | Type | Required | Description |
|---|---|---|---|
reserved |
int | optional | Placeholder; always returns the full spread tables |
Response: s2c.spread_table_list contains each spread table (spread_code + spread_item_list); each item carries price_from / price_to / value as f64 (raw int64 ÷ 1e9 already applied).
Example:
POST /api/spread-table¶
proto_id: QOT_GET_SPREAD_TABLE (6503)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Purpose: Spread table for tick-size lookup across price bands (e.g. HK stocks 0.01~0.25 → step 0.001). Required for client-side price validation in PlaceOrder / ModifyOrder.
Field table (no business parameter):
| Field | Type | Required | Description |
|---|---|---|---|
reserved |
int | optional | Placeholder; always returns the full spread tables |
Response: s2c.spread_table_list contains each spread table (spread_code + spread_item_list); each item carries price_from / price_to / value as f64 (raw int64 ÷ 1e9 already applied).
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{}' \
http://127.0.0.1:22499/api/spread-table
POST /api/static-info¶
proto_id: QOT_GET_STATIC_INFO (3202)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"symbols":["HK.00700","US.AAPL"]}' \
http://127.0.0.1:22499/api/static-info
POST /api/ticker¶
proto_id: QOT_GET_TICKER (3010)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"symbol":"HK.00700","count":50}' \
http://127.0.0.1:22499/api/ticker
POST /api/ticker-statistic¶
proto_id: QOT_GET_TICKER_STATISTIC (6365)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Purpose: Ticker statistics. Aggregates per-tick deals into time intervals (cumulative volume / turnover / avg price).
Field table:
| Field | Type | Required | Description |
|---|---|---|---|
security or symbol |
object/string | ✅ | Underlying; shorthand "HK.00700" |
interval_type |
int | ✅ | Aggregation granularity enum (see proto) |
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"symbol":"HK.00700","interval_type":1}' \
http://127.0.0.1:22499/api/ticker-statistic
POST /api/ticker-statistic-detail¶
proto_id: QOT_GET_TICKER_STATISTIC_DETAIL (6366)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"security":{"market":1,"code":"00700"}}' \
http://127.0.0.1:22499/api/ticker-statistic-detail
POST /api/used-quota¶
proto_id: GET_USED_QUOTA (1010)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{}' \
http://127.0.0.1:22499/api/used-quota
Plates / Filter / Metadata¶
Plate list/stocks, stock filter, trading days, suspend, code change, IPO calendar.
POST /api/code-change¶
proto_id: QOT_GET_CODE_CHANGE (3216)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"search":{"code_change_type_list":[1],"time_filter_list":[{"type":1,"begin_time":"2026-01-01","end_time":"2026-04-01"}]}}' \
http://127.0.0.1:22499/api/code-change
POST /api/ipo-list¶
proto_id: QOT_GET_IPO_LIST (3217)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Field table:
| Field | Type | Required | Description |
|---|---|---|---|
market |
int/string | ✅ | IPO endpoint-local market: 1/HK, 2/HK_FUTURE, 11/US, 21/CN/SH, 22/SZ, 31/SG, 41/JP, 61/MY |
Note: The backend distinguishes HK / US / A-share / SG / JP / MY. Wrong market returns invalid-market.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"c2s":{"market":1}}' \
http://127.0.0.1:22499/api/ipo-list
POST /api/list-plates¶
proto_id: QOT_GET_PLATE_SET (3204)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"market":1,"plate_set_type":0}' \
http://127.0.0.1:22499/api/list-plates
POST /api/plate-security¶
proto_id: QOT_GET_PLATE_SECURITY (3205)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"plate":{"market":1,"code":"BK1001"}}' \
http://127.0.0.1:22499/api/plate-security
POST /api/plate-set¶
proto_id: QOT_GET_PLATE_SET (3204)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"market":1,"plate_set_type":0}' \
http://127.0.0.1:22499/api/plate-set
POST /api/stock-filter¶
proto_id: QOT_STOCK_FILTER (3215)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"begin":0,"num":50,"market":1,"plate":{"market":1,"code":"BK1001"}}' \
http://127.0.0.1:22499/api/stock-filter
POST /api/suspend¶
proto_id: QOT_GET_SUSPEND (3201)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"symbols":["HK.00700"],"begin_time":"2026-01-01","end_time":"2026-04-01"}' \
http://127.0.0.1:22499/api/suspend
POST /api/trading-days¶
proto_id: QOT_REQUEST_TRADE_DATE (3219)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"market":1,"begin_time":"2026-01-01","end_time":"2026-04-01"}' \
http://127.0.0.1:22499/api/trading-days
Reference / Derivatives¶
Warrant references, option chain, option expiration dates, future info, rehab, watchlist, holding change, and v10.6 F10/financials/research/valuation/corporate-actions/shareholders/insider/screen/unusual endpoints. Since v1.4.106 /api/modify-user-security requires qot:state (watchlist mutation); transitional qot:read keys still accepted.
POST /api/company-executive-background¶
proto_id: QOT_GET_COMPANY_EXECUTIVE_BACKGROUND (3245)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"security":{"market":1,"code":"00700"},"leader_name":"Pony Ma"}' \
http://127.0.0.1:22499/api/company-executive-background
POST /api/company-executives¶
proto_id: QOT_GET_COMPANY_EXECUTIVES (3244)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"security":{"market":1,"code":"00700"}}' \
http://127.0.0.1:22499/api/company-executives
POST /api/company-operational-efficiency¶
proto_id: QOT_GET_COMPANY_OPERATIONAL_EFFICIENCY (3246)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"security":{"market":1,"code":"00700"}}' \
http://127.0.0.1:22499/api/company-operational-efficiency
POST /api/company-profile¶
proto_id: QOT_GET_COMPANY_PROFILE (3243)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"security":{"market":1,"code":"00700"}}' \
http://127.0.0.1:22499/api/company-profile
POST /api/corporate-actions-buybacks¶
proto_id: QOT_GET_CORPORATE_ACTIONS_BUYBACKS (3235)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"security":{"market":1,"code":"00700"}}' \
http://127.0.0.1:22499/api/corporate-actions-buybacks
POST /api/corporate-actions-dividends¶
proto_id: QOT_GET_CORPORATE_ACTIONS_DIVIDENDS (3234)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"security":{"market":1,"code":"00700"}}' \
http://127.0.0.1:22499/api/corporate-actions-dividends
POST /api/corporate-actions-stock-splits¶
proto_id: QOT_GET_CORPORATE_ACTIONS_STOCK_SPLITS (3236)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"security":{"market":1,"code":"00700"}}' \
http://127.0.0.1:22499/api/corporate-actions-stock-splits
POST /api/daily-short-volume¶
proto_id: QOT_GET_DAILY_SHORT_VOLUME (3248)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"security":{"market":1,"code":"00700"}}' \
http://127.0.0.1:22499/api/daily-short-volume
POST /api/derivative-unusual¶
proto_id: QOT_GET_DERIVATIVE_UNUSUAL (3803)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"stock_symbol":"HK.00700"}' \
http://127.0.0.1:22499/api/derivative-unusual
POST /api/financial-unusual¶
proto_id: QOT_GET_FINANCIAL_UNUSUAL (3802)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"stock_symbol":"HK.00700"}' \
http://127.0.0.1:22499/api/financial-unusual
POST /api/financials-earnings-price-history¶
proto_id: QOT_GET_FINANCIALS_EARNINGS_PRICE_HISTORY (3226)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"security":{"market":1,"code":"00700"}}' \
http://127.0.0.1:22499/api/financials-earnings-price-history
POST /api/financials-earnings-price-move¶
proto_id: QOT_GET_FINANCIALS_EARNINGS_PRICE_MOVE (3225)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"security":{"market":1,"code":"00700"}}' \
http://127.0.0.1:22499/api/financials-earnings-price-move
POST /api/financials-revenue-breakdown¶
proto_id: QOT_GET_FINANCIALS_REVENUE_BREAKDOWN (3228)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"security":{"market":1,"code":"00700"}}' \
http://127.0.0.1:22499/api/financials-revenue-breakdown
POST /api/financials-statements¶
proto_id: QOT_GET_FINANCIALS_STATEMENTS (3227)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"security":{"market":1,"code":"00700"}}' \
http://127.0.0.1:22499/api/financials-statements
POST /api/future-info¶
proto_id: QOT_GET_FUTURE_INFO (3218)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Field table:
| Field | Type | Required | Description |
|---|---|---|---|
security_list or symbols |
array | ✅ | Futures contracts; e.g. ["HK.HSImain", "US.NQmain"] |
Note: An empty security_list triggers a backend no stock specified error; supply at least one contract.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"c2s":{"securityList":[{"market":1,"code":"HSImain"}]}}' \
http://127.0.0.1:22499/api/future-info
POST /api/get-reference¶
proto_id: QOT_GET_REFERENCE (3206)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Field table:
| Field | Type | Required | Description |
|---|---|---|---|
security or symbol |
object/string | ✅ | Underlying stock; shorthand "HK.00700" |
reference_type |
int | ✅ | 1=Warrant / 2=Future (main-continuous related contracts) |
Option NOT supported: The backend ReferenceType proto only defines Warrant / Future. Passing "reference_type":3 returns unsupported reference type. The MCP tool futu_get_reference likewise rejects anything other than warrant / future.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"symbol":"HK.00700","reference_type":1}' \
http://127.0.0.1:22499/api/get-reference
POST /api/holding-change¶
proto_id: QOT_GET_HOLDING_CHANGE_LIST (3208)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
⚠️ Deprecated: The upstream backend abandoned this endpoint after 2020-12-21. Calls return
ret_type=-1with"will be abandoned after 2020-12-21". No longer guaranteed to work; do not use in new code.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"symbol":"HK.00700","holder_category":1,"begin_time":"2026-01-01","end_time":"2026-04-01"}' \
http://127.0.0.1:22499/api/holding-change
POST /api/insider-holder-list¶
proto_id: QOT_GET_INSIDER_HOLDER_LIST (3241)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"security":{"market":1,"code":"00700"}}' \
http://127.0.0.1:22499/api/insider-holder-list
POST /api/insider-trade-list¶
proto_id: QOT_GET_INSIDER_TRADE_LIST (3242)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"security":{"market":1,"code":"00700"}}' \
http://127.0.0.1:22499/api/insider-trade-list
POST /api/modify-user-security¶
proto_id: QOT_MODIFY_USER_SECURITY (3214)
Scope: qot:state
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Stateful write: Mutates the user's watchlist. Unknown fields are loud-fail rejected since v1.4.84, but a successful call cannot be rolled back.
Field table (REST accepts int enums only):
| Field | Type | Required | Description |
|---|---|---|---|
group_name |
string | ✅ | Group name; ties resolve to first match |
op |
int | ✅ | 1=Add / 2=Del / 3=MoveOut |
security_list |
array | ✅ | Stock list; each item {market: int, code: string} |
No top-level symbol/symbols shorthand: must use explicit security_list.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"group_name":"自选","op":1,"security_list":[{"market":1,"code":"00700"}]}' \
http://127.0.0.1:22499/api/modify-user-security
POST /api/option-chain¶
proto_id: QOT_GET_OPTION_CHAIN (3209)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Field table:
| Field | Type | Required | Description |
|---|---|---|---|
owner or symbol |
object/string | ✅ | Underlying stock (HK/US blue chips, HSI/HSCEI/major US indices); shorthand "HK.00700" |
begin_time |
string | ✅ | Strike date start (YYYY-MM-DD) |
end_time |
string | ✅ | Strike date end (YYYY-MM-DD) |
condition |
object | optional | Option filter (type / strike range / quote) |
Owner shorthand: Only top-level "owner":"HK.00700" auto-expands to a Security object; do not pass "security":{...} explicitly (proto field is owner, not security).
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"owner":"HK.00700","begin_time":"2026-05-01","end_time":"2026-06-01"}' \
http://127.0.0.1:22499/api/option-chain
POST /api/option-exercise-probability¶
proto_id: QOT_GET_OPTION_EXERCISE_PROBABILITY (3251)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"security":{"market":11,"code":"AAPL260116C200000"}}' \
http://127.0.0.1:22499/api/option-exercise-probability
POST /api/option-expiration-date¶
proto_id: QOT_GET_OPTION_EXPIRATION_DATE (3224)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Field table:
| Field | Type | Required | Description |
|---|---|---|---|
owner or symbol |
object/string | ✅ | Underlying stock; shorthand "HK.00700" |
index_option_type |
int | optional | HSI / HSCEI only: IndexOptionType |
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"owner":"HK.00700"}' \
http://127.0.0.1:22499/api/option-expiration-date
POST /api/option-quote¶
proto_id: QOT_GET_OPTION_QUOTE (3255)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"c2s":{"multi_legs":[{"security":{"market":11,"code":"AAPL260116C200000"},"side":1,"qty_ratio":1.0}]}}' \
http://127.0.0.1:22499/api/option-quote
POST /api/option-screen¶
proto_id: QOT_OPTION_SCREEN (3253)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"page_from":0,"page_count":20}' \
http://127.0.0.1:22499/api/option-screen
POST /api/option-strategy¶
proto_id: QOT_GET_OPTION_STRATEGY (3256)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"c2s":{"owner":{"market":11,"code":"AAPL"},"option_strategy":1}}' \
http://127.0.0.1:22499/api/option-strategy
POST /api/option-strategy-analysis¶
proto_id: QOT_GET_OPTION_STRATEGY_ANALYSIS (3257)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"c2s":{"multi_legs":[{"security":{"market":11,"code":"AAPL260116C200000"},"side":1,"qty_ratio":1.0}]}}' \
http://127.0.0.1:22499/api/option-strategy-analysis
POST /api/option-strategy-spread¶
proto_id: QOT_GET_OPTION_STRATEGY_SPREAD (3258)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"c2s":{"owner":{"market":11,"code":"AAPL"},"option_strategy":4}}' \
http://127.0.0.1:22499/api/option-strategy-spread
POST /api/option-volatility¶
proto_id: QOT_GET_OPTION_VOLATILITY (3250)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"security":{"market":11,"code":"AAPL260116C200000"},"query_time_period":2,"hv_time_period":30}' \
http://127.0.0.1:22499/api/option-volatility
POST /api/owner-plate¶
proto_id: QOT_GET_OWNER_PLATE (3207)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Field table:
| Field | Type | Required | Description |
|---|---|---|---|
security_list or symbols |
array | ✅ | Stock array; shorthand ["HK.00700"] auto-expands |
Note: Empty security_list returns empty plate list with no business meaning; supply at least one stock.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"symbols":["HK.00700"]}' \
http://127.0.0.1:22499/api/owner-plate
POST /api/reference¶
proto_id: QOT_GET_REFERENCE (3206)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Note: /api/reference is equivalent to /api/get-reference (same proto_id 3206); /api/get-reference is the v1.4.74 alias. Same field contract — see /api/get-reference section.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"symbol":"HK.00700","reference_type":1}' \
http://127.0.0.1:22499/api/reference
POST /api/rehab¶
proto_id: QOT_REQUEST_REHAB (3105)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"symbols":["HK.00700"]}' \
http://127.0.0.1:22499/api/rehab
POST /api/research-analyst-consensus¶
proto_id: QOT_GET_RESEARCH_ANALYST_CONSENSUS (3229)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"security":{"market":1,"code":"00700"}}' \
http://127.0.0.1:22499/api/research-analyst-consensus
POST /api/research-morningstar-report¶
proto_id: QOT_GET_RESEARCH_MORNINGSTAR_REPORT (3231)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"security":{"market":1,"code":"00700"}}' \
http://127.0.0.1:22499/api/research-morningstar-report
POST /api/research-rating-summary¶
proto_id: QOT_GET_RESEARCH_RATING_SUMMARY (3230)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"security":{"market":1,"code":"00700"}}' \
http://127.0.0.1:22499/api/research-rating-summary
POST /api/shareholders-holder-detail¶
proto_id: QOT_GET_SHAREHOLDERS_HOLDER_DETAIL (3239)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"security":{"market":1,"code":"00700"}}' \
http://127.0.0.1:22499/api/shareholders-holder-detail
POST /api/shareholders-holding-changes¶
proto_id: QOT_GET_SHAREHOLDERS_HOLDING_CHANGES (3238)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"security":{"market":1,"code":"00700"}}' \
http://127.0.0.1:22499/api/shareholders-holding-changes
POST /api/shareholders-institutional¶
proto_id: QOT_GET_SHAREHOLDERS_INSTITUTIONAL (3240)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"security":{"market":1,"code":"00700"}}' \
http://127.0.0.1:22499/api/shareholders-institutional
POST /api/shareholders-overview¶
proto_id: QOT_GET_SHAREHOLDERS_OVERVIEW (3237)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"security":{"market":1,"code":"00700"}}' \
http://127.0.0.1:22499/api/shareholders-overview
POST /api/short-interest¶
proto_id: QOT_GET_SHORT_INTEREST (3249)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"security":{"market":1,"code":"00700"}}' \
http://127.0.0.1:22499/api/short-interest
POST /api/stock-screen¶
proto_id: QOT_STOCK_SCREEN (3252)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"page_from":0,"page_count":20}' \
http://127.0.0.1:22499/api/stock-screen
POST /api/technical-unusual¶
proto_id: QOT_GET_TECHNICAL_UNUSUAL (3801)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"stock_symbol":"HK.00700"}' \
http://127.0.0.1:22499/api/technical-unusual
POST /api/top-ten-buy-sell-brokers¶
proto_id: QOT_GET_TOP_TEN_BUY_SELL_BROKERS (3247)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"security":{"market":1,"code":"00700"}}' \
http://127.0.0.1:22499/api/top-ten-buy-sell-brokers
POST /api/user-security¶
proto_id: QOT_GET_USER_SECURITY (3213)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"group_name":"自选"}' \
http://127.0.0.1:22499/api/user-security
POST /api/valuation-detail¶
proto_id: QOT_GET_VALUATION_DETAIL (3232)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"security":{"market":1,"code":"00700"}}' \
http://127.0.0.1:22499/api/valuation-detail
POST /api/valuation-plate-stock-list¶
proto_id: QOT_GET_VALUATION_PLATE_STOCK_LIST (3233)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"security":{"market":1,"code":"00700"}}' \
http://127.0.0.1:22499/api/valuation-plate-stock-list
POST /api/warrant¶
proto_id: QOT_GET_WARRANT (3210)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Core field table:
| Field | Type | Required | Description |
|---|---|---|---|
begin |
int | ✅ | Start row (pagination) |
num |
int | ✅ | Page size (≤200) |
sort_field |
int | ✅ | WarrantField sort enum |
ascend |
bool | ✅ | Ascending order |
owner or symbol |
object/string | optional | Underlying; shorthand "HK.00700" |
Full field set: includes type_list / issuer_list / strike-price ranges and other filters; see proto definition.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"begin":0,"num":50,"sort_field":1,"ascend":false,"owner":"HK.00700"}' \
http://127.0.0.1:22499/api/warrant
POST /api/warrant-screen¶
proto_id: QOT_WARRANT_SCREEN (3254)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"market_type":1,"page_from":0,"page_count":20}' \
http://127.0.0.1:22499/api/warrant-screen
Price Reminders¶
Query/set/modify/delete price reminders. Since v1.4.106 /api/set-price-reminder requires qot:state; /api/price-reminder (read) stays qot:read.
POST /api/price-reminder¶
proto_id: QOT_GET_PRICE_REMINDER (3221)
Scope: qot:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"symbol":"HK.00700"}' \
http://127.0.0.1:22499/api/price-reminder
POST /api/set-price-reminder¶
proto_id: QOT_SET_PRICE_REMINDER (3220)
Scope: qot:state
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Stateful write: Add / modify / delete a price alert.
Field table (REST accepts int enums only; proto field is type, not reminder_type):
| Field | Type | Required | Description |
|---|---|---|---|
security or symbol |
object/string | ✅ | Stock; shorthand "HK.00700" |
op |
int | ✅ | 1=Add / 2=Del / 3=Enable / 4=Disable / 5=Modify / 6=DelAll |
key |
int64 | for Modify/Del | Alert key from GetPriceReminder |
type |
int | for Add | PriceReminderType (1=PriceUp / 2=PriceDown / ...) |
freq |
int | for Add | PriceReminderFreq (1=Always / 2=OnceADay / 3=OnlyOnce); on Modify the backend preserves the old value when omitted |
value |
f64 | for Add | Alert value (3 decimals max); on Modify the backend preserves the old value when omitted |
note |
string | optional | Note (≤20 chars in CN) |
Add (op=1) required: type + freq + value. The gateway aligns with the reference implementation and rejects Add without all three.
Modify (op=5) does not require type / freq / value: the gateway fetches the existing alert first, applies user-provided field overrides, and preserves omitted fields (aligning with the overwrite-style Modify semantics).
reminder_session_list (optional, array): PriceReminderMarketStatus values — 1=Open / 2=USPre / 3=USAfter / 4=USOverNight. Any value outside 1..4 is loud-rejected by the gateway (-1 + error text). For US stocks an empty list defaults to [1, 2, 3]; for non-US securities the list is cleared.
Note: REST does not accept "op":"SetAdd" string form; only MCP layer maps strings to int.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"symbol":"HK.00700","op":1,"type":1,"freq":1,"value":300.0}' \
http://127.0.0.1:22499/api/set-price-reminder
Trading Accounts (Read)¶
Account list, funds, positions, today orders/deals, history orders/deals, max trade qty, margin ratio, order fee. Requires acc:read.
POST /api/acc-cash-flow¶
proto_id: TRD_FLOW_SUMMARY (2226)
Scope: acc:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"market":1,"acc_id":123456,"env":1,"clearing_date":"2026-04-01"}' \
http://127.0.0.1:22499/api/acc-cash-flow
POST /api/account-flag¶
proto_id: TRD_GET_ACCOUNT_FLAG (22705)
Scope: acc:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"acc_id":123456,"env":1}' \
http://127.0.0.1:22499/api/account-flag
GET /api/accounts¶
proto_id: TRD_GET_ACC_LIST (2001)
Scope: acc:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
POST /api/biz-group¶
proto_id: TRD_GET_BIZ_GROUP (22703)
Scope: acc:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"acc_id":123456,"env":1,"market":1}' \
http://127.0.0.1:22499/api/biz-group
POST /api/bond-answer-state¶
proto_id: TRD_GET_BOND_ANSWER_STATE (22709)
Scope: acc:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"acc_id":123456,"env":1}' \
http://127.0.0.1:22499/api/bond-answer-state
POST /api/bond-position-list¶
proto_id: TRD_GET_BOND_POSITION_LIST (22708)
Scope: acc:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"acc_id":123456,"env":1}' \
http://127.0.0.1:22499/api/bond-position-list
POST /api/bond-single-asset¶
proto_id: TRD_GET_BOND_SINGLE_ASSET (22707)
Scope: acc:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"acc_id":123456,"env":1}' \
http://127.0.0.1:22499/api/bond-single-asset
POST /api/bond-total-asset¶
proto_id: TRD_GET_BOND_TOTAL_ASSET (22706)
Scope: acc:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"acc_id":123456,"env":1}' \
http://127.0.0.1:22499/api/bond-total-asset
POST /api/bond-trade-reminder¶
proto_id: TRD_GET_BOND_TRADE_REMINDER (22710)
Scope: acc:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"acc_id":123456,"env":1}' \
http://127.0.0.1:22499/api/bond-trade-reminder
POST /api/cash-detail¶
proto_id: TRD_GET_CASH_DETAIL (22702)
Scope: acc:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"acc_id":123456,"env":1,"flow_id":"<flow_id>"}' \
http://127.0.0.1:22499/api/cash-detail
POST /api/cash-log¶
proto_id: TRD_GET_CASH_LOG (22701)
Scope: acc:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"acc_id":123456,"env":1,"begin_time":"2026-01-01","end_time":"2026-04-01"}' \
http://127.0.0.1:22499/api/cash-log
POST /api/combo-max-trd-qtys¶
proto_id: TRD_GET_COMBO_MAX_TRD_QTYS (2112)
Scope: acc:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"c2s":{"header":{"trd_env":1,"acc_id":123456,"trd_market":2},"combo_legs":[{"security":{"market":11,"code":"AAPL260116C200000"},"side":1,"qty_ratio":1.0},{"security":{"market":11,"code":"AAPL260116C205000"},"side":2,"qty_ratio":1.0}],"qty":1.0,"price":1.0,"order_type":1}}' \
http://127.0.0.1:22499/api/combo-max-trd-qtys
POST /api/flow-summary¶
proto_id: TRD_FLOW_SUMMARY (2226)
Scope: acc:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"market":1,"acc_id":123456,"env":1,"clearing_date":"2026-04-01"}' \
http://127.0.0.1:22499/api/flow-summary
POST /api/funds¶
proto_id: TRD_GET_FUNDS (2101)
Scope: acc:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"market":1,"acc_id":123456,"env":1}' \
http://127.0.0.1:22499/api/funds
POST /api/history-order-fills¶
proto_id: TRD_GET_HISTORY_ORDER_FILL_LIST (2222)
Scope: acc:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"market":1,"acc_id":123456,"env":1,"begin_time":"2026-01-01 00:00:00","end_time":"2026-04-01 23:59:59"}' \
http://127.0.0.1:22499/api/history-order-fills
POST /api/history-orders¶
proto_id: TRD_GET_HISTORY_ORDER_LIST (2221)
Scope: acc:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"market":1,"acc_id":123456,"env":1,"begin_time":"2026-01-01 00:00:00","end_time":"2026-04-01 23:59:59"}' \
http://127.0.0.1:22499/api/history-orders
GET /api/list-accounts¶
proto_id: TRD_GET_ACC_LIST (2001)
Scope: acc:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
POST /api/margin-info¶
proto_id: TRD_GET_MARGIN_INFO (22704)
Scope: acc:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"acc_id":123456,"env":1,"market":1}' \
http://127.0.0.1:22499/api/margin-info
POST /api/margin-ratio¶
proto_id: TRD_GET_MARGIN_RATIO (2223)
Scope: acc:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"market":1,"acc_id":123456,"env":1,"symbols":["HK.00700"]}' \
http://127.0.0.1:22499/api/margin-ratio
POST /api/max-trd-qtys¶
proto_id: TRD_GET_MAX_TRD_QTYS (2111)
Scope: acc:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"market":1,"acc_id":123456,"env":1,"code":"00700","price":300.0,"order_type":1}' \
http://127.0.0.1:22499/api/max-trd-qtys
POST /api/order-fee¶
proto_id: TRD_GET_ORDER_FEE (2225)
Scope: acc:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"acc_id":123456,"env":1,"order_id_ex_list":["987"]}' \
http://127.0.0.1:22499/api/order-fee
POST /api/order-fills¶
proto_id: TRD_GET_ORDER_FILL_LIST (2211)
Scope: acc:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"market":1,"acc_id":123456,"env":1}' \
http://127.0.0.1:22499/api/order-fills
POST /api/orders¶
proto_id: TRD_GET_ORDER_LIST (2201)
Scope: acc:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"market":1,"acc_id":123456,"env":1}' \
http://127.0.0.1:22499/api/orders
POST /api/positions¶
proto_id: TRD_GET_POSITION_LIST (2102)
Scope: acc:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"market":1,"acc_id":123456,"env":1}' \
http://127.0.0.1:22499/api/positions
POST /api/reconfirm-order¶
proto_id: TRD_RECONFIRM_ORDER (2237)
Scope: trade:real or trade:simulate (based on env)
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"acc_id":123456,"order_id":"987","reconfirm_op":1}' \
http://127.0.0.1:22499/api/reconfirm-order
GET /api/token-state¶
proto_id: GET_TOKEN_STATE (1326)
Scope: acc:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
POST /api/token-state¶
proto_id: GET_TOKEN_STATE (1326)
Scope: acc:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"acc_id":123456}' \
http://127.0.0.1:22499/api/token-state
Trading Write¶
Place/modify/cancel order, cancel-all, unlock trade cipher, account push sub. Place/modify/cancel requires trade:real / trade:simulate (env-double-check) + --enable-trading. Since v1.4.104 /api/unlock-trade strictly requires trade:unlock (no longer satisfied by other trade super-scopes).
POST /api/cancel-all-order¶
proto_id: TRD_MODIFY_ORDER (2205)
Scope: trade:real or trade:simulate (based on env)
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"acc_id":123456,"env":1,"market":1}' \
http://127.0.0.1:22499/api/cancel-all-order
POST /api/combo-order¶
proto_id: TRD_PLACE_COMBO_ORDER (2227)
Scope: trade:real or trade:simulate (based on env)
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Note: REST clients may omit packet_id; the daemon fills it from the current connection before forwarding.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"c2s":{"header":{"trd_env":1,"acc_id":123456,"trd_market":2},"combo_legs":[{"security":{"market":11,"code":"AAPL260116C200000"},"side":1,"qty_ratio":1.0},{"security":{"market":11,"code":"AAPL260116C205000"},"side":2,"qty_ratio":1.0}],"qty":1.0,"price":1.0,"order_type":1}}' \
http://127.0.0.1:22499/api/combo-order
POST /api/modify-order¶
proto_id: TRD_MODIFY_ORDER (2205)
Scope: trade:real or trade:simulate (based on env)
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"market":1,"acc_id":123456,"order_id":"987","op":1}' \
http://127.0.0.1:22499/api/modify-order
POST /api/order¶
proto_id: TRD_PLACE_ORDER (2202)
Scope: trade:real or trade:simulate (based on env)
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"market":1,"acc_id":123456,"env":1,"side":1,"code":"00700","qty":100,"price":300.0}' \
http://127.0.0.1:22499/api/order
POST /api/sub-acc-push¶
proto_id: — (non-proto / no backend forwarding)
Scope: acc:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"acc_id_list":[123456]}' \
http://127.0.0.1:22499/api/sub-acc-push
POST /api/unlock-trade¶
proto_id: TRD_UNLOCK_TRADE (2005)
Scope: trade:unlock
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"unlock":true,"pwd_md5":"<md5-of-trade-password>"}' \
http://127.0.0.1:22499/api/unlock-trade
POST /api/unsub-acc-push¶
proto_id: — (non-proto / no backend forwarding)
Scope: acc:read
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{"acc_id_list":[123456]}' \
http://127.0.0.1:22499/api/unsub-acc-push
Admin¶
Daemon management endpoints. Requires admin scope.
Runtime contract:
- GET /api/admin/status: Synchronous read-only snapshot. Includes last_reload_refresh field (never_run / running / succeeded / failed / skipped / not_applicable) for monitoring the background reload refresh task.
- POST /api/admin/shutdown: Returns 200 synchronously, then triggers daemon exit through the internal shutdown signal.
- POST /api/admin/reload: Synchronously clears cipher cache and returns immediately; credentials refresh runs in the background (check /api/admin/status → last_reload_refresh for outcome).
Body validation: POST /api/admin/shutdown + POST /api/admin/reload accept only empty body / {} / null. Any user-supplied field returns 400 (handler does not read body).
POST /api/admin/reload¶
proto_id: — (non-proto / no backend forwarding)
Scope: admin
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{}' \
http://127.0.0.1:22499/api/admin/reload
POST /api/admin/shutdown¶
proto_id: — (non-proto / no backend forwarding)
Scope: admin
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
curl -X POST -H 'Authorization: Bearer $FUTU_API_KEY' -H 'Content-Type: application/json' \
-d '{}' \
http://127.0.0.1:22499/api/admin/shutdown
GET /api/admin/status¶
proto_id: — (non-proto / no backend forwarding)
Scope: admin
Parameters / Response: See proto definition. Fields use snake_case; v1.4.83+ alias support + v1.4.84+ enum int/string dual-accept.
Example:
Further reading¶
- rustdoc API: https://futuapi.com/api/
- MCP tool docs: /reference/mcp-tools
- gRPC proto_id table: /reference/grpc-api
- Common error codes + pits: /guide/common-pitfalls