Fillout Forms API

The Forms API from Fillout — 4 operation(s) for forms.

Operations 6

GET /forms Get all forms #
GET /forms/{formId} Get form metadata #
GET /forms/{formId}/submissions Get all submissions #
POST /forms/{formId}/submissions Create submissions #
GET /forms/{formId}/submissions/{submissionId} Get submission by ID #
DELETE /forms/{formId}/submissions/{submissionId} Delete submission by ID #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/fillout-forms-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

fillout-forms-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Fillout REST Forms API
  description: 'A REST API for managing forms, submissions, and webhooks in Fillout


    OpenAPI 3.1 spec mirrored from the public Fillout REST API specification at https://fillout.com/help/openapi.json.'
  version: 1.0.0
servers:
- url: https://api.fillout.com/v1/api
  description: Fillout REST API base URL
security:
- bearerAuth: []
tags:
- name: Forms
paths:
  /forms:
    get:
      summary: Get all forms
      description: Returns a list of all your forms
      operationId: getForms
      responses:
        '200':
          description: List of forms
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/FormSummary'
      tags:
      - Forms
  /forms/{formId}:
    get:
      summary: Get form metadata
      description: Given the formId, returns all the questions in that form and other metadata
      operationId: getFormMetadata
      parameters:
      - name: formId
        in: path
        required: true
        schema:
          type: string
        description: The public ID of your form
      responses:
        '200':
          description: Form metadata
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FormMetadata'
      tags:
      - Forms
  /forms/{formId}/submissions:
    get:
      summary: Get all submissions
      description: Returns a list of all submissions for a given form
      operationId: getAllSubmissions
      parameters:
      - name: formId
        in: path
        required: true
        schema:
          type: string
        description: The public identifier of the form
      - name: limit
        in: query
        schema:
          type: integer
          minimum: 1
          maximum: 150
          default: 50
        description: The maximum number of submissions to retrieve per request
      - name: afterDate
        in: query
        schema:
          type: string
          format: date-time
        description: A date string to filter submissions submitted after this date
      - name: beforeDate
        in: query
        schema:
          type: string
          format: date-time
        description: A date string to filter submissions submitted before this date
      - name: offset
        in: query
        schema:
          type: integer
          default: 0
        description: The starting position from which to fetch the submissions
      - name: status
        in: query
        schema:
          type: string
          enum:
          - finished
          - in_progress
        description: Pass 'in_progress' to get unfinished submissions. By default, only 'finished' submissions are returned
      - name: includeEditLink
        in: query
        schema:
          type: boolean
        description: Pass true to include a link to edit the submission as 'editLink'
      - name: includePreview
        in: query
        schema:
          type: boolean
        description: Pass true to include preview responses
      - name: sort
        in: query
        schema:
          type: string
          enum:
          - asc
          - desc
          default: asc
        description: Sort order for the submissions
      - name: search
        in: query
        schema:
          type: string
        description: Filter for submissions containing a string of text
      responses:
        '200':
          description: List of submissions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubmissionsResponse'
      tags:
      - Forms
    post:
      summary: Create submissions
      description: Create new submissions for a form
      operationId: createSubmissions
      parameters:
      - name: formId
        in: path
        required: true
        schema:
          type: string
        description: The public identifier of the form
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSubmissionsRequest'
      responses:
        '200':
          description: Created submissions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateSubmissionsResponse'
      tags:
      - Forms
  /forms/{formId}/submissions/{submissionId}:
    get:
      summary: Get submission by ID
      description: Returns a single submission by its ID
      operationId: getSubmissionById
      parameters:
      - name: formId
        in: path
        required: true
        schema:
          type: string
        description: The public identifier of the form
      - name: submissionId
        in: path
        required: true
        schema:
          type: string
        description: The identifier of the submission
      - name: includeEditLink
        in: query
        schema:
          type: boolean
        description: Pass true to include a link to edit the submission as 'editLink'
      responses:
        '200':
          description: Single submission
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SingleSubmissionResponse'
      tags:
      - Forms
    delete:
      summary: Delete submission by ID
      description: Deletes a submission by its ID
      operationId: deleteSubmissionById
      parameters:
      - name: formId
        in: path
        required: true
        schema:
          type: string
        description: The public identifier of the form
      - name: submissionId
        in: path
        required: true
        schema:
          type: string
        description: The identifier of the submission
      responses:
        '200':
          description: Submission deleted successfully
      tags:
      - Forms
components:
  schemas:
    LoginResponse:
      type: object
      properties:
        email:
          type: string
          format: email
          description: Verified email address
      required:
      - email
    CreatePaymentValue:
      type: object
      properties:
        paymentId:
          type: string
          description: Stripe payment ID
        stripeCustomerId:
          type: string
          description: Stripe customer ID (optional)
        stripeCustomerUrl:
          type: string
          format: uri
          description: URL to Stripe customer dashboard (optional)
        stripePaymentUrl:
          type: string
          format: uri
          description: URL to Stripe payment dashboard (optional)
        totalAmount:
          type: integer
          description: Total amount in cents (optional)
        currency:
          type: string
          description: Currency code (optional)
        email:
          type: string
          format: email
          description: Customer email (optional)
        status:
          type: string
          description: Payment status (optional)
        stripeSubscriptionId:
          type: string
          description: Stripe subscription ID (optional)
      required:
      - paymentId
    CreateSubmissionsRequest:
      type: object
      properties:
        submissions:
          type: array
          maxItems: 10
          items:
            $ref: '#/components/schemas/CreateSubmissionData'
          description: List of submissions to create (maximum 10)
      required:
      - submissions
    PaymentValue:
      type: object
      properties:
        paymentId:
          type: string
          description: Stripe payment ID
        stripeCustomerId:
          type: string
          description: Stripe customer ID (optional)
        stripeCustomerUrl:
          type: string
          format: uri
          description: URL to Stripe customer dashboard (optional)
        stripePaymentUrl:
          type: string
          format: uri
          description: URL to Stripe payment dashboard (optional)
        totalAmount:
          type: integer
          description: Total amount in cents (optional)
        currency:
          type: string
          description: Currency code (optional)
        email:
          type: string
          format: email
          description: Customer email (optional)
        discountCode:
          type: string
          description: Discount code used (optional)
        status:
          type: string
          description: Payment status (optional)
        stripeSubscriptionId:
          type: string
          description: Stripe subscription ID (optional)
      required:
      - paymentId
    QuestionResponse:
      type: object
      properties:
        id:
          type: string
          description: Identifier of the question
        name:
          type: string
          description: The question text
        type:
          type: string
          description: The type of the question
        value:
          description: The response value
      required:
      - id
      - name
      - type
      - value
    SchedulingResponse:
      type: object
      properties:
        id:
          type: string
          description: Identifier of the scheduling field
        name:
          type: string
          description: Name of the scheduling field
        value:
          $ref: '#/components/schemas/SchedulingValue'
          description: Scheduling details
      required:
      - id
      - name
      - value
    QuizConfig:
      type: object
      properties:
        enabled:
          type: boolean
          description: Whether quiz mode is enabled
      required:
      - enabled
    CreateSchedulingValue:
      type: object
      properties:
        fullName:
          type: string
          description: Full name of the person booking
        email:
          type: string
          format: email
          description: Email of the person booking
        eventStartTime:
          type: string
          format: date-time
          description: Start time of the event
        eventEndTime:
          type: string
          format: date-time
          description: End time of the event
        timezone:
          type: string
          description: Timezone for the meeting
        userId:
          type: integer
          description: User ID (optional)
        scheduledUserEmail:
          type: string
          format: email
          description: Email of the scheduled user (optional)
        eventId:
          type: string
          description: Calendar event ID (optional)
        eventUrl:
          type: string
          format: uri
          description: URL to the calendar event (optional)
        rescheduleOrCancelUrl:
          type: string
          format: uri
          description: URL to reschedule or cancel the event (optional)
        meetingNotes:
          type: string
          description: Meeting notes (optional)
      required:
      - fullName
      - email
      - eventStartTime
      - eventEndTime
      - timezone
    FormSummary:
      type: object
      properties:
        name:
          type: string
          description: The name of the form
        formId:
          type: string
          description: The public identifier of the form
      required:
      - name
      - formId
    Question:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the question
        name:
          type: string
          description: The question text
        type:
          type: string
          enum:
          - Address
          - AudioRecording
          - Calcom
          - Calendly
          - Captcha
          - Checkbox
          - Checkboxes
          - ColorPicker
          - CurrencyInput
          - DatePicker
          - DateRange
          - DateTimePicker
          - Dropdown
          - EmailInput
          - FileUpload
          - ImagePicker
          - LocationCoordinates
          - LongAnswer
          - Matrix
          - MultiSelect
          - MultipleChoice
          - NumberInput
          - OpinionScale
          - Password
          - Payment
          - PhoneNumber
          - Ranking
          - RecordPicker
          - ShortAnswer
          - Signature
          - Slider
          - StarRating
          - Subform
          - SubmissionPicker
          - Switch
          - Table
          - TimePicker
          - URLInput
          description: The type of the question
      required:
      - id
      - name
      - type
    SingleSubmissionResponse:
      type: object
      properties:
        submission:
          $ref: '#/components/schemas/Submission'
          description: The submission data
      required:
      - submission
    CreatePaymentResponse:
      type: object
      properties:
        id:
          type: string
          description: Identifier of the payment field
        value:
          $ref: '#/components/schemas/CreatePaymentValue'
          description: Payment details
      required:
      - id
      - value
    PaymentResponse:
      type: object
      properties:
        id:
          type: string
          description: Identifier of the payment field
        name:
          type: string
          description: Name of the payment field
        value:
          $ref: '#/components/schemas/PaymentValue'
          description: Payment details
      required:
      - id
      - name
      - value
    Submission:
      type: object
      properties:
        submissionId:
          type: string
          description: Unique identifier for the submission
        submissionTime:
          type: string
          format: date-time
          description: When the submission was made
        lastUpdatedAt:
          type: string
          format: date-time
          description: When the submission was last updated
        questions:
          type: array
          items:
            $ref: '#/components/schemas/QuestionResponse'
          description: List of question responses
        calculations:
          type: array
          items:
            $ref: '#/components/schemas/CalculationResponse'
          description: List of calculation responses
        urlParameters:
          type: array
          items:
            $ref: '#/components/schemas/UrlParameterResponse'
          description: List of URL parameter values
        scheduling:
          type: array
          items:
            $ref: '#/components/schemas/SchedulingResponse'
          description: List of scheduling responses (if using Fillout Scheduling)
        payments:
          type: array
          items:
            $ref: '#/components/schemas/PaymentResponse'
          description: List of payment responses (if using Fillout Payments)
        quiz:
          $ref: '#/components/schemas/QuizResponse'
          description: Quiz results (if form is configured as quiz)
        login:
          $ref: '#/components/schemas/LoginResponse'
          description: Login information (if using login page)
      required:
      - submissionId
      - submissionTime
      - questions
    UrlParameterResponse:
      type: object
      properties:
        id:
          type: string
          description: Identifier of the URL parameter
        name:
          type: string
          description: Name of the URL parameter
        value:
          type: string
          description: Value of the URL parameter
      required:
      - id
      - name
      - value
    Calculation:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the calculation
        name:
          type: string
          description: The name of the calculation
        type:
          type: string
          enum:
          - number
          - text
          - duration
          description: The type of the calculation
      required:
      - id
      - name
      - type
    SubmissionsResponse:
      type: object
      properties:
        responses:
          type: array
          items:
            $ref: '#/components/schemas/Submission'
          description: List of submissions
        totalResponses:
          type: integer
          description: Total number of submissions matching given parameters
        pageCount:
          type: integer
          description: Total number of pages of submissions based on provided limit
      required:
      - responses
      - totalResponses
      - pageCount
    SchedulingField:
      type: object
      properties:
        id:
          type: string
          description: Identifier for the scheduling field
        name:
          type: string
          description: Name of the scheduling field
      required:
      - id
      - name
    QuizResponse:
      type: object
      properties:
        score:
          type: integer
          description: Quiz score
        maxScore:
          type: integer
          description: Maximum possible score
      required:
      - score
      - maxScore
    PaymentField:
      type: object
      properties:
        id:
          type: string
          description: Identifier for the payment field
        name:
          type: string
          description: Name of the payment field
      required:
      - id
      - name
    CreateSchedulingResponse:
      type: object
      properties:
        id:
          type: string
          description: Identifier of the scheduling field
        value:
          $ref: '#/components/schemas/CreateSchedulingValue'
          description: Scheduling details
      required:
      - id
      - value
    CalculationResponse:
      type: object
      properties:
        id:
          type: string
          description: Identifier of the calculation
        name:
          type: string
          description: Name of the calculation
        type:
          type: string
          enum:
          - number
          - text
          - duration
          description: Type of the calculation
        value:
          type: string
          description: The calculated value
      required:
      - id
      - name
      - type
      - value
    UrlParameter:
      type: object
      properties:
        id:
          type: string
          description: Identifier for the URL parameter
        name:
          type: string
          description: Name of the URL parameter
      required:
      - id
      - name
    FormMetadata:
      type: object
      properties:
        id:
          type: string
          description: The public identifier of the form
        name:
          type: string
          description: The name of the form
        questions:
          type: array
          items:
            $ref: '#/components/schemas/Question'
          description: List of questions in the form
        calculations:
          type: array
          items:
            $ref: '#/components/schemas/Calculation'
          description: List of calculations in the form
        urlParameters:
          type: array
          items:
            $ref: '#/components/schemas/UrlParameter'
          description: List of URL parameters
        scheduling:
          type: array
          items:
            $ref: '#/components/schemas/SchedulingField'
          description: List of scheduling fields (if using Fillout Scheduling)
        payments:
          type: array
          items:
            $ref: '#/components/schemas/PaymentField'
          description: List of payment fields (if using Fillout Payments)
        quiz:
          $ref: '#/components/schemas/QuizConfig'
          description: Quiz configuration (only defined if quiz mode is enabled)
      required:
      - id
      - name
      - questions
    CreateSubmissionData:
      type: object
      properties:
        questions:
          type: array
          items:
            $ref: '#/components/schemas/CreateQuestionResponse'
          description: List of question responses (required)
        urlParameters:
          type: array
          items:
            $ref: '#/components/schemas/UrlParameterResponse'
          description: List of URL parameter values (optional)
        submissionTime:
          type: string
          format: date-time
          description: When the submission was made (optional)
        lastUpdatedAt:
          type: string
          format: date-time
          description: When the submission was last updated (optional)
        scheduling:
          type: array
          items:
            $ref: '#/components/schemas/CreateSchedulingResponse'
          description: List of scheduling responses (optional)
        payments:
          type: array
          items:
            $ref: '#/components/schemas/CreatePaymentResponse'
          description: List of payment responses (optional)
        login:
          $ref: '#/components/schemas/LoginResponse'
          description: Login information (optional)
      required:
      - questions
    CreateQuestionResponse:
      type: object
      properties:
        id:
          type: string
          description: Identifier of the question
        value:
          description: The response value
      required:
      - id
      - value
    CreateSubmissionsResponse:
      type: object
      properties:
        submissions:
          type: array
          items:
            $ref: '#/components/schemas/Submission'
          description: List of created submissions
      required:
      - submissions
    SchedulingValue:
      type: object
      properties:
        fullName:
          type: string
          description: Full name of the person booking
        email:
          type: string
          format: email
          description: Email of the person booking
        timezone:
          type: string
          description: Timezone for the meeting
        eventStartTime:
          type: string
          format: date-time
          description: Start time of the event
        eventEndTime:
          type: string
          format: date-time
          description: End time of the event
        eventId:
          type: string
          description: Calendar event ID
        eventUrl:
          type: string
          format: uri
          description: URL to the calendar event
        rescheduleOrCancelUrl:
          type: string
          format: uri
          description: URL to reschedule or cancel the event
        userId:
          type: integer
          description: User ID (optional)
        scheduledUserEmail:
          type: string
          format: email
          description: Email of the scheduled user (optional)
        meetingNotes:
          type: string
          description: Meeting notes (optional)
      required:
      - fullName
      - email
      - timezone
      - eventStartTime
      - eventEndTime
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'Enter your [Fillout API key](https://build.fillout.com/home/settings/developer). Format: Bearer <api_key>'