Forms API: make forms and read answers with plain HTTP

Updated 2026-10-30

I want forms from code. POST a title and fields. Get a link. GET the answers as JSON or CSV. One key.

Make a form

bash
curl -X POST https://aiformapi.com/v1/forms \
  -H "Authorization: Bearer $AIFORMAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Customer feedback",
    "fields": [
      {"id": "name", "label": "Your name", "type": "short_text"},
      {"id": "score", "label": "How was it?", "type": "rating", "required": true},
      {"id": "comment", "label": "Anything to add?", "type": "long_text"}
    ],
    "settings": {"agent_fill": true}
  }'

You get 201 with id, slug, public_url, status and created_at. Share public_url. Read the answers later:

bash
curl "https://aiformapi.com/v1/forms/FORM_ID/responses?format=csv" \
  -H "Authorization: Bearer $AIFORMAPI_KEY" -o responses.csv

The Quickstart has JavaScript and Python.

Endpoints

Base URL: https://aiformapi.com/v1. Full list: openapi.json.

  • Forms (key): POST /v1/forms, GET /v1/forms, GET, PATCH, DELETE /v1/forms/{id}, POST /v1/forms/{id}/close and /reopen.
  • Answers (key): GET /v1/forms/{id}/responses, GET /v1/forms/{id}/responses/{response_id}.
  • Webhooks and usage (key): POST, DELETE /v1/forms/{id}/webhooks, GET /v1/usage.
  • Public (no key): POST /v1/signup, GET /v1/public/forms/{slug}, POST /v1/public/forms/{slug}/responses, POST /v1/public/forms/{slug}/fill-tokens.
  • Agents (fill token): GET, POST /v1/fill/{token}.

More: Forms and fields, Responses, Webhooks, Agent fill, MCP, Errors. 11 field types. Up to 50 fields.

Bring your own front end

Skip our page. Read the schema, draw the fields, then post the answers to the public endpoints above. No key needed. Limits are per IP address. When Turnstile is on, send turnstile_token. Want no code? Use the embed script.

Free plan limits

LimitFree plan
Open forms3
Responses a month100
API requests per key30 a minute, 1,000 a day
Request body64 KB

See rate limits and pricing. No SDKs yet. Make a client from /openapi.json.

Other forms APIs

Read on 2026-10-30. Limits differ in kind. Do not compare numbers one to one.

AI Form APIGoogle Forms APIJotform APITally API
CredentialOne API keyAPI key as apiKey query parameter or APIKEY headerBearer token
Rate limit30 a minute, 1,000 a day (free)Per minute per project: 975 reads, 450 for responses.list, 375 writes; no daily cap1,000 a day on Starter (free), 10,000 on Bronze100 a minute
WebhooksYes, signedWatches that expire after 7 daysYes, through the APIYes; the docs prefer them to polling

They have more features: logic, uploads, payments. Need those? Use them. Want a short API, one key and an agent hand-off? Use ours. Compare Google Forms, Jotform and Tally.

Sources: Google Forms API, Google limits, Jotform, Tally.

Questions

What is a forms API?

It lets code make forms and read the answers. You POST a form, get a public link, and later GET the responses as JSON or CSV.

How do I authenticate?

Send your API key as a Bearer token in the Authorization header. Keys start with afk_. We show the full key once and store only a hash.

Does it have SDKs?

Not yet. It is plain JSON over HTTPS. Use fetch, requests or curl. An OpenAPI 3.1 file is at /openapi.json.