REST API

YDB-Qdrant REST API reference

YDB-Qdrant implements a focused Qdrant-compatible REST subset for collection metadata, point storage, exact top-k vector search, query compatibility, and point deletion.

Base URLs and headers

Use https://ydb-qdrant.tech for public HTTPS API routes such as /health and /collections/..., http://ydb-qdrant.tech:8080 for the public demo Qdrant base URL, or http://localhost:8080 for a self-hosted server. Use the public HTTP demo endpoint only with non-sensitive demo credentials.

Content-Type: application/json
api-key: my-stable-namespace-key
X-Tenant-Id: optional-workspace
YDB-Qdrant-API-Version: 2026-05-28
Idempotency-Key: stable-mutation-key

API versioning and deprecation policy

YDB-Qdrant uses header-based API versioning instead of a /v1 URL prefix. The current documented value is 2026-05-28. Backward-incompatible public REST changes will be documented in OpenAPI and docs with at least 90 days of notice when the hosted API is affected.

Service endpoints

Collection endpoints

Point endpoints

JSON error responses

{
  "status": "error",
  "error": "collection not found",
  "code": "COLLECTION_NOT_FOUND",
  "message": "collection not found",
  "resolution": "Create the collection first, or check the collection name, api-key, and X-Tenant-Id namespace.",
  "request_id": "req-123",
  "details": {
    "collection": "documents"
  }
}

Error probes for agents

curl -i https://ydb-qdrant.tech/collections/__missing_probe \
  -H 'api-key: demo-key'

curl -i -X POST https://ydb-qdrant.tech/collections/__bad_json/points/upsert \
  -H 'Content-Type: application/json' \
  -H 'api-key: demo-key' \
  --data '{bad json'

Example

curl -X PUT http://localhost:8080/collections/documents \
  -H 'Content-Type: application/json' \
  -H 'api-key: demo-key' \
  -d '{"vectors":{"size":3,"distance":"Cosine","data_type":"float"}}'

curl -X POST http://localhost:8080/collections/documents/points/upsert \
  -H 'Content-Type: application/json' \
  -H 'api-key: demo-key' \
  -H 'Idempotency-Key: upsert-doc-1' \
  -d '{"points":[{"id":"doc-1","vector":[0.1,0.2,0.3],"payload":{"title":"Doc 1"}}]}'

curl -X POST http://localhost:8080/collections/documents/points/search \
  -H 'Content-Type: application/json' \
  -H 'api-key: demo-key' \
  -d '{"vector":[0.1,0.2,0.3],"top":10,"with_payload":true}'