For Developers

Build complex, logic-driven forms without code

Ship embeddable forms in hours, not weeks. FormFlow's REST API, real-time webhooks, and lightweight SDKs give you full programmatic control over form creation, submission, and validation — while our visual builder handles the heavy lifting.

Get Your API Key Read the Docs

A developer-first API that scales with you

Every feature in the FormFlow visual builder is exposed through our versioned REST API. Create forms, manage fields, configure conditional logic, and retrieve submissions — all via predictable JSON endpoints.

Create & Manage Forms

Define forms programmatically with nested sections, field types, validation rules, and branching logic. Updates are immediately reflected in the visual builder.

POST /v1/forms
{
  "name": "Enterprise Onboarding",
  "sections": [
    {
      "title": "Company Details",
      "fields": [
        {
          "type": "text",
          "key": "company_name",
          "required": true,
          "validation": {
            "pattern": "^[A-Za-z0-9\\s&.-]+$"
          }
        },
        {
          "type": "select",
          "key": "tier",
          "options": ["starter", "growth", "enterprise"]
        }
      ]
    }
  ]
}

Real-Time Webhooks

Get instant notifications on every form lifecycle event. Webhooks include signatures for verification, automatic retries with exponential backoff, and idempotency keys to prevent duplicate processing.

POST https://your-app.com/formflow/webhook

Headers:
  X-FormFlow-Signature: sha256=a1b2c3...
  X-FormFlow-Event: form.submitted
  X-FormFlow-Idempotency-Key: 7f8e9d...

{
  "event": "form.submitted",
  "form_id": "frm_9k3m2x",
  "submission_id": "sub_4a7b1c",
  "submitted_at": "2025-06-18T14:32:09Z",
  "data": {
    "company_name": "Meridian Labs",
    "tier": "enterprise",
    "employee_count": 240
  }
}

Embed Forms Anywhere

Drop a form into any frontend with a single script tag or SDK call. Forms inherit your domain's styling, support custom CSS overrides, and fire lifecycle events you can hook into from JavaScript.

<script src="https://cdn.formflow.app/sdk/v2/embed.js"></script>

<div id="formflow-container"></div>

<script>
  FormFlow.embed({
    formId: 'frm_9k3m2x',
    container: '#formflow-container',
    theme: 'dark',
    onSuccess: (submission) => {
      console.log('Submitted:', submission.id);
      analytics.track('form_completed', {
        form: submission.form_id,
        tier: submission.data.tier
      });
    }
  });
</script>

SDKs for your stack

Official, actively maintained SDKs for the most popular languages and frameworks. All SDKs are open-source, typed, and published to public package registries.

JavaScript / TypeScript

Full type definitions, ESM and CommonJS support, and a React component library. Handles authentication, form rendering, and submission in a single package.

npm install @formflow/sdk

import { FormFlow } from '@formflow/sdk';

const ff = new FormFlow({ apiKey: process.env.FF_API_KEY });

const form = await ff.forms.create({
  name: 'Q3 Feedback Survey',
  fields: [
    { type: 'rating', key: 'satisfaction', min: 1, max: 5 }
  ]
});

Python

Async-first client built on aiohttp with support for streaming large submission exports. Integrates cleanly with Django, FastAPI, and Celery workflows.

pip install formflow

from formflow import Client

client = Client(api_key="ff_live_8x3k9m...")

submissions = client.forms.submissions.list(
  form_id="frm_9k3m2x",
  status="completed",
  after="2025-01-01"
)

for sub in submissions:
  print(sub.data["company_name"])

Node.js

Native Node.js client with a webhook handler that automatically verifies signatures, deserializes payloads, and manages retry logic. Drop it into Express, Fastify, or Next.js.

npm install @formflow/node

const { Webhook } = require('@formflow/node');

const webhook = new Webhook({
  signingSecret: process.env.FF_WEBHOOK_SECRET
});

app.post('/webhook', webhook.handler((event) => {
  if (event.type === 'form.submitted') {
    const { data } = event.payload;
    createCustomerInCRM(data);
  }
}));

React Components

Pre-built, accessible React components that render FormFlow forms with full control over styling, field overrides, and submission handling. Supports React 18+ and Next.js App Router.

npm install @formflow/react

import { FormFlowForm } from '@formflow/react';

function OnboardingPage() {
  return (
    <FormFlowForm
      formId="frm_9k3m2x"
      onSuccess={(data) => router.push('/dashboard')}
      onError={(err) => toast.error(err.message)}
      fieldOverrides={{
        company_name: { placeholder: 'e.g., Acme Corp' }
      }}
    />
  );
}

Start building today

Get a free API key with 10,000 submissions per month. No credit card required. Rate-limited at 1,000 requests per minute on the free tier — upgrade to Production for unlimited throughput and dedicated support.

Create a Free Account Explore API Reference