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 withfetchandWebSocket - A valid Drishti API key
Installation
pnpm add drishti-sdkFor browser pages without a bundler, load the minified bundle from jsDelivr or unpkg (demos and prototypes only):
<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
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
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
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 finishedAsync iterator
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
| Function | Reference |
|---|---|
waitForBatchJobCompletion | Polls getBatchJobsJobId until a terminal job status is reached. |
submitBatchJobAndWait | Calls postBatchJobsFile, then waits for completion. |
Transport helpers
| Function | Reference |
|---|---|
request | Any API route; pass an arbitrary method and path. |
get | Convenience wrapper over request for GET routes. |
post | Convenience wrapper over request for POST routes. |
put | Convenience wrapper over request for PUT routes. |
patch | Convenience wrapper over request for PATCH routes. |
delete | Convenience wrapper over request for DELETE routes. |
websocket | /docs/guides/websockets |