Browse documentation
SDKs

JavaScript / TypeScript SDK

The official JavaScript / TypeScript SDK for the Drishti API ships typed HTTP helpers, a low-level request layer, and a websocket session client.

Requirements

  • Node.js 18+, or a modern browser with fetch and WebSocket
  • A valid Drishti API key

Installation

pnpm add drishti-sdk

For browser pages without a bundler, load the minified bundle from jsDelivr or unpkg (demos and prototypes only):

html
<script src="https://cdn.jsdelivr.net/npm/drishti-sdk"></script>
<script>
  const { DrishtiClient } = DrishtiSDK;

  const client = new DrishtiClient({ apiKey: "YOUR_API_KEY" });
</script>

Unpkg equivalent: https://unpkg.com/drishti-sdk. Pin a package version in the URL for prototypes, for example https://cdn.jsdelivr.net/npm/[email protected].

Package: drishti-sdk on npm.

Quick start

ts
import { DrishtiClient } from "drishti-sdk"

const client = new DrishtiClient({
  apiKey: process.env.DRISHTI_API_KEY!,
})

const news = await client.getNews({
  symbols: ["RELIANCE", "TCS"],
  limit: 10,
})

console.log(news.data.length)

Low-level requests

ts
const response = await client.request("GET", "/v1/news", {
  query: { symbols: "RELIANCE", limit: 5 },
})

Shortcut methods are available as get, post, put, patch, and delete.

WebSocket session

The websocket client connects in the background when created. Subscriptions are replayed after every reconnect.

Event listeners

ts
const ws = client.websocket({
  reconnectInitialDelayMs: 1000,
  reconnectMaxDelayMs: 30000,
  onReconnectAttempt: (attempt, delayMs, reason) => {
    console.log("reconnect", { attempt, delayMs, reason })
  },
  onAnnouncements: (announcement) => {
    console.log("announcement", announcement)
  },
})

await ws.subscribe({ product: "announcements", symbols: ["RELIANCE"] })
// callbacks fire as events arrive; call await ws.close() when finished

Async iterator

ts
const ws = client.websocket()

await ws.subscribe({ product: "announcements", symbols: ["RELIANCE"], detailed: false })

for await (const event of ws.events()) {
  if (event.kind === "data") console.log(event.channel, event.data)
}

Channel listeners are also available via ws.on("announcements", handler) and ws.onAnnouncements(handler).

Helper surface

API wrappers

Workflow helpers

FunctionReference
waitForBatchJobCompletionPolls getBatchJobsJobId until a terminal job status is reached.
submitBatchJobAndWaitCalls postBatchJobsFile, then waits for completion.

Transport helpers

FunctionReference
requestAny API route; pass an arbitrary method and path.
getConvenience wrapper over request for GET routes.
postConvenience wrapper over request for POST routes.
putConvenience wrapper over request for PUT routes.
patchConvenience wrapper over request for PATCH routes.
deleteConvenience wrapper over request for DELETE routes.
websocket/docs/guides/websockets