Management API
Read your forms and submissions programmatically. Authenticate with an API key from your account settings.
Authentication
Create a key under Account → API keys. The key is shown once — store it like a password. Send it on every request:
curl https://api.formcrest.com/v1/api/me \
-H "Authorization: Bearer fc_live_…"Keys can be revoked at any time from the same page. Requests are rate-limited to 120 per minute per key. Endpoints are read-only, except the Zapier-style REST-hook subscriptions below.
Endpoints
GET /v1/api/me
The account that owns the key.
{ "user": { "id": "…", "email": "…", "displayName": "…", "planId": "pro" } }GET /v1/api/forms
All your forms, newest first.
{ "forms": [ { "id": "…", "name": "Contact", "isActive": 1, "createdAt": "…" } ] }GET /v1/api/forms/:id/submissions
Submissions for a form, newest first. limit is 1–100 (default 25). Page with the returned nextCursor:
GET /v1/api/forms/FORM_ID/submissions?limit=50
GET /v1/api/forms/FORM_ID/submissions?limit=50&cursor=NEXT_CURSOR
{
"submissions": [
{
"id": "…",
"createdAt": "2026-06-10T12:00:00.000Z",
"status": "delivered",
"isSpam": 0,
"country": "GR",
"payload": { "email": "jane@acme.com", "message": "…" }
}
],
"nextCursor": "2026-06-10T11:58:01.000Z"
}nextCursor is null on the last page.
GET /v1/api/submissions/:id
A single submission, including its payload.
REST hooks (Pro+)
Subscribe a URL to a form and we POST every new submission to it — this is the mechanism behind our Zapier integration, and you can use it directly. Delivery is best-effort with no retries; answer 410 Gone and the subscription is deleted.
POST /v1/api/hooks
curl -X POST https://api.formcrest.com/v1/api/hooks \
-H "Authorization: Bearer fc_live_…" \
-H "Content-Type: application/json" \
-d '{ "formId": "FORM_ID", "targetUrl": "https://hooks.zapier.com/…" }'
{ "hook": { "id": "…", "formId": "FORM_ID", "targetUrl": "…", "createdAt": "…" } }The target must be a public HTTPS URL. Each new submission is delivered as a flat JSON object:
{
"id": "…",
"form_id": "…",
"created_at": "2026-06-11T12:00:00.000Z",
"ip": "…",
"country": "GR",
"user_agent": "…",
"referer": "…",
"fields": { "email": "jane@acme.com", "message": "…" }
}GET /v1/api/hooks
All your subscriptions, newest first.
DELETE /v1/api/hooks/:id
Remove a subscription.
Errors
Errors use the same shape as the rest of the API — see Error codes. 401 means the key is missing, malformed, or revoked; 404 means the resource doesn't exist or belongs to another account.