Submit a form
Send answers to a published Nautilus form from your own frontend
_password if the form is password-protected.
Follow Build a headless form to copy your endpoint, field IDs, consent text, and optional JavaScript from Share.
Request rules
- Send a flat JSON object, URL-encoded form data, or text-only multipart data. Do not nest answers inside
data. - Replace example field names with the exact saved IDs. Required fields and available choices depend on the form.
- Include
_gotchaand leave it empty. A filled trap receives an acknowledgment without creating a submission or triggering side effects. - Keep the complete body at or below 65,536 bytes. Files are not supported.
- Supply
_redirectonly when its destination has the same origin as the request’sOriginheader.
303 redirect. JSON confirmations include redirectUrl when supplied and validated.
Public access
The route accepts cross-origin submissions.OPTIONS returns 204 with Access-Control-Allow-Origin: *, allowed methods POST, OPTIONS, and allowed headers Content-Type, Accept.
The published form ID grants submission access only. Reading configuration or saved submissions through /api/v1/forms still requires a tenant API key. A 401 from this submission endpoint means the form password is missing or incorrect; adding an API key does not replace that password.
Confirmation and availability
Only a saved submission includessubmissionId. The receipt confirms persistence, not completion of every notification or automation. Notifications are scheduled after the response, so a slow email provider does not delay confirmation. Do not automatically retry an uncertain request because no request idempotency key is supported.
Email verification, POS enrollment, file-upload fields, and unsupported saved field definitions return 409 hosted_form_required. Null optional field settings are treated as omitted; malformed definitions and comparison rules remain unsupported. Use the hosted flow when the sharing panel indicates it is required.
See the guide for answer formats, tracking limits, and spam protection.Headers
Submitting website origin. Required when _redirect is supplied; the redirect destination must match its scheme, host, and port.
Path Parameters
Published form ID copied from Share. It permits submission only.
1 - 200^[a-zA-Z0-9_-]+$Body
Flat saved field IDs and control fields. Include every required visible answer. For multipart, let the browser generate the Content-Type boundary; files are not supported. HTML checkbox groups use repeated field names.
Flat answers keyed by the published form's saved field IDs, plus the controls below. There is no data wrapper. Only IDs belonging to that form are accepted; requiredness, choices, and conditional visibility come from its saved definition. Total body size is limited to 65536 bytes, including multipart overhead.
Required hidden bot-trap field. Leave it empty for real submissions. A nonempty value receives an acknowledgment without a submissionId and creates no records or downstream effects.
10000The form password, required only when the published form is password-protected. This is not a tenant API key.
1024Optional thank-you URL, either relative to Origin or an absolute HTTP(S) URL with the same scheme, host, and port. Requires the Origin header. Native HTML receives a 303 redirect; JSON receives redirectUrl.
2000Optional utm_source attribution. Strings are trimmed to 450 characters when stored. Empty or malformed values are ignored without rejecting valid answers; the complete request must still fit within 65536 bytes.
Optional utm_medium attribution. Strings are trimmed to 450 characters when stored. Empty or malformed values are ignored without rejecting valid answers; the complete request must still fit within 65536 bytes.
Optional utm_campaign attribution. Strings are trimmed to 450 characters when stored. Empty or malformed values are ignored without rejecting valid answers; the complete request must still fit within 65536 bytes.
Optional utm_term attribution. Strings are trimmed to 450 characters when stored. Empty or malformed values are ignored without rejecting valid answers; the complete request must still fit within 65536 bytes.
Optional utm_content attribution. Strings are trimmed to 450 characters when stored. Empty or malformed values are ignored without rejecting valid answers; the complete request must still fit within 65536 bytes.
Optional gclid attribution. Strings are trimmed to 450 characters when stored. Empty or malformed values are ignored without rejecting valid answers; the complete request must still fit within 65536 bytes.
Optional gbraid attribution. Strings are trimmed to 450 characters when stored. Empty or malformed values are ignored without rejecting valid answers; the complete request must still fit within 65536 bytes.
Optional wbraid attribution. Strings are trimmed to 450 characters when stored. Empty or malformed values are ignored without rejecting valid answers; the complete request must still fit within 65536 bytes.
Optional fbclid attribution. Strings are trimmed to 450 characters when stored. Empty or malformed values are ignored without rejecting valid answers; the complete request must still fit within 65536 bytes.
Optional referrer attribution. Strings are trimmed to 450 characters when stored. Empty or malformed values are ignored without rejecting valid answers; the complete request must still fit within 65536 bytes.
Optional landing_url attribution. Strings are trimmed to 450 characters when stored. Empty or malformed values are ignored without rejecting valid answers; the complete request must still fit within 65536 bytes.
Answer to a saved field ID. Strings cover text, email, phone, numeric text, dates, and choices; arrays represent multiple checkbox choices. Null is treated as an empty answer and remains subject to required-field validation. Nested objects and uploaded files are rejected.
10000Response
Saved-submission receipt, or ordinary acknowledgment for a filled honeypot. Only a saved submission includes submissionId.
Acknowledgment of a saved submission or a filled honeypot. Only a saved submission has submissionId. The receipt does not include answers, contact records, or notification recipients and does not guarantee completed downstream delivery.
Configured success message or ordinary honeypot acknowledgment.
Identifier of the saved submission. Absent for a filled honeypot.
Configured success title, returned for a saved submission.
Validated absolute thank-you URL, when requested. The JSON client decides when to navigate.

