NodeJS

Overview

Overview of SSI FastConnect Node.js SDK — REST API and WebSocket streaming

Node.js SDK for SSI Securities trading platform. Supports REST API and WebSocket streaming.

Requirements: Node.js 18+

Source code: github.com/SSI-Securities-Inc/ssi-sdk-node

Installation

npm install @ssi.developer/ssi-sdk

Client Architecture

The SDK uses a modular architecture with 4 specialized clients:

ClientDescriptionRequirements
AuthAuthentication & token managementConfig
DataMarket data (OHLC, indexes, securities)Auth (no OTP required)
TradingTrading + portfolio + accountAuth (OTP required)
StreamRealtime streaming via WebSocketAuth (OTP required)

Initialization flow:

Config → Auth → authenticate(otp) → Data / Trading / Stream

Auth is the root client — manages REST client and tokens. Data, Trading, and Stream all take Auth as a parameter and share the HTTP connection. All API methods are async and return Promise.

Services per client:

ClientServiceAccessDescription
AuthTokenManagerauth (directly)Authentication, OTP, token refresh
DataMarketDataServicedata.marketDataOHLC, indexes, securities
TradingTradingServicetrading.tradingPlace/modify/cancel orders, buying power, conditional orders (FCO)
TradingAccountServicetrading.accountAccount info
TradingPortfolioServicetrading.portfolioBalance, positions, order book, PPMMR
StreamStreamingServicestream.streamingSubscribe/unsubscribe realtime data

Quick Start

Market data only (no OTP required)

import { Auth, Data, Config } from '@ssi.developer/ssi-sdk';

const config = new Config({
  clientId: 'YOUR_CLIENT_ID',
  apiKey: 'YOUR_API_KEY',
  apiSecret: 'YOUR_API_SECRET',
});

const auth = new Auth(config);
await auth.authenticate();

const data = new Data(auth);
const ohlc = await data.marketData.getOhlc1Minute('SSI');
console.log(ohlc);

Trading (OTP required)

import { Auth, Trading, Config, OrderSide } from '@ssi.developer/ssi-sdk';

const config = new Config({
  clientId: 'YOUR_CLIENT_ID',
  apiKey: 'YOUR_API_KEY',
  apiSecret: 'YOUR_API_SECRET',
  privateKey: 'YOUR_PRIVATE_KEY',
});

const auth = new Auth(config);
await auth.authenticate('YOUR_OTP');

const trading = new Trading(auth);

const accounts = await trading.account.getAccountInfo();
console.log(accounts);

const result = await trading.trading.placeLimitOrder(
  'YOUR_ACCOUNT_NO', 'SSI', OrderSide.BUY, 100, 66000,
);
console.log(result);

Realtime streaming (OTP required)

import { Auth, Stream, Config } from '@ssi.developer/ssi-sdk';

const config = new Config({
  clientId: 'YOUR_CLIENT_ID',
  apiKey: 'YOUR_API_KEY',
  apiSecret: 'YOUR_API_SECRET',
  privateKey: 'YOUR_PRIVATE_KEY',
});

const auth = new Auth(config);
await auth.authenticate('YOUR_OTP');

const stream = new Stream(auth);

stream.streaming.onData = (msg) => {
  console.log('[DATA]', msg);
};

await stream.streaming.connect();
await stream.streaming.subscribeSymbolTrade(['SSI']);
await stream.streaming.wait();

Use Cases

Use CaseClientAuthentication
Market data (OHLC, indexes, securities)DataNo OTP required
Place/modify/cancel orders, account, portfolioTradingOTP required
WebSocket realtime streamingStreamOTP required
Place/cancel several orders in one request (Batch Orders)TradingOTP required
Real-time index data (subscribeIndexTrade, subscribeIndexSummary)StreamOTP required
Trading WebSocketasyncTradingWs() from @ssi.developer/ssi-sdkOTP required

Documentation Navigation

  • Installation & Setup: environment, packages, Config.
  • Client Classes: Auth, Data, Trading, Stream, and the Trading WebSocket — initialization and usage.
  • API Services: detailed API methods per service, including Batch Orders, real-time index data and the Trading WebSocket.
  • Configuration: full Config reference.
  • Error Handling: error types and handling patterns.
  • Enums: constants like OrderSide, OrderType, Board, ...
  • Models: TypeScript interfaces and streaming messages.

On this page