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

# List Forms

> List tracked, published Conversion-native forms with basic metadata. External forms (custom HTML) and ad lead-gen forms (LinkedIn, Meta) are excluded, as are untracked, archived, and never-published forms.

Results are paginated with an opaque cursor returned as `pagination.nextCursor`. Pass it back as the `cursor` query parameter to fetch the next page. A `null` cursor means there are no more results.



## OpenAPI

````yaml /openapi.json get /v2/forms
openapi: 3.1.0
info:
  title: Conversion API
  version: 2.0.0
  description: >-
    The Conversion API lets you programmatically manage contacts, track custom
    events, and manage their associated data.
servers:
  - url: https://pub-api.conversion.ai/api
security:
  - apiKey: []
paths:
  /v2/forms:
    get:
      summary: List Forms
      description: >-
        List tracked, published Conversion-native forms with basic metadata.
        External forms (custom HTML) and ad lead-gen forms (LinkedIn, Meta) are
        excluded, as are untracked, archived, and never-published forms.


        Results are paginated with an opaque cursor returned as
        `pagination.nextCursor`. Pass it back as the `cursor` query parameter to
        fetch the next page. A `null` cursor means there are no more results.
      operationId: listForms
      parameters:
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 50
          description: >-
            The maximum number of forms to return per page. Defaults to 50.
            Values are clamped to the range [1, 100] rather than rejected;
            values above 100 return 100 results.
        - name: cursor
          in: query
          required: false
          schema:
            type: string
          description: >-
            The opaque pagination cursor returned as `pagination.nextCursor` by
            a previous call. Omit to fetch the first page. An invalid or
            malformed cursor returns an `invalid_cursor` error.
          examples:
            next-page:
              value: eyJjcmVhdGVkQXQiOiIyMDI2LTAxLTE1VDEwOjMwOjAwWiJ9
      responses:
        '200':
          description: Forms retrieved successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    required:
                      - forms
                    properties:
                      forms:
                        type: array
                        description: The current page of forms.
                        items:
                          type: object
                          required:
                            - id
                            - name
                            - createdAt
                            - updatedAt
                            - submissionCount
                            - lastSubmittedAt
                          properties:
                            id:
                              type: string
                              format: uuid
                              description: >-
                                The Conversion form id. Use it as the `formId`
                                path parameter of `GET /v2/forms/{formId}`.
                              examples:
                                - 9f3c1a2e-6b7d-4e2a-9c1f-1a2b3c4d5e6f
                            name:
                              type: string
                              description: The form's display name.
                              examples:
                                - Demo Request
                            createdAt:
                              type: string
                              format: date-time
                              description: When the form was created.
                            updatedAt:
                              type: string
                              format: date-time
                              description: When the form was last updated.
                            submissionCount:
                              type: integer
                              description: >-
                                The total number of submissions received by the
                                form.
                              examples:
                                - 412
                            lastSubmittedAt:
                              type:
                                - string
                                - 'null'
                              format: date-time
                              description: >-
                                When the form last received a submission, or
                                `null` if it has never been submitted.
                  pagination:
                    type: object
                    required:
                      - nextCursor
                    properties:
                      nextCursor:
                        type:
                          - string
                          - 'null'
                        description: >-
                          Opaque cursor for the next page, or `null` when there
                          are no more results. This is the single source of
                          truth for whether more results exist.
              examples:
                success:
                  summary: A page of forms
                  value:
                    data:
                      forms:
                        - id: 9f3c1a2e-6b7d-4e2a-9c1f-1a2b3c4d5e6f
                          name: Demo Request
                          createdAt: '2026-05-01T12:00:00Z'
                          updatedAt: '2026-06-11T09:30:00Z'
                          submissionCount: 412
                          lastSubmittedAt: '2026-07-10T08:15:00Z'
                        - id: 2d4e6f8a-1b3c-4d5e-8f9a-0b1c2d3e4f5a
                          name: Newsletter Signup
                          createdAt: '2026-03-14T10:00:00Z'
                          updatedAt: '2026-03-14T10:00:00Z'
                          submissionCount: 0
                          lastSubmittedAt: null
                    pagination:
                      nextCursor: null
        '400':
          description: The request was malformed or contained invalid data.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                invalid-cursor:
                  summary: Invalid cursor
                  value:
                    error:
                      code: invalid_cursor
                      message: invalid pagination cursor
        '401':
          description: Authentication failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                unauthorized:
                  summary: Missing or invalid API key
                  value:
                    error:
                      code: unauthorized
                      message: API key is required
        '500':
          description: An unexpected server error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                internal:
                  summary: Internal error
                  value:
                    error:
                      code: internal_error
                      message: failed to load forms
components:
  schemas:
    Error:
      type: object
      properties:
        error:
          type: object
          required:
            - code
            - message
          properties:
            code:
              type: string
              description: A machine-readable error code.
              examples:
                - invalid_email
            message:
              type: string
              description: A human-readable error description.
              examples:
                - 'invalid email format: not-an-email'
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: X-API-Key
      description: >-
        Your Conversion API key. Found in **Settings > Integrations** in the
        dashboard. Format: `sk_live_<key_id>_<secret>`.

````