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-sdkClient Architecture
The SDK uses a modular architecture with 4 specialized clients:
| Client | Description | Requirements |
|---|---|---|
Auth | Authentication & token management | Config |
Data | Market data (OHLC, indexes, securities) | Auth (no OTP required) |
Trading | Trading + portfolio + account | Auth (OTP required) |
Stream | Realtime streaming via WebSocket | Auth (OTP required) |
Initialization flow:
Config → Auth → authenticate(otp) → Data / Trading / StreamAuth 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:
| Client | Service | Access | Description |
|---|---|---|---|
Auth | TokenManager | auth (directly) | Authentication, OTP, token refresh |
Data | MarketDataService | data.marketData | OHLC, indexes, securities |
Trading | TradingService | trading.trading | Place/modify/cancel orders, buying power, conditional orders (FCO) |
Trading | AccountService | trading.account | Account info |
Trading | PortfolioService | trading.portfolio | Balance, positions, order book, PPMMR |
Stream | StreamingService | stream.streaming | Subscribe/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 Case | Client | Authentication |
|---|---|---|
| Market data (OHLC, indexes, securities) | Data | No OTP required |
| Place/modify/cancel orders, account, portfolio | Trading | OTP required |
| WebSocket realtime streaming | Stream | OTP required |
| Place/cancel several orders in one request (Batch Orders) | Trading | OTP required |
Real-time index data (subscribeIndexTrade, subscribeIndexSummary) | Stream | OTP required |
| Trading WebSocket | asyncTradingWs() from @ssi.developer/ssi-sdk | OTP 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
Configreference. - Error Handling: error types and handling patterns.
- Enums: constants like
OrderSide,OrderType,Board, ... - Models: TypeScript interfaces and streaming messages.