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

# List worksheets

> List the worksheets created with your account, with each worksheet's latest step and status.

The list only includes worksheets created with the same API user as your access token. Results are newest first.

## Filter by your own fields

Any query parameter other than `page` and `page_size` filters on the `meta_data` you sent when starting the worksheet. For example, if you started worksheets with `meta_data={"teacher_id": "T-1042"}`:

```bash theme={null}
curl "https://api.crazygoldfish.com/worksheet/v1/listing?teacher_id=T-1042" \
  -H "Authorization: Bearer $ACCESS_TOKEN"
```

A parameter that doesn't match a `meta_data` key returns an empty list, not an error.

## Reading progress

`current_stage` is the latest step that has started, and `status` is that step's status:

| `current_stage`          | Step                                                                                                 |
| ------------------------ | ---------------------------------------------------------------------------------------------------- |
| `Initialize Metadata`    | [Start a worksheet](/api-reference/endpoint/worksheet/v1-worksheet-meta-data-post)                   |
| `Question Configuration` | [Configure worksheet questions](/api-reference/endpoint/worksheet/v1-worksheet-question-config-post) |
| `Question Generation`    | [Generate worksheet questions](/api-reference/endpoint/worksheet/v1-worksheet-generation-post)       |
| `Explanation Generation` | [Generate worksheet explanations](/api-reference/endpoint/worksheet/v1-worksheet-explanation-post)   |


## OpenAPI

````yaml GET /worksheet/v1/listing
openapi: 3.0.3
info:
  title: Worksheet Builder API
  version: 1.0.0
  description: >-
    Generate curriculum-aligned worksheets with questions, answers, and
    explanations.
servers:
  - url: https://api.crazygoldfish.com
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Worksheet
paths:
  /worksheet/v1/listing:
    get:
      tags:
        - Worksheet
      summary: List worksheets
      description: >-
        Returns worksheets created with your account, newest first, with each
        worksheet's latest step and its status. To filter by a `meta_data`
        field, add it as a query parameter, for example `?teacher_id=T-1042`. A
        parameter that matches no `meta_data` key returns an empty page, not an
        error.
      operationId: listWorksheets
      parameters:
        - name: page
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            default: 1
          description: Page number, starting at 1.
        - name: page_size
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 10
          description: Items per page. Maximum 100.
      responses:
        '200':
          description: A page of worksheets.
          content:
            application/json:
              schema:
                type: object
                properties:
                  pagination:
                    type: object
                    properties:
                      page:
                        type: integer
                      page_size:
                        type: integer
                      total:
                        type: integer
                      total_pages:
                        type: integer
                      has_next:
                        type: boolean
                      has_previous:
                        type: boolean
                  data:
                    type: array
                    items:
                      allOf:
                        - $ref: '#/components/schemas/WorksheetBase'
                        - type: object
                          properties:
                            current_stage:
                              type: string
                              nullable: true
                              enum:
                                - Initialize Metadata
                                - Question Configuration
                                - Question Generation
                                - Explanation Generation
                              description: >-
                                The latest step that has started. `status` is
                                that step's status.
                            meta_data:
                              type: object
                              description: >-
                                The `meta_data` you sent when starting the
                                worksheet.
                            created_at:
                              type: string
                              format: date-time
              example:
                pagination:
                  page: 1
                  page_size: 10
                  total: 1
                  total_pages: 1
                  has_next: false
                  has_previous: false
                data:
                  - id: 152764ca-1685-427c-aba7-4b92dcc0d60f
                    board:
                      id: baf36573-d049-4636-9c4b-bc9cda6270fe
                      name: CBSE
                    grade:
                      id: 28820b1a-34e1-4003-b5bd-96455ca2c6d8
                      name: Grade 10
                    section: null
                    subject:
                      id: 6dd7ebda-1bc5-4c01-8649-372579189073
                      name: Science
                    status: Completed
                    number_of_questions: 5
                    topic: Magnetic Effects of Electric Current
                    documents: []
                    audio: null
                    current_stage: Question Generation
                    meta_data:
                      teacher_id: T-1042
                    created_at: '2026-09-17T10:42:18.512000'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '422':
          description: '`page` or `page_size` is out of range.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                detail:
                  - type: less_than_equal
                    loc:
                      - query
                      - page_size
                    msg: Input should be less than or equal to 100
                    input: '500'
components:
  schemas:
    WorksheetBase:
      type: object
      properties:
        id:
          type: string
          format: uuid
        board:
          $ref: '#/components/schemas/IdName'
        grade:
          $ref: '#/components/schemas/IdName'
        subject:
          $ref: '#/components/schemas/IdName'
        section:
          type: string
          nullable: true
          description: >-
            Always `null`. POST /worksheet/v1/metadata accepts a `section` form
            field, but the API never stores it, so there is nothing to return
            here. Keep your own record of the class section if you need one.
        status:
          $ref: '#/components/schemas/JobStatus'
        number_of_questions:
          type: integer
        topic:
          type: string
          nullable: true
        documents:
          type: array
          items:
            type: string
            format: uri
          description: URLs of uploaded images.
        audio:
          type: string
          format: uri
          nullable: true
          description: URL of the uploaded audio file.
    Error:
      type: object
      properties:
        detail:
          type: array
          items:
            type: object
            properties:
              msg:
                type: string
                description: What went wrong.
              id:
                type: string
                format: uuid
                description: Present when a step failed or is still running.
              status:
                type: string
                description: Present when a step failed or is still running.
              loc:
                type: array
                items:
                  type: string
                description: Present on request validation errors.
              type:
                type: string
                description: Present on request validation errors.
    IdName:
      type: object
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
    JobStatus:
      type: string
      enum:
        - In Progress
        - Completed
        - Failed
      description: Status of the step. `Failed` responses are returned as HTTP 400.
    AuthError:
      type: object
      properties:
        message:
          type: string
        data:
          type: object
        status:
          type: string
  responses:
    Unauthorized:
      description: >-
        The `Authorization` header is missing, or the token is invalid or
        expired.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/AuthError'
          examples:
            missing:
              summary: Missing header
              value:
                message: Authorization header is missing
                data: {}
                status: ''
            invalid:
              summary: Invalid or expired token
              value:
                message: Unauthorized User
                data: {}
                status: ''
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Access token from [Get an access
        token](/api-reference/endpoint/authentication).

````