Skip to content

REST API Endpoint Catalog

Generated from the current REST route inventory, grouped by business function.

This page covers 323 public REST endpoints of futu-opend, organized into 15 functional groups. It is a route catalog with selected field notes and request examples, not a complete field schema. Follow each endpoint field table and linked contract for parameter and response details. The catalog includes:

  • HTTP method + URL
  • Backend proto_id
  • Required auth scope
  • Selected field tables and contract links
  • Error hints
  • curl example

Quick nav:

Group Endpoints Link
System / Status 8 System / Status
Quote Subscriptions 5 Quote Subscriptions
Quote Queries 36 Quote Queries
Plates / Filter / Metadata 21 Plates / Filter / Metadata
Reference / Derivatives 74 Reference / Derivatives
Market Rankings / Sentiment 13 Market Rankings / Sentiment
News / Announcements 12 News / Announcements
Calendars / Macroeconomics 11 Calendars / Macroeconomics
Institutions / Holdings Research 11 Institutions / Holdings Research
Watchlists / Private Notes 6 Watchlists / Private Notes
Price / Event Alerts 12 Price / Event Alerts
Trading Accounts (Read) 68 Trading Accounts (Read)
Trading Write 31 Trading Write
Quantitative Strategies / Cloud Sync 12 Quantitative Strategies / Cloud Sync
Admin 3 Admin

Global conventions

  • Legacy read-only Base URL: http://127.0.0.1:22499 (the examples assume an explicit --rest-port 22499; configure a port to enable the REST listener). Credential-free reads remain available over HTTP when no keys file is configured:
    curl http://127.0.0.1:22499/health
    
  • Scope mode Base URL: https://127.0.0.1:22499. Configuring rest_keys_file enables REST scope mode and requires both rest_tls_cert and rest_tls_key. The daemon validates the certificate/private key before broker login and refuses to bind authenticated REST over plaintext. HTTPS examples require a certificate matching the URL hostname/IP and a CA trusted by curl. For a private CA, add --cacert /path/to/ca.pem to curl.
  • WebSocket: use wss://127.0.0.1:22499/ws for /ws on the same listener in scope mode. Legacy no-key compatibility may continue to use ws://.
  • Content-Type: application/json
  • Auth: Authorization: Bearer <API_KEY> (if keys.json is configured; otherwise legacy mode without auth — and since v1.4.86 fail-closed is the production default)
  • Response envelope:

    {
      "ret_type": 0,
      "ret_msg": null,
      "err_code": null,
      "s2c": { ...business payload... }
    }
    
    ret_type == 0 means success; other values see common error codes.

  • Fields and enums: Follow each endpoint field table and linked contract for field names, aliases, and enum representations. Send integer enums as JSON numbers; use strings only where the field explicitly lists accepted string values. For example, /api/ipo-list accepts its listed integers or strings for market.

  • Rate / limits: Controlled via startup flags (--allowed-markets, --max-order-value, etc.). See Authentication and limits.


System / Status

System status, health checks, and authentication verification. Health checks are public; see each endpoint for its scope and local-access requirements.

GET /api/delay-statistics

proto_id: GET_DELAY_STATISTICS (1007)

Scope: legacy/public: —; scope-mode: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -H "Authorization: Bearer $FUTU_API_KEY" \
  https://127.0.0.1:22499/api/delay-statistics

POST /api/delay-statistics

proto_id: GET_DELAY_STATISTICS (1007)

Scope: legacy/public: —; scope-mode: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"type_list":[1],"qot_push_stage":1}' \
  https://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: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -H "Authorization: Bearer $FUTU_API_KEY" \
  https://127.0.0.1:22499/api/global-state

GET /api/ping

proto_id: GET_GLOBAL_STATE (1002)

Scope: legacy/public: —; scope-mode: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -H "Authorization: Bearer $FUTU_API_KEY" \
  https://127.0.0.1:22499/api/ping

GET /api/push-subscriber-info

proto_id: — (non-proto / no backend forwarding)

Scope: legacy/public: —; scope-mode: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -H "Authorization: Bearer $FUTU_API_KEY" \
  https://127.0.0.1:22499/api/push-subscriber-info

GET /api/quote-rights

proto_id: TEST_CMD (1008)

Scope: legacy/public: —; scope-mode: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -H "Authorization: Bearer $FUTU_API_KEY" \
  https://127.0.0.1:22499/api/quote-rights

GET /api/user-info

proto_id: GET_USER_INFO (1005)

Scope: legacy/public: —; scope-mode: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -H "Authorization: Bearer $FUTU_API_KEY" \
  https://127.0.0.1:22499/api/user-info

POST /api/verification

proto_id: VERIFICATION (1006)

Scope: auth:setup

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"type":1,"op":1}' \
  https://127.0.0.1:22499/api/verification

Quote Subscriptions

Subscribe/unsubscribe quote push, query subscription state, and receive push via WebSocket /ws. All three use qot:read.

POST /api/query-subscription

proto_id: QOT_GET_SUB_INFO (3003)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"is_req_all_conn":true}' \
  https://127.0.0.1:22499/api/query-subscription

GET /api/sub-info

proto_id: QOT_GET_SUB_INFO (3003)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -H "Authorization: Bearer $FUTU_API_KEY" \
  https://127.0.0.1:22499/api/sub-info

POST /api/subscribe

proto_id: QOT_SUB (3001)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

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}' \
  https://127.0.0.1:22499/api/subscribe

POST /api/unsubscribe

proto_id: QOT_SUB (3001)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

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}' \
  https://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: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

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:

curl -H "Authorization: Bearer $FUTU_API_KEY" \
  https://127.0.0.1:22499/ws

Quote Queries

Real-time quotes, K-line, order book, broker queue, time-sharing, ticker, ticker statistics, risk-free rate, spread table, and quote quota. Quote reads generally require qot:read; see endpoint scopes for tape subscription maintenance and quote inquiries.

POST /api/bond-quote-info

proto_id: QOT_GET_BOND_QUOTE_INFO (2131755051)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"acc_id":123456,"env":1}' \
  https://127.0.0.1:22499/api/bond-quote-info

POST /api/broker

proto_id: QOT_GET_BROKER (3014)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"symbol":"HK.00700"}' \
  https://127.0.0.1:22499/api/broker

POST /api/capital-distribution

proto_id: QOT_GET_CAPITAL_DISTRIBUTION (3212)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"symbol":"HK.00700"}' \
  https://127.0.0.1:22499/api/capital-distribution

POST /api/capital-flow

proto_id: QOT_GET_CAPITAL_FLOW (3211)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"symbol":"HK.00700","period_type":1}' \
  https://127.0.0.1:22499/api/capital-flow

POST /api/chip-distribution

proto_id: QOT_GET_CHIP_DISTRIBUTION (2131755052)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/chip-distribution

POST /api/forex-rates

proto_id: QOT_GET_FOREX_RATES (2131755030)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/forex-rates

POST /api/history-kl-quota

proto_id: QOT_REQUEST_HISTORY_KL_QUOTA (3104)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Quota source: used_quota / remain_quota use the account's dynamic historical K-line quota returned by backend request after login. FUTU_HISTORY_KL_QUOTA_MAX only overrides that dynamic quota when explicitly set. Before the dynamic quota arrives, Rust uses the C++ cold-start default 100 as a fail-closed fallback.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"b_get_detail":false}' \
  https://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: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Note: REST kl_type accepts integers only; these values come from the public Qot_Common.KLType enum.

kl_type Period
1 1-minute
2 Day
3 Week
4 Month
5 Year
6 5-minute
7 15-minute
8 30-minute
9 60-minute
10 3-minute
11 Quarter
12 10-minute
13 120-minute
14 180-minute
15 240-minute

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 '{"security":{"market":1,"code":"00700"},"rehab_type":0,"kl_type":2,"max_count":100,"begin_time":"2026-01-01 00:00:00","end_time":"2026-04-01 23:59:59"}' \
  https://127.0.0.1:22499/api/history-kline

POST /api/kline

proto_id: QOT_GET_KL (3006)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

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":2,"req_num":100}' \
  https://127.0.0.1:22499/api/kline

POST /api/kline-pattern

proto_id: QOT_GET_KLINE_PATTERN (2131755021)

Scope: qot:read

Enabled by default: uses --kline-patterns. Evidence is source-aligned + local-green; live backend behavior remains unverified. Point/line values are restored from 1e9 scale and field presence is preserved.

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"stock_id":7001,"kline_type":2,"extension_version":1}' \
  https://127.0.0.1:22499/api/kline-pattern

POST /api/kline-pattern-catalog

proto_id: QOT_GET_KLINE_PATTERN_CATALOG (2131755025)

Scope: qot:read

Enabled by default: uses --kline-patterns. count<=0 requests all rows (Desktop sends -1); URLs/strings are returned unchanged and are not opened or validated by the daemon.

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"filter":0,"count":-1,"start_count":0,"color":0,"extension_version":1}' \
  https://127.0.0.1:22499/api/kline-pattern-catalog

POST /api/kline-pattern-performance

proto_id: QOT_GET_KLINE_PATTERN_PERFORMANCE (2131755024)

Scope: qot:read

Enabled by default / UNVERIFIED: controlled by --kline-pattern-performance. The pinned Desktop source has a proto and registry entry but no business caller, so responses must explicitly contain ret_code=0; profit fields remain signed raw values because the source defines no scale.

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"shape":1,"duration":0,"extension_version":1}' \
  https://127.0.0.1:22499/api/kline-pattern-performance

POST /api/kline-pattern-statistics

proto_id: QOT_GET_KLINE_PATTERN_STATISTICS (2131755022)

Scope: qot:read

Enabled by default: uses --kline-patterns. Forecast/backtest fields are descriptive statistics, not deterministic investment advice. URLs/strings are opaque metadata and are neither fetched nor rewritten by the daemon.

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"stock_id":7001,"kline_type":2,"shape":1,"color":0,"extension_version":1}' \
  https://127.0.0.1:22499/api/kline-pattern-statistics

POST /api/kline-pattern-stocks

proto_id: QOT_GET_KLINE_PATTERN_STOCKS (2131755023)

Scope: qot:read

Enabled by default: uses --kline-patterns. sort_type=-1 preserves backend-default ordering; count<=0 requests all rows; watchlist/holding ID order and duplicates are sent unchanged.

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"kline_type":2,"shape":1,"market":3,"sort_order":1,"sort_type":-1,"count":-1,"start_count":0,"user_stock_list_mode":0,"extension_version":1}' \
  https://127.0.0.1:22499/api/kline-pattern-stocks

POST /api/market-state

proto_id: QOT_GET_MARKET_STATE (3223)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"symbols":["HK.00700"]}' \
  https://127.0.0.1:22499/api/market-state

POST /api/multi-day-volume-averages

proto_id: QOT_GET_MULTI_DAY_VOLUME_AVERAGES (2131755061)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/multi-day-volume-averages

POST /api/orderbook

proto_id: QOT_GET_ORDER_BOOK (3012)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"symbol":"HK.00700","depth":10}' \
  https://127.0.0.1:22499/api/orderbook

POST /api/quote

proto_id: QOT_GET_BASIC_QOT (3004)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"symbol":"HK.00700"}' \
  https://127.0.0.1:22499/api/quote

GET /api/quote-capability

proto_id: TEST_CMD (1008)

Scope: legacy/public: —; scope-mode: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -H "Authorization: Bearer $FUTU_API_KEY" \
  https://127.0.0.1:22499/api/quote-capability

POST /api/request-hk-option-quote

proto_id: QOT_REQUEST_HK_OPTION_QUOTE (2131755090)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/request-hk-option-quote

GET /api/risk-free-rate

proto_id: QOT_GET_RISK_FREE_RATE (20231)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

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 -H "Authorization: Bearer $FUTU_API_KEY" \
  https://127.0.0.1:22499/api/risk-free-rate

POST /api/risk-free-rate

proto_id: QOT_GET_RISK_FREE_RATE (20231)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

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 '{}' \
  https://127.0.0.1:22499/api/risk-free-rate

POST /api/rt

proto_id: QOT_GET_RT (3008)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"symbol":"HK.00700"}' \
  https://127.0.0.1:22499/api/rt

POST /api/search-quote

proto_id: QOT_GET_SEARCH_QUOTE (3262)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"keyword":"AAPL","max_count":10}' \
  https://127.0.0.1:22499/api/search-quote

POST /api/set-tape-reading-subscription

proto_id: QOT_SET_TAPE_READING_SUBSCRIPTION (2131755073)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/set-tape-reading-subscription

POST /api/snapshot

proto_id: QOT_GET_SECURITY_SNAPSHOT (3203)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"symbol":"HK.00700"}' \
  https://127.0.0.1:22499/api/snapshot

GET /api/spread-table

proto_id: QOT_GET_SPREAD_TABLE (6503)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

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 -H "Authorization: Bearer $FUTU_API_KEY" \
  https://127.0.0.1:22499/api/spread-table

POST /api/spread-table

proto_id: QOT_GET_SPREAD_TABLE (6503)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

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 '{}' \
  https://127.0.0.1:22499/api/spread-table

POST /api/static-info

proto_id: QOT_GET_STATIC_INFO (3202)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"symbols":["HK.00700","US.AAPL"]}' \
  https://127.0.0.1:22499/api/static-info

POST /api/stock-advanced-indicators

proto_id: QOT_GET_STOCK_ADVANCED_INDICATORS (2131755043)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/stock-advanced-indicators

POST /api/tape-reading-events

proto_id: QOT_GET_TAPE_READING_EVENTS (2131755071)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/tape-reading-events

POST /api/tape-reading-statistics

proto_id: QOT_GET_TAPE_READING_STATISTICS (2131755072)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/tape-reading-statistics

POST /api/ticker

proto_id: QOT_GET_TICKER (3010)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"symbol":"HK.00700","count":50}' \
  https://127.0.0.1:22499/api/ticker

POST /api/ticker-statistic

proto_id: QOT_GET_TICKER_STATISTIC (6365)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

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}' \
  https://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: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"security":{"market":1,"code":"00700"}}' \
  https://127.0.0.1:22499/api/ticker-statistic-detail

POST /api/used-quota

proto_id: GET_USED_QUOTA (1010)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/used-quota

Plates / Filter / Metadata

Plates and industrial chains, cross-asset screening, trading days and sessions, suspensions, code changes, IPO lists, and indicator catalogs.

POST /api/bond-screen

proto_id: QOT_BOND_SCREEN (2131755020)

Scope: qot:read

Enablement and evidence boundary: start with --extended-data-reads; the feature is on by default. Current evidence is source-aligned + local-green; live backend behavior remains unverified. data_max_count is 1..100; source_types accepts only 1 (Hong Kong) or 2 (Singapore). String-screen factor_id values are dynamic backend catalogs; range screens accept intervals only. Per the source contract, the single sort takes precedence over sorts.

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"conditions":[{"type_id":2,"intervals":[{"lower":{"value":0}}]}],"data_from":0,"data_max_count":20,"source_types":[1],"extension_version":1}' \
  https://127.0.0.1:22499/api/bond-screen

POST /api/code-change

proto_id: QOT_GET_CODE_CHANGE (3216)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

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"}]}}' \
  https://127.0.0.1:22499/api/code-change

POST /api/etf-screen

proto_id: QOT_ETF_SCREEN (2131755017)

Scope: qot:read

Enablement and evidence boundary: start with --extended-data-reads; the feature is on by default. Current evidence is source-aligned + local-green; live backend behavior remains unverified. data_max_count is 1..500; static market/field/period/content/sort catalogs are declared in the public proto. Dynamic issuer, region, sector, and holding subkeys are backend-owned selection data and must not be guessed locally.

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"market":1,"data_from":0,"data_max_count":20,"need_fields":[{"field_id":5}],"extension_version":1}' \
  https://127.0.0.1:22499/api/etf-screen

POST /api/forex-constituents

proto_id: QOT_GET_FOREX_CONSTITUENTS (2131755034)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/forex-constituents

POST /api/fund-screen

proto_id: QOT_FUND_SCREEN (2131755018)

Scope: qot:read

Enablement and evidence boundary: start with --extended-data-reads; the feature is on by default. Current evidence is source-aligned + local-green; live backend behavior remains unverified. data_max_count is 1..500; the full 33-field fund contract does not share a DTO with ETF/future/bond screeners. Company, theme, and set IDs are dynamic backend catalogs. This public protocol preserves the full backend contract rather than one Desktop list widget's selected/no-search/region defaults. Per the source contract, non-empty sorts takes precedence over the single sort.

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"fund_types":[1],"risk_levels":[1],"currency_units":[1],"data_from":0,"data_max_count":20,"field_ids":[3],"source_types":[1],"extension_version":1}' \
  https://127.0.0.1:22499/api/fund-screen

POST /api/future-screen

proto_id: QOT_FUTURE_SCREEN (2131755019)

Scope: qot:read

Enablement and evidence boundary: start with --extended-data-reads; the feature is on by default. Current evidence is source-aligned + local-green; live backend behavior remains unverified. data_max_count is 1..100; crypto-future filtering is derived from the daemon's fresh quote entitlement. Fixed screen/factor catalogs are declared in the public proto; newly introduced factors remain owned by backend discovery. Per the source contract, the single sort takes precedence over sorts.

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"conditions":[{"type_id":1,"factor_ids":[1]}],"data_from":0,"data_max_count":20,"extension_version":1}' \
  https://127.0.0.1:22499/api/future-screen

POST /api/indicator-list

proto_id: QOT_GET_INDICATOR_LIST (3259)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/indicator-list

POST /api/industrial-chain-by-plate

proto_id: QOT_GET_INDUSTRIAL_CHAIN_BY_PLATE (3429)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"plate_id":1}' \
  https://127.0.0.1:22499/api/industrial-chain-by-plate

POST /api/industrial-chain-detail

proto_id: QOT_GET_INDUSTRIAL_CHAIN_DETAIL (3428)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"chain_id":1}' \
  https://127.0.0.1:22499/api/industrial-chain-detail

POST /api/industrial-chain-list

proto_id: QOT_GET_INDUSTRIAL_CHAIN_LIST (3427)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"market":1,"count":20}' \
  https://127.0.0.1:22499/api/industrial-chain-list

POST /api/industrial-plate-info

proto_id: QOT_GET_INDUSTRIAL_PLATE_INFO (3430)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"plate_id":1}' \
  https://127.0.0.1:22499/api/industrial-plate-info

POST /api/industrial-plate-stock

proto_id: QOT_GET_INDUSTRIAL_PLATE_STOCK (3431)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"plate_id":1,"count":50}' \
  https://127.0.0.1:22499/api/industrial-plate-stock

POST /api/ipo-list

proto_id: QOT_GET_IPO_LIST (3217)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

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}}' \
  https://127.0.0.1:22499/api/ipo-list

POST /api/list-plates

proto_id: QOT_GET_PLATE_SET (3204)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"market":1,"plate_set_type":0}' \
  https://127.0.0.1:22499/api/list-plates

POST /api/market-trading-sessions

proto_id: QOT_GET_MARKET_TRADING_SESSIONS (2131755010)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"items":[{"market_id":2,"begin_date":20261101,"num":1}],"extension_version":1}' \
  https://127.0.0.1:22499/api/market-trading-sessions

POST /api/plate-security

proto_id: QOT_GET_PLATE_SECURITY (3205)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"plate":{"market":1,"code":"BK1001"}}' \
  https://127.0.0.1:22499/api/plate-security

POST /api/plate-set

proto_id: QOT_GET_PLATE_SET (3204)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"market":1,"plate_set_type":0}' \
  https://127.0.0.1:22499/api/plate-set

POST /api/security-trading-sessions

proto_id: QOT_GET_SECURITY_TRADING_SESSIONS (2131755009)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"code":"AAPL","exchange":"US","begin_date":20261101,"num":1,"extension_version":1}' \
  https://127.0.0.1:22499/api/security-trading-sessions

POST /api/stock-filter

proto_id: QOT_STOCK_FILTER (3215)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

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"}}' \
  https://127.0.0.1:22499/api/stock-filter

POST /api/suspend

proto_id: QOT_GET_SUSPEND (3201)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

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"}' \
  https://127.0.0.1:22499/api/suspend

POST /api/trading-days

proto_id: QOT_REQUEST_TRADE_DATE (3219)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

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"}' \
  https://127.0.0.1:22499/api/trading-days

Reference / Derivatives

Warrant references, option chains and research, futures contracts, rehab, holding changes, company profiles, financials, ratings, valuation, corporate actions, shareholders, insiders, screening, and unusual activity.

POST /api/bond-redemptions

proto_id: QOT_GET_BOND_REDEMPTIONS (2131755062)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"acc_id":123456,"env":1}' \
  https://127.0.0.1:22499/api/bond-redemptions

POST /api/calendar-future-spreads

proto_id: QOT_GET_CALENDAR_FUTURE_SPREADS (2131755047)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/calendar-future-spreads

POST /api/calendar-future-underlyings

proto_id: QOT_GET_CALENDAR_FUTURE_UNDERLYINGS (2131755046)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/calendar-future-underlyings

POST /api/cbbc-basic-info

proto_id: QOT_GET_CBBC_BASIC_INFO (2131755044)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/cbbc-basic-info

POST /api/cbbc-distribution

proto_id: QOT_GET_CBBC_DISTRIBUTION (2131755045)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/cbbc-distribution

POST /api/company-executive-background

proto_id: QOT_GET_COMPANY_EXECUTIVE_BACKGROUND (3245)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

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"}' \
  https://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: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"security":{"market":1,"code":"00700"}}' \
  https://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: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"security":{"market":1,"code":"00700"}}' \
  https://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: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"security":{"market":1,"code":"00700"}}' \
  https://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: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"security":{"market":1,"code":"00700"}}' \
  https://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: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"security":{"market":1,"code":"00700"}}' \
  https://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: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"security":{"market":1,"code":"00700"}}' \
  https://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: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"security":{"market":1,"code":"00700"}}' \
  https://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: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"stock_symbol":"HK.00700"}' \
  https://127.0.0.1:22499/api/derivative-unusual

POST /api/earnings-expected-move

proto_id: QOT_GET_EARNINGS_EXPECTED_MOVE (2131755032)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/earnings-expected-move

POST /api/financial-unusual

proto_id: QOT_GET_FINANCIAL_UNUSUAL (3802)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"stock_symbol":"HK.00700"}' \
  https://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: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"security":{"market":1,"code":"00700"}}' \
  https://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: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"security":{"market":1,"code":"00700"}}' \
  https://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: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"security":{"market":1,"code":"00700"}}' \
  https://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: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"security":{"market":1,"code":"00700"}}' \
  https://127.0.0.1:22499/api/financials-statements

POST /api/future-info

proto_id: QOT_GET_FUTURE_INFO (3218)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

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"}]}}' \
  https://127.0.0.1:22499/api/future-info

POST /api/get-reference

proto_id: QOT_GET_REFERENCE (3206)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

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}' \
  https://127.0.0.1:22499/api/get-reference

POST /api/get-silver-bond-dividends

proto_id: QOT_GET_SILVER_BOND_DIVIDENDS (2131755089)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/get-silver-bond-dividends

POST /api/holding-change

proto_id: QOT_GET_HOLDING_CHANGE_LIST (3208)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

⚠️ Deprecated: The upstream backend abandoned this endpoint after 2020-12-21. Calls return ret_type=-1 with "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"}' \
  https://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: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"security":{"market":1,"code":"00700"}}' \
  https://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: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"security":{"market":1,"code":"00700"}}' \
  https://127.0.0.1:22499/api/insider-trade-list

POST /api/option-chain

proto_id: QOT_GET_OPTION_CHAIN (3209)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

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"}' \
  https://127.0.0.1:22499/api/option-chain

POST /api/option-chain-metadata

proto_id: QOT_GET_OPTION_CHAIN_METADATA (2131755035)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/option-chain-metadata

POST /api/option-earnings-screener

proto_id: QOT_GET_OPTION_EARNINGS_SCREENER (3313)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"option_market":1,"count":50}' \
  https://127.0.0.1:22499/api/option-earnings-screener

POST /api/option-event

proto_id: QOT_GET_OPTION_EVENT (3307)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"option_market":1,"count":50}' \
  https://127.0.0.1:22499/api/option-event

POST /api/option-event-detail

proto_id: QOT_GET_OPTION_EVENT_DETAIL (2131755053)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/option-event-detail

POST /api/option-exercise-probability

proto_id: QOT_GET_OPTION_EXERCISE_PROBABILITY (3251)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"security":{"market":11,"code":"AAPL260116C200000"}}' \
  https://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: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

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"}' \
  https://127.0.0.1:22499/api/option-expiration-date

POST /api/option-gex-by-strike

proto_id: QOT_GET_OPTION_GEX_BY_STRIKE (2131755036)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/option-gex-by-strike

POST /api/option-gex-profile

proto_id: QOT_GET_OPTION_GEX_PROFILE (2131755037)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/option-gex-profile

POST /api/option-iv-smile

proto_id: QOT_GET_OPTION_IV_SMILE (2131755040)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/option-iv-smile

POST /api/option-iv-term-structure

proto_id: QOT_GET_OPTION_IV_TERM_STRUCTURE (2131755039)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/option-iv-term-structure

POST /api/option-market-statistic

proto_id: QOT_GET_OPTION_MARKET_STATISTIC (3301)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"option_market":1,"data_type":0,"begin_time":"2026-08-01","end_time":"2026-08-30"}' \
  https://127.0.0.1:22499/api/option-market-statistic

POST /api/option-quote

proto_id: QOT_GET_OPTION_QUOTE (3255)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

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}]}}' \
  https://127.0.0.1:22499/api/option-quote

POST /api/option-rank

proto_id: QOT_GET_OPTION_RANK (3306)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"option_market":1,"sort_type":1,"count":50}' \
  https://127.0.0.1:22499/api/option-rank

POST /api/option-screen

proto_id: QOT_OPTION_SCREEN (3253)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"page_from":0,"page_count":20}' \
  https://127.0.0.1:22499/api/option-screen

POST /api/option-seller-screener

proto_id: QOT_GET_OPTION_SELLER_SCREENER (3314)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"option_market":1,"seller_type":1}' \
  https://127.0.0.1:22499/api/option-seller-screener

POST /api/option-strategy

proto_id: QOT_GET_OPTION_STRATEGY (3256)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

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}}' \
  https://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: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

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}]}}' \
  https://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: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

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}}' \
  https://127.0.0.1:22499/api/option-strategy-spread

POST /api/option-strike-prices

proto_id: QOT_GET_OPTION_STRIKE_PRICES (2131755038)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/option-strike-prices

POST /api/option-underlying-his-statistic

proto_id: QOT_GET_OPTION_UNDERLYING_HIS_STATISTIC (3302)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"owner":{"market":11,"code":"AAPL"},"begin_time":"2026-08-01","end_time":"2026-08-30"}' \
  https://127.0.0.1:22499/api/option-underlying-his-statistic

POST /api/option-underlying-his-volatility

proto_id: QOT_GET_OPTION_UNDERLYING_HIS_VOLATILITY (3304)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"owner":{"market":11,"code":"AAPL"},"begin_time":"2026-08-01","end_time":"2026-08-30"}' \
  https://127.0.0.1:22499/api/option-underlying-his-volatility

POST /api/option-underlying-overview

proto_id: QOT_GET_OPTION_UNDERLYING_OVERVIEW (3303)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"owner_list":[{"market":11,"code":"AAPL"}]}' \
  https://127.0.0.1:22499/api/option-underlying-overview

POST /api/option-underlying-rank

proto_id: QOT_GET_OPTION_UNDERLYING_RANK (3305)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"option_market":1,"sort_type":1,"count":50}' \
  https://127.0.0.1:22499/api/option-underlying-rank

POST /api/option-volatility

proto_id: QOT_GET_OPTION_VOLATILITY (3250)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

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}' \
  https://127.0.0.1:22499/api/option-volatility

POST /api/option-volume-interest-distribution

proto_id: QOT_GET_OPTION_VOLUME_INTEREST_DISTRIBUTION (2131755041)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/option-volume-interest-distribution

POST /api/option-zero-dte-contract

proto_id: QOT_GET_OPTION_ZERO_DTE_CONTRACT (3312)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"owner":{"market":11,"code":"AAPL"},"strike_date_timestamp":1800000000,"chain_info":{"strike_date_timestamp":1800000000,"product_code":"AAPL","multiplier":100.0,"contract_share_size":100.0,"expiration_type":1,"underlying":{"market":11,"code":"AAPL"}}}' \
  https://127.0.0.1:22499/api/option-zero-dte-contract

POST /api/option-zero-dte-screener

proto_id: QOT_GET_OPTION_ZERO_DTE_SCREENER (3311)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"option_market":1,"count":50}' \
  https://127.0.0.1:22499/api/option-zero-dte-screener

POST /api/owner-plate

proto_id: QOT_GET_OWNER_PLATE (3207)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

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"]}' \
  https://127.0.0.1:22499/api/owner-plate

POST /api/rating-change

proto_id: QOT_GET_RATING_CHANGE (3426)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"market":11,"count":10}' \
  https://127.0.0.1:22499/api/rating-change

POST /api/reference

proto_id: QOT_GET_REFERENCE (3206)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

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}' \
  https://127.0.0.1:22499/api/reference

POST /api/rehab

proto_id: QOT_REQUEST_REHAB (3105)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"symbols":["HK.00700"]}' \
  https://127.0.0.1:22499/api/rehab

POST /api/related-stocks

proto_id: QOT_GET_RELATED_STOCKS (2131755031)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/related-stocks

POST /api/research-analyst-consensus

proto_id: QOT_GET_RESEARCH_ANALYST_CONSENSUS (3229)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"security":{"market":1,"code":"00700"}}' \
  https://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: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"security":{"market":1,"code":"00700"}}' \
  https://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: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"security":{"market":1,"code":"00700"}}' \
  https://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: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"security":{"market":1,"code":"00700"}}' \
  https://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: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"security":{"market":1,"code":"00700"}}' \
  https://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: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"security":{"market":1,"code":"00700"}}' \
  https://127.0.0.1:22499/api/shareholders-institutional

POST /api/shareholders-overview

proto_id: QOT_GET_SHAREHOLDERS_OVERVIEW (3237)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"security":{"market":1,"code":"00700"}}' \
  https://127.0.0.1:22499/api/shareholders-overview

POST /api/short-interest

proto_id: QOT_GET_SHORT_INTEREST (3249)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"security":{"market":1,"code":"00700"}}' \
  https://127.0.0.1:22499/api/short-interest

POST /api/stock-screen

proto_id: QOT_STOCK_SCREEN (3252)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"page_from":0,"page_count":20}' \
  https://127.0.0.1:22499/api/stock-screen

POST /api/technical-unusual

proto_id: QOT_GET_TECHNICAL_UNUSUAL (3801)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"stock_symbol":"HK.00700"}' \
  https://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: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"security":{"market":1,"code":"00700"}}' \
  https://127.0.0.1:22499/api/top-ten-buy-sell-brokers

POST /api/valuation-detail

proto_id: QOT_GET_VALUATION_DETAIL (3232)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"security":{"market":1,"code":"00700"}}' \
  https://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: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"security":{"market":1,"code":"00700"}}' \
  https://127.0.0.1:22499/api/valuation-plate-stock-list

POST /api/warrant

proto_id: QOT_GET_WARRANT (3210)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

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"}' \
  https://127.0.0.1:22499/api/warrant

POST /api/warrant-screen

proto_id: QOT_WARRANT_SCREEN (3254)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

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}' \
  https://127.0.0.1:22499/api/warrant-screen

Market Rankings / Sentiment

Market heat maps, advance/decline distributions, popular securities, dividend and earnings rankings, short-selling rankings, and US session rankings.

POST /api/dividend-rank

proto_id: QOT_GET_DIVIDEND_RANK (3407)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"market":1,"rank_type":1,"count":10}' \
  https://127.0.0.1:22499/api/dividend-rank

POST /api/earnings-beat-rank

proto_id: QOT_GET_EARNINGS_BEAT_RANK (3406)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"market":11,"beat_type":1,"count":30}' \
  https://127.0.0.1:22499/api/earnings-beat-rank

POST /api/heat-map-data

proto_id: QOT_GET_HEAT_MAP_DATA (3432)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"market":1,"count":30}' \
  https://127.0.0.1:22499/api/heat-map-data

POST /api/high-dividend-soe-rank

proto_id: QOT_GET_HIGH_DIVIDEND_SOE_RANK (3417)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"count":50}' \
  https://127.0.0.1:22499/api/high-dividend-soe-rank

POST /api/hot-list

proto_id: QOT_GET_HOT_LIST (3414)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"market":1,"count":50}' \
  https://127.0.0.1:22499/api/hot-list

POST /api/margin-ranking

proto_id: QOT_GET_MARGIN_RANKING (2131755042)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/margin-ranking

POST /api/period-change-rank

proto_id: QOT_GET_PERIOD_CHANGE_RANK (3416)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"market":1,"count":50}' \
  https://127.0.0.1:22499/api/period-change-rank

POST /api/rise-fall-distribution

proto_id: QOT_GET_RISE_FALL_DISTRIBUTION (3433)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"market":1}' \
  https://127.0.0.1:22499/api/rise-fall-distribution

POST /api/short-selling-rank

proto_id: QOT_GET_SHORT_SELLING_RANK (3415)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"market":11,"count":10}' \
  https://127.0.0.1:22499/api/short-selling-rank

POST /api/top-movers-rank

proto_id: QOT_GET_TOP_MOVERS_RANK (3413)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"market":1,"count":50}' \
  https://127.0.0.1:22499/api/top-movers-rank

POST /api/us-after-hours-rank

proto_id: QOT_GET_US_AFTER_HOURS_RANK (3411)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"count":50}' \
  https://127.0.0.1:22499/api/us-after-hours-rank

POST /api/us-overnight-rank

proto_id: QOT_GET_US_OVERNIGHT_RANK (3412)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"count":50}' \
  https://127.0.0.1:22499/api/us-overnight-rank

POST /api/us-pre-market-rank

proto_id: QOT_GET_US_PRE_MARKET_RANK (3410)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"count":50}' \
  https://127.0.0.1:22499/api/us-pre-market-rank

News / Announcements

Latest and trending news, news search, security news, and watchlist news, announcements, and rating updates, plus platform announcements, news translation, and push settings.

POST /api/hot-news

proto_id: QOT_GET_HOT_NEWS (2131755011)

Scope: qot:read

Enablement and evidence boundary: start with --extended-data-reads; the feature is on by default. Current evidence is source-aligned + local-green; live backend behavior remains unverified. Callers pass only page_size (1..50) and extension_version=1.

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"page_size":20,"extension_version":1}' \
  https://127.0.0.1:22499/api/hot-news

POST /api/latest-news

proto_id: QOT_GET_LATEST_NEWS (2131755012)

Scope: qot:read

Enablement and evidence boundary: start with --extended-data-reads; the feature is on by default. Current evidence is source-aligned + local-green; live backend behavior remains unverified. page_flip=0 pages older; page_flip=1 requires a nonempty newest cursor. An empty cursor always means the first page. Read-only filter sidecars use include_flash_filter / include_market_filter and require a nonnegative filter_version.

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"page_size":20,"seq_mark":"","page_flip":0,"tag_indexes":[0],"extension_version":1}' \
  https://127.0.0.1:22499/api/latest-news

POST /api/news-push-settings

proto_id: QOT_GET_NEWS_PUSH_SETTINGS (2131755057)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/news-push-settings

POST /api/news-translation

proto_id: QOT_GET_NEWS_TRANSLATION (2131755033)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/news-translation

POST /api/platform-announcements

proto_id: QOT_GET_PLATFORM_ANNOUNCEMENTS (2131755054)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/platform-announcements

POST /api/platform-announcements-by-ids

proto_id: QOT_GET_PLATFORM_ANNOUNCEMENTS_BY_IDS (2131755055)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/platform-announcements-by-ids

POST /api/search-news

proto_id: QOT_GET_SEARCH_NEWS (3263)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"keyword":"earnings","max_count":10,"news_sub_type":0}' \
  https://127.0.0.1:22499/api/search-news

POST /api/set-news-push-settings

proto_id: QOT_SET_NEWS_PUSH_SETTINGS (2131755058)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/set-news-push-settings

POST /api/stock-news

proto_id: QOT_GET_STOCK_NEWS (2131755016)

Scope: qot:read

Enablement and evidence boundary: start with --extended-data-reads; the feature is on by default. Current evidence is source-aligned + local-green; live backend behavior remains unverified. For pagination, echo the previous response's seq_mark, dedup_ids, and request-level track_info; id_type accepts only 1 (security) or 2 (plate).

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"stock_id":7000700,"page_size":20,"id_type":1,"seq_mark":"","dedup_ids":[],"extension_version":1}' \
  https://127.0.0.1:22499/api/stock-news

POST /api/watchlist-announcement

proto_id: QOT_GET_WATCHLIST_ANNOUNCEMENT (2131755014)

Scope: qot:read

Enablement and evidence boundary: start with --extended-data-reads; the feature is on by default. Current evidence is source-aligned + local-green; live backend behavior remains unverified. stock_ids are explicit. notice_types accepts 0..5; 0 means all and must be used alone.

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"page_size":20,"seq_mark":"","stock_ids":[7000700],"notice_types":[0],"extension_version":1}' \
  https://127.0.0.1:22499/api/watchlist-announcement

POST /api/watchlist-news

proto_id: QOT_GET_WATCHLIST_NEWS (2131755013)

Scope: qot:read

Enablement and evidence boundary: start with --extended-data-reads; the feature is on by default. Current evidence is source-aligned + local-green; live backend behavior remains unverified. stock_ids must be supplied explicitly and cannot be empty; there is no whole-market fallback.

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"page_size":20,"seq_mark":"","stock_ids":[7000700],"extension_version":1}' \
  https://127.0.0.1:22499/api/watchlist-news

POST /api/watchlist-rating

proto_id: QOT_GET_WATCHLIST_RATING (2131755015)

Scope: qot:read

Enablement and evidence boundary: start with --extended-data-reads; the feature is on by default. Current evidence is source-aligned + local-green; live backend behavior remains unverified. stock_ids must be supplied explicitly and cannot be empty; there is no whole-market fallback.

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"page_size":20,"seq_mark":"","stock_ids":[7000700],"extension_version":1}' \
  https://127.0.0.1:22499/api/watchlist-rating

Calendars / Macroeconomics

Earnings, dividend, IPO, financial and economic calendars, macroeconomic indicators, and Federal Reserve rate expectations.

POST /api/dividend-calendar

proto_id: QOT_GET_DIVIDEND_CALENDAR (3408)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"market":1,"date":"2026-06-24","count":20}' \
  https://127.0.0.1:22499/api/dividend-calendar

POST /api/earnings-calendar

proto_id: QOT_GET_EARNINGS_CALENDAR (3401)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"market":11,"begin_date":"2026-06-24","end_date":"2026-06-25"}' \
  https://127.0.0.1:22499/api/earnings-calendar

POST /api/economic-calendar

proto_id: QOT_GET_ECONOMIC_CALENDAR (3409)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"begin_date":"2026-06-24","end_date":"2026-06-24","market_list":[11],"count":50}' \
  https://127.0.0.1:22499/api/economic-calendar

POST /api/fed-watch-dot-plot

proto_id: QOT_GET_FED_WATCH_DOT_PLOT (3405)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/fed-watch-dot-plot

POST /api/fed-watch-target-rate

proto_id: QOT_GET_FED_WATCH_TARGET_RATE (3404)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/fed-watch-target-rate

POST /api/financial-calendar

proto_id: QOT_GET_FINANCIAL_CALENDAR_VIEW_INTERNAL (20025)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"market_list":[1],"count":20,"begin_date":"20260624","end_date":"20260625"}' \
  https://127.0.0.1:22499/api/financial-calendar

POST /api/financial-calendar-target

proto_id: QOT_SEARCH_TARGET_FINANCIAL_CALENDAR (20426)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"stock_id":[7000700],"market_list":[1],"size":20,"start":0}' \
  https://127.0.0.1:22499/api/financial-calendar-target

POST /api/holiday-calendar

proto_id: QOT_GET_HOLIDAY_CALENDAR (2131755063)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/holiday-calendar

POST /api/ipo-calendar

proto_id: QOT_GET_IPO_LIST (3217)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"market":1,"event_types":["list"],"begin_date":"20260624","end_date":"20260630"}' \
  https://127.0.0.1:22499/api/ipo-calendar

POST /api/macro-indicator-history

proto_id: QOT_GET_MACRO_INDICATOR_HISTORY (3403)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"indicator_id":88,"time":"2026-06-24","max_count":100}' \
  https://127.0.0.1:22499/api/macro-indicator-history

POST /api/macro-indicator-list

proto_id: QOT_GET_MACRO_INDICATOR_LIST (3402)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"region":2}' \
  https://127.0.0.1:22499/api/macro-indicator-list

Institutions / Holdings Research

Institution profiles, holdings, changes and distributions, plus ARK fund holdings and transaction activity.

POST /api/ark-active-transaction

proto_id: QOT_GET_ARK_ACTIVE_TRANSACTION (3425)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"holding_type":1,"cycle_type":1,"count":50}' \
  https://127.0.0.1:22499/api/ark-active-transaction

POST /api/ark-fund-holding

proto_id: QOT_GET_ARK_FUND_HOLDING (3423)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"holding_type":1,"count":20}' \
  https://127.0.0.1:22499/api/ark-fund-holding

POST /api/ark-stock-dynamic

proto_id: QOT_GET_ARK_STOCK_DYNAMIC (3424)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"security":{"market":11,"code":"AAPL"}}' \
  https://127.0.0.1:22499/api/ark-stock-dynamic

POST /api/fund-investment-distribution

proto_id: QOT_GET_FUND_INVESTMENT_DISTRIBUTION (2131755050)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/fund-investment-distribution

POST /api/fund-top-holdings

proto_id: QOT_GET_FUND_TOP_HOLDINGS (2131755049)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/fund-top-holdings

POST /api/institution-distribution

proto_id: QOT_GET_INSTITUTION_DISTRIBUTION (3420)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"market":11,"institution_id":700}' \
  https://127.0.0.1:22499/api/institution-distribution

POST /api/institution-holding-change

proto_id: QOT_GET_INSTITUTION_HOLDING_CHANGE (3421)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"market":1,"institution_id":700,"count":20}' \
  https://127.0.0.1:22499/api/institution-holding-change

POST /api/institution-holding-list

proto_id: QOT_GET_INSTITUTION_HOLDING_LIST (3422)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"market":41,"institution_id":701,"count":20}' \
  https://127.0.0.1:22499/api/institution-holding-list

POST /api/institution-list

proto_id: QOT_GET_INSTITUTION_LIST (3418)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"market":11,"count":20}' \
  https://127.0.0.1:22499/api/institution-list

POST /api/institution-profile

proto_id: QOT_GET_INSTITUTION_PROFILE (3419)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"market":11,"institution_id":700}' \
  https://127.0.0.1:22499/api/institution-profile

POST /api/stock-holdings

proto_id: QOT_GET_STOCK_HOLDINGS (2131755048)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/stock-holdings

Watchlists / Private Notes

Watchlist groups and maintenance, private stock notes and labels. See each endpoint for read/write scopes; private notes require a configured API key.

POST /api/modify-user-security

proto_id: QOT_MODIFY_USER_SECURITY (3214)

Scope: qot:write (qot:read accepted for v1.8 compatibility)

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

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":"Favorites","op":1,"security_list":[{"market":1,"code":"00700"}]}' \
  https://127.0.0.1:22499/api/modify-user-security

POST /api/set-stock-note

proto_id: QOT_SET_STOCK_NOTE (2131755028)

Scope: qot:write (configured API key required; no qot:read fallback)

Private write / two independent default-on gates: requires both --stock-notes and --stock-note-writes, keys.json, and strict qot:write. The request is sent once and never auto-resubmitted. A route-fence rejection before writer admission is explicitly not sent; after the frame enters the writer queue, a route change or uncertain ACK returns SUBMITTED_UNKNOWN. Synchronous 0 means accepted only. DELETE may be confirmed by a private push that causes an actual state transition; CREATE/UPDATE must also pass 9432 reconciliation because 9430 carries no detail. Title/detail are never logged.

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"operation":3,"stock_id":7001,"title":"watch","detail":"review later","is_display":1,"extension_version":1}' \
  https://127.0.0.1:22499/api/set-stock-note

POST /api/stock-note-labels

proto_id: QOT_GET_STOCK_NOTE_LABELS (2131755026)

Scope: acc:read (configured API key required)

Private data / enabled by default: uses --stock-notes, configured keys.json, and acc:read. FULL(1) is encoded by the daemon as is_full=1 + stock_id=[0]; IDS(2) preserves caller order and duplicates.

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"mode":1,"stock_ids":[],"extension_version":1}' \
  https://127.0.0.1:22499/api/stock-note-labels

POST /api/stock-notes

proto_id: QOT_GET_STOCK_NOTES (2131755027)

Scope: acc:read (configured API key required)

Private data / enabled by default: uses --stock-notes and acc:read. Explicit nonzero IDs are sent unchanged; an ordinary query never mutates or persists the authoritative basic cache.

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"stock_ids":[7001],"extension_version":1}' \
  https://127.0.0.1:22499/api/stock-notes

POST /api/user-security

proto_id: QOT_GET_USER_SECURITY (3213)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"group_name":"Favorites"}' \
  https://127.0.0.1:22499/api/user-security

POST /api/user-security-groups

proto_id: QOT_GET_USER_SECURITY_GROUP (3222)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"group_type":3}' \
  https://127.0.0.1:22499/api/user-security-groups

Price / Event Alerts

Query/set/modify/delete price reminders and manage option-event alerts. Since v1.8.0 alert writes use qot:write (qot:read remains compatible for this major); reads stay on qot:read.

POST /api/alert-system-notify-setting

proto_id: QOT_GET_ALERT_SYSTEM_NOTIFY_SETTING (2131755059)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/alert-system-notify-setting

POST /api/common-reminder-business-info

proto_id: QOT_GET_COMMON_REMINDER_BUSINESS_INFO (2131755068)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/common-reminder-business-info

POST /api/common-reminder-items

proto_id: QOT_GET_COMMON_REMINDER_ITEMS (2131755067)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/common-reminder-items

POST /api/common-reminder-settings

proto_id: QOT_GET_COMMON_REMINDER_SETTINGS (2131755066)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/common-reminder-settings

POST /api/mutate-reminder-settings

proto_id: QOT_MUTATE_REMINDER_SETTINGS (2131755065)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/mutate-reminder-settings

POST /api/option-event-alert

proto_id: QOT_GET_OPTION_EVENT_ALERT (3308)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"count":50}' \
  https://127.0.0.1:22499/api/option-event-alert

POST /api/price-reminder

proto_id: QOT_GET_PRICE_REMINDER (3221)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"symbol":"HK.00700"}' \
  https://127.0.0.1:22499/api/price-reminder

POST /api/reminder-settings

proto_id: QOT_GET_REMINDER_SETTINGS (2131755064)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/reminder-settings

POST /api/set-alert-system-notify-setting

proto_id: QOT_SET_ALERT_SYSTEM_NOTIFY_SETTING (2131755060)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/set-alert-system-notify-setting

POST /api/set-common-reminders

proto_id: QOT_SET_COMMON_REMINDERS (2131755069)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/set-common-reminders

POST /api/set-option-event-alert

proto_id: QOT_SET_OPTION_EVENT_ALERT (3309)

Scope: qot:write (qot:read accepted for v1.8 compatibility)

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"oper_type":1,"alert_list":[{"enable":true,"underlying":{"market":11,"code":"AAPL"}}]}' \
  https://127.0.0.1:22499/api/set-option-event-alert

POST /api/set-price-reminder

proto_id: QOT_SET_PRICE_REMINDER (3220)

Scope: qot:write (qot:read accepted for v1.8 compatibility)

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

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}' \
  https://127.0.0.1:22499/api/set-price-reminder

Trading Accounts (Read)

Accounts, funds, positions, orders and fills, margin and fee previews, asset and return trends, order relations, algorithm-order logs, and position corporate actions. Requires acc:read.

POST /api/acc-cash-flow

proto_id: TRD_FLOW_SUMMARY (2226)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

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"}' \
  https://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: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"acc_id":123456,"env":1}' \
  https://127.0.0.1:22499/api/account-flag

GET /api/accounts

proto_id: TRD_GET_ACC_LIST (2001)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -H "Authorization: Bearer $FUTU_API_KEY" \
  https://127.0.0.1:22499/api/accounts

POST /api/biz-group

proto_id: TRD_GET_BIZ_GROUP (22703)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"acc_id":123456,"env":1,"market":1}' \
  https://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: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"acc_id":123456,"env":1}' \
  https://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: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"acc_id":123456,"env":1}' \
  https://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: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"acc_id":123456,"env":1}' \
  https://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: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"acc_id":123456,"env":1}' \
  https://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: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"acc_id":123456,"env":1}' \
  https://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: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

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>"}' \
  https://127.0.0.1:22499/api/cash-detail

POST /api/cash-log

proto_id: TRD_GET_CASH_LOG (22701)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

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"}' \
  https://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: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

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}}' \
  https://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: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

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"}' \
  https://127.0.0.1:22499/api/flow-summary

POST /api/funds

proto_id: TRD_GET_FUNDS (2101)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"market":1,"acc_id":123456,"env":1}' \
  https://127.0.0.1:22499/api/funds

POST /api/get-bond-account-positions

proto_id: TRD_GET_BOND_ACCOUNT_POSITIONS (2132803606)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/get-bond-account-positions

POST /api/get-forex-account-quote-context

proto_id: TRD_GET_FOREX_ACCOUNT_QUOTE_CONTEXT (2132803613)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/get-forex-account-quote-context

POST /api/get-forex-accounts

proto_id: TRD_GET_FOREX_ACCOUNTS (2132803609)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/get-forex-accounts

POST /api/get-forex-assets

proto_id: TRD_GET_FOREX_ASSETS (2132803612)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/get-forex-assets

POST /api/get-forex-order-detail

proto_id: TRD_GET_FOREX_ORDER_DETAIL (2132803628)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/get-forex-order-detail

POST /api/get-forex-orders

proto_id: TRD_GET_FOREX_ORDERS (2132803627)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/get-forex-orders

POST /api/get-forex-risk-control

proto_id: TRD_GET_FOREX_RISK_CONTROL (2132803610)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/get-forex-risk-control

POST /api/get-forex-symbol-configs

proto_id: TRD_GET_FOREX_SYMBOL_CONFIGS (2132803614)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/get-forex-symbol-configs

POST /api/get-fund-account-positions

proto_id: TRD_GET_FUND_ACCOUNT_POSITIONS (2132803607)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/get-fund-account-positions

POST /api/get-fund-position-details

proto_id: TRD_GET_FUND_POSITION_DETAILS (2132803608)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/get-fund-position-details

POST /api/get-wealth-holdings

proto_id: TRD_GET_WEALTH_HOLDINGS (2132803605)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/get-wealth-holdings

POST /api/history-order-fills

proto_id: TRD_GET_HISTORY_ORDER_FILL_LIST (2222)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

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"}' \
  https://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: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

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"}' \
  https://127.0.0.1:22499/api/history-orders

GET /api/list-accounts

proto_id: TRD_GET_ACC_LIST (2001)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -H "Authorization: Bearer $FUTU_API_KEY" \
  https://127.0.0.1:22499/api/list-accounts

POST /api/margin-info

proto_id: TRD_GET_MARGIN_INFO (22704)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"acc_id":123456,"env":1,"market":1}' \
  https://127.0.0.1:22499/api/margin-info

POST /api/margin-ratio

proto_id: TRD_GET_MARGIN_RATIO (2223)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

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"]}' \
  https://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: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

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}' \
  https://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: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

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"]}' \
  https://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: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"market":1,"acc_id":123456,"env":1}' \
  https://127.0.0.1:22499/api/order-fills

POST /api/orders

proto_id: TRD_GET_ORDER_LIST (2201)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"market":1,"acc_id":123456,"env":1}' \
  https://127.0.0.1:22499/api/orders

POST /api/positions

proto_id: TRD_GET_POSITION_LIST (2102)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"market":1,"acc_id":123456,"env":1}' \
  https://127.0.0.1:22499/api/positions

POST /api/preview-forex-margin

proto_id: TRD_PREVIEW_FOREX_MARGIN (2132803611)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/preview-forex-margin

POST /api/preview-order-impact

proto_id: TRD_PREVIEW_ORDER_IMPACT (22711)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"header":{"trd_env":1,"acc_id":9001,"trd_market":2},"order":{"single":{"security":{"code":"AAPL","market_id":11,"stock_market":2,"exchange":"US","currency":"USD","security_type":1},"side":1,"order_type":2,"volume":{"quantity":"10"}}},"extension_version":1}' \
  https://127.0.0.1:22499/api/preview-order-impact

GET /api/token-state

proto_id: GET_TOKEN_STATE (1326)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -H "Authorization: Bearer $FUTU_API_KEY" \
  https://127.0.0.1:22499/api/token-state

POST /api/token-state

proto_id: GET_TOKEN_STATE (1326)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"acc_id":123456}' \
  https://127.0.0.1:22499/api/token-state

POST /api/trd/algo-order-logs

proto_id: TRD_GET_ALGO_ORDER_LOGS (22723)

Scope: acc:read

Backend read enabled by default: uses --extended-data-reads and acc:read. page_index is zero-based and page_size is 1..50. With fetch_all=true, the daemon uses only total_cnt to fetch all pages; there is no page_flag/completed. A later-page failure never returns a silent partial result.

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"header":{"trd_env":1,"acc_id":900001,"trd_market":2},"algo_order_id":"ORDER_ID","page_index":0,"page_size":50,"fetch_all":false,"extension_version":1}' \
  https://127.0.0.1:22499/api/trd/algo-order-logs

POST /api/trd/asset-trend

proto_id: TRD_GET_ASSET_TREND (22712)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"header":{"trd_env":1,"acc_id":9001,"trd_market":2},"range":{"query_type":3,"currency":"USD","start_date":"2026-08-01 00:00:00","end_date":"2026-08-30 23:59:59","time_location":"America/New_York","price_context":{"use_pre_market":true,"use_after_hours":false,"use_overnight":true}},"extension_version":1}' \
  https://127.0.0.1:22499/api/trd/asset-trend

POST /api/trd/broker-option-strategies

proto_id: TRD_GET_BROKER_OPTION_STRATEGIES (2132803595)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/trd/broker-option-strategies

POST /api/trd/broker-total-assets

proto_id: TRD_GET_BROKER_TOTAL_ASSETS (2132803601)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/trd/broker-total-assets

POST /api/trd/cash-sweep-configuration

proto_id: TRD_GET_CASH_SWEEP_CONFIGURATION (2132803603)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/trd/cash-sweep-configuration

POST /api/trd/cash-sweep-redemption-capacity

proto_id: TRD_GET_CASH_SWEEP_REDEMPTION_CAPACITY (2132803604)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/trd/cash-sweep-redemption-capacity

POST /api/trd/fractional-share-whitelist

proto_id: TRD_GET_FRACTIONAL_SHARE_WHITELIST (2132803600)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/trd/fractional-share-whitelist

POST /api/trd/future-position-breakdown

proto_id: TRD_GET_FUTURE_POSITION_BREAKDOWN (2132803593)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/trd/future-position-breakdown

POST /api/trd/future-subpositions

proto_id: TRD_GET_FUTURE_SUBPOSITIONS (2132803588)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/trd/future-subpositions

POST /api/trd/get-account-auto-exchange-setting

proto_id: TRD_GET_ACCOUNT_AUTO_EXCHANGE_SETTING (2132803621)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/trd/get-account-auto-exchange-setting

POST /api/trd/get-account-financing-setting

proto_id: TRD_GET_ACCOUNT_FINANCING_SETTING (2132803619)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/trd/get-account-financing-setting

POST /api/trd/get-account-foreign-exchange-setting

proto_id: TRD_GET_ACCOUNT_FOREIGN_EXCHANGE_SETTING (2132803623)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/trd/get-account-foreign-exchange-setting

POST /api/trd/get-account-local-exchange-setting

proto_id: TRD_GET_ACCOUNT_LOCAL_EXCHANGE_SETTING (2132803625)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/trd/get-account-local-exchange-setting

POST /api/trd/legacy-future-fee-config

proto_id: TRD_GET_LEGACY_FUTURE_FEE_CONFIG (2132803597)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/trd/legacy-future-fee-config

POST /api/trd/option-combo-eligibility

proto_id: TRD_GET_OPTION_COMBO_ELIGIBILITY (2132803594)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/trd/option-combo-eligibility

POST /api/trd/order-dates

proto_id: TRD_GET_ORDER_DATES (2132803586)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/trd/order-dates

POST /api/trd/order-fill-details

proto_id: TRD_GET_ORDER_FILL_DETAILS (2132803585)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/trd/order-fill-details

POST /api/trd/order-relations

proto_id: TRD_GET_ORDER_RELATIONS (22715)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"header":{"trd_env":1,"acc_id":9001,"trd_market":2},"order_id_ex":"ORDER_ID","extension_version":1}' \
  https://127.0.0.1:22499/api/trd/order-relations

POST /api/trd/position-corporate-actions

proto_id: TRD_GET_POSITION_CORPORATE_ACTIONS (22716)

Scope: acc:read

Enablement and evidence boundary: start with --extended-data-reads; the feature is on by default. Current evidence is source-aligned + local-green; live backend behavior remains unverified. The instrument set comes only from the account's fresh position snapshot; callers cannot supply or override positions/symbols. The daemon queries yesterday through tomorrow in each market timezone and completes stock and derivative backend pagination independently. Mapping or per-job failures are explicit partial status.

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"header":{"trd_env":1,"acc_id":900000001,"trd_market":2},"extension_version":1}' \
  https://127.0.0.1:22499/api/trd/position-corporate-actions

POST /api/trd/premium-entitlements

proto_id: TRD_GET_PREMIUM_ENTITLEMENTS (2132803599)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/trd/premium-entitlements

POST /api/trd/return-calendar

proto_id: TRD_GET_RETURN_CALENDAR (22714)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"header":{"trd_env":1,"acc_id":9001,"trd_market":2},"currency":"USD","query_type":1,"method":2,"time":1788112000000,"calendar_date":"2026-08-01 00:00:00","time_location":"America/New_York","price_context":{"use_pre_market":true,"use_after_hours":false,"use_overnight":true},"extension_version":1}' \
  https://127.0.0.1:22499/api/trd/return-calendar

POST /api/trd/sub-account-fill-quantities

proto_id: TRD_GET_SUB_ACCOUNT_FILL_QUANTITIES (2132803591)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/trd/sub-account-fill-quantities

POST /api/trd/symbol-history-fills

proto_id: TRD_GET_SYMBOL_HISTORY_FILLS (2132803590)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/trd/symbol-history-fills

POST /api/trd/symbol-history-orders

proto_id: TRD_GET_SYMBOL_HISTORY_ORDERS (2132803589)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/trd/symbol-history-orders

POST /api/trd/symbol-trade-counts

proto_id: TRD_GET_SYMBOL_TRADE_COUNTS (2132803592)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/trd/symbol-trade-counts

POST /api/trd/today-fill-statistics

proto_id: TRD_GET_TODAY_FILL_STATISTICS (2132803587)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/trd/today-fill-statistics

POST /api/trd/trade-password-state

proto_id: TRD_GET_TRADE_PASSWORD_STATE (2132803602)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/trd/trade-password-state

POST /api/trd/transaction-fee-plan

proto_id: TRD_GET_TRANSACTION_FEE_PLAN (2132803596)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/trd/transaction-fee-plan

POST /api/trd/yield-trend

proto_id: TRD_GET_YIELD_TREND (22713)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"header":{"trd_env":1,"acc_id":9001,"trd_market":2},"range":{"query_type":3,"currency":"USD","start_date":"2026-08-01 00:00:00","end_date":"2026-08-30 23:59:59","time_location":"America/New_York","price_context":{"use_pre_market":true,"use_after_hours":false,"use_overnight":true}},"method":2,"extension_version":1}' \
  https://127.0.0.1:22499/api/trd/yield-trend

Trading Write

Place order, modify order, cancel one 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: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"acc_id":123456,"env":1,"market":1}' \
  https://127.0.0.1:22499/api/cancel-all-order

POST /api/cancel-forex-order

proto_id: TRD_CANCEL_FOREX_ORDER (2132803629)

Scope: trade:real

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/cancel-forex-order

POST /api/cancel-order

proto_id: TRD_MODIFY_ORDER (2205)

Scope: trade:real or trade:simulate (based on env)

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Semantic single-order cancel endpoint: it still sends Trd_ModifyOrder(Cancel) underneath, but REST clients only need the trading account, env, market, and either order_id or order_id_ex; low-level packet_id / modify_order_op are not required.

Friendly fields: flat bodies accept env (real / simulate / sim), market (US / HK / official non-fund trading-market int), and optional op (cancel / 2). If op is provided, it must mean cancel.

Response semantics: ret_type=0 only means the backend accepted the Cancel operation request; it is not proof of the final cancelled state. The Rust daemon runs one bounded authoritative order refresh before returning the ACK to help REST/CLI follow-up order reads converge sooner. It does not implicitly refresh positions after the cancel ACK; can_sell_qty still comes from later trade push events or an explicit positions query with refresh_cache=true. Final state still comes from push events or refresh queries.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"acc_id":123456,"env":"real","market":"US","order_id_ex":"FH1C8ABB517AE56000"}' \
  https://127.0.0.1:22499/api/cancel-order

POST /api/combo-order

proto_id: TRD_PLACE_COMBO_ORDER (2227)

Scope: trade:real or trade:simulate (based on env)

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

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}}' \
  https://127.0.0.1:22499/api/combo-order

POST /api/confirm-forex-order

proto_id: TRD_CONFIRM_FOREX_ORDER (2132803631)

Scope: trade:real

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/confirm-forex-order

POST /api/modify-forex-order

proto_id: TRD_MODIFY_FOREX_ORDER (2132803632)

Scope: trade:real

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/modify-forex-order

POST /api/modify-order

proto_id: TRD_MODIFY_ORDER (2205)

Scope: trade:real or trade:simulate (based on env)

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Field table (REST accepts int enums only):

Field Type Required Description
c2s.header.trd_env int ✅ 0=Real / 1=Simulate
c2s.header.acc_id uint64 ✅ Trading account ID
c2s.header.trd_market int ✅ Trading market enum
order_id / order_id_ex uint64 / string ✅ Order to modify / cancel; pass one of them
modify_order_op int ✅ 1=Normal modify / 2=Cancel / 3=Disable / 4=Enable / 5=DeleteOutofdate
qty / price float Required for Normal modify depending on original order type New quantity / price

Single-order cancel: prefer the semantic /api/cancel-order endpoint. This low-level endpoint remains compatible with the historical modify_order_op: 2 cancel shape; /api/cancel-all-order is the bulk-cancel endpoint.

Low-level strict endpoint: /api/modify-order does not accept the flat env / market / op=cancel friendly fields from /api/cancel-order; when using the c2s shape, pass fields according to the low-level ModifyOrder contract. Normal REST single-order cancels should use /api/cancel-order directly.

Response semantics: ret_type=0 means the backend accepted the Modify/Cancel operation request; it is not proof of the final filled/cancelled state. Final order status should be read from trade push events or later order queries with refresh_cache=true; sellable quantity should be read from trade push events or explicit position refresh queries. This matches the official OpenD ModifyOrder ACK semantics. For a successful single-order cancel, the Rust daemon also runs one bounded authoritative order refresh before returning the ACK to help REST/CLI follow-up order reads converge sooner. It does not implicitly refresh positions after the cancel ACK, avoiding unrelated account-info query failures in cancel result handling. Refresh timeout/failure does not rewrite a backend-accepted cancel into a failure; final state still comes from push events or refresh queries.

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":1},"order_id":987,"modify_order_op":2}}' \
  https://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: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

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}' \
  https://127.0.0.1:22499/api/order

POST /api/reconfirm-order

proto_id: TRD_RECONFIRM_ORDER (2237)

Scope: trade:real or trade:simulate (based on env)

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

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}' \
  https://127.0.0.1:22499/api/reconfirm-order

POST /api/set-forex-position-stops

proto_id: TRD_SET_FOREX_POSITION_STOPS (2132803630)

Scope: trade:real

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/set-forex-position-stops

POST /api/sub-acc-push

proto_id: TRD_SUB_ACC_PUSH (2008)

Scope: acc:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"acc_id_list":[123456]}' \
  https://127.0.0.1:22499/api/sub-acc-push

POST /api/trd/batch-close-positions

proto_id: TRD_BATCH_CLOSE_POSITIONS (22727)

Scope: trade:real

Real-money write, disabled by default: requires --enable-position-actions. Targets must be explicit, deduplicated, non-portfolio positions with requested quantity no greater than the fresh closable balance. Japanese brokers and unsupported markets are rejected. Supply qty as decimal text; quantity comparisons do not round through floating point.

US fractional closes also require a universal account, confirmed non-DVP settlement, valid dynamic configuration and membership in the current broker's stock whitelist. Fractional requests allow up to four decimal places and a maximum of 999999999.9999. Refresh positions if the original decimal balance is unavailable. An integer request against a fractional balance does not require fractional eligibility. Any ineligible target rejects the entire batch.

Fractional quantities use the regular session; Canadian brokers retain the existing unspecified-session behavior. Other side, order-type and session fields come from fresh position and security facts. Account, configuration, connection or position changes invalidate admission before writing. Unconfirmed trades are never automatically resent. Offline tests cover the new fractional path; live-account verification remains pending. KRX retains local market contracts TrdMarket=18, TrdSecMarket=121, and QotMarket=111.

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"header":{"trd_env":1,"acc_id":900001,"trd_market":2},"idempotency_key":"batch-demo-1","mode":1,"target_list":[{"position_id":9002,"qty":"10"}],"extension_version":1}' \
  https://127.0.0.1:22499/api/trd/batch-close-positions

POST /api/trd/begin-forex-unlock

proto_id: TRD_BEGIN_FOREX_UNLOCK (2132803615)

Scope: trade:unlock

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/trd/begin-forex-unlock

POST /api/trd/cancel-order-group

proto_id: TRD_CANCEL_ORDER_GROUP (22719)

Scope: trade:real

Real-money write, disabled by default: cancels only a complete authoritative current server order group; requires --enable-group-orders and trade:real.

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"header":{"trd_env":1,"acc_id":900001,"trd_market":2},"initial":{"idempotency_key":"group-cancel-demo-1","group_type":3,"order_id_list":["ORDER_ID"]},"extension_version":1}' \
  https://127.0.0.1:22499/api/trd/cancel-order-group

POST /api/trd/clear-futures-positions

proto_id: TRD_CLEAR_FUTURES_POSITIONS (22726)

Scope: trade:real

Real-money write, disabled by default: explicit targets use custom_contract=true and may include supported futures options, but not calendar-spread futures. Account-wide clear requires both all_positions=true and daemon flag --allow-all-position-clear; any unsupported contract in scope rejects the whole action. A synchronous result=0 is admission only; final state requires one unique original-req_id 4718/push result.

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"header":{"trd_env":1,"acc_id":900001,"trd_market":5},"idempotency_key":"clear-demo-1","position_id_list":[9001],"price_type":1,"all_positions":false,"extension_version":1}' \
  https://127.0.0.1:22499/api/trd/clear-futures-positions

POST /api/trd/complete-forex-unlock

proto_id: TRD_COMPLETE_FOREX_UNLOCK (2132803616)

Scope: trade:unlock

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/trd/complete-forex-unlock

POST /api/trd/delete-order-group

proto_id: TRD_DELETE_ORDER_GROUP (22720)

Scope: trade:real

Real-money write, disabled by default: deletes only a complete authoritative current server order group; requires --enable-group-orders and trade:real.

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"header":{"trd_env":1,"acc_id":900001,"trd_market":2},"initial":{"idempotency_key":"group-delete-demo-1","group_type":3,"order_id_list":["ORDER_ID"]},"extension_version":1}' \
  https://127.0.0.1:22499/api/trd/delete-order-group

POST /api/trd/forex-unlock-status

proto_id: TRD_GET_FOREX_UNLOCK_STATUS (2132803618)

Scope: trade:unlock

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/trd/forex-unlock-status

POST /api/trd/lock-forex-trade

proto_id: TRD_LOCK_FOREX_TRADE (2132803617)

Scope: trade:unlock

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/trd/lock-forex-trade

POST /api/trd/modify-algo-order

proto_id: TRD_MODIFY_ALGO_ORDER (22722)

Scope: trade:real

Real-money write, disabled by default: modifies only a nonterminal authoritative current algorithm-order snapshot. Product, market, and algorithm market/limit shape cannot change; modify never overwrites the server vendor and revalidates static/live/customer-company facts. Requires --enable-algo-orders and trade:real.

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"header":{"trd_env":1,"acc_id":900001,"trd_market":2},"initial":{"idempotency_key":"algo-modify-1","order_id":"ORDER_ID","order_version":1,"new_qty":"200","algo":{"algo_type":2,"start_time":1788138000000000,"end_time":1788141600000000,"vwap":{"participation_rate":"0.25"}}},"extension_version":1}' \
  https://127.0.0.1:22499/api/trd/modify-algo-order

POST /api/trd/modify-order-group

proto_id: TRD_MODIFY_ORDER_GROUP (22718)

Scope: trade:real

Real-money write, disabled by default: accepts only one authoritative current server order group; requires --enable-group-orders and trade:real. Never auto-resubmit an unknown result.

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"header":{"trd_env":1,"acc_id":900001,"trd_market":2},"initial":{"idempotency_key":"group-modify-demo-1","group_type":3,"order_list":[{"order_id":"ORDER_ID","order_version":1,"new_price":"101"}]},"extension_version":1}' \
  https://127.0.0.1:22499/api/trd/modify-order-group

POST /api/trd/place-algo-order

proto_id: TRD_PLACE_ALGO_ORDER (22721)

Scope: trade:real

Real-money write, disabled by default: explicitly enable --enable-algo-orders and satisfy trade:real, the source-pinned product/market-limit/side/round-lot matrix, live order_ability_config_v3, dynamic customer-company and required BCAN facts, static-security, broker/cipher, and durable-intent gates. The API exposes typed market/limit variants for six algorithms, but sends only combinations allowed by the pinned rows (for example, US rejects Slicer/Peg and Iceberg market; CN, HK common, and HK futures use their own rows). Evidence is source-aligned + local-green; live backend is unverified. Unknown outcomes are never auto-resubmitted.

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"header":{"trd_env":1,"acc_id":900001,"trd_market":2},"initial":{"idempotency_key":"algo-demo-1","client_order_id":"algo-client-1","code":"AAPL","sec_market":2,"trd_side":1,"qty":"100","price_mode":2,"limit_price":"100","lot_type":2,"order_trade_time_type":1,"position_open_type":1,"pdt_protection":true,"algo":{"algo_type":2,"start_time":1788138000000000,"end_time":1788141600000000,"vwap":{"participation_rate":"0.25"}}},"extension_version":1}' \
  https://127.0.0.1:22499/api/trd/place-algo-order

POST /api/trd/place-order-group

proto_id: TRD_PLACE_ORDER_GROUP (22717)

Scope: trade:real

Real-money write, disabled by default: explicitly enable --enable-group-orders and satisfy trade:real, account/broker/cipher/capability, and durable-intent gates. Evidence is source-aligned + local-green only; live backend behavior is unverified. Timeout/disconnect returns an unknown result and is never auto-resubmitted.

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"header":{"trd_env":1,"acc_id":900001,"trd_market":2},"initial":{"idempotency_key":"group-demo-1","group_type":3,"order_list":[{"acc_id":900001,"client_order_id":"leg-1","code":"AAPL","sec_market":2,"trd_side":1,"order_type":1,"qty":"1","price":"100","lot_type":2,"time_in_force":0,"order_trade_time_type":1,"children_relation":0,"brother_relation":0}],"pdt_protection":true},"extension_version":1}' \
  https://127.0.0.1:22499/api/trd/place-order-group

POST /api/trd/reverse-position

proto_id: TRD_REVERSE_POSITION (22724)

Scope: trade:real

Real-money write, disabled by default: accepts only a fresh authoritative position and complete stock-list facts for an ordinary monthly future. Close and implicit-open symbols, sides, and notionals are authorized atomically. After one backend request, success requires a fresh current-order snapshot plus order-group details to prove two distinct orders in one relation_type=1 group with exact symbol/side/qty/static identity; unknown outcomes are never auto-resubmitted.

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"header":{"trd_env":1,"acc_id":900001,"trd_market":5},"initial":{"idempotency_key":"reverse-demo-1","position_id":9001,"price_type":1},"extension_version":1}' \
  https://127.0.0.1:22499/api/trd/reverse-position

POST /api/trd/roll-position

proto_id: TRD_ROLL_POSITION (22725)

Scope: trade:real

Real-money write, disabled by default: source and target must be different ordinary monthly futures sharing one non-zero linkage_future_id, and source-close/target-open symbols and sides are checked separately. backend request carries no target price, so the daemon does not treat a quote cache as trade notional; API keys with per-order or daily value limits fail closed. After one backend request, a fresh current-order snapshot plus order-group details must prove both relation_type=2 members.

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"header":{"trd_env":1,"acc_id":900001,"trd_market":5},"initial":{"idempotency_key":"roll-demo-1","position_id":9001,"target_code":"HSI2610","target_sec_market":1},"extension_version":1}' \
  https://127.0.0.1:22499/api/trd/roll-position

POST /api/trd/set-account-auto-exchange-setting

proto_id: TRD_SET_ACCOUNT_AUTO_EXCHANGE_SETTING (2132803622)

Scope: trade:real

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/trd/set-account-auto-exchange-setting

POST /api/trd/set-account-financing-setting

proto_id: TRD_SET_ACCOUNT_FINANCING_SETTING (2132803620)

Scope: trade:real

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/trd/set-account-financing-setting

POST /api/trd/set-account-foreign-exchange-setting

proto_id: TRD_SET_ACCOUNT_FOREIGN_EXCHANGE_SETTING (2132803624)

Scope: trade:real

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/trd/set-account-foreign-exchange-setting

POST /api/trd/set-account-local-exchange-setting

proto_id: TRD_SET_ACCOUNT_LOCAL_EXCHANGE_SETTING (2132803626)

Scope: trade:real

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/trd/set-account-local-exchange-setting

POST /api/unlock-trade

proto_id: TRD_UNLOCK_TRADE (2005)

Scope: trade:unlock

Transport boundary: remote calls are supported over the daemon's native HTTPS. Configure rest_tls_cert and rest_tls_key, verify the server certificate, and use an API key with the trade:unlock scope. Configured API-key authentication requires TLS even on loopback listeners; reverse proxies must also use HTTPS upstream. Non-loopback plaintext requests that reach this route receive 403 with diagnostic key rest.unlock_trade.local_transport_required; plaintext sent to a TLS listener cannot complete the TLS handshake. Forwarded / X-Forwarded-Proto headers cannot substitute for actual TLS. Account allowlists still apply.

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"unlock":true,"pwd_md5":"<md5-of-trade-password>"}' \
  https://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: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{"acc_id_list":[123456]}' \
  https://127.0.0.1:22499/api/unsub-acc-push

Quantitative Strategies / Cloud Sync

Cloud strategy and archive synchronization, cloud quota, and running data maintenance. See each endpoint for scopes and configuration requirements.

POST /api/create-quant-cloud-archives

proto_id: QOT_CREATE_QUANT_CLOUD_ARCHIVES (2131755081)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/create-quant-cloud-archives

POST /api/create-quant-cloud-strategies

proto_id: QOT_CREATE_QUANT_CLOUD_STRATEGIES (2131755077)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/create-quant-cloud-strategies

POST /api/delete-quant-cloud-archives

proto_id: QOT_DELETE_QUANT_CLOUD_ARCHIVES (2131755083)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/delete-quant-cloud-archives

POST /api/delete-quant-cloud-strategies

proto_id: QOT_DELETE_QUANT_CLOUD_STRATEGIES (2131755079)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/delete-quant-cloud-strategies

POST /api/get-quant-cloud-archives

proto_id: QOT_GET_QUANT_CLOUD_ARCHIVES (2131755080)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/get-quant-cloud-archives

POST /api/get-quant-cloud-quota

proto_id: QOT_GET_QUANT_CLOUD_QUOTA (2131755084)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/get-quant-cloud-quota

POST /api/get-quant-cloud-strategies

proto_id: QOT_GET_QUANT_CLOUD_STRATEGIES (2131755076)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/get-quant-cloud-strategies

POST /api/get-quant-running-data

proto_id: QOT_GET_QUANT_RUNNING_DATA (2131755087)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/get-quant-running-data

POST /api/get-quant-running-inventory

proto_id: QOT_GET_QUANT_RUNNING_INVENTORY (2131755086)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/get-quant-running-inventory

POST /api/update-quant-cloud-archive

proto_id: QOT_UPDATE_QUANT_CLOUD_ARCHIVE (2131755082)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/update-quant-cloud-archive

POST /api/update-quant-cloud-strategy

proto_id: QOT_UPDATE_QUANT_CLOUD_STRATEGY (2131755078)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/update-quant-cloud-strategy

POST /api/upsert-quant-running-data

proto_id: QOT_UPSERT_QUANT_RUNNING_DATA (2131755088)

Scope: qot:read

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/upsert-quant-running-data

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: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/admin/reload

POST /api/admin/shutdown

proto_id: — (non-proto / no backend forwarding)

Scope: admin

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

Example:

curl -X POST -H "Authorization: Bearer $FUTU_API_KEY" -H 'Content-Type: application/json' \
  -d '{}' \
  https://127.0.0.1:22499/api/admin/shutdown

GET /api/admin/status

proto_id: — (non-proto / no backend forwarding)

Scope: admin

Parameters / Response: Follow this endpoint’s field table and linked contract; the example illustrates the request shape.

platform and every brokers[] entry also include lifecycle_state, lifecycle_generation, and optional last_lifecycle_event. Broker reconnect counters and the latest attempt/success/failure timestamps come from the same lifecycle snapshot, so operators can tell whether recovery is still progressing.

Example:

curl -H "Authorization: Bearer $FUTU_API_KEY" \
  https://127.0.0.1:22499/api/admin/status


Further reading