REST API · Version 1

API Reference

Programmatically create forms, retrieve responses, and generate fields with AI. All from a single, consistent REST API.

Base URLhttps://www.formzen.in/api
Get your API key

Authentication

All API requests (except submitting responses) require your API key in the Authorization header. Generate a key from Settings → API Keys.

Keep your key secret

Never expose it in client-side JavaScript, git repos, or browser requests. Use environment variables.

bash
# Add to every request header
Authorization: Bearer fc_live_your_key_here

# Example
curl https://formzen.in/api/forms \
  -H "Authorization: Bearer fc_live_your_key_here"

Rate limits

Rate limits apply per API key per rolling 60-second window. Every response includes rate limit headers.

Free
No API access
Pro
120
requests / minute
Teams
600
requests / minute
http
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 87
X-RateLimit-Reset: 1721234567

# On 429 Too Many Requests:
Retry-After: 12

Errors

All errors return JSON with an error string and optional code.

StatusMeaning
400Bad request — missing or invalid fields
401Unauthorized — missing, invalid, or expired API key
403Forbidden — plan doesn't include this feature, or form/response limit reached
404Not found — form or resource doesn't exist
409Conflict — e.g. form not published
429Rate limited — too many requests, see Retry-After header
500Server error — retry with exponential backoff
json
{
  "error": "Form limit reached (50 on pro plan). Archive old forms or upgrade.",
  "code": "form_limit_reached",
  "docs": "https://api.formzen.in/docs"
}

Forms

Responses

AI Generation

Field schema

Every field in the fields array follows this structure:

PropertyTypeDescription
idrequiredstringUnique within the form. e.g. "field_1"
typerequiredstringtext | email | phone | number | textarea | select | radio | checkbox | date | rating | scale | nps | heading | paragraph
labelrequiredstringThe visible question label
orderrequiredintegerDisplay order, 0-indexed
pageIndexintegerWhich page (default: 0)
descriptionstringHelp text shown below the label
placeholderstringPlaceholder for text inputs
optionsarrayRequired for select/radio/checkbox. Each: { id, label, value }
validationobject{ required, minLength, maxLength, min, max }
propertiesobjectType-specific: { maxRating } for rating, { minLabel, maxLabel } for scale/nps
Formzen API v1 · JSON responses · Bearer auth