qdrant-js

Official TypeScript/JavaScript REST client for the Qdrant vector search engine.

SDK
npm
v1.19.0
465 stars
Apache License 2.0

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
70 /100 Good
Development Activity 60
Maintenance 64
Community 64
Maturity 52
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
81 /100 Excellent
Architecture 80
Code Quality 82
Innovation 75
Learning Curve 85

@qdrant/js-client-rest is the official REST client for Qdrant, an open-source vector similarity search engine used to power semantic search, recommendation systems, and retrieval-augmented generation (RAG) pipelines. Built on the native Fetch API, it runs across Node.js (18+), Deno, and browsers, and exposes a fully typed surface generated directly from Qdrant’s OpenAPI schema.

The client wraps low-level REST calls with ergonomic facade methods for common operations like scroll, count, search, and upsert, while still exposing the raw generated API for anything not covered by the facade. It ships with automatic client-server version compatibility checks on connect, discriminated-union typed error handling per status code, configurable connection pooling via undici, and built-in handling for rate-limited (429) responses.

What You Get

  • Fully typed API generated from Qdrant’s OpenAPI schema, covering every REST endpoint
  • Ergonomic facade methods (scroll, search, count, upsert, and more) alongside direct access to the raw generated client via .api()
  • Automatic client-server version compatibility checking on connect, with console warnings on mismatch
  • Discriminated-union typed error handling that lets you branch on HTTP status per operation
  • Built-in handling for 429 rate-limit responses via QdrantClientResourceExhaustedError with a parsed retry_after value
  • Configurable connection pooling through a custom undici dispatcher on Node.js

Common Use Cases

  • Powering semantic search over embeddings stored in a Qdrant collection from a Node.js backend
  • Building retrieval-augmented generation (RAG) pipelines that fetch nearest-neighbor context for an LLM prompt
  • Managing Qdrant collections (create, index, upsert, delete) from CI/CD or admin scripts
  • Running vector similarity search directly from browser or Deno-based edge applications

Under The Hood

Architecture The package follows a thin layered structure: qdrant-client.ts exposes the public QdrantClient class with ergonomic facade methods (scroll, count, search, upsert, and more), each delegating to a generated OpenAPI client built in api-client.ts via createApis()/createClientApi() (openapi/generated_api_client.ts, generated_client_type.ts, generated_schema.ts) — files produced from Qdrant server’s OpenAPI schema via the codegen:openapi-typescript script, keeping the type surface in lockstep with the server. api-client.ts composes a stack of Fetcher middleware (context-headers.ts for per-request headers, a timeout middleware built on AbortController, and a response-normalization middleware that turns 429s into QdrantClientResourceExhaustedError and non-2xx responses into QdrantClientUnexpectedResponseError) around @qdrant/openapi-typescript-fetch’s Fetcher, with dispatcher.ts supplying a custom undici Dispatcher for connection pooling on Node. client-version.ts implements standalone version comparison invoked fire-and-forget from the constructor against the server’s root() response. The core abstraction is the generated OpenAPI client; if Qdrant’s schema changes shape, the generated files and the facade methods (which type against Schemas[…] from types.ts) need regenerating and updating together.

Tech Stack TypeScript 5.9 targeting dual ESM+CJS+browser builds (tsconfig.esm.json/tsconfig.cjs.json, rollup.config.js for bundling), built on @qdrant/openapi-typescript-fetch and undici — Node’s own HTTP/1.1 implementation, used both as the runtime fetch on Node and as a custom Dispatcher for connection pooling. Type generation runs via openapi-typescript against Qdrant’s live OpenAPI schema. The package is published from a pnpm workspace monorepo (qdrant-js) alongside a sibling gRPC client. Build and quality tooling includes pnpm, tsc, rollup, knip for dead-code and type-export checking, ESLint 10 with typescript-eslint, Prettier, and Husky plus lint-staged for pre-commit checks.

Code Quality Tests live under tests/unit (api-client, qdrant-client, and client-version specs) run via Vitest, plus a separate tests/integration suite that exercises a live Qdrant Docker container — giving both isolated unit coverage and real integration coverage. Error handling is explicit and typed: a CustomError base class with QdrantClientConfigError, QdrantClientTimeoutError, QdrantClientResourceExhaustedError, and QdrantClientUnexpectedResponseError subclasses, carrying structured data (like a parsed retry_after) rather than generic strings. Naming is consistent and descriptive; strict TypeScript throughout with generated types keeping the API surface accurate; ESLint plus typescript-eslint enforce lint rules. Chained pre-commit/pre-check scripts run type-checking, dead-code detection, linting, and tests together.

API Design The public API favors ergonomics over minimalism: QdrantClient exposes facade methods with sensible defaults (with_payload=true, with_vector=false) so common calls need only a collection name and a few options, while .api() still exposes the full generated OpenAPI client for anything the facade doesn’t cover. Every public method carries extensive JSDoc describing parameters like consistency and order_by in plain language, meaningfully lowering the barrier to using the API without external docs. Error handling doubles as documentation: discriminated-union errors let TypeScript narrow the response shape per HTTP status, and domain-specific error classes name failure modes instead of forcing callers to inspect generic fetch errors. The main rough edge is the constructor surface (url vs host/port mutual exclusivity, prefix handling), which requires reading validation error messages to get right on first use.

Used by 10 apps in this directory

TypeScript
100%
Other

Activepieces

AI Assistants · Automation · Mcp

24,756

Open-source AI automation platform that converts 280+ workflow integrations into MCP servers for LLMs, with no-code builders and TypeScript extensibility.

View details
92
Repo Health
85
Technical
64
Dependency
Built with
TypeScript 100%
Updated 4 days ago
JavaScript
95%
MIT

AnythingLLM

AI Assistants · Automation · Developer Tools

66,533

The all-in-one AI platform for private document chat, no-code agents, and local LLMs with zero setup friction.

View details
90
Repo Health
78
Technical
64
Dependency
Built with
JavaScript 95%
Updated 6 days ago
TypeScript
62%
Other

Flowise

AI Development · Automation · Developer Tools

55,490

Drag-and-drop visual builder for AI agents, RAG pipelines, and multi-agent systems—deploy anywhere in minutes.

View details
82
Repo Health
77
Technical
63
Dependency
Built with
TypeScript 62%
JavaScript 27%
Updated 1 months ago
TypeScript
99%
Apache 2.0

Mastra Code

AI Code Assistants

28,378

"A coding agent that never compacts" — a terminal-based AI coding agent built on the Mastra framework, with Observational Memory instead of context compaction, multi-model support, and OAuth login for Claude Max or ChatGPT Plus.

View details
90
Repo Health
73
Technical
65
Dependency
Built with
TypeScript 99%
Updated 4 days ago
TypeScript
92%
Other

n8n

Automation · No Code Platforms

206,147

Code when you need it, UI when you don't — the workflow automation platform built for technical teams who refuse to choose.

View details
95
Repo Health
87
Technical
65
Dependency
Built with
TypeScript 92%
Updated 4 days ago
JavaScript
48%
MIT

OpenWhispr

AI Assistants · Productivity · Voice AI

8,711

Privacy-first, cross-platform voice-to-text with local AI and cloud options

View details
88
Repo Health
80
Technical
71
Dependency
Built with
JavaScript 48%
TypeScript 46%
Updated 4 days ago
TypeScript
94%
Apache 2.0

reader

Data Engineering · Developer Tools

561

Production-grade open source web scraping engine that turns any URL into clean markdown for AI agents — with built-in anti-bot bypass, proxy rotation, and browser session management.

View details
59
Repo Health
79
Technical
76
Dependency
Built with
TypeScript 94%
Updated 1 months ago
TypeScript
96%
Other

Refly

AI Development · Automation · No Code Platforms

7,534

Build deterministic, versioned agent skills from natural language—run them anywhere from Claude Code to Slack.

View details
62
Repo Health
76
Technical
63
Dependency
Built with
TypeScript 96%
Updated 2 months ago
TypeScript
98%
Apache 2.0

rowboat

AI Assistants · AI Development

17,983

Build, test, and deploy multi-agent AI workflows with a visual editor, RAG data sources, MCP tool integration, and a production-ready REST API.

View details
85
Repo Health
72
Technical
65
Dependency
Built with
TypeScript 98%
Updated 1 weeks ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers