List Many Submissions
/v1/forms/{form_id}/submissionsRetrieves multiple submissions for a specified form.
Pagination
This endpoint supports two pagination strategies:
Offset-based pagination
- Use
limitandoffsetto navigate through pages
Cursor-based pagination
- Use
cursorwith the ID of the last submission from the previous page - You may set
offset=1to 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.
Authorization
x-api-key x-team-id In: header
In: header
Path Parameters
Query Parameters
Maximum number of submissions to return.
Number of submissions to skip. Limited to 1 when using search.
Submission ID to use as the starting point for pagination (inclusive).
Use cursor-based pagination when:
- Navigating through search results
- Working with large datasets
- You need consistent results across pages
To get the next page, use the id of the last submission from the current page.
Set offset=1 to exclude the cursor submission itself from results.
Sort order by creation date (created_at).
DESC: Newest submissions first (default)ASC: Oldest submissions first
Search term to filter submissions.
Performs substring matching (case-insensitive) across submission data.
When provided, offset-based pagination is limited to 1.
Use cursor-based pagination to navigate through search results.
Response Body
application/json
application/json
application/json
fetch("https://example.com/v1/forms/{form_id}/submissions", { method: "GET", headers: { "x-api-key": "...", "x-team-id": "..." }}){ "results": [ { "id": "string", "country": "string", "ip": "string", "user_agent": "string", "referer": "string", "data": { "name": "John Doe", "email": "test@vexrun.com", "message": "Hello!", "age": 30, "rating": 4.5, "subscribed": true, "address": { "city": "Warsaw", "country": "Poland" }, "tags": [ "support", "billing" ], "languages": [ { "code": "pl", "level": "native" }, { "code": "en", "level": "fluent" }, { "code": "de", "level": "beginner" } ] }, "files": [ { "id": "string", "field_name": "string", "size": 0, "mime_type": "string", "ext": "string" } ], "created_at": 0 } ], "total": 0}{ "errors": [ { "path": "string", "expected": "string" } ], "message": "string"}{ "message": "string"}Create Submission POST
Submits data to a form. View [examples](/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](/http-api/forms/update-form). | | 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.) | ### Submission Data Limits The following limits apply to all submissions. Any submission that exceeds a limit will be rejected with a 413 Payload Too Large error. | Limit | Max Value | Description | | ----------------- | --------- | ---------------------------------------------------------------------------- | | Field Name | 100 B | Maximum length of a field name (JSON key or **name** attribute in an input). | | Property Count | 1000 | Maximum number of fields/properties per submission. | | File Count | 10 | Maximum number of files that can be uploaded in a single submission. | | Submission Size | 100 KB | Maximum total size of all non-file data after being stringified as JSON. | | File Upload Limit | 100 MB | Combined size limit for all uploaded files per submission. |
Get Submission GET
Get form submission by ID.