---
title: "Get one form submission with every field"
method: GET
path: "/api/v1/sites/{slug}/form-submissions/{id}"
tags: ["Forms"]
---

# Get one form submission with every field

`GET /api/v1/sites/{slug}/form-submissions/{id}`

## Request

- Base URL: `https://api.dotsy.ai`
- URL: `https://api.dotsy.ai/api/v1/sites/{slug}/form-submissions/{id}`
- Auth: one of:
  - HTTP bearer
  - HTTP bearer

Returns one submission by id, with the full `fields` payload. Submissions hold visitors' personal data, so this needs at least the `editor` role on the site. A `viewer` gets `403` `forbidden_role`.

## Path parameters

- `slug` string, required
- `id` string, required

## Response `200`

The submission.

- FormSubmission
  - `id` string, required: Submission id.
  - `formId` string, required: The form this was submitted through.
  - `pagePath` string, nullable, required: Path of the page the visitor submitted from, when known.
  - `fields` object, required: What the visitor filled in: field name to value. Personal data lives here.
  - `replyTo` string, nullable, required: The visitor's email address, when the form has one. Use it to search.
  - `meta` object, nullable, required: Extra facts about the submission, such as a hash of the visitor's IP address (`ip_hash`).
  - `sizeBytes` integer, required: Size of the stored submission in bytes.
  - `createdAt` integer, required: When it was submitted, Unix ms.

## Other responses

- `400`: The id is blank (`missing_id`).
- `401`: Missing or invalid credentials.
- `403`: The caller's role can't read submissions (`forbidden_role`), or the site's storage can't hold them (`backend_required`, which has `code` and `message` instead of `error`).
- `404`: No such site, or no submission with this id (`not_found`).

---

[API](https://skmtc.dev/dotsy/apis/dotsy-api.md) · [All operations](https://skmtc.dev/dotsy/apis/dotsy-api/llms.txt) · [OpenAPI document](https://skmtc.dev/dotsy/apis/dotsy-api/revisions/4272ed3b85d7?raw)
