Longbridge OpenAPI SDK
    Preparing search index...

    Longbridge OpenAPI SDK

    Longbridge OpenAPI SDK for Node.js

    longbridge provides an easy-to-use interface for invoking Longbridge OpenAPI.

    Runnable examples live in examples/nodejs/:

    • examples/nodejs/account_asset.js
    • examples/nodejs/http_client.js
    • examples/nodejs/subscribe_candlesticks.js
    • examples/nodejs/subscribe_quote.js
    • examples/nodejs/submit_order.js
    • examples/nodejs/today_orders.js

    Install Longbridge OpenAPI SDK

    npm install longbridge
    

    Longbridge OpenAPI supports two authentication methods:

    OAuth 2.0 is the modern authentication method that uses Bearer tokens without requiring HMAC signatures.

    Step 1: Register OAuth Client

    First, register an OAuth client to get your client_id:

    bash / macOS / Linux

    curl -X POST https://openapi.longbridge.com/oauth2/register \
    -H "Content-Type: application/json" \
    -d '{
    "client_name": "My Application",
    "redirect_uris": ["http://localhost:60355/callback"],
    "grant_types": ["authorization_code", "refresh_token"]
    }'

    PowerShell (Windows)

    Invoke-RestMethod -Method Post -Uri https://openapi.longbridge.com/oauth2/register `
      -ContentType "application/json" `
      -Body '{
        "client_name": "My Application",
        "redirect_uris": ["http://localhost:60355/callback"],
        "grant_types": ["authorization_code", "refresh_token"]
      }'
    

    Response:

    {
    "client_id": "your-client-id-here",
    "client_secret": null,
    "client_name": "My Application",
    "redirect_uris": ["http://localhost:60355/callback"]
    }

    Save the client_id for use in your application.

    Step 2: Build an OAuth client and create Config

    OAuth.build() loads a cached token from ~/.longbridge/openapi/tokens/<client_id> (%USERPROFILE%\.longbridge\openapi\tokens\<client_id> on Windows) if one exists and is still valid, or starts the browser authorization flow automatically. The token is persisted to the same path after a successful authorization or refresh.

    const { OAuth, Config } = require('longbridge');

    async function main() {
    const oauth = await OAuth.build(
    "your-client-id",
    (_, url) => console.log("Open this URL to authorize: " + url)
    );
    const config = Config.fromOAuth(oauth);
    // Use config to create contexts...
    }

    main();

    Setting environment variables (macOS/Linux)

    export LONGBRIDGE_APP_KEY="App Key get from user center"
    export LONGBRIDGE_APP_SECRET="App Secret get from user center"
    export LONGBRIDGE_ACCESS_TOKEN="Access Token get from user center"

    Setting environment variables (Windows)

    setx LONGBRIDGE_APP_KEY "App Key get from user center"
    setx LONGBRIDGE_APP_SECRET "App Secret get from user center"
    setx LONGBRIDGE_ACCESS_TOKEN "Access Token get from user center"
    Name Description
    LONGBRIDGE_LANGUAGE Language identifier, zh-CN, zh-HK or en (Default: en)
    LONGBRIDGE_HTTP_URL HTTP endpoint url (Default: https://openapi.longbridge.com)
    LONGBRIDGE_QUOTE_WS_URL Quote websocket endpoint url (Default: wss://openapi-quote.longbridge.com/v2)
    LONGBRIDGE_TRADE_WS_URL Trade websocket endpoint url (Default: wss://openapi-trade.longbridge.com/v2)
    LONGBRIDGE_ENABLE_OVERNIGHT Enable overnight quote, true or false (Default: false)
    LONGBRIDGE_PUSH_CANDLESTICK_MODE realtime or confirmed (Default: realtime)
    LONGBRIDGE_PRINT_QUOTE_PACKAGES Print quote packages when connected, true or false (Default: true)
    LONGBRIDGE_LOG_PATH Set the path of the log files (Default: no logs)

    Then create a config from the environment:

    const { Config } = require('longbridge');
    const config = Config.fromApikeyEnv();
    const { OAuth, Config, QuoteContext } = require('longbridge');

    async function main() {
    const oauth = await OAuth.build(
    "your-client-id",
    (_, url) => console.log("Open this URL to authorize: " + url)
    );
    const config = Config.fromOAuth(oauth);
    const ctx = QuoteContext.new(config);
    const resp = await ctx.quote(["700.HK", "AAPL.US", "TSLA.US", "NFLX.US"]);
    for (let obj of resp) {
    console.log(obj.toString());
    }
    }

    main();
    const { OAuth, Config, QuoteContext, SubType } = require('longbridge');

    async function main() {
    const oauth = await OAuth.build(
    "your-client-id",
    (_, url) => console.log("Open this URL to authorize: " + url)
    );
    const config = Config.fromOAuth(oauth);
    const ctx = QuoteContext.new(config);
    ctx.setOnQuote((_, event) => console.log(event.toString()));
    await ctx.subscribe(
    ["700.HK", "AAPL.US", "TSLA.US", "NFLX.US"],
    [SubType.Quote],
    );
    }

    main();
    const {
    OAuth,
    Config,
    TradeContext,
    Decimal,
    OrderSide,
    TimeInForceType,
    OrderType,
    } = require('longbridge');

    async function main() {
    const oauth = await OAuth.build(
    "your-client-id",
    (_, url) => console.log("Open this URL to authorize: " + url)
    );
    const config = Config.fromOAuth(oauth);
    const ctx = TradeContext.new(config);
    const resp = await ctx.submitOrder({
    symbol: "700.HK",
    orderType: OrderType.LO,
    side: OrderSide.Buy,
    timeInForce: TimeInForceType.Day,
    submittedPrice: new Decimal("50"),
    submittedQuantity: new Decimal(200),
    });
    console.log(resp.toString());
    }

    main();
    • Windows setx requires a new terminal; use set for the current cmd.exe session.
    • If the script exits, you won't receive push events; keep Node running.
    • For debugging, set LONGBRIDGE_LOG_PATH to enable SDK logs.

    Licensed under either of