Skip to main content
A submission is one set of field values captured by a form — whether from the embedded widget or ingested through the API.

The submission object

formData is a label → value map. sourceDomain is the page hostname the submission came from, or null for API-ingested submissions.

List a form’s submissions

GET /v1/forms/{id}/submissions — scope read:submissions. Paginated (page, limit), newest first.

Get a submission

GET /v1/submissions/{id} — scope read:submissions.

Ingest a submission

POST /v1/forms/{id}/submissions — scope write:submissions. Runs the same pipeline as the embedded widget (webhooks fire, confirmation/owner emails send, PHI handling applies). Send a formData object (max 50 fields, max 50KB serialized).

Idempotency

To safely retry an ingest without creating duplicates, send an Idempotency-Key header (a client-chosen unique string, ≤256 chars). Within 24 hours, a repeat request with the same key replays the original result (HTTP 200) instead of creating a second submission.
A fresh ingest returns 201; an idempotent replay returns 200 with the original submission.