Submit to a form
Authorization
ApiKeyAuth API key from Settings → API Keys.
In: header
Path Parameters
The form id.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/v1/forms/string/submissions" \ -H "Content-Type: application/json" \ -d '{ "answers": { "video_title": "Ship It Faster", "tagline": "Build a document API in one afternoon", "cover_image": "form-uploads/cm4frm2xy0001kp04a7c9v1de/9f2.../image.jpg" } }'{ "id": "cm4sub9tz0001kp04h3m8x2qa", "form_id": "cm4frm2xy0001kp04a7c9v1de", "created_at": "2026-08-21T13:31:42.129Z", "self": "https://automette.com/api/v1/forms/cm4frm2xy0001kp04a7c9v1de/submissions"}List submissions GET
Webhooks stay the primary way to receive responses; this is how you recover the ones you missed. Pass `since` on deploy, or after any outage, and backfill everything your endpoint did not acknowledge. `answers` is the same object the `form.submitted` webhook carries, so a single parser handles both paths. Newest first, cursor paginated. Submissions marked as spam are withheld unless you ask for them. **`document` is present only when the form has a template connected**, and its absence means no document will ever exist for that submission. When it is present, `status` runs `pending` → `processing` → `completed` (with a `url`) or `failed` (with an `error`). `pending` means the background job has not created the render yet, which is normal for the first few seconds after a submission — do not read it, or a missing `render_id`, as a failure.
List a form's webhooks GET
Endpoints notified when this form is submitted. Secrets are shown as a hint only — the full value is returned once, when the endpoint is created.