Skip to content
TraceItX Docs
Documentation

Ingest API

The SDKs talk to one endpoint. If you're building a custom client, this is the contract.

Endpoint

POST /api/ingest

Reports are submitted to the ingest service’s /api/ingest path. The SDKs are preconfigured with the host and handle this call for you — you only need the raw API when building a custom client.

Authentication

Authenticate with your app’s SDK key as a bearer token:

Authorization: Bearer <your-sdk-key>

An invalid or missing key returns 401 with { "error": "invalid_sdk_key" }.

Request body

The request is multipart/form-data: one part is the JSON envelope, and up to five further parts are binary attachments (screenshot, recording, …) referenced from the envelope. The envelope part may be gzip-compressed.

Limits

LimitValue
Total request size25 MB
Decompressed envelope5 MB
Files per request6 (envelope + up to 5 attachments)
Rate limit (per SDK key)60 requests / minute
Rate limit (per source IP)200 requests / minute

Response

On success the API returns 200 with:

{
  "status": "received",
  "eventId": "<uuid>",
  "deliveryCount": 2,
  "idempotent": false
}
  • eventId — the stored event’s id.
  • deliveryCount — how many subscribers the report is being fanned out to.
  • idempotenttrue if this exact report was already received (a retried submission), so it was de-duplicated rather than re-delivered.

Errors

StatusErrorMeaning
401invalid_sdk_keyMissing or invalid bearer token.
413payload_too_largeRequest or envelope exceeded a size limit.
429rate_limit_exceededToo many requests; honour the Retry-After header.
Idempotency. The ingest API de-duplicates repeated submissions of the same report across the retention window, so an SDK retry after a flaky network never fans the report out twice.