Skip to main content
Limits that apply to Infino Cloud connections. The open-source engine running locally has no request cap, because there is no request: writes go straight to storage.

Request body: 128 MiB

A single data-plane request body is capped at 128 MiB. In practice this applies to append and update, whose bodies carry your rows as Arrow IPC; a request over the cap is rejected with HTTP 413 and nothing is written. A 413 is permanent. Retrying the same batch will fail the same way, so split it.

Target 100 MiB or less per batch

The SDK re-encodes rows before sending, so the bytes on the wire are not the bytes you measured client-side, and the difference can run to tens of percent. A batch sized right at the cap can pass or fail on that difference. Keep a margin: aim for at most 100 MiB of Arrow data per append, and treat the rest as headroom rather than budget. Rough row budgets, dominated by the vector column (4 bytes per dimension):

Concurrency: HTTP 503 under a large-ingest burst

Separately from the per-request cap, the service bounds the total in-flight request-body bytes across all concurrent requests. Each body is buffered in memory before it is decoded, so a burst of large concurrent appends is bounded to protect the shared process. When admitting a request would exceed that budget, the request is shed with HTTP 503 and a Retry-After: 1 header. It is not queued: the aim is to keep normal-load throughput untouched and reject only at the memory edge. Unlike a 413, a 503 here is transient. The pressure is in-flight bytes draining as other requests complete, which clears in well under a second, so honour Retry-After and retry the same batch unchanged. Because the budget is shared, a large burst from one workload can shed another’s requests. Practical consequence: raising concurrency past a handful of in-flight 100 MiB appends buys throughput you cannot use. Prefer fewer, larger batches over many large ones in parallel.

Batching and throughput

One append is one atomic commit, so batch size is the main ingest-throughput knob: prefer batches near the 100 MiB target over many small appends, and split large loads into a loop.
If you load with the CLI, bulk ingest is already streamed and committed in windows: size them with --batch-size-mb and keep the value under the cap.

See also

Last modified on August 25, 2026