Skip to content

Ingest

POST /v1/ingest-sessions

A session carries the partition label, the mode and the JSON pointers that read the records:

Field Example Meaning
partition orders The records’ partition
mode initial or incremental Initial loads publish at commit, incremental ones every verified batch
pointers.id /order_id Record id: a string of at most 256 bytes or a number
pointers.author /buyer_id Owner id: the person, account or device the record belongs to
pointers.ts /placed_at Timestamp
pointers.ts_format rfc3339 Time format: rfc3339, unix, unix_ms or twitter

Session creation honours the Idempotency-Key header.

POST /v1/ingest-sessions/{sid}/dry-run

Validates the first 1,000 lines and returns counts by rejection reason. No content is echoed and nothing is stored.

PUT /v1/ingest-sessions/{sid}/batches/{n}
Content-Digest: sha-256=:<base64>:
Content-Encoding: zstd
  • The body is NDJSON; Content-Encoding may be zstd or identity.
  • Content-Digest is required; nothing is kept when the digest does not match.
  • Batches are idempotent by session, number and digest. Other content under a used number answers 409 batch_exists.
POST /v1/ingest-sessions/{sid}/commit

The commit returns an EdDSA-signed JWS receipt with the record, chunk and batch counts and whether the session is published. To abort a session, DELETE /v1/ingest-sessions/{sid}.

Limit Value
Record payload At most 1 MiB
Batch as sent At most 256 MiB
Batch decompressed At most 4 GiB
JSON depth 64
Batch number 1 to 1,000,000
Chunk At most 256 MiB or 200,000 records
Batch time budget 1 hour