> ## Documentation Index
> Fetch the complete documentation index at: https://formcarry.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# List a form's fields

> Returns the field names carried by the newest 2,000 submissions of this form, sorted by most used first. Each field returns with how many of them carry it and when the newest one arrived. Only the first 200 names are shown.

Use the counts to tell a name the form still collects from one that was renamed. For example, a name on 11 of 2,000 submissions that was last seen in March is probably a renamed or outdated field, and not the one to filter on.



## OpenAPI

````yaml https://api.formcarry.com/docs-json get /v1/forms/{form_id}/fields
openapi: 3.0.0
info:
  title: formcarry API
  description: >-
    Welcome to the formcarry API.


    Authenticate every request with an API key from your team's API page in the
    dashboard, sent as `Authorization: Bearer fc_live_...`.

    Requests and responses are JSON.


    Lists are paginated with a cursor: pass a response's `next_cursor` as
    `cursor` to get the next page, until `next_cursor` is null.


    Errors return a `code` you can act on and a `message` you can show. Every
    response includes an `X-Request-Id` header; quote it when you contact
    support.
  version: '1'
  contact: {}
servers:
  - url: https://api.formcarry.com
security: []
tags:
  - name: forms
    description: Your forms
  - name: submissions
    description: Submissions received by a form
  - name: me
    description: The key you are using
  - name: health
    description: Service status
paths:
  /v1/forms/{form_id}/fields:
    get:
      tags:
        - forms
      summary: List a form's fields
      description: >-
        Returns the field names carried by the newest 2,000 submissions of this
        form, sorted by most used first. Each field returns with how many of
        them carry it and when the newest one arrived. Only the first 200 names
        are shown.


        Use the counts to tell a name the form still collects from one that was
        renamed. For example, a name on 11 of 2,000 submissions that was last
        seen in March is probably a renamed or outdated field, and not the one
        to filter on.
      operationId: FormsController_fields
      parameters:
        - name: form_id
          required: true
          in: path
          description: >-
            The form's id, as shown in the dashboard and in the form's endpoint
            URL
          example: AbC123xyz
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FormFields'
        '401':
          description: The request carried no usable key or token.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
              examples:
                missing_bearer:
                  summary: missing_bearer
                  value:
                    error:
                      type: authentication_error
                      code: missing_bearer
                      message: >-
                        Send your key as "Authorization: Bearer fc_live_..." on
                        every request.
                      request_id: 2f9c1a7e-5b31-4d2e-9c0a-8e7f6d5c4b3a
                invalid_key:
                  summary: invalid_key
                  value:
                    error:
                      type: authentication_error
                      code: invalid_key
                      message: >-
                        This API key or access token is unknown, revoked or
                        expired.
                      request_id: 2f9c1a7e-5b31-4d2e-9c0a-8e7f6d5c4b3a
                wrong_audience:
                  summary: wrong_audience
                  value:
                    error:
                      type: authentication_error
                      code: wrong_audience
                      message: >-
                        This access token was issued for a different resource.
                        Authorize again for this server.
                      request_id: 2f9c1a7e-5b31-4d2e-9c0a-8e7f6d5c4b3a
        '403':
          description: The key is valid but may not do this.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
              examples:
                insufficient_scope:
                  summary: insufficient_scope
                  value:
                    error:
                      type: permission_error
                      code: insufficient_scope
                      message: This key is missing the submissions:write scope.
                      required:
                        - submissions:write
                      request_id: 2f9c1a7e-5b31-4d2e-9c0a-8e7f6d5c4b3a
                form_access_restricted:
                  summary: form_access_restricted
                  value:
                    error:
                      type: permission_error
                      code: form_access_restricted
                      message: >-
                        This key is restricted to specific forms and cannot
                        create new ones.
                      request_id: 2f9c1a7e-5b31-4d2e-9c0a-8e7f6d5c4b3a
                team_inactive:
                  summary: team_inactive
                  value:
                    error:
                      type: permission_error
                      code: team_inactive
                      message: The team that owns this key is not active.
                      request_id: 2f9c1a7e-5b31-4d2e-9c0a-8e7f6d5c4b3a
                owner_unverified:
                  summary: owner_unverified
                  value:
                    error:
                      type: permission_error
                      code: owner_unverified
                      message: >-
                        The team owner must verify their email address before
                        the API can be used.
                      request_id: 2f9c1a7e-5b31-4d2e-9c0a-8e7f6d5c4b3a
        '429':
          description: Slow down and retry after the Retry-After header.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
              examples:
                rate_limited:
                  summary: rate_limited
                  value:
                    error:
                      type: rate_limit_error
                      code: rate_limited
                      message: Too many requests.
                      request_id: 2f9c1a7e-5b31-4d2e-9c0a-8e7f6d5c4b3a
                scan_concurrency:
                  summary: scan_concurrency
                  value:
                    error:
                      type: rate_limit_error
                      code: scan_concurrency
                      message: >-
                        At most 2 filtered submission requests may run at once
                        per key. Wait for the running ones to finish.
                      request_id: 2f9c1a7e-5b31-4d2e-9c0a-8e7f6d5c4b3a
      security:
        - api_key: []
components:
  schemas:
    FormFields:
      type: object
      properties:
        data:
          description: Most used first, at most 200 names.
          type: array
          items:
            $ref: '#/components/schemas/FormFieldUsage'
        submissions_read:
          type: number
          example: 2000
          description: How many submissions were read, newest first. Max 2,000.
      required:
        - data
        - submissions_read
    ErrorEnvelope:
      type: object
      properties:
        error:
          $ref: '#/components/schemas/ErrorBody'
      required:
        - error
    FormFieldUsage:
      type: object
      properties:
        name:
          type: string
          example: email
        count:
          type: number
          example: 1984
          description: How many of the submissions read carry this field
        last_seen:
          type: string
          example: '2026-09-15T10:04:11.000Z'
          nullable: true
          description: When the newest submission carrying it arrived
      required:
        - name
        - count
        - last_seen
    ErrorBody:
      type: object
      properties:
        type:
          type: string
          enum:
            - authentication_error
            - permission_error
            - invalid_request_error
            - rate_limit_error
            - api_error
          example: invalid_request_error
        code:
          type: string
          example: invalid_parameter
        message:
          type: string
          example: limit must not be greater than 100
        param:
          type: string
          description: The offending parameter, when there is one
          example: limit
        required:
          description: >-
            On insufficient_scope: the scopes the request needs. Reissue the key
            with them.
          example:
            - submissions:write
          type: array
          items:
            type: string
        retry_after:
          type: number
          description: 'On scan_concurrency: seconds to wait before trying again.'
          example: 2
        request_id:
          type: string
          description: Echoes X-Request-Id. Quote it when contacting support.
          example: 2f9c1a7e-5b31-4d2e-9c0a-8e7f6d5c4b3a
      required:
        - type
        - code
        - message
        - request_id
  securitySchemes:
    api_key:
      scheme: bearer
      bearerFormat: fc_live_...
      type: http

````

## Related topics

- [List forms](/docs/api-reference/forms/list-forms.md)
- [Squarespace](/docs/builders/squarespace.md)
- [List submissions](/docs/api-reference/submissions/list-submissions.md)
- [List webhooks](/docs/api-reference/forms/list-webhooks.md)
- [List deliveries](/docs/api-reference/forms/list-deliveries.md)
