> ## Documentation Index
> Fetch the complete documentation index at: https://formpaste.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Retrieving submissions

> There's no REST submissions API. Here are the three real ways to get your data out.

If you're looking for a `GET /api/submissions` endpoint to poll - it doesn't exist.
Formpaste doesn't ship a general-purpose REST API for reading submission data. That's
not an oversight; it's the current shape of the product. There are three real ways to
get submissions out, covering the dashboard, bulk export, and agent use cases.

## 1. The dashboard inbox

Every form has an **Inbox** tab (and a **Spam** tab for [quarantined](/docs/features/quarantine)
submissions) in the [dashboard](https://app.formpaste.com). This is the primary,
always-up-to-date view - every submission that clears spam filtering shows up here the
moment it arrives, alongside the copy emailed to your destination address.

Use this when a human wants to read submissions.

## 2. CSV export

For bulk or offline use, export submissions as CSV:

* **Per-form**: from a form's Inbox tab, export every submission on that form.
* **Account-wide**: from **Settings → Data & privacy**, export every submission across
  every form on the account in one file.

Both are owner-scoped - you can only export forms you own - and respect the account's
[retention window](/docs/features/submission-history). See [CSV export](/docs/features/csv-export)
for the exact column layout.

Use this for spreadsheets, one-off analysis, or feeding submissions into a tool that
doesn't need live/programmatic access.

## 3. The MCP `list_submissions` tool

For an agent (or any MCP-speaking client) that needs programmatic, on-demand read
access, the [MCP server](/docs/agents/mcp-server) exposes
[`list_submissions`](/docs/agents/list-submissions) - the closest thing to an API for reading
submissions, and the one that's actually real:

```json theme={null}
{
  "name": "list_submissions",
  "arguments": { "formId": "frm_...", "folder": "inbox", "limit": 10 }
}
```

It returns inbox/spam counts plus a page of submissions, metadata-only by default
(`id`, `created_at`, `folder`, `status`) - pass `includeContent: true` to also get the
submitted fields (name, email, message, etc.), which is opt-in specifically because that
data is a visitor's PII, not the form owner's own. See
[`list_submissions`](/docs/agents/list-submissions) for the full input/output schema.

Use this when an agent needs to check "did anyone submit today?" or summarize recent
messages without a human opening the dashboard.

## What doesn't exist

There is no `GET /api/submissions`, no `GET /api/forms/{id}/submissions`, no polling
REST endpoint, and no webhook-independent "submissions API" beyond the three paths
above. If you need submission data to flow into your own system automatically as it
arrives - rather than being pulled on demand - that's what
[webhooks](/docs/features/webhooks) (Pro) are for: a signed POST fires for every delivered
submission in real time.

<CardGroup cols={2}>
  <Card title="list_submissions" icon="inbox" href="/docs/agents/list-submissions">
    Full schema for the MCP tool.
  </Card>

  <Card title="Webhooks" icon="webhook" href="/docs/features/webhooks">
    Push, not pull - real-time delivery to your own endpoint.
  </Card>

  <Card title="CSV export" icon="file-csv" href="/docs/features/csv-export">
    Bulk export, per-form or account-wide.
  </Card>

  <Card title="Submission history" icon="clock-rotate-left" href="/docs/features/submission-history">
    Retention windows that bound all three retrieval paths.
  </Card>
</CardGroup>
