Skip to content

List submissions

GET
/v1/forms/{form}/submissions
curl --request GET \
--url https://api.submeto.com/v1/forms/example/submissions \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "read_status": "read", "received_after": "example", "received_before": "example", "source": "api", "limit": 1, "cursor": "example" }'

Returns submissions for a form, newest first, with cursor pagination. The cursor is opaque and bound to the form, API key, and filters — do not parse or assemble cursors yourself; cursors expire after 24 hours.

form
required
string

The form ID.

read_status

Filter by read state: read, unread, or all (default all).

string

Filter by read state: read, unread, or all (default all).

received_after

ISO-8601 timestamp with timezone; only submissions received at or after this time.

string

ISO-8601 timestamp with timezone; only submissions received at or after this time.

received_before

ISO-8601 timestamp with timezone; only submissions received before this time.

string

ISO-8601 timestamp with timezone; only submissions received before this time.

source

Filter by source: api, form_submit or hosted_form.

string

Filter by source: api, form_submit or hosted_form.

limit

Number of submissions per page (1-50, default 20).

integer

Number of submissions per page (1-50, default 20).

cursor

Opaque pagination cursor from the previous page's meta.next_cursor.

string

Opaque pagination cursor from the previous page's meta.next_cursor.

Media typeapplication/json
object
read_status
string
Allowed values: read unread all
received_after
string
received_before
string
source
string
Allowed values: api form_submit hosted_form
limit

Must be at least 1. Must not be greater than 50.

integer
cursor
string

Submissions page

Media typeapplication/json
object
data
Array<object>
object
id
string
form_id
string
source
string
fields
object
email
string
name
string
message
string
read_at
string
nullable
received_at
string
has_files
boolean
file_count
integer
deliveries
Array<object>
object
channel_type
string
status
string
delivered_at
string
error_code
string
nullable
created_at
string
meta
object
next_cursor
string
request_id
string
Example
{
"data": [
{
"id": "REQUEST_ID",
"form_id": "REQUEST_ID",
"source": "form_submit",
"fields": {
"email": "[email protected]",
"name": "Jane Doe",
"message": "Hello!"
},
"read_at": null,
"received_at": "2026-08-30T14:22:00.000Z",
"has_files": false,
"file_count": 0,
"deliveries": [
{
"channel_type": "database",
"status": "delivered",
"delivered_at": "2026-08-30T14:22:05.000Z",
"error_code": null
}
],
"created_at": "2026-08-30T14:22:00.000Z"
}
],
"meta": {
"next_cursor": "eyJpZCI6..."
},
"request_id": "REQUEST_ID"
}

Invalid cursor

Media typeapplication/json
object
error
object
code
string
message
string
details
object
request_id
string
Example
{
"error": {
"code": "invalid_cursor",
"message": "The cursor is invalid.",
"details": {}
},
"request_id": "REQUEST_ID"
}

Not found or not granted

Media typeapplication/json
object
error
object
code
string
message
string
details
object
request_id
string
Example
{
"error": {
"code": "resource_not_found",
"message": "Resource not found.",
"details": {}
},
"request_id": "REQUEST_ID"
}