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

# List Case Tasks

> List the follow-up tasks of a case

List the tasks of a case, oldest due date first.

A task is a follow-up: something one person has to do before the case can move on.
Every task belongs to exactly one **side**, told by `assignee.kind`:

| `assignee.kind`     | Whose job it is     | Closed by                            |
| ------------------- | ------------------- | ------------------------------------ |
| `member`            | someone on the team | the team, or your integration        |
| `contact`           | the client          | submitting the form Penbox sent them |
| `null` (unassigned) | nobody yet          | anyone on the team                   |

This list includes the tasks **Penbox creates by itself** when a form step moves —
"Complete the form" for the client, "Review the answers" for the team — so you can
mirror the real state of the case in your own product.

<Note>
  Tasks are scoped to the workspaces your token covers. A case in another workspace
  returns an empty list rather than an error.
</Note>

<Note>
  The response is not paginated and returns at most **100** tasks, oldest due date
  first. A case is not expected to carry more.
</Note>

<RequestExample>
  ```bash cURL theme={null}
  curl --request GET \
    --url https://connect.penbox.io/v1/cases/{id}/tasks \
    --header 'Authorization: Bearer <token>'
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "data": [
      {
        "id": "9b1c4b2e-1f3a-4f8c-9c2d-47aaaf50be97",
        "created_at": "2026-08-31T09:54:39.963Z",
        "case": { "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6" },
        "type": "fill_form",
        "title": null,
        "description": null,
        "status": "in_progress",
        "due_at": "2026-09-07T00:00:00.000Z",
        "completed_at": null,
        "step_key": "ask_documents",
        "assignee": {
          "kind": "contact",
          "id": "d322ce86-fb0a-4fc9-b45a-28758840108c",
          "email": "client@example.com",
          "given_name": "Judd",
          "family_name": "Haley"
        }
      },
      {
        "id": "2c7e2ddd-ece1-4c38-9c2d-47aaaf50be97",
        "created_at": "2026-08-31T10:12:04.100Z",
        "case": { "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6" },
        "type": "manual",
        "title": "Call the client back",
        "description": "The client asked for a callback before Friday.",
        "status": "open",
        "due_at": "2026-09-04T00:00:00.000Z",
        "completed_at": null,
        "step_key": null,
        "assignee": {
          "kind": "member",
          "id": "5f7e2c17-e9be-47c9-8049-0b35d8eb0ada",
          "email": "amina@firm.example",
          "given_name": "Amina",
          "family_name": "Berger"
        }
      }
    ]
  }
  ```
</ResponseExample>


## OpenAPI

````yaml GET /cases/{id}/tasks
openapi: 3.0.0
info:
  title: Penbox API
  version: '1.0'
  description: >-
    The Penbox API provides programmatic access to Penbox's form management,
    case management, and document processing capabilities. Authenticate using
    Bearer tokens created at https://app.penbox.io/workspace/settings/api
servers:
  - url: https://connect.penbox.io/v1
    description: Production
  - url: https://connect.aiboov.com/v1
    description: Staging
security:
  - BearerAuth: []
paths:
  /cases/{id}/tasks:
    parameters:
      - name: id
        in: path
        required: true
        description: Case UUID
        schema:
          type: string
          format: uuid
    get:
      summary: List Case Tasks
      description: >-
        List the open and closed tasks of a case, oldest due date first.
        Includes the tasks Penbox creates by itself when a form step moves, on
        both the team side and the contact side. Returns at most 100 tasks; a
        case is not expected to carry more.
      operationId: list-case-tasks
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Task'
components:
  schemas:
    Task:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Task UUID
        created_at:
          type: string
          format: date-time
          description: When the task was created
        case:
          type: object
          description: The case this task belongs to
          properties:
            id:
              type: string
              format: uuid
        type:
          type: string
          description: >-
            The kind of task. `manual` for every task created through the API.
            Tasks Penbox creates by itself carry their own key, such as
            `fill_form`, `review` or `follow_up`.
          example: manual
        title:
          type: string
          nullable: true
          description: >-
            What has to be done. Empty on some Penbox-created tasks, which
            Penbox labels from their `type` in the reader language.
        description:
          type: string
          nullable: true
          description: Optional detail
        status:
          type: string
          enum:
            - open
            - in_progress
            - done
            - dismissed
          description: Current task status
        due_at:
          type: string
          format: date-time
          nullable: true
          description: Due date
        completed_at:
          type: string
          format: date-time
          nullable: true
          description: When the task was closed
        step_key:
          type: string
          nullable: true
          description: The case step that spawned the task, when Penbox created it
        assignee:
          type: object
          nullable: true
          description: Who has to close the task. `null` when unassigned.
          properties:
            kind:
              type: string
              enum:
                - member
                - contact
              description: '`member` for someone on the team, `contact` for the client'
            id:
              type: string
              format: uuid
            email:
              type: string
              nullable: true
            given_name:
              type: string
              nullable: true
            family_name:
              type: string
              nullable: true
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: token
      description: >-
        API token (starts with pnbx_). Create at
        https://app.penbox.io/workspace/settings/api. Include as: Authorization:
        Bearer {token}

````