Create Submission
/v1/forms/{form_id}Submits data to a form. View examples.
Request Formats
This endpoint accepts submissions in two formats:
- application/json
- multipart/form-data
Special Handling for multipart/form-data
- If a field named
$is present, all other non-file fields are ignored. - If
$contains a valid stringified JSON object, it will be parsed and used as the submission data. - If
$contains any other value, it will be ignored.
Common Errors
We have separated common errors to 422 (303 if you are using Accept: text/html) response to help you better handle them.
Here is a breakdown of all common error codes:
| Code | Description |
|---|---|
| file_storage_limit_reached | Your team has reached its file storage limit. |
| form_disabled | The form is currently disabled. You can enable or disable the form in the dashboard or by using this endpoint. |
| no_data | No data was submitted. |
| rate_limit | The rate limit has been exceeded. Please wait at least 10 seconds before submitting another form from the same IP address. |
| submission_limit_reached | Configured form limit has been reached or your team has reached the total submission limit counted across all forms it owns. |
| validation_error | The submission did not pass validation. (Reserved for future use.) |
Path Parameters
Header Parameters
Specifies preferred response format: application/json for JSON or text/html for a redirect.
Response Body
application/json
application/json
application/json
application/json
fetch("https://example.com/v1/forms/string", { method: "POST"}){
"success_title": "string",
"success_message": "string",
"redirect_url": "string"
}{
"message": "string"
}{
"message": "string",
"error": "form_disabled"
}{
"message": "string"
}Get Form Overview GET
Returns public information about a form. This endpoint does not require authentication.
List Many Submissions GET
Retrieves multiple submissions for a specified form. ### Pagination This endpoint supports two pagination strategies: #### Offset-based pagination - Use `limit` and `offset` to navigate through pages #### Cursor-based pagination - Use `cursor` with the ID of the last submission from the previous page - You may set `offset=1` to exclude the cursor submission from results - Provides consistent results even when new submissions are received **Note:** When using `search`, `offset` is limited to `1`. Use cursor-based pagination to navigate through search results.