Export your data

Your data is yours. Export any slice of readings and annotations as an analysis-ready bundle, whenever you want it.

Bulk export, asynchronously

An ExportJob runs in the background. You pick a scope (a site, device, component, or sensor), a time range, and what to include — readings, annotations, or both. The job moves through PENDING → RUNNING → READY, and when it's ready you get a presigned download link.

The bundle is a ZIP of Parquet files plus a JSON manifest: readings.parquet (with columns derived from each sensor's profile), annotations.parquet, and manifest.json describing the scope, window, and counts. Parquet drops straight into data tooling, so reshaping for a downstream system is a customer-side script — the platform hands you a clean, neutral bundle.

Nothing silently dropped

Structured readings that fail validation aren't lost — they land in PayloadQuarantine, where you can inspect why a payload was rejected (unknown sensor, missing profile, out-of-range value) and discard it. It's a diagnostic record, so you can see exactly what a device sent and why it didn't land.

In the app

Submit and download exports under Exports (/{slug}/admin/exports), and review rejected payloads under Quarantine (/{slug}/admin/quarantine).

In the API

  • POST /api/v1/exports — submit an export job
  • GET /api/v1/exports/{id} — check status; the response includes a download URL once READY
  • GET /api/v1/exports — list your jobs; DELETE …/{id} removes a finished export
  • GET /api/v1/admin/quarantine — inspect rejected payloads; DELETE …/{id} to discard

Was this page helpful?