Skip to main content
POST
Ingest a session batch
Accept up to 500 coding-session events in one round trip and return immediately. This is the route a backfill should use. Events are queued under the credential’s org and user in a single insert, with the same per-event deduplication as the single-event route, so a retried batch is reported as deduped rather than stored twice. Call POST /v1/ingest/session-finalize once the last batch is accepted.

Authorization

This route requires the write scope. A missing or invalid credential returns 401 authentication_error. A valid credential without the scope returns 403 permission_denied, and the problem body names the exact scope required.

Headers

These are request conventions the contract does not declare as parameters, so they do not appear in the schema tables below.

Success responses

Errors

Every error is an RFC 9457 application/problem+json body carrying a stable code, a requestId, and a suggestedAction where Exo has one. See Errors.

Notes

  • Up to 500 events per call. This is the route a backfill should use.
  • Call finalize once the last batch is accepted, or the layers that session ingestion does not build on its own will not be built.

Authorizations

X-Exo-API-Key
string
header
required

An Exo API key (exo_...) sent as the X-Exo-API-Key header.

Body

application/json

POST /v1/ingest/session-batch: bulk from daemon + retroactive bootstrap.

events
SessionEvent · object[]
required
Maximum array length: 500

Response

How many events were queued and how many were duplicates.

deduped
integer
required
ingested
integer
required