Ingest Operations
The ingest endpoints allow you to add data to an index through an init → ingest → finalize workflow.Initialize Ingest
Start an ingest session on an index. This must be called before any ingest operations.Request Body
| Field | Type | Required | Description |
|---|---|---|---|
index_name | string | Yes | Name of the index |
mode | string | Yes | One of: "build", "insert", "upsert" |
Ingest Modes
| Mode | Description |
|---|---|
build | Create a new index from scratch |
insert | Add new vectors to an existing index |
upsert | Add new vectors or update existing ones |
Response
Errors
| Status | Condition |
|---|---|
| 404 | Index not found |
| 400 | Invalid mode or initialization failed |
Ingest Single Vector
Add a single vector to an index. The ingest session must have been initialized first.Request Body
| Field | Type | Required | Description |
|---|---|---|---|
index_name | string | Yes | Name of the index |
external_id | string | Yes | Unique identifier for this vector |
vector | float[] | Yes | Vector data as an array of floats |
Response
Errors
| Status | Condition |
|---|---|
| 400 | Missing required fields or invalid vector |
| 404 | Index not found (implicitly, via engine lookup) |
Batch Ingest (Binary)
Ingest multiple vectors efficiently using a binary protocol. This is significantly faster than individual ingest calls for large batches.Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
index_name | string | Yes | Name of the index |
Binary Format
The request body is a sequence of rows, where each row consists of:- 32 bytes — External ID as ASCII text, null-padded to 32 bytes
- dim * 4 bytes — Vector data as float32 little-endian values
Example Binary Layout (dim=4)
Response
| Field | Type | Description |
|---|---|---|
success | boolean | Whether the operation succeeded |
count | integer | Number of vectors ingested |
Errors
| Status | Condition |
|---|---|
| 400 | Missing index_name, misaligned payload, or ingest error |
Finalize Ingest
Complete an ingest session and build the HNSW graph from the ingested data.Request Body
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
index_name | string | Yes | — | Name of the index |
optimize | boolean | No | false | Whether to optimize the graph after build |
params | object | No | defaults | Optional HNSW parameters override |
Response
Errors
| Status | Condition |
|---|---|
| 400 | Finalization failed |