# List a contact's submissions > Every form response this contact has left, newest first. The answers behind the identity, on the same append-only record the dashboard reads. Source: https://getlaunchlist.com/help/docs/api/contacts-submissions --- Requires the `contacts:read` scope. Every form response this contact has left, newest first. A submission is the **raw answer set** behind the deduplicated contact. One contact can have many, from the signup form, a survey, or any other form on the project. ## The submission object | Field | Description | | ------------ | -------------------------------------------------------------------- | | `id` | The `sub_` handle, the same one the webhooks carry. | | `form` | The `frm_` handle the response came through. | | `data` | The answers, as a flat object of field key to value. | | `source` | Where it was captured: `page`, `embed`, `html`, `api` or `platform`. | | `locked` | `true` when the overflow lock is withholding this row's `data`. | | `created_at` | When it was submitted, ISO 8601. | A signup you created through [POST /v1/contacts](/help/docs/api/contacts-create) carries `source: "api"`. Submissions are read through their contact. There is no endpoint that fetches one submission by its `id` or lists them across contacts. > [!NOTE] The overflow lock applies here too > If the workspace is over its plan's contact limit, `data` comes back as an empty object with > `locked: true`. The submission is never deleted, because capture and retention are unconditional. It is > withheld until the plan is upgraded, exactly as the contact's identity is. ## Reading a long history `limit` works here as it does everywhere else, from 1 to 100, default 25, and `has_more` tells you whether there is more behind it. To read the next page, pass the last row's `sub_` handle as `starting_after`, as on every other list ([Pagination](/help/docs/api/pagination)). ## Next - [Retrieve a contact](/help/docs/api/contacts-retrieve) - [List a contact's referrals](/help/docs/api/contacts-referrals) ## Common questions ### Can I look up one submission by its id? No. Read submissions through the owning contact. Each one carries a sub_ handle, the same one the signup.created and form.submitted webhooks carry, so you can match a webhook to a row here. ### Why is the data object empty on some rows? The workspace is over its plan's contact limit. The overflow lock withholds the answer data, so the row returns locked true and an empty data object, until the plan is upgraded. Nothing is deleted.