Paperform Forms API

The Forms API from Paperform — 2 operation(s) for forms.

Operations 3

GET /forms List forms #
GET /forms/{slug_or_id} Get form #
PUT /forms/{slug_or_id} Update form #

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/paperform-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

paperform-forms-api-openapi.yml Raw ↑
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