@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
Markdown
<!-- 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 |
| :------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------: |
|  |  |  |  |  |
| 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