# Form builder API for product forms

Last updated: 2026-08-07
Canonical URL: https://fillo.so/form-builder-api

Fillo separates browser rendering from server management. A publishable key can resolve and submit a published form from the React or DOM SDK. A scoped workspace key can read published forms and responses and manage settings or webhooks from a trusted backend. Use the CLI or MCP tools to create, stage, and publish schemas.

## The key boundary

- Put a `pk_` publishable key in the browser renderer.
- Keep an `fsk_` workspace key on your server.
- Management routes are not CORS-open, so a secret key pasted into browser code fails instead of becoming an accidental public capability.

## Read responses from a backend

```ts
const response = await fetch(
  "https://fillo.so/api/v1/manage/forms/FORM_ID/responses",
  {
    headers: {
      Authorization: `Bearer ${process.env.FILLO_API_KEY}`,
    },
  },
);

const { data, nextCursor } = await response.json();
```

The API uses keyset pagination. The OpenAPI document is available at https://fillo.so/openapi.json.

## What shares the contract

- Editor-managed or code-defined form schemas.
- Browser and server validation.
- Native React and framework-neutral DOM renderers.
- Versioned responses, exports, and signed webhook events.

Use a simple submission endpoint when you already want to own the renderer, schema lifecycle, validation, uploads, response storage, and review workflow.

## Useful links

- Human overview: https://fillo.so/form-builder-api
- API reference: https://fillo.so/docs/api.md
- OpenAPI 3.1: https://fillo.so/openapi.json
- Code-defined forms: https://fillo.so/docs/authoring.md
- React guide: https://fillo.so/guides/react-form
