Skip to the documentation
API

List submissions

Every sign-up the form stored, newest first, with each answer as it was sent.

GET/forms/{id}/submissions

Runs the real call on your workspace.

GET /forms/{id}/submissions

Every sign-up the form stored, newest first, with each answer as it was sent.

Example

Needs forms:read. limit goes up to 100 and defaults to 25, cursor takes the previous page's nextCursor, q searches email addresses, and status is pending or added.

curl
curl "$OE/forms/frm_3b9d2e7a1c4f80d56e2a9b14/submissions?q=example.com" -H "$AUTH"
Response
{  "object": "list",  "data": [{      "object": "form_submission",      "id": "fsb_8e2c4a6b1d3f57e09a2c4e6b",      "formId": "frm_3b9d2e7a1c4f80d56e2a9b14",      "email": "[email protected]",      "status": "added",      "expired": false,      "answers": [        {          "fieldId": "fld_k2m8q4w9z1x7",          "key": "email",          "label": "Email",          "type": "email",          "value": "[email protected]",          "display": "[email protected]"        },        {          "fieldId": "fld_p7r3t5v2y8n4",          "key": "first_name",          "label": "First name",          "type": "text",          "value": "Ann",          "display": "Ann"        }      ],      "audienceIds": ["aud_4c1b8e2a7d9f05c36b4e8a71"],      "sourceUrl": "https://acme.com/blog",      "confirmedAt": "2026-09-30T16:44:02.000Z",      "createdAt": "2026-09-30T16:42:11.000Z"    }],  "hasMore": false,  "nextCursor": null,  "formId": "frm_3b9d2e7a1c4f80d56e2a9b14"}

expired marks a pending sign-up whose confirmation link has run out. Approve it, or send a fresh link.

A sign-up that looked automated is never stored, so it is not listed.

Your inbox,
on your own terms.

Email infrastructure for businesses, AI, agents and personal email. Built for scale, privacy and control. Everything email should have had from day one.

© 2026 OpenEmail. All rights reserved.