Skip to content

Forms: list, read and create

GET /forms, GET /forms/:id and POST /forms, with the form object and the full form document.

Written by
Updated

FormsAI Pro
On this page

List forms

GET /forms returns up to 500 forms, most recently updated first. Filter with ?status=draft, published, closed or archived (archived forms are left out unless you ask for them).

JSON
{
  "forms": [
    {
      "id": "f_8k2…",
      "title": "Customer feedback",
      "slug": "customer-feedback",
      "url": "https://app.formsai.dev/f/customer-feedback",
      "status": "published",
      "response_count": 128,
      "published_at": "2026-10-20T09:12:00.000Z",
      "created_at": "2026-10-19T16:40:00.000Z",
      "updated_at": "2026-10-24T11:02:00.000Z",
      "questions": [
        { "id": "s_…", "ref": "nps", "type": "nps", "title": "How likely are you to recommend us?", "required": true }
      ]
    }
  ]
}

Get one form

GET /forms/:id returns form (as above) and document: the complete form document with screens, logic, theme and settings, the same as an exported form file.

Create a form

POST /forms with a JSON body. Send title for a new form, or document to create one from a form document (for example one you exported). It returns 201 with the form, as a draft.

Shell
curl -X POST https://app.formsai.dev/api/v1/forms \
  -H "Authorization: Bearer fk_live_…" \
  -H "content-type: application/json" \
  -d '{"title": "Event sign-up"}'

Creating counts towards your active forms, and an invalid document is refused with the reason.