Paperform Forms API
The Forms API from Paperform — 2 operation(s) for forms.
The Forms API from Paperform — 2 operation(s) for forms.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/paperform-forms-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: 3.2.0
info:
version: 1.0.0
title: Paperform Forms API
contact:
name: Paperform API Support
url: https://paperform.co
email: support@paperform.co
servers:
- url: https://api.paperform.co/v1
security:
- bearerAuth: []
tags:
- name: Forms
paths:
/forms:
get:
parameters:
- $ref: '#/components/parameters/formSearch'
- $ref: '#/components/parameters/formSearchFields'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/skip'
- $ref: '#/components/parameters/afterId'
- $ref: '#/components/parameters/beforeId'
- $ref: '#/components/parameters/beforeDate'
- $ref: '#/components/parameters/afterDate'
- $ref: '#/components/parameters/sort'
description: This endpoint returns a list of forms that are accessible by the authorized user. This feature is available as part of the Standard API.
operationId: listForms
tags:
- Forms
responses:
'200':
description: Successfully returned a list of forms
content:
application/json:
schema:
type: object
allOf:
- properties:
status:
type: string
enum:
- ok
results:
type: object
properties:
forms:
type: array
items:
$ref: '#/components/schemas/Form'
- $ref: '#/components/schemas/Pagination'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/Throttled'
5XX:
$ref: '#/components/responses/Unexpected'
summary: List forms
x-summary-source: derived
/forms/{slug_or_id}:
get:
parameters:
- $ref: '#/components/parameters/slugOrID'
description: This endpoint returns a specific form by slug or ID. This feature is available as part of the Standard API.
operationId: getForm
tags:
- Forms
responses:
'200':
description: 'Successfully returned a single form that matched the provided slug or ID
'
content:
application/json:
schema:
type: object
properties:
status:
type: string
enum:
- ok
results:
type: object
properties:
form:
$ref: '#/components/schemas/Form'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/Throttled'
5XX:
$ref: '#/components/responses/Unexpected'
summary: Get form
x-summary-source: derived
put:
parameters:
- $ref: '#/components/parameters/slugOrID'
description: 'This endpoint updates a specific form by slug or ID.
Please note that this feature is exclusively available as part of the Business API.'
operationId: updateForm
tags:
- Forms
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/FormUpdate'
responses:
'200':
description: 'Successfully updated a single form that matched the provided slug or ID
'
content:
application/json:
schema:
type: object
properties:
status:
type: string
enum:
- ok
results:
type: object
properties:
form:
$ref: '#/components/schemas/Form'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'422':
$ref: '#/components/responses/Validation'
'429':
$ref: '#/components/responses/Throttled'
5XX:
$ref: '#/components/responses/Unexpected'
summary: Update form
x-summary-source: derived
components:
parameters:
skip:
in: query
name: skip
schema:
type: integer
default: 0
description: Number of results to skip in the result set.
sort:
in: query
name: sort
schema:
type: string
enum:
- ASC
- DESC
default: DESC
description: The direction to sort in. Results are sorted by `created_at`, and defaults to `"DESC"`.
example: ASC
beforeId:
in: query
name: before_id
schema:
type: string
description: Return results before the provided ID.
example: 5d40fdaf174b4c0007043072
limit:
in: query
name: limit
schema:
type: integer
maximum: 100
default: 20
description: The number or results to return.
afterId:
in: query
name: after_id
schema:
type: string
description: Return results after the provided ID.
example: 5d40fdaf174b4c0007043072
slugOrID:
in: path
name: slug_or_id
required: true
schema:
type: string
description: The form's slug, custom slug or ID.
example: my-form-slug
formSearch:
in: query
name: search
schema:
type: string
description: Search forms by title.
example: John Doe
formSearchFields:
in: query
name: search_fields
schema:
type: array
items:
type: string
enum:
- title
- slug
- custom_slug
description: 'Opt-in list of fields to match the `search` term against. When omitted, the `search` term is matched against the form title only. Provide one or more of `title`, `slug`, `custom_slug` to broaden the search (e.g. to find a form by its slug). Each field is matched as a partial, case-insensitive substring.
'
example:
- title
- slug
beforeDate:
in: query
name: before_date
schema:
type: string
format: date-time
description: Return results created on or after this date-time (UTC). Overwritten by `before_id`.
example: '2019-06-11T20:36:29Z'
afterDate:
in: query
name: after_date
schema:
type: string
format: date-time
description: Return results created before this date (UTC). Overwritten by `after_id`.
example: '2019-06-11T20:36:29Z'
responses:
Throttled:
description: Too Many Requests
content:
text/html:
schema:
type: string
enum:
- Too many requests.
Unauthorized:
description: Unauthorized
content:
application/json:
schema:
type: object
allOf:
- $ref: '#/components/schemas/Error'
- properties:
error_type:
type: string
enum:
- authentication
description: Token not provided for not valid.
Forbidden:
description: Not Permitted
content:
application/json:
schema:
type: object
allOf:
- $ref: '#/components/schemas/Error'
- properties:
error_type:
type: string
enum:
- permission
description: Not permitted to access requested resource.
NotFound:
description: Not Found
content:
application/json:
schema:
type: object
allOf:
- $ref: '#/components/schemas/Error'
- properties:
error_type:
type: string
enum:
- not_found
description: The requested resource was not found.
Unexpected:
description: Unexpected Error
content:
application/json:
schema:
type: object
allOf:
- $ref: '#/components/schemas/Error'
- properties:
error_type:
type: string
enum:
- server_error
description: An unexpected error.
BadRequest:
description: Invalid Request
content:
application/json:
schema:
type: object
allOf:
- $ref: '#/components/schemas/Error'
- properties:
error_type:
type: string
enum:
- validation
description: Invalid parameters provided.
Validation:
description: Validation Error
content:
application/json:
schema:
type: object
allOf:
- $ref: '#/components/schemas/Error'
- properties:
error_type:
type: string
enum:
- validation
description: Invalid parameters provided.
schemas:
Pagination:
type: object
properties:
total:
type: integer
description: The total number of items.
readOnly: true
example: 57
has_more:
description: Whether there are more items.
type: boolean
example: true
readOnly: true
limit:
description: The limit of items per page.
type: integer
example: 20
default: 20
skip:
description: The number of items to skip.
type: integer
default: 0
example: 0
FormUpdate:
type: object
properties:
title:
type:
- string
- 'null'
description: The title of the form.
example: My Form
description:
type:
- string
- 'null'
description: The description of the form.
example: This is my form
disabled:
type: boolean
description: Whether the form is disabled.
example: false
custom_slug:
type:
- string
- 'null'
description: The custom slug of the form.
example: my-form
space_id:
type:
- string
- 'null'
description: The ID of the space to move the form into. Must be a valid space accessible to the user.
example: 5d40fdaf174b4c0007043072
translation_id:
type:
- string
- 'null'
description: The ID of the translation to use on this form. Must be a valid translation accessible to the user. Setting to `null` will use the default account translation (English).
example: 5d40fdaf174b4c0007043072
Error:
type: object
properties:
status:
type: string
enum:
- error
example: error
message:
type: string
description: An error message.
example: Invalid request
details:
type: array
description: Suggested actions to resolve the error.
items:
type: string
Form:
type: object
properties:
id:
type: string
format: uuid
readOnly: true
description: The unique identifier of the form.
example: 5d40fdaf174b4c0007043072
slug:
type: string
description: The default generated slug for the form.
readOnly: true
example: 67fqxwkp
custom_slug:
type:
- string
- 'null'
description: The custom slug for the form if set.
example: my-form-slug
space_id:
type: integer
description: The id of the Space which contains the form.
example: 5d40fdaf174b4c0007043072
title:
type:
- string
- 'null'
description: The title of the form.
example: My Form Title
description:
type:
- string
- 'null'
description: The description of the form.
example: This is a description for my form
cover_image_url:
type:
- string
- 'null'
format: uri
example: https://s3-ap-southeast-2.amazonaws.com/paperform/u-22714/1/2019-04-14/58p3u6p/cabinet-clothes-clothes-hanger-996329.jpg
description: The cover image for the form.
url:
type: string
format: uri
example: https://lffa4fxo.paperform.co
description: The main sharing URL for the form.
additional_urls:
type: array
items:
type: string
format: uri
description: Additional URLs for the form
live:
type: boolean
description: Indicates if the form is currently accepting submissions.
readOnly: true
example: true
tags:
type:
- array
- 'null'
items:
type: string
description: The tags assigned to the form.
submission_count:
type: integer
description: The number of submissions the form has received.
readOnly: true
example: 50
created_at:
type: string
description: A formatted date-time string in your account timezone indicating the time the form was created.
readOnly: true
example: '2019-04-14T09:00:00.000Z'
updated_at:
type: string
description: A formatted date-time string in your account timezone indicating the time the form was created.
readOnly: true
example: '2019-04-14T09:00:00.000Z'
account_timezone:
type: string
description: The configured timezone for your account.
readOnly: true
example: Australia/Sydney
created_at_utc:
type: string
format: date-time
description: A formatted date-time string in UTC indicating the time the form was created.
readOnly: true
example: '2019-04-14T09:00:00.000Z'
updated_at_utc:
type: string
format: date-time
description: A formatted date-time string in UTC indicating the time the form was created.
readOnly: true
example: '2019-04-14T09:00:00.000Z'
securitySchemes:
bearerAuth:
type: http
scheme: bearer
x-readme:
explorer-enabled: true
proxy-enabled: true