Forms

List submissions

GET/submissions

Lists form submissions of the organisation's users, oldest first, and returns one page. Give filter[form_id] or filter[user_id] (422 without one). A submission belongs to the user named on create; submissions of other organisations' users, service users and hidden forms never show. include=documents adds the generated documents. Filter by filter[status] and the filter[completed_at] and filter[created_at] ranges. It changes nothing.

Query parameters

  • limitinteger#

    Page size (1–100). Defaults to 25; values are clamped to the range.

    Default: 25
  • cursorstring#

    Opaque pagination cursor taken from a prior response's meta.next_cursor.

  • fieldsstring#

    Comma-separated top-level fields to return. id is always returned.

  • includestring#

    Set to documents to embed the documents generated from each submission, oldest first.

  • sortstring#

    Comma-separated fields to sort by: created_at, updated_at or completed_at. Prefix a field with - for descending. Defaults to created_at, oldest first. Drafts have no completed_at and sort after completed submissions. The submission id is always the final tiebreak.

  • filter[form_id]string (uuid)#

    Only submissions of this form. Takes [in] and [not_in] with a comma-separated list. This or filter[user_id] is required.

  • filter[user_id]string (uuid)#

    Only submissions belonging to this user. Takes [in] and [not_in] with a comma-separated list. A user outside your organisation, or a service user, matches nothing. This or filter[form_id] is required.

  • filter[status]string#

    Only submissions in this status: draft or completed. Takes [in] and [not_in] with a comma-separated list.

    One of: draft, completed
  • filter[completed_at]string#

    Only submissions completed in a range, written filter[completed_at][gte]=2026-10-01. Takes gt, gte, lt and lte.

  • filter[created_at]string#

    Only submissions created in a range, written filter[created_at][gte]=2026-10-01. Takes gt, gte, lt and lte.

Responses

200

One page of submissions.

FormSubmission[]
{
  "data": [
    {
      "id": "7d8e9f01-2a3b-4c5d-9e6f-708192a3b4c5",
      "form_id": "c3d4e5f6-0718-4293-a4b5-c6d7e8f90112",
      "user_id": "6f1c2e8a-1b2c-4d5e-8f90-1a2b3c4d5e6f",
      "status": "completed",
      "started_at": "2026-06-15T10:30:00Z",
      "completed_at": "2026-06-15T10:35:00Z",
      "answers": {
        "a1b2c3d4-e5f6-4071-8293-a4b5c6d7e8f9": "Ada Lovelace",
        "b2c3d4e5-f607-4182-93a4-b5c6d7e8f901": 250000
      },
      "created_at": "2026-06-15T10:30:00Z",
      "updated_at": "2026-06-15T10:35:00Z"
    }
  ],
  "meta": {
    "limit": 1,
    "next_cursor": "string",
    "prev_cursor": "string"
  }
}
401

Authentication failed. error.code is one of invalid_token, expired, revoked.

Error
403

Authorization failed. error.code is one of org_disabled, ip_blocked, missing_scope, scope_disabled, user_disabled.

Error
422

The request can't be processed (HTTP 422): validation_failed with one ErrorDetail per problem, or a code documented on the operation.

Error
429

Rate limit exceeded (error.code = rate_limited).

Error

Examples

curl https://your-org-domain/kong/core/api/v2/submissions\
  -H "Authorization: Bearer $HELM_API_KEY"\
  -H "Content-Type: application/json"