Fillout Forms API
The Forms API from Fillout — 4 operation(s) for forms.
The Forms API from Fillout — 4 operation(s) for forms.
openapi: 3.1.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:
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
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
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
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
CreateSubmissionsResponse:
type: object
properties:
submissions:
type: array
items:
$ref: '#/components/schemas/Submission'
description: List of created submissions
required:
- submissions
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
CreateSchedulingResponse:
type: object
properties:
id:
type: string
description: Identifier of the scheduling field
value:
$ref: '#/components/schemas/CreateSchedulingValue'
description: Scheduling details
required:
- id
- value
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
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
SingleSubmissionResponse:
type: object
properties:
submission:
$ref: '#/components/schemas/Submission'
description: The submission data
required:
- submission
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
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
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
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
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
QuizResponse:
type: object
properties:
score:
type: integer
description: Quiz score
maxScore:
type: integer
description: Maximum possible score
required:
- score
- maxScore
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
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
CreatePaymentResponse:
type: object
properties:
id:
type: string
description: Identifier of the payment field
value:
$ref: '#/components/schemas/CreatePaymentValue'
description: Payment details
required:
- id
- value
CreateQuestionResponse:
type: object
properties:
id:
type: string
description: Identifier of the question
value:
description: The response value
required:
- id
- 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
CreateSubmissionsRequest:
type: object
properties:
submissions:
type: array
maxItems: 10
items:
$ref: '#/components/schemas/CreateSubmissionData'
description: List of submissions to create (maximum 10)
required:
- submissions
QuizConfig:
type: object
properties:
enabled:
type: boolean
description: Whether quiz mode is enabled
required:
- enabled
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
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
LoginResponse:
type: object
properties:
email:
type: string
format: email
description: Verified email address
required:
- email
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: 'Enter your [Fillout API key](https://build.fillout.com/home/settings/developer). Format: Bearer <api_key>'