@hiway2llm/client
v0.1.1
Published
HiWay2LLM client (TypeScript) — OpenAI-compatible SDK for the HiWay router. BYOK, 40-60% savings, 0% markup on inference.
Maintainers
Readme
@hiway2llm/client
Official TypeScript / JavaScript SDK for HiWay2LLM — BYOK smart LLM routing with 40-60 % savings and zero markup on inference.
Install
npm install @hiway2llm/clientRuns unmodified in Node 18+, Deno, Bun, Vercel Edge runtime and Cloudflare Workers. Uses native fetch, zero extra dependencies.
Quickstart
import { Hiway } from "@hiway2llm/client";
const h = new Hiway({ apiKey: process.env.HIWAY_API_KEY });
const res = await h.chat.completions.create({
model: "auto", // smart routing
messages: [{ role: "user", content: "Say hi" }],
});
console.log(res.choices[0].message.content);
console.log(res._hiway?.routed_model); // which model was pickedAlready using the OpenAI SDK? You can keep it — just point baseURL at HiWay:
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.HIWAY_API_KEY, // hw_live_...
baseURL: "https://app.hiway2llm.com/v1",
});Both approaches hit the same OpenAI-compatible endpoint.
API surface
| Method | Description |
|---|---|
| h.chat.completions.create({ model, messages, ... }) | OpenAI-compatible chat completion. |
| h.models.list() | Models your workspace can route to (BYOK-filtered). |
| h.me() | Current user + plan. |
Errors
All 4xx / 5xx responses throw a HiwayError with .status + .body:
import { Hiway, HiwayError } from "@hiway2llm/client";
try {
await h.chat.completions.create({ /* … */ });
} catch (e) {
if (e instanceof HiwayError && e.status === 402) {
// quota exhausted — prompt to upgrade
}
}Links
License
MIT — © Mytm-Group SAS
