UNPKG

@itick/browser-sdk

Version:

Official iTick API SDK for browser. Real-time & historical data for global Stocks, Forex, Crypto, Indices, Futures, Funds, Precious Metals. REST (OHLCV/K-line) + low-latency WebSocket. Promise-based, TypeScript-ready. For quant trading & fintech

463 lines (355 loc) 53.3 kB
<!-- markdownlint-disable no-inline-html first-line-h1 --> <div align="center"> <img src="https://itick.org/img/apple.svg" style="border-radius: 50%;margin-right: 6px;" /> <img src="https://itick.org/img/alphabet.svg" style="border-radius: 50%;margin-right: 6px;" /> <img src="https://itick.org/img/microsoft.svg" style="border-radius: 50%;margin-right: 6px;" /> <img src="https://itick.org/icon/us-nasdaq-tsla.svg" style="border-radius: 50%;margin-right: 6px;" /> <img src="https://itick.org/icon/us-nasdaq-nvda.svg" style="border-radius: 50%;margin-right: 6px;" /> <img src="https://itick.org/img/crypto/XTVCBTC.svg" style="border-radius: 50%;margin-right: 6px;" /> <img src="https://itick.org/img/crypto/XTVCETH.svg" style="border-radius: 50%;margin-right: 6px;" /> <img src="https://itick.org/img/crypto/XTVCUSDT.svg" style="border-radius: 50%;margin-right: 6px;" /> <img src="https://itick.org/img/crypto/XTVCSHIB.svg" style="border-radius: 50%;margin-right: 6px;" /> <img src="https://itick.org/img/indices/s-and-p-500.svg" style="border-radius: 50%;margin-right: 6px;" /> <img src="https://itick.org/img/indices/nasdaq-100.svg" style="border-radius: 50%;margin-right: 6px;" /> <img src="https://itick.org/img/indices/hang-seng.svg" style="border-radius: 50%;margin-right: 6px;" /> <img src="https://itick.org/img/indices/nikkei-225.svg" style="border-radius: 50%;margin-right: 6px;" /> <img src="https://itick.org/img/metal/gold.svg" style="border-radius: 50%;margin-right: 6px;" /> </div> <div align="center"> <a href="https://itick.org" target="_blank" style="display: flex;justify-content: center;margin-top: 20px;"> <img width="400" src="https://itick.org/images/logo/logo.svg" alt="iTick logo"> </a> <h1>iTick Web browser js SDK</h1> [![npm version][npm-version-img]][npm-link] [![CDNJS][cdn-js-img]][cdn-js-link] [![install size][npm-install-size-img]][npm-install-size-link] [![npm bundle size][bundle-size-img]][bundle-size-link] [![license badge][license-img]][license-link] </div> <!-- markdownlint-enable no-inline-html --> [English](https://github.com/itick-org/javascript-sdk/blob/main/README.md) | [简体中文](https://github.com/itick-org/javascript-sdk/blob/main/README.zh-CN.md) | [繁體中文](https://github.com/itick-org/javascript-sdk/blob/main/README.zh-HK.md) The web browser javascript SDK for iTick API, providing REST API queries and WebSocket real-time data subscription for basics, stocks, indices, futures, funds, forex, and crypto. Used to access real-time financial market data from the iTick API. ## ✨ Features - **Comprehensive Market Coverage**: Access global financial markets including stocks, crypto, forex, indices, futures, and funds - **Real-time Data**: WebSocket-based real-time data streaming with automatic reconnection support - **RESTful API**: Clean and intuitive REST API for retrieving historical data and snapshots - **Type Safety**: Full TypeScript support with comprehensive type definitions - **Auto Reconnection**: Built-in automatic reconnection mechanism (5-second interval, configurable unlimited attempts) - **Heartbeat Keep-alive**: Automatic ping/pong mechanism (30-second interval) to maintain stable connections - **Modular Design**: Independent modules organized by asset type for clearer structure - **Flexible Subscription**: Support for subscribing to quotes, order book depth, trades, and candlestick data ## Browser Support | Chrome | Firefox | Safari | Opera | Edge | | :------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------: | | ![Chrome browser logo](https://raw.githubusercontent.com/alrra/browser-logos/main/src/chrome/chrome_48x48.png) | ![Firefox browser logo](https://raw.githubusercontent.com/alrra/browser-logos/main/src/firefox/firefox_48x48.png) | ![Safari browser logo](https://raw.githubusercontent.com/alrra/browser-logos/main/src/safari/safari_48x48.png) | ![Opera browser logo](https://raw.githubusercontent.com/alrra/browser-logos/main/src/opera/opera_48x48.png) | ![Edge browser logo](https://raw.githubusercontent.com/alrra/browser-logos/main/src/edge/edge_48x48.png) | | Latest ✔ | Latest ✔ | Latest ✔ | Latest ✔ | Latest ✔ | ## 🚀 Installation ### Package manager Using npm: ```bash npm install @itick/browser-sdk ``` Using yarn: ```bash yarn add @itick/browser-sdk ``` Using pnpm: ```bash pnpm add @itick/browser-sdk ``` ### CDN ```html <!-- Using unpkg CDN --> <script src="https://unpkg.com/@itick/browser-sdk@latest/dist/itick-sdk.min.js"></script> <!-- Or using jsDelivr CDN --> <script src="https://cdn.jsdelivr.net/npm/@itick/browser-sdk@latest/dist/itick-sdk.min.js"></script> <script> const { BaseClient, StockClient, CryptoClient, ForexClient, IndicesClient, FutureClient, FundClient } = window.iTickSDK; </script> ``` ## 🎯 Quick Start ### Basic Usage ```javascript import { StockClient } from "@itick/browser-sdk"; // Initialize client with API Token const token = process.env.ITICK_TOKEN; const client = new StockClient(token); // Get stock quote async function getQuote() { try { const response = await client.getQuote({ region: "US", code: "AAPL" }); if (response.code === 0 && response.data) { console.log("Latest Price:", response.data.ld); console.log("Change %:", response.data.chp); } } catch (error) { console.error("Error:", error.message); } } getQuote(); ``` ### Real-time Data via WebSocket ```javascript import { CryptoClient } from "@itick/browser-sdk"; const client = new CryptoClient(token); // Create WebSocket connection with subscription data - SDK handles connection and automatically subscribes after reconnection, no need to send subscription data again const socket = client.createSocket({ maxReconnectTimes: 10, // Maximum reconnection attempts, default is 0 (unlimited) pingInterval: 30000, // Ping interval, default 30 seconds reconnectInterval: 5000, // Reconnection interval, default 5 seconds subscribeData: { codes: ["BTCUSDT$BA", "ETHUSDT$BA"], types: ["quote", "tick"], }, }); // Create custom WebSocket connection const socket = client.createSocket(); // Send subscription data after successful connection or reconnection socket.onSocketOpen(() => { socket.subscribeData({ codes: ["BTCUSDT$BA", "ETHUSDT$BA"], types: ["quote", "tick"], }); }); // Handle received messages socket.onSocketMessage((res) => { console.log("Received data:", res); }); // Handle errors socket.onSocketError((error) => { console.error("WebSocket error:", error); }); // Disconnect when done // socket.disconnectSocket(); ``` ## 📚 API Reference ### Base Module Financial instrument listings, market holiday information, and trading hours. ```typescript import { BaseClient } from "@itick/browser-sdk"; const client = new BaseClient(token); // Get symbol list await client.getSymbolList({ type: "stock", region: "US" }); await client.getSymbolList({ type: "crypto", region: "BA" }); await client.getSymbolList({ type: "forex", region: "GB" }); // Get market holidays await client.getSymbolHolidays("US"); await client.getSymbolHolidays("HK"); ``` #### BaseClient Method Reference Table | Method Name | Parameters | Return Type | Description | Details | | :------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------- | :----------------------------------------------------------------------------------- | :------------------------------------------------------------------------------ | | `getSymbolList` | `options`: `Object`<br>- `type`:`enum` (Product type, e.g., `stock`,`forex`,`fund`,`future`,`indices`) <br>- `region`:`string` (Market region code, e.g., `US`, `BA`, `GB`, etc.) | `Promise<APIResponse<SymbolListData[]>>` | Get financial instrument listings (symbol list) for specified market and asset type. | [iTick Symbol List](https://docs.itick.org/rest-api/basics/symbol-list) | | `getSymbolHolidays` | region: `string` (Market region code, e.g., `US`, `HK`, etc.) | `Promise<APIResponse<HolidayData[]>>` | Get holiday information for specified market, including trading hours schedule. | [iTick Market Holidays](https://docs.itick.org/rest-api/basics/symbol-holidays) | ### Stock Module Access global stock market data including US stocks, Hong Kong stocks, etc. ```javascript import { StockClient } from "@itick/browser-sdk"; const client = new StockClient(token); // Get single stock information await client.getInfo({ region: "US", code: "AAPL" }); // Get real-time quote await client.getQuote({ region: "US", code: "AAPL" }); // Get order book depth await client.getDepth({ region: "US", code: "AAPL" }); // Get latest trade await client.getTick({ region: "US", code: "AAPL" }); // Get candlestick data await client.getKline({ region: "US", code: "AAPL", interval: "5m", limit: 100, }); // Batch queries await client.getQuotes({ region: "US", codes: ["AAPL", "MSFT", "GOOGL"] }); await client.getDepths({ region: "US", codes: ["AAPL", "MSFT"] }); await client.getTicks({ region: "US", codes: ["AAPL", "MSFT"] }); await client.getKlines({ region: "US", codes: ["AAPL", "MSFT"], interval: "1d", limit: 50, }); // IPO information await client.getIPO({ region: "US", code: "RIVN" }); // Stock split information await client.getSplit({ region: "US", code: "AAPL" }); ``` #### StockClient Method Reference Table | Method Name | Parameters | Return Type | Description | Details | | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------- | :---------------------------------------------------------- | :-------------------------------------------------------------------------------- | | `getInfo` | `params`: `Object`<br>- `region`: `string` (Market code, e.g., `US`, `HK`, etc.)<br>- `code`: `string` (Stock code, e.g., `AAPL`)<br>-`exchange`?:`string` (Optional, Exchange code e.g., `NYSE`, `NASDAQ`) | `Promise<APIResponse<StockInfo>>` | Get basic stock information | [iTick Stock Info](https://docs.itick.org/rest-api/stocks/stock-info) | | `getIPO` | `params`: `Object`<br>- `region`: `string` (Market code, e.g., `US`, `HK`, etc.)<br>- `code`: `string` (Stock code, e.g., `AAPL`) | `Promise<APIResponse<StockIPO>>` | Get stock IPO information | [iTick Stock IPO](https://docs.itick.org/rest-api/stocks/stock-ipo) | | `getSplit` | `params`: `Object`<br>- `region`: `string` (Market code, e.g., `US`, `HK`, etc.)<br>- `code`: `string` (Stock code, e.g., `AAPL`) | `Promise<APIResponse<StockSplit>>` | Get stock ex-rights and dividend information | [iTick Stock Split](https://docs.itick.org/rest-api/stocks/stock-split) | | `getTick` | `params`: `Object`<br>- `region`: `string` (Market code, e.g., `US`, `HK`, etc.)<br>- `code`: `string` (Stock code, e.g., `AAPL`) | `Promise<APIResponse<TickData>>` | Get latest trade data for a single stock | [iTick Stock Real-time Tick](https://docs.itick.org/rest-api/stocks/stock-tick) | | `getQuote` | `params`: `Object`<br>- `region`: `string` (Market code, e.g., `US`, `HK`, etc.)<br>- `code`: `string` (Stock code, e.g., `AAPL`) | `Promise<APIResponse<QuoteData>>` | Get latest quote for a single stock | [iTick Stock Real-time Quote](https://docs.itick.org/rest-api/stocks/stock-quote) | | `getDepth` | `params`: `Object`<br>- `region`: `string` (Market code, e.g., `US`, `HK`, etc.)<br>- `code`: `string` (Stock code, e.g., `AAPL`) | `Promise<APIResponse<DepthData>>` | Get latest order book depth for a single stock | [iTick Stock Real-time Depth](https://docs.itick.org/rest-api/stocks/stock-depth) | | `getKline` | `options`: `GetKlineOptions`<br>- `region`: `string` (Market code)<br>- `code`: `string` (Stock code)<br>- `interval`: `KlineType` (Candlestick period type)<br>- `limit`: `number` (Number of data points returned, max 500)<br>- `et`?: `string \| number` (Optional, end timestamp) | `Promise<APIResponse<KlineData[]>>` | Get candlestick data for a single stock | [iTick Stock K-line](https://docs.itick.org/rest-api/stocks/stock-kline) | | `getTicks` | `params`: `Object`<br>- `region`: `string` (Market code)<br>- `codes`: `string[] \| string` (Stock code list) | `Promise<APIResponse<TickDataMap>>` | Get latest trade data for multiple stocks | [iTick Stock Batch Ticks](https://docs.itick.org/rest-api/stocks/stock-ticks) | | `getQuotes` | `params`: `Object`<br>- `region`: `string` (Market code)<br>- `codes`: `string[] \| string` (Stock code list) | `Promise<APIResponse<QuoteDataMap>>` | Get latest quotes for multiple stocks | [iTick Stock Batch Quotes](https://docs.itick.org/rest-api/stocks/stock-quotes) | | `getDepths` | `params`: `Object`<br>- `region`: `string` (Market code)<br>- `codes`: `string[] \| string` (Stock code list) | `Promise<APIResponse<DepthDataMap>>` | Get latest order book depth for multiple stocks | [iTick Stock Batch Depths](https://docs.itick.org/rest-api/stocks/stock-depths) | | `getKlines` | `options`: `GetKlinesOptions`<br>- `region`: `string` (Market code)<br>- `codes`: `string[] \| string` (Stock code list)<br>- `interval`: `KlineType` (Candlestick period type)<br>- `limit`: `number` (Number of data points returned, max 500)<br>- `et`?: `string \| number` (Optional, end timestamp) | `Promise<APIResponse<KlineDataMap>>` | Get candlestick data for multiple stocks | [iTick Stock Batch K-lines](https://docs.itick.org/rest-api/stocks/stock-klines) | | `createSocket` | `options`?: `CreateSocketOptions` (Optional, WebSocket connection options) | `SocketClient` | Create WebSocket connection for real-time data subscription | [iTick WebSocket Stocks](https://docs.itick.org/websocket/stocks) | ### Crypto Module Access crypto market data from multiple exchanges. ```javascript import { CryptoClient } from "@itick/browser-sdk"; const client = new CryptoClient(token); // Get real-time data await client.getQuote({ region: "BA", code: "BTCUSDT" }); await client.getDepth({ region: "BA", code: "ETHUSDT" }); await client.getTick({ region: "BA", code: "BTCUSDT" }); // Get candlestick data await client.getKline({ region: "BA", code: "BTCUSDT", interval: "1h", limit: 100, }); // Batch queries await client.getQuotes({ region: "BA", codes: ["BTCUSDT", "ETHUSDT"] }); ``` #### CryptoClient Method Reference Table | Method Name | Parameters | Return Type | Description | Details | | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------- | :---------------------------------------------------------- | :---------------------------------------------------------------------------------- | | `getTick` | `params`: `Object`<br>- `region`: `string` (Market code, e.g., `BA`, `BT`, `PB`, etc.)<br>- `code`: `string` (Symbol code, e.g., `BTCUSDT`) | `Promise<APIResponse<TickData>>` | Get latest trade data for a single crypto | [iTick Crypto Real-time Tick](https://docs.itick.org/rest-api/crypto/crypto-tick) | | `getQuote` | `params`: `Object`<br>- `region`: `string` (Market code, e.g., `BA`, `BT`, `PB`, etc.)<br>- `code`: `string` (Symbol code, e.g., `BTCUSDT`) | `Promise<APIResponse<QuoteData>>` | Get latest quote for a single crypto | [iTick Crypto Real-time Quote](https://docs.itick.org/rest-api/crypto/crypto-quote) | | `getDepth` | `params`: `Object`<br>- `region`: `string` (Market code, e.g., `BA`, `BT`, `PB`, etc.)<br>- `code`: `string` (Symbol code, e.g., `BTCUSDT`) | `Promise<APIResponse<DepthData>>` | Get latest order book depth for a single crypto | [iTick Crypto Real-time Depth](https://docs.itick.org/rest-api/crypto/crypto-depth) | | `getKline` | `options`: `GetKlineOptions`<br>- `region`: `string` (Market code)<br>- `code`: `string` (Symbol code)<br>- `interval`: `KlineType` (Candlestick period type)<br>- `limit`: `number` (Number of data points returned, max 500)<br>- `et`?: `string \| number` (Optional, end timestamp) | `Promise<APIResponse<KlineData[]>>` | Get candlestick data for a single crypto | [iTick Crypto K-line](https://docs.itick.org/rest-api/crypto/crypto-kline) | | `getTicks` | `params`: `Object`<br>- `region`: `string` (Market code)<br>- `codes`: `string[] \| string` (Symbol code list) | `Promise<APIResponse<TickDataMap>>` | Get latest trade data for multiple crypto | [iTick Crypto Batch Ticks](https://docs.itick.org/rest-api/crypto/crypto-ticks) | | `getQuotes` | `params`: `Object`<br>- `region`: `string` (Market code)<br>- `codes`: `string[] \| string` (Symbol code list) | `Promise<APIResponse<QuoteDataMap>>` | Get latest quotes for multiple crypto | [iTick Crypto Batch Quotes](https://docs.itick.org/rest-api/crypto/crypto-quotes) | | `getDepths` | `params`: `Object`<br>- `region`: `string` (Market code)<br>- `codes`: `string[] \| string` (Symbol code list) | `Promise<APIResponse<DepthDataMap>>` | Get latest order book depth for multiple crypto | [iTick Crypto Batch Depths](https://docs.itick.org/rest-api/crypto/crypto-depths) | | `getKlines` | `options`: `GetKlinesOptions`<br>- `region`: `string` (Market code)<br>- `codes`: `string[] \| string` (Symbol code list)<br>- `interval`: `KlineType` (Candlestick period type)<br>- `limit`: `number` (Number of data points returned, max 500)<br>- `et`?: `string \| number` (Optional, end timestamp) | `Promise<APIResponse<KlineDataMap>>` | Get candlestick data for multiple crypto | [iTick Crypto Batch K-lines](https://docs.itick.org/rest-api/crypto/crypto-klines) | | `createSocket` | `options`?: `CreateSocketOptions` (Optional, WebSocket connection options) | `SocketClient` | Create WebSocket connection for real-time data subscription | [iTick WebSocket Crypto](https://docs.itick.org/websocket/crypto) | ### Forex Module Access foreign exchange market data. ```javascript import { ForexClient } from "@itick/browser-sdk"; const client = new ForexClient(token); await client.getQuote({ region: "GB", code: "EURUSD" }); await client.getDepth({ region: "GB", code: "GBPUSD" }); await client.getTick({ region: "GB", code: "USDJPY" }); await client.getKline({ region: "GB", code: "EURUSD", interval: "1d", limit: 50, }); ``` #### ForexClient Method Reference Table | Method Name | Parameters | Return Type | Description | Details | | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------- | :---------------------------------------------------------- | :------------------------------------------------------------------------------- | | `getTick` | `params`: `Object`<br>- `region`: `string` (Market code, e.g., `GB`, etc.)<br>- `code`: `string` (Symbol code, e.g., `EURUSD`) | `Promise<APIResponse<TickData>>` | Get latest trade data for a single currency pair | [iTick Forex Real-time Tick](https://docs.itick.org/rest-api/forex/forex-tick) | | `getQuote` | `params`: `Object`<br>- `region`: `string` (Market code, e.g., `GB`, etc.)<br>- `code`: `string` (Symbol code, e.g., `EURUSD`) | `Promise<APIResponse<QuoteData>>` | Get latest quote for a single currency pair | [iTick Forex Real-time Quote](https://docs.itick.org/rest-api/forex/forex-quote) | | `getDepth` | `params`: `Object`<br>- `region`: `string` (Market code, e.g., `GB`, etc.)<br>- `code`: `string` (Symbol code, e.g., `EURUSD`) | `Promise<APIResponse<DepthData>>` | Get latest order book depth for a single currency pair | [iTick Forex Real-time Depth](https://docs.itick.org/rest-api/forex/forex-depth) | | `getKline` | `options`: `GetKlineOptions`<br>- `region`: `string` (Market code)<br>- `code`: `string` (Symbol code)<br>- `interval`: `KlineType` (Candlestick period type)<br>- `limit`: `number` (Number of data points returned, max 500)<br>- `et`?: `string \| number` (Optional, end timestamp) | `Promise<APIResponse<KlineData[]>>` | Get candlestick data for a single currency pair | [iTick Forex K-line](https://docs.itick.org/rest-api/forex/forex-kline) | | `getTicks` | `params`: `Object`<br>- `region`: `string` (Market code)<br>- `codes`: `string[] \| string` (Symbol code list) | `Promise<APIResponse<TickDataMap>>` | Get latest trade data for multiple currency pairs | [iTick Forex Batch Ticks](https://docs.itick.org/rest-api/forex/forex-ticks) | | `getQuotes` | `params`: `Object`<br>- `region`: `string` (Market code)<br>- `codes`: `string[] \| string` (Symbol code list) | `Promise<APIResponse<QuoteDataMap>>` | Get latest quotes for multiple currency pairs | [iTick Forex Batch Quotes](https://docs.itick.org/rest-api/forex/forex-quotes) | | `getDepths` | `params`: `Object`<br>- `region`: `string` (Market code)<br>- `codes`: `string[] \| string` (Symbol code list) | `Promise<APIResponse<DepthDataMap>>` | Get latest order book depth for multiple currency pairs | [iTick Forex Batch Depths](https://docs.itick.org/rest-api/forex/forex-depths) | | `getKlines` | `options`: `GetKlinesOptions`<br>- `region`: `string` (Market code)<br>- `codes`: `string[] \| string` (Symbol code list)<br>- `interval`: `KlineType` (Candlestick period type)<br>- `limit`: `number` (Number of data points returned, max 500)<br>- `et`?: `string \| number` (Optional, end timestamp) | `Promise<APIResponse<KlineDataMap>>` | Get candlestick data for multiple currency pairs | [iTick Forex Batch K-lines](https://docs.itick.org/rest-api/forex/forex-klines) | | `createSocket` | `options`?: `CreateSocketOptions` (Optional, WebSocket connection options) | `SocketClient` | Create WebSocket connection for real-time data subscription | [iTick WebSocket Forex](https://docs.itick.org/websocket/forex) | ### Indices Module Access global stock index data. ```javascript import { IndicesClient } from "@itick/browser-sdk"; const client = new IndicesClient(token); await client.getQuote({ region: "US", code: "SPX" }); await client.getDepth({ region: "US", code: "NDX" }); await client.getKline({ region: "US", code: "DJI", interval: "1w", limit: 20 }); ``` #### IndicesClient Method Reference Table | Method Name | Parameters | Return Type | Description | Details | | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------- | :---------------------------------------------------------- | :------------------------------------------------------------------------------------- | | `getTick` | `params`: `Object`<br>- `region`: `string` (Market code, e.g., `US`, `GB`, etc.)<br>- `code`: `string` (Symbol code, e.g., `DJI`, `SPX`) | `Promise<APIResponse<TickData>>` | Get latest trade data for a single index | [iTick Indices Real-time Tick](https://docs.itick.org/rest-api/indices/indices-tick) | | `getQuote` | `params`: `Object`<br>- `region`: `string` (Market code, e.g., `US`, `GB`, etc.)<br>- `code`: `string` (Symbol code, e.g., `DJI`, `SPX`) | `Promise<APIResponse<QuoteData>>` | Get latest quote for a single index | [iTick Indices Real-time Quote](https://docs.itick.org/rest-api/indices/indices-quote) | | `getDepth` | `params`: `Object`<br>- `region`: `string` (Market code, e.g., `US`, `GB`, etc.)<br>- `code`: `string` (Symbol code, e.g., `DJI`, `SPX`) | `Promise<APIResponse<DepthData>>` | Get latest order book depth for a single index | [iTick Indices Real-time Depth](https://docs.itick.org/rest-api/indices/indices-depth) | | `getKline` | `options`: `GetKlineOptions`<br>- `region`: `string` (Market code)<br>- `code`: `string` (Symbol code)<br>- `interval`: `KlineType` (Candlestick period type)<br>- `limit`: `number` (Number of data points returned, max 500)<br>- `et`?: `string \| number` (Optional, end timestamp) | `Promise<APIResponse<KlineData[]>>` | Get candlestick data for a single index | [iTick Indices K-line](https://docs.itick.org/rest-api/indices/indices-kline) | | `getTicks` | `params`: `Object`<br>- `region`: `string` (Market code)<br>- `codes`: `string[] \| string` (Symbol code list) | `Promise<APIResponse<TickDataMap>>` | Get latest trade data for multiple indices | [iTick Indices Batch Ticks](https://docs.itick.org/rest-api/indices/indices-ticks) | | `getQuotes` | `params`: `Object`<br>- `region`: `string` (Market code)<br>- `codes`: `string[] \| string` (Symbol code list) | `Promise<APIResponse<QuoteDataMap>>` | Get latest quotes for multiple indices | [iTick Indices Batch Quotes](https://docs.itick.org/rest-api/indices/indices-quotes) | | `getDepths` | `params`: `Object`<br>- `region`: `string` (Market code)<br>- `codes`: `string[] \| string` (Symbol code list) | `Promise<APIResponse<DepthDataMap>>` | Get latest order book depth for multiple indices | [iTick Indices Batch Depths](https://docs.itick.org/rest-api/indices/indices-depths) | | `getKlines` | `options`: `GetKlinesOptions`<br>- `region`: `string` (Market code)<br>- `codes`: `string[] \| string` (Symbol code list)<br>- `interval`: `KlineType` (Candlestick period type)<br>- `limit`: `number` (Number of data points returned, max 500)<br>- `et`?: `string \| number` (Optional, end timestamp) | `Promise<APIResponse<KlineDataMap>>` | Get candlestick data for multiple indices | [iTick Indices Batch K-lines](https://docs.itick.org/rest-api/indices/indices-klines) | | `createSocket` | `options`?: `CreateSocketOptions` (Optional, WebSocket connection options) | `SocketClient` | Create WebSocket connection for real-time data subscription | [iTick WebSocket Indices](https://docs.itick.org/websocket/indices) | ### Futures Module Access futures market data. ```javascript import { FutureClient } from "@itick/browser-sdk"; const client = new FutureClient(token); await client.getQuote({ region: "US", code: "ES" }); await client.getDepth({ region: "US", code: "NQ" }); await client.getKline({ region: "US", code: "CL", interval: "5m", limit: 100 }); ``` #### FutureClient Method Reference Table | Method Name | Parameters | Return Type | Description | Details | | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------- | :---------------------------------------------------------- | :----------------------------------------------------------------------------------- | | `getTick` | `params`: `Object`<br>- `region`: `string` (Market code, e.g., `US`, `CN`, `HK`, etc.)<br>- `code`: `string` (Symbol code, e.g., `CL`, `GC`) | `Promise<APIResponse<TickData>>` | Get latest trade data for a single futures contract | [iTick Futures Real-time Tick](https://docs.itick.org/rest-api/future/future-tick) | | `getQuote` | `params`: `Object`<br>- `region`: `string` (Market code, e.g., `US`, `CN`, `HK`, etc.)<br>- `code`: `string` (Symbol code, e.g., `CL`, `GC`) | `Promise<APIResponse<QuoteData>>` | Get latest quote for a single futures contract | [iTick Futures Real-time Quote](https://docs.itick.org/rest-api/future/future-quote) | | `getDepth` | `params`: `Object`<br>- `region`: `string` (Market code, e.g., `US`, `CN`, `HK`, etc.)<br>- `code`: `string` (Symbol code, e.g., `CL`, `GC`) | `Promise<APIResponse<DepthData>>` | Get latest order book depth for a single futures contract | [iTick Futures Real-time Depth](https://docs.itick.org/rest-api/future/future-depth) | | `getKline` | `options`: `GetKlineOptions`<br>- `region`: `string` (Market code)<br>- `code`: `string` (Symbol code)<br>- `interval`: `KlineType` (Candlestick period type)<br>- `limit`: `number` (Number of data points returned, max 500)<br>- `et`?: `string \| number` (Optional, end timestamp) | `Promise<APIResponse<KlineData[]>>` | Get candlestick data for a single futures contract | [iTick Futures K-line](https://docs.itick.org/rest-api/future/future-kline) | | `getTicks` | `params`: `Object`<br>- `region`: `string` (Market code)<br>- `codes`: `string[] \| string` (Symbol code list) | `Promise<APIResponse<TickDataMap>>` | Get latest trade data for multiple futures contracts | [iTick Futures Batch Ticks](https://docs.itick.org/rest-api/future/future-ticks) | | `getQuotes` | `params`: `Object`<br>- `region`: `string` (Market code)<br>- `codes`: `string[] \| string` (Symbol code list) | `Promise<APIResponse<QuoteDataMap>>` | Get latest quotes for multiple futures contracts | [iTick Futures Batch Quotes](https://docs.itick.org/rest-api/future/future-quotes) | | `getDepths` | `params`: `Object`<br>- `region`: `string` (Market code)<br>- `codes`: `string[] \| string` (Symbol code list) | `Promise<APIResponse<DepthDataMap>>` | Get latest order book depth for multiple futures contracts | [iTick Futures Batch Depths](https://docs.itick.org/rest-api/future/future-depths) | | `getKlines` | `options`: `GetKlinesOptions`<br>- `region`: `string` (Market code)<br>- `codes`: `string[] \| string` (Symbol code list)<br>- `interval`: `KlineType` (Candlestick period type)<br>- `limit`: `number` (Number of data points returned, max 500)<br>- `et`?: `string \| number` (Optional, end timestamp) | `Promise<APIResponse<KlineDataMap>>` | Get candlestick data for multiple futures contracts | [iTick Futures Batch K-lines](https://docs.itick.org/rest-api/future/future-klines) | | `createSocket` | `options`?: `CreateSocketOptions` (Optional, WebSocket connection options) | `SocketClient` | Create WebSocket connection for real-time data subscription | [iTick WebSocket Futures](https://docs.itick.org/websocket/future) | ### Funds Module Access mutual fund and ETF data. ```javascript import { FundClient } from "@itick/browser-sdk"; const client = new FundClient(token); await client.getQuote({ region: "US", code: "VOO" }); await client.getDepth({ region: "US", code: "QQQ" }); await client.getKline({ region: "US", code: "SPY", interval: "1d", limit: 100, }); ``` #### FundClient Method Reference Table | Method Name | Parameters | Return Type | Description | Details | | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------- | :---------------------------------------------------------- | :---------------------------------------------------------------------------- | | `getTick` | `params`: `Object`<br>- `region`: `string` (Market code, e.g., `US`, `HK`, etc.)<br>- `code`: `string` (Symbol code, e.g., `SPY`, `QQQ`) | `Promise<APIResponse<TickData>>` | Get latest trade data for a single fund | [iTick Fund Real-time Tick](https://docs.itick.org/rest-api/fund/fund-tick) | | `getQuote` | `params`: `Object`<br>- `region`: `string` (Market code, e.g., `US`, `HK`, etc.)<br>- `code`: `string` (Symbol code, e.g., `SPY`, `QQQ`) | `Promise<APIResponse<QuoteData>>` | Get latest quote for a single fund | [iTick Fund Real-time Quote](https://docs.itick.org/rest-api/fund/fund-quote) | | `getDepth` | `params`: `Object`<br>- `region`: `string` (Market code, e.g., `US`, `HK`, etc.)<br>- `code`: `string` (Symbol code, e.g., `SPY`, `QQQ`) | `Promise<APIResponse<DepthData>>` | Get latest order book depth for a single fund | [iTick Fund Real-time Depth](https://docs.itick.org/rest-api/fund/fund-depth) | | `getKline` | `options`: `GetKlineOptions`<br>- `region`: `string` (Market code)<br>- `code`: `string` (Symbol code)<br>- `interval`: `KlineType` (Candlestick period type)<br>- `limit`: `number` (Number of data points returned, max 500)<br>- `et`?: `string \| number` (Optional, end timestamp) | `Promise<APIResponse<KlineData[]>>` | Get candlestick data for a single fund | [iTick Fund K-line](https://docs.itick.org/rest-api/fund/fund-kline) | | `getTicks` | `params`: `Object`<br>- `region`: `string` (Market code)<br>- `codes`: `string[] \| string` (Symbol code list) | `Promise<APIResponse<TickDataMap>>` | Get latest trade data for multiple funds | [iTick Fund Batch Ticks](https://docs.itick.org/rest-api/fund/fund-ticks) | | `getQuotes` | `params`: `Object`<br>- `region`: `string` (Market code)<br>- `codes`: `string[] \| string` (Symbol code list) | `Promise<APIResponse<QuoteDataMap>>` | Get latest quotes for multiple funds | [iTick Fund Batch Quotes](https://docs.itick.org/rest-api/fund/fund-quotes) | | `getDepths` | `params`: `Object`<br>- `region`: `string` (Market code)<br>- `codes`: `string[] \| string` (Symbol code list) | `Promise<APIResponse<DepthDataMap>>` | Get latest order book depth for multiple funds | [iTick Fund Batch Depths](https://docs.itick.org/rest-api/fund/fund-depths) | | `getKlines` | `options`: `GetKlinesOptions`<br>- `region`: `string` (Market code)<br>- `codes`: `string[] \| string` (Symbol code list)<br>- `interval`: `KlineType` (Candlestick period type)<br>- `limit`: `number` (Number of data points returned, max 500)<br>- `et`?: `string \| number` (Optional, end timestamp) | `Promise<APIResponse<KlineDataMap>>` | Get candlestick data for multiple funds | [iTick Fund Batch K-lines](https://docs.itick.org/rest-api/fund/fund-klines) | | `createSocket` | `options`?: `CreateSocketOptions` (Optional, WebSocket connection options) | `SocketClient` | Create WebSocket connection for real-time data subscription | [iTick WebSocket Funds](https://docs.itick.org/websocket/fund) | ## 🔌 WebSocket Real-time Data ### Supported Data Types - `quote`: Real-time quote - `depth`: Order book depth - `tick`: Latest trade - `kline@1m` or `kline@1`: 1-minute candlestick - `kline@5m` or `kline@2`: 5-minute candlestick - `kline@15m` or `kline@3`: 15-minute candlestick - `kline@30m` or `kline@4`: 30-minute candlestick - `kline@1h` or `kline@5`: 1-hour candlestick - `kline@2h` or `kline@6`: 2-hour candlestick (crypto only) - `kline@4h` or `kline@7`: 4-hour candlestick (crypto only) - `kline@1d` or `kline@8`: Daily candlestick - `kline@1w` or `kline@9`: Weekly candlestick - `kline@1M` or `kline@10`: Monthly candlestick ### Connection Options ```typescript const socket = client.createSocket({ maxReconnectTimes: 10, // Maximum reconnection attempts (0 = unlimited) reconnectInterval: 5000, // Reconnection interval (milliseconds) pingInterval: 30000, // Ping interval (milliseconds) subscribeData: { codes: ["AAPL$US", "MSFT$US"], types: ["quote", "tick", "kline@1m"], }, }); ``` ### Event Handlers ```javascript // Connection opened socket.onSocketOpen(() => { console.log("Connected!"); }); // Receive messages socket.onSocketMessage((data) => { console.log