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.

Content-Type: application/json
api-key: my-stable-namespace-key
X-Tenant-Id: optional-workspace

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 http://ydb-qdrant.tech:8080/collections/__missing_probe \
  -H 'api-key: demo-key'
curl -i -X POST http://ydb-qdrant.tech:8080/collections/__bad_json/points/upsert \
  -H 'Content-Type: application/json' \
  -H 'api-key: demo-key' \
  --data '{bad json'
curl -i https://ydb-qdrant.tech/api/__unknown_probe
curl -i https://ydb-qdrant.tech/v1/__unknown_probe

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' \
  -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}'