Forms API

Create forms, manage fields, and access submissions programmatically.

Get your API key

Forms

GET /api/v1/projects/{project_id}/forms/

List all forms for a website.

{
  "success": true,
  "data": [
    {
      "id": "uuid",
      "name": "Contact Form",
      "slug": "contact",
      "description": "Main contact form",
      "is_active": true,
      "field_count": 4,
      "submission_count": 150,
      "created_at": "2026-01-01T00:00:00Z"
    }
  ],
  "count": 3
}
POST /api/v1/projects/{project_id}/forms/

Create a new form.

{
  "name": "Newsletter Signup",
  "slug": "newsletter",
  "description": "Email newsletter subscription",
  "submit_button_text": "Subscribe",
  "success_message": "Thanks for subscribing!",
  "redirect_url": "/thank-you/",
  "is_active": true
}
GET PUT DELETE /api/v1/projects/{project_id}/forms/{form_id}/

Get, update, or delete a form.

Form Embedding

Embed forms in pages using shortcodes:

ShortcodeBehavior
[FORM]Uses the page's linked form
[FORM:uuid]Uses a specific form by ID

Form Fields

GET /api/v1/projects/{project_id}/forms/{form_id}/fields/

List all fields for a form.

{
  "success": true,
  "data": [
    {
      "id": "uuid",
      "name": "email",
      "field_type": "email",
      "label": "Email Address",
      "placeholder": "[email protected]",
      "required": true,
      "order": 0,
      "is_active": true
    }
  ]
}
POST /api/v1/projects/{project_id}/forms/{form_id}/fields/

Create a new field.

{
  "name": "company",
  "field_type": "text",
  "label": "Company Name",
  "placeholder": "Acme Inc.",
  "required": false,
  "order": 3
}

Field Types

TypeDescription
textSingle line text
emailEmail (validated)
phonePhone number
numberNumeric input
textareaMulti-line text
selectDropdown
checkboxCheckbox
radioRadio buttons
hiddenHidden field
dateDate picker
urlURL input
PUT DELETE /api/v1/projects/{project_id}/forms/{form_id}/fields/{field_id}/

Update or delete a field.

Form Submissions

GET /api/v1/projects/{project_id}/forms/{form_id}/submissions/

List submissions for a specific form. Supports pagination.

Query params: ?page=2&page_size=50

{
  "success": true,
  "data": [
    {
      "id": "uuid",
      "data": {
        "name": "John Doe",
        "email": "[email protected]",
        "message": "Hello!"
      },
      "ip_address": "192.168.1.1",
      "status": "delivered",
      "created_at": "2026-04-01T10:00:00Z"
    }
  ],
  "pagination": {
    "page": 1,
    "page_size": 25,
    "total": 150,
    "total_pages": 6
  }
}

Statuses: submitted | processing | delivered | failed

Submissions (Website-Wide)

Enhanced submissions endpoint that works across all forms on a website.

GET /api/v1/projects/{project_id}/submissions/

List all submissions across all forms.

Query params: ?form_id=uuid&status=submitted&limit=50&offset=0

GET /api/v1/projects/{project_id}/submissions/{submission_id}/

Get a specific submission.

POST /api/v1/projects/{project_id}/submissions/export/

Export submissions as CSV or JSON.

{"format": "csv"}

Formats: csv | json. CSV exports capped at 5,000 records.