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

# Get all schemas

> This endpoint is used to get all schemas.

The response will contain a list of all schemas that are available for the current user in the current workspace.

Pass the `cursor` query parameter (empty for the first page) to use cursor pagination: the response envelope becomes `{ data, pagination: { limit, nextCursor, hasMore } }`. Follow `nextCursor` until `hasMore` is false; keep the same sort and filter parameters for every page of a walk.

The `schemas` field is an array of schemas. Each schema contains the following fields:

- `id`: The ID of the schema. This is the unique identifier for the schema.

- `fields`: An array of fields. Each field contains the following fields:

  - `id`: The ID of the field. This is the unique identifier for the field.

- `blueprintId`: The ID of the blueprint that the schema is associated with.

- `originalSchemaId`: The ID of the original schema that the schema is based on.

- `schemaHistoryId`: The ID of the schema history that the schema is associated with.

- `schemaHistoryVersionNumber`: The version number of the schema history that the schema is associated with. This is a number that increments every time a new version of the schema is created.

- `fileId`: The ID of the file that the schema is associated with.

- `blueprintMode`: The mode of the blueprint that the schema is associated with. This can be either USER or SYSTEM.

- `schemaType`: The type of the schema. This can be either SYSTEM, CUSTOM, or AI.

- `state`: The state of the schema. This can be either ACTIVE or INACTIVE.

- `usageApprovalState`: The state of the usage approval of the schema. This can be either APPROVED, PENDING, or REJECTED.

- `schemaOverrideType`: The type of the schema override. This can be either OVERRIDE or DEFAULT.

- `aiSchemaVersion`: The version of the AI schema that the schema is associated with.

- `createdAt`: The date and time when the schema was created.

- `updatedAt`: The date and time when the schema was last updated.

- `deletedAt`: The date and time when the schema was deleted.

- `deletedBy`: The ID of the user who deleted the schema.


The response will contain a list of all schemas that are available for the current user in the current workspace. The schemas field is an array of schemas.

Each **schema** contains the following fields:

* **id**: The ID of the schema. This is the unique identifier for the schema.
* **fields**: An array of fields.

Each **field** contains the following fields:

* **id**: The ID of the field. This is the unique identifier for the field.
* **blueprintId**: The ID of the blueprint that the schema is associated with.
* **originalSchemaId**: The ID of the original schema that the schema is based on.
* **schemaHistoryId**: The ID of the schema history that the schema is associated with.
* **schemaHistoryVersionNumber**: The version number of the schema history that the schema is associated with. This is a number that increments every time a new version of the schema is created.
* **fileId**: The ID of the file that the schema is associated with.
* **blueprintMode**: The mode of the blueprint that the schema is associated with. This can be either USER or SYSTEM.
* **schemaType**: The type of the schema. This can be either SYSTEM, CUSTOM, or AI.
* **state**: The state of the schema. This can be either ACTIVE or INACTIVE.
* **usageApprovalState**: The state of the usage approval of the schema. This can be either APPROVED, PENDING, or REJECTED.
* **schemaOverrideType**: The type of the schema override. This can be either OVERRIDE or DEFAULT.
* **aiSchemaVersion**: The version of the AI schema that the schema is associated with.

## Query Parameters

| Parameter | Type   | Required | Default     | Description                                                                       |
| --------- | ------ | -------- | ----------- | --------------------------------------------------------------------------------- |
| schemaIds | string | No       | —           | Comma-separated schema ids to fetch                                               |
| uploadIds | string | No       | —           | Comma-separated upload ids to fetch schemas for                                   |
| page      | number | No       | 1           | Page number for pagination                                                        |
| limit     | number | No       | 100         | Number of items per page                                                          |
| sortBy    | string | No       | `createdAt` | Field to sort by                                                                  |
| sortOrder | string | No       | `ASC`       | Sort direction (`ASC` or `DESC`)                                                  |
| cursor    | string | No       | —           | Opaque cursor. Send it (empty for the first page) to switch to cursor pagination. |

<Note>
  This endpoint supports both pagination modes. Send the `cursor` parameter
  (empty value for the first page) to use cursor pagination; omit it entirely to
  keep the legacy `page`/`limit` response shape. See
  [Pagination](/docs-api/api-pagination) for the full comparison.
</Note>

In cursor mode the response becomes `{ data, pagination: { limit, nextCursor, hasMore } }`.
Follow `nextCursor` until `hasMore` is `false`, keeping the same sort and filter
parameters for every page of the walk. Omit `cursor` and the response keeps its
`{ schemas, count, currentPage }` shape.


## OpenAPI

````yaml api-reference/cleaned_openapi.json GET /prod/v1/schemas
openapi: 3.0.0
info:
  title: Public API
  description: >-

    ### Welcome to fileAI’s Public API Documentation.

    This API allows users to check the health of the system, upload and manage
    files, and manage AI Schemas.

    Should you have any questions, please reach out to fileAI via the “Contact a
    Developer” link below.



    [Contact a Developer](mailto:support@file.ai)



    ### Prerequisites


    Before using our API, please ensure you complete the following prerequisites

    - You must have a fileAI account. Sign up or login
    [here](https://orion.file.ai/en/sign-up)

    - You must have an API Key. After creating your fileAI account, you can
    generate your API Key. Refer to the Authentication section below for more
    details.



    ### Authentication

    All API requests require an API key for authentication.

    - To obtain your API key, please log in to your fileAI account and navigate
    to Project Settings in your dashboard

    - Keep your API key secure and do not share it publicly.


    ![Authentication](https://static.orion.file.ai/authentication.png)


    ### How to Use Your API Key

    Once you have your API key:

    - Click the Authorize button on the top-right of this page

    - Enter your API Key under Value

    - Click Authorize to start making authenticated requests directly from the
    documentation


    ![How to Use Your API
    Key](https://static.orion.file.ai/how-to-use-api-keys.png)
        
  version: '1.0'
  contact: {}
servers:
  - url: https://api.orion.file.ai
    description: Default. Use this unless your workspace is on an instance.
  - url: https://api.orion.{instance}.file.ai
    description: Instance-specific host.
    variables:
      instance:
        default: au
        enum:
          - au
          - sg
          - jp
        description: >-
          Instance hosting your workspace: au (Australia), sg (Singapore), jp
          (Japan).
security: []
tags:
  - name: Public API V1
paths:
  /prod/v1/schemas:
    get:
      tags:
        - Public API V1
      summary: Get all schemas
      description: >
        This endpoint is used to get all schemas.


        The response will contain a list of all schemas that are available for
        the current user in the current workspace.


        Pass the `cursor` query parameter (empty for the first page) to use
        cursor pagination: the response envelope becomes `{ data, pagination: {
        limit, nextCursor, hasMore } }`. Follow `nextCursor` until `hasMore` is
        false; keep the same sort and filter parameters for every page of a
        walk.


        The `schemas` field is an array of schemas. Each schema contains the
        following fields:


        - `id`: The ID of the schema. This is the unique identifier for the
        schema.


        - `fields`: An array of fields. Each field contains the following
        fields:

          - `id`: The ID of the field. This is the unique identifier for the field.

        - `blueprintId`: The ID of the blueprint that the schema is associated
        with.


        - `originalSchemaId`: The ID of the original schema that the schema is
        based on.


        - `schemaHistoryId`: The ID of the schema history that the schema is
        associated with.


        - `schemaHistoryVersionNumber`: The version number of the schema history
        that the schema is associated with. This is a number that increments
        every time a new version of the schema is created.


        - `fileId`: The ID of the file that the schema is associated with.


        - `blueprintMode`: The mode of the blueprint that the schema is
        associated with. This can be either USER or SYSTEM.


        - `schemaType`: The type of the schema. This can be either SYSTEM,
        CUSTOM, or AI.


        - `state`: The state of the schema. This can be either ACTIVE or
        INACTIVE.


        - `usageApprovalState`: The state of the usage approval of the schema.
        This can be either APPROVED, PENDING, or REJECTED.


        - `schemaOverrideType`: The type of the schema override. This can be
        either OVERRIDE or DEFAULT.


        - `aiSchemaVersion`: The version of the AI schema that the schema is
        associated with.


        - `createdAt`: The date and time when the schema was created.


        - `updatedAt`: The date and time when the schema was last updated.


        - `deletedAt`: The date and time when the schema was deleted.


        - `deletedBy`: The ID of the user who deleted the schema.
      operationId: PublicAPIController_getAllSchemas
      parameters:
        - name: schemaIds
          required: false
          in: query
          description: Schema Ids
          schema:
            example: 649e2d2d2d2d2d2d2d2d2d2d
            type: string
        - name: uploadIds
          required: false
          in: query
          description: Upload Ids
          schema:
            example: 649e2d2d2d2d2d2d2d2d2d2d
            type: string
        - name: page
          required: false
          in: query
          description: Page number
          schema:
            default: 1
            example: 1
            type: number
        - name: limit
          required: false
          in: query
          description: Number of items per page
          schema:
            default: 100
            example: 100
            type: number
        - name: sortBy
          required: false
          in: query
          description: Field to sort by
          schema:
            default: createdAt
            example: createdAt
            type: string
        - name: sortOrder
          required: false
          in: query
          description: Sort direction
          schema:
            default: ASC
            example: ASC
            type: string
            enum:
              - ASC
              - DESC
        - name: cursor
          required: false
          in: query
          description: >-
            Opaque pagination cursor. Provide the parameter (empty value for the
            first page) to switch to cursor pagination: the response becomes {
            data, pagination: { limit, nextCursor, hasMore } } with default
            limit 50 (max 100). Omit it entirely for legacy page/limit
            pagination. In cursor mode sortBy must be one of createdAt,
            updatedAt, _id, and cursors are bound to the sortBy/sortOrder they
            were minted with.
          schema:
            type: string
      responses:
        '200':
          description: >-
            The list of schemas. Offset mode (default) returns `{schemas, count,
            currentPage}`; cursor mode (when the `cursor` query parameter is
            present) returns `{data, pagination}`.
          content:
            application/json:
              examples:
                offset:
                  summary: Offset pagination (default)
                  value:
                    schemas:
                      - id: 5f5f726eea75272d54e1e1e1
                        fields:
                          - id: 5f5f726eea75272d54e1e1e2
                        blueprintId: 5f5f726eea75272d54e1e1e3
                        originalSchemaId: 5f5f726eea75272d54e1e1e4
                        schemaHistoryId: 5f5f726eea75272d54e1e1e5
                        schemaHistoryVersionNumber: 1
                        fileId: 5f5f726eea75272d54e1e1e6
                        blueprintMode: USER
                        schemaType: SYSTEM
                        state: ACTIVE
                        usageApprovalState: APPROVED
                        schemaOverrideType: OVERRIDE
                        aiSchemaVersion: 5f5f726eea75272d54e1e1e7
                        createdAt: '2020-10-05T14:30:00.000Z'
                        updatedAt: '2020-10-05T14:30:00.000Z'
                    count: 1
                    currentPage: 1
                cursor:
                  summary: Cursor pagination (`cursor` param present)
                  value:
                    data:
                      - id: 5f5f726eea75272d54e1e1e1
                        blueprintId: 5f5f726eea75272d54e1e1e3
                        createdAt: '2020-10-05T14:30:00.000Z'
                        updatedAt: '2020-10-05T14:30:00.000Z'
                    pagination:
                      limit: 50
                      nextCursor: eyJ2IjoxLCJrIjpb...
                      hasMore: true
              schema:
                oneOf:
                  - $ref: '#/components/schemas/GetAllSchemasOffsetOutput'
                  - $ref: '#/components/schemas/GetAllSchemasCursorOutput'
        '401':
          description: Missing or invalid API key.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetailsDto'
        '403':
          description: Read-only or inactive API key.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetailsDto'
        '404':
          description: Resource not found.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetailsDto'
        '422':
          description: Validation failed.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetailsDto'
        '429':
          description: Rate limit exceeded.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetailsDto'
        '500':
          description: Unexpected internal error.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetailsDto'
      security:
        - x-api-key: []
components:
  schemas:
    GetAllSchemasOffsetOutput:
      type: object
      properties:
        schemas:
          type: array
          items:
            $ref: '#/components/schemas/SchemaForPAOutput'
        count:
          type: number
          description: Total number of matching schemas
        currentPage:
          type: number
      required:
        - schemas
        - count
        - currentPage
    GetAllSchemasCursorOutput:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/SchemaForPAOutput'
        pagination:
          $ref: '#/components/schemas/CursorPaginationMeta'
      required:
        - data
        - pagination
    ProblemDetailsDto:
      type: object
      properties:
        type:
          type: string
          description: A URI identifying the problem type.
          example: https://errors.file.ai/validation-failed
        title:
          type: string
          description: Stable, human-readable summary of the problem type.
          example: Validation failed
        status:
          type: number
          description: HTTP status code.
          example: 422
        detail:
          type: string
          description: Human-readable explanation specific to this occurrence.
          example: One or more fields are invalid.
        instance:
          type: string
          description: URI reference for this occurrence (the request path).
          example: /v1/files/upload
        code:
          type: string
          description: Stable machine-readable error code.
          example: VALIDATION_FAILED
        requestId:
          type: string
          description: Correlation id for this request.
          example: 0f1c8e03-978e-40d5-bc93-6894a57f9324
        errors:
          description: Field-level violations (validation only).
          type: array
          items:
            $ref: '#/components/schemas/ProblemErrorItemDto'
        retryAfter:
          type: number
          description: Seconds until the client may retry (present on 429 only).
          example: 42
        message:
          type: string
          description: Legacy key (deprecated — use `detail`/`title`).
          example: Validation failed
        error:
          type: string
          description: Legacy key (deprecated — use `title`).
          example: Unprocessable Entity
        statusCode:
          type: number
          description: Legacy key (deprecated — use `status`).
          example: 422
      required:
        - type
        - title
        - status
        - detail
        - instance
        - code
        - requestId
        - errors
        - message
        - error
        - statusCode
    SchemaForPAOutput:
      type: object
      properties: {}
    CursorPaginationMeta:
      type: object
      properties:
        limit:
          type: number
          description: Page size applied (default 50, max 100)
        nextCursor:
          type: string
          description: Opaque cursor for the next page; null when hasMore is false
          nullable: true
        hasMore:
          type: boolean
      required:
        - limit
        - nextCursor
        - hasMore
    ProblemErrorItemDto:
      type: object
      properties:
        code:
          type: string
          example: REQUIRED
        detail:
          type: string
          example: must not be empty
        pointer:
          type: string
          description: JSON Pointer to the offending body field.
          example: '#/fileName'
        parameter:
          type: string
          description: Name of the offending query/header parameter.
          example: limit
      required:
        - code
        - detail
  securitySchemes:
    x-api-key:
      type: apiKey
      in: header
      name: x-api-key
      description: API key for authentication

````