Features
Submissions API
Read your submissions programmatically with a REST endpoint.
Reading submissions over the API is part of Pro and Business. Export to CSV or JSON from the dashboard works on every plan.
Generate an API key in your dashboard settings, then read submissions from your own code — for a custom dashboard, a nightly export, or piping into a CRM. The API is read-only.
terminal
curl "https://formemailapi.com/api/v1/submissions?limit=20" \
-H "Authorization: Bearer fp_your_api_key"| Parameter | Default | Description |
|---|---|---|
| form_id | — | Limit results to one form — the last segment of that form's endpoint. Omit to read every form on the account. |
| limit | 50 | How many rows to return. Maximum 200. |
| offset | 0 | Row offset for paging. |
| since | — | ISO 8601 timestamp. Only return submissions newer than this. |
| include_spam | 0 | Set to 1 to include submissions flagged as spam. |
What comes back
response
{
"success": true,
"total": 128,
"limit": 50,
"offset": 0,
"submissions": [
{
"id": "019fd955-982a-77c6-8144-c35f077f6b9e",
"form_id": "a3k9x2m1",
"data": { "name": "Ada Lovelace", "email": "ada@example.com" },
"subject": "New submission from Website contact",
"from_email": "ada@example.com",
"from_name": "Ada Lovelace",
"attachments": [],
"is_spam": false,
"created_at": "2026-08-03T10:24:11.482Z"
}
]
}total is the count matching your filters, not the number returned — page through it with limit and offset. Submission ids are UUIDs, and form_id is the last segment of the form's endpoint — the same string that sits in your HTML — so the two sides join up without you storing a mapping.
The API key grants read access to every submission on the account. Keep it server-side — never ship it in browser JavaScript.