canonical: https://jentic.com/apis/fillout.com/fillout

# Fillout REST API

The Fillout REST API reads forms and their submissions, captures new submissions, and registers webhooks in Fillout. It lists the forms in an account and returns a single form's metadata, pages through a form's submissions, and fetches or deletes a submission by id. Webhooks are created and removed to push submission events to your own endpoint. Authentication uses a bearer API key, and the API is served from US and EU hosts so data can stay in the chosen region.

## For AI agents

Work with Fillout forms through its REST API: list forms and read a form's metadata, read and paginate submissions, create and delete submissions, and register webhooks for new submission events.

## Scope

Does not handle form design, payments, or respondent authentication. Use for reading forms, reading and creating submissions, and managing submission webhooks only.

## Capabilities

- List all forms in an account via GET /forms and read a form's metadata via GET `/forms/{formId}`
- Read and paginate a form's submissions via GET `/forms/{formId}/submissions`
- Capture new submissions for a form via POST `/forms/{formId}/submissions`
- Fetch a single submission by id via GET `/forms/{formId}/submissions/{submissionId}`
- Delete a submission by id via DELETE `/forms/{formId}/submissions/{submissionId}`
- Register and remove webhooks for submission events via POST `/webhook/create` and POST `/webhook/delete`

## Use cases

### AI agent submission reader

An AI assistant pulls new form responses on demand so a human does not have to watch a dashboard. Through Jentic it lists the forms, reads the latest submissions for the right one, and fetches a specific response by id to act on it. Jentic injects the Fillout key at call time, so the agent never holds the raw secret.

Example prompt: Search Jentic for 'get the latest submissions for a form', list forms with GET /forms, then read GET `/forms/{formId}/submissions` for the chosen form

### Submission sync to downstream systems

Teams move Fillout responses into a CRM, spreadsheet, or data warehouse. The Fillout REST API pages through a form's submissions and returns a single submission by id, so a sync job can pull new responses incrementally and resolve any one it needs in full. Deleting a submission is available for cleaning up test data.

Example prompt: Page through GET `/forms/{formId}/submissions`, and for any response needing full detail call GET `/forms/{formId}/submissions/{submissionId}`

### Webhook-driven automation

Rather than poll for responses, a workflow reacts the moment a form is submitted. The Fillout REST API creates a webhook that pushes submission events to your endpoint and removes it when the automation is retired. That turns form responses into real-time triggers for downstream actions.

Example prompt: Call POST `/webhook/create` with your endpoint URL to subscribe to a form's submissions, and POST `/webhook/delete` to remove it when done

### Programmatic submission capture

Applications that collect data outside the hosted form can push responses into Fillout to keep everything in one place. The create-submission endpoint accepts a new response for a form, so a backend can record data captured elsewhere as a first-class Fillout submission. It then shows up in the same submission list and webhooks as any other.

Example prompt: Call POST `/forms/{formId}/submissions` with the response payload, then confirm it landed by reading GET `/forms/{formId}/submissions`

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | `/forms` | Get all forms |
| GET | `/forms/{formId}` | Get a form's metadata |
| GET | `/forms/{formId}/submissions` | Get all submissions for a form |
| POST | `/forms/{formId}/submissions` | Create submissions |
| GET | `/forms/{formId}/submissions/{submissionId}` | Get a submission by id |
| DELETE | `/forms/{formId}/submissions/{submissionId}` | Delete a submission by id |
| POST | `/webhook/create` | Create a webhook |
| POST | `/webhook/delete` | Remove a webhook |

## Key resources

- **Forms** — List the forms in an account and read a single form's metadata
- **Submissions** — Read and paginate submissions, create new ones, and fetch or delete a submission by id
- **Webhooks** — Create and remove webhooks that push submission events to your endpoint

## AI readiness

This API is usable in Jentic One now. Its AI-readiness score against Jentic's framework shows where it stands today and where improvements would make it even easier for agents to use.

- **Score:** 64 / 100
- **Maturity:** AI-Aware
- **Dimensions:**
  - Foundational Compliance: 66 / 100
  - Developer Experience & Jentic Compatibility: 56 / 100
  - AI-Readiness & Agent Experience: 54 / 100
  - Agent Usability: 94 / 100
  - Security: 60 / 100
  - AI Discoverability: 66 / 100
- **View full report:** https://jentic.com/apis/fillout.com/fillout/scorecard
- **How the score is calculated:** https://docs.jentic.com/reference/api-readiness-framework/overview/
- **More about the dimensions:** https://docs.jentic.com/reference/api-readiness-framework/specification/#dimensional-model-overview

### Score it yourself

Every API in the directory is allowlisted, so you can re-score it with no key required.

- **Score your own API:** https://jentic.com/scorecard.md
- **Scoring CLI agent skill:** https://github.com/jentic/jentic-api-scorecard/blob/main/skills/jentic-api-scorecard/SKILL.md

```sh
npx @jentic/api-scorecard-cli score <openapi-url>
```

## Why Jentic

- **Setup:** Wiring the Fillout REST API by hand means managing its bearer key, choosing the US or EU host for data residency, and building submission paging and webhook handling yourself. Through Jentic you install once, import Fillout from the API Directory, store the key once, and your agent calls it.
- **Permission scoping:** Fillout puts the form id in the URL path, such as `/forms/{formId}/submissions`, so a rule can pin your agent to one form and the submission operations you pick. You choose the operations it may call, so deleting submissions with DELETE `/forms/{formId}/submissions/{submissionId}` is not included unless you add it.
- **Credential handling:** Your Fillout API key is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'get the latest submissions for a form' or 'create a form webhook', and Jentic returns the matching Fillout operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Formstack** — Online form and workflow platform with forms, submissions, and webhook support
- **123FormBuilder API** — Form builder API covering forms and their submissions, similar scope to Fillout
- **Feathery API** — Developer-focused form platform for building and embedding complex multi-step forms

## FAQ

### What authentication does the Fillout REST API use?

The Fillout REST API authenticates with a bearer API key from your Fillout developer settings, per its OpenAPI spec. When you call it through Jentic, the key is stored encrypted by your own Jentic One instance and injected at execution time, so it never enters the agent's prompt, logs, or context.

### Can I read a form's submissions with the Fillout REST API?

Yes. Call GET /forms to list your forms, then GET `/forms/{formId}/submissions` to page through a form's responses, and GET `/forms/{formId}/submissions/{submissionId}` to fetch one submission in full. You can also delete a submission by id with the matching DELETE endpoint.

### Can the Fillout REST API push new submissions to my system?

Yes. Create a webhook with POST `/webhook/create` that delivers submission events to your endpoint, and remove it with POST `/webhook/delete` when the automation is retired. That lets a workflow react the moment a form is submitted instead of polling for new responses.

### Does the Fillout REST API support EU data residency?

Yes. The API is served from a US host at https://api.fillout.com/v1/api and an EU host at https://eu-api.fillout.com/v1/api, so you can keep form data in the region you choose by calling the matching base URL with the same bearer key. Point your agent at the host that fits your data-residency needs.

### What are the rate limits for the Fillout REST API?

The OpenAPI spec does not specify rate limits for the Fillout REST API. Check the Fillout documentation for current limits, prefer webhooks over polling for new submissions, and have your agent back off when the API signals that it is being throttled.

### How do I read form submissions through Jentic?

Search Jentic for 'get the latest submissions for a form' to load the Fillout operation with its input schema, list forms with GET /forms, then read GET `/forms/{formId}/submissions.` To run it on your own infrastructure, install Jentic One from its GitHub repo.

### Can I limit what my agent is allowed to do with the Fillout REST API?

Yes. Fillout puts the form id in the URL path, such as `/forms/{formId}/submissions`, so a rule can pin your agent to one form and the submission operations you pick, for example reading submissions while leaving out DELETE `/forms/{formId}/submissions/{submissionId}.` You choose the operations it may call, and every call it makes is logged.
