Skip to content
Github

API Overview

VortexDB provides two complementary APIs for different use cases:

FeaturegRPCHTTP
ProtocolHTTP/2 + ProtobufHTTP/1.1 + JSON
Default Port500513000
AuthenticationAPI key requiredAPI key required
PerformanceHigher throughputLower latency for simple requests
Client LibrariesAuto-generatedAny HTTP client
Best ForProduction, SDKsDebugging, curl

The gRPC API requires authentication via the authorization header:

Terminal window
# Using grpcurl
grpcurl -plaintext \
-H "authorization: your-api-key" \
localhost:50051 vectordb.VectorDB/GetPoint
# Python SDK
db = VortexDB(
grpc_url="localhost:50051",
api_key="your-api-key"
)

The HTTP API requires an api-key header on every request under /points. / and /health remain open for health checks.

Terminal window
curl -X POST "http://localhost:3000/points/search" \
-H "api-key: your-api-key" \
-H "Content-Type: application/json" \
-d '{"vector": [0.1, 0.2, 0.3], "similarity": "Cosine", "limit": 5}'

Keys come from the same VORTEXDB_KEYS_FILE used by gRPC (see gRPC API), but the HTTP API additionally enforces each key’s role: readonly keys can fetch and search points; readwrite keys can also insert, batch-insert, and delete. A readonly key used against a write route gets 403 Forbidden; a missing or unrecognized key gets 401 Unauthorized.

Both APIs support the same core operations:

OperationgRPC MethodHTTP Endpoint
Insert vectorInsertVectorPOST /points
Batch insertInsertVectorsBatchPOST /points/batch
Get pointGetPointGET /points/:id
Delete pointDeletePointDELETE /points/:id
Search vectorsSearchPointsPOST /points/search
Batch searchSearchPointsBatchPOST /points/search/batch
Health check-GET /health
CodeNameDescription
0OKSuccess
3INVALID_ARGUMENTInvalid request parameters
5NOT_FOUNDPoint not found
13INTERNALServer error
16UNAUTHENTICATEDInvalid or missing API key
CodeDescription
200Success
201Created (for insert)
204No Content (for delete)
400Bad Request
404Not Found
500Internal Server Error

A dense vector of floating-point values:

message DenseVector {
repeated float values = 1;
}

Metadata attached to vectors:

enum ContentType {
Image = 0;
Text = 1;
}
message Payload {
ContentType content_type = 1;
string content = 2;
}

Distance function for search:

ValuegRPC EnumHTTP String
Euclidean (L2)0"Euclidean"
Manhattan (L1)1"Manhattan"
Hamming2"Hamming"
Cosine3"Cosine"

VortexDB does not implement built-in rate limiting. For production deployments, use a reverse proxy or API gateway to enforce limits.