REST API v1.
The reading half of the API. Three endpoints, authenticated with your own API key, scoped to your account: list forms, page through submissions, fetch a single one. Field names are snake_case here — that is what machine clients expect from this kind of API.
Authentication
Create a key in the dashboard under „API keys" and send it as a bearer token. The plaintext is shown once; after that only its hash exists. Every request is counted against the key's own rate limit of 120 requests per minute.
GET /api/v1/forms
All forms of your account with their access key and current submission count. No parameters, no paging — an account has few forms.
GET /api/v1/submissions
Submissions across all your forms, newest first, paged by cursor. Spam is left out unless you ask for it.
| Parameter | Description |
|---|---|
form_id |
Restrict to one form. A form that is not yours answers 404. |
limit |
Page size, 1 to 100. Default 25. |
cursor |
The next_cursor of the previous response. |
include_spam |
„true" also returns submissions marked as spam. |
Keep calling with next_cursor until has_more is false. The cursor is opaque — pass it back unchanged and do not build one yourself.
GET /api/v1/submissions/:id
A single submission in the same shape as one item of the list. A submission belonging to somebody else answers 404 — indistinguishable from one that does not exist, so nobody can probe for ids.
The Node.js client
The official package wraps both halves and follows the cursor for you. No runtime dependencies, types included.