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

# List comments

> Returns all comments on a task, ordered oldest first. Accepts either a UUID or an external ID.

Requires the `task:read` scope.



## OpenAPI

````yaml /api-reference/api.json get /{projectSlug}/tasks/{taskId}/comments
openapi: 3.1.0
info:
  title: Elean Public API
  description: >-
    The Elean Public API allows external clients — scripts, AI agents, and
    integrations — to read and write tasks programmatically.


    > **Early Access:** This API is currently in beta. Endpoints,
    request/response shapes, and scopes may change before the stable release. We
    will communicate breaking changes in advance.
  version: 0.0.1
  contact:
    name: Elean Support
    url: https://elean.app
servers:
  - url: https://api.elean.app/v1/public
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Statuses
    description: List the custom task statuses configured for a project.
  - name: Labels
    description: List labels available in a project.
  - name: Members
    description: List members of a project.
  - name: Tasks
    description: Read and write tasks within a project.
  - name: Comments
    description: Read and write comments on tasks.
paths:
  /{projectSlug}/tasks/{taskId}/comments:
    get:
      tags:
        - Comments
      summary: List comments
      description: >-
        Returns all comments on a task, ordered oldest first. Accepts either a
        UUID or an external ID.


        Requires the `task:read` scope.
      operationId: listComments
      parameters:
        - name: projectSlug
          in: path
          required: true
          schema:
            type: string
            example: my-project
        - name: taskId
          in: path
          required: true
          description: UUID of the task, or its external ID (e.g. `PROJ-42`).
          schema:
            type: string
            example: PROJ-42
      responses:
        '200':
          description: A list of comments.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Comment'
              example:
                - id: 018e1b2c-cccc-0000-0000-000000000001
                  content: This is ready for review.
                  authorName: my-api-key
                  createdAt: '2026-03-15T10:00:00.000Z'
                  updatedAt: '2026-03-15T10:00:00.000Z'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
components:
  schemas:
    Comment:
      type: object
      description: A comment on a task.
      properties:
        id:
          type: string
          format: uuid
          description: Unique identifier of the comment.
          example: 018e1b2c-cccc-0000-0000-000000000001
        content:
          type: string
          description: Comment text.
          example: This is ready for review.
        authorName:
          type:
            - string
            - 'null'
          description: >-
            Name of the API key that posted the comment, or `null` for comments
            posted by workspace members.
          example: my-api-key
        createdAt:
          type: string
          format: date-time
          example: '2026-03-15T10:00:00.000Z'
        updatedAt:
          type: string
          format: date-time
          example: '2026-03-15T10:00:00.000Z'
    ApiError:
      type: object
      properties:
        statusCode:
          type: integer
          example: 401
        message:
          type: string
          example: Invalid API key
  responses:
    Unauthorized:
      description: The API key is missing, invalid, or expired.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
          example:
            statusCode: 401
            message: Invalid API key
    Forbidden:
      description: >-
        The API key does not have the required scope, or the project is outside
        the key's allowed scope.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
          example:
            statusCode: 403
            message: 'Missing required scope: task:create'
    NotFound:
      description: The project or task was not found within the key's workspace.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
          example:
            statusCode: 404
            message: Task not found
    TooManyRequests:
      description: >-
        The rate limit for this API key has been exceeded. Retry after the
        indicated delay.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
          example:
            statusCode: 429
            message: Too many requests
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: el_<token>
      description: >-
        API key created in **Workspace Settings → API Keys**. Pass it in the
        `Authorization` header as a Bearer token, or in the `X-API-Key` header.


        Format: `el_` followed by 40 hex characters.

````