Official Node.js / TypeScript client for the NessyAPI clinical decision support platform.

The client is server-side only — it refuses to run in browsers because API keys would leak to end users. If you truly need to call from a trusted intranet client, pass { allowBrowser: true } (not recommended).

Zero runtime dependencies: uses the built-in fetch (Node 18.17+) and node:crypto. Works in Node, Bun, Deno, and Cloudflare Workers.

import { NessyClient } from "@nessyapi/sdk";

const client = new NessyClient({ apiKey: process.env.NESSYAPI_KEY! });

const session = await client.sessions.create({
chiefComplaint: "headache",
age: 35,
sex: "male",
});

// Answer the current question
const response = await client.sessions.answer(
session.session_id,
session.current_question!.question_id,
{ rawText: "started yesterday, mild pressure" }
);

if (response.is_complete) {
const results = await client.sessions.finalize(session.session_id);
console.log(results.triage_level, results.differentials);
}
import { NessyRateLimitError, NessyValidationError } from "@nessyapi/sdk";

try {
await client.sessions.create({ chiefComplaint: "headache" });
} catch (err) {
if (err instanceof NessyRateLimitError) {
await sleep(err.retryAfterMs);
} else if (err instanceof NessyValidationError) {
console.error("Invalid input:", err.fieldErrors);
} else {
throw err;
}
}
import { Agent, fetch } from "undici";
const agent = new Agent({ keepAliveTimeout: 10_000 });
const client = new NessyClient({
apiKey,
fetch: (url, init) => fetch(url, { ...init, dispatcher: agent }),
});

Constructors

Properties

sessions: SessionsResource
patients: PatientsResource
admin: AdminResource
audit: AuditResource
webhooks: WebhooksResource
team: TeamResource
schema: SchemaResource
account: AccountResource

Methods

  • Returns Record<string, unknown>