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

# Get a public project board

> Read a public board in bounded task pages. Visibility is checked before loading tasks. Continue through pagination.totalPages for all tasks and through relatedPage/pagination.relatedTotalPages for their complete related records.



## OpenAPI

````yaml /openapi.json get /public-project/{id}
openapi: 3.1.0
info:
  title: Kaneo API
  version: 1.0.0
  description: Kaneo Project Management API - Manage projects, tasks, labels, and more
servers:
  - url: https://cloud.kaneo.app/api
    description: Kaneo API Server
security:
  - bearerAuth: []
paths:
  /public-project/{id}:
    get:
      tags:
        - Projects
      summary: Get a public project board
      description: >-
        Read a public board in bounded task pages. Visibility is checked before
        loading tasks. Continue through pagination.totalPages for all tasks and
        through relatedPage/pagination.relatedTotalPages for their complete
        related records.
      operationId: getPublicProject
      parameters:
        - schema:
            type: string
          required: true
          name: id
          in: path
        - schema:
            type: string
          required: false
          name: status
          in: query
        - schema:
            type: string
          required: false
          name: priority
          in: query
        - schema:
            type: string
          required: false
          name: assigneeId
          in: query
        - schema:
            type: integer
            minimum: 1
            maximum: 1000000
          required: false
          name: page
          in: query
        - schema:
            type: integer
            minimum: 1
            maximum: 1000000
          required: false
          name: relatedPage
          in: query
        - schema:
            type: integer
            minimum: 1
            maximum: 100
          required: false
          name: limit
          in: query
        - schema:
            type: string
            enum:
              - createdAt
              - priority
              - dueDate
              - position
              - title
              - number
          required: false
          name: sortBy
          in: query
        - schema:
            type: string
            enum:
              - asc
              - desc
          required: false
          name: sortOrder
          in: query
        - schema:
            type: string
          required: false
          name: dueBefore
          in: query
        - schema:
            type: string
          required: false
          name: dueAfter
          in: query
      responses:
        '200':
          description: A public board page
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicBoardPage'
        '400':
          description: Invalid pagination or filters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '403':
          description: Project is not public
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '404':
          description: Project not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '503':
          description: Task list request timed out
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
      security: []
components:
  schemas:
    PublicBoardPage:
      allOf:
        - $ref: '#/components/schemas/Board'
        - type: object
          properties:
            pagination:
              $ref: '#/components/schemas/BoardPagination'
          required:
            - pagination
    ApiError:
      type: object
      properties:
        message:
          type: string
          description: Human-readable description of the error.
          example: Task not found
        code:
          type: string
          description: >-
            Stable UPPER_SNAKE_CASE code. Derived from the status unless a more
            specific code applies, such as VALIDATION_ERROR or
            MISSING_PERMISSION.
          example: NOT_FOUND
        issues:
          type: array
          items:
            type: object
            properties:
              path:
                type: string
                description: >-
                  Dotted path to the invalid input, prefixed with the request
                  part (body, query, params, header).
                example: body.title
              message:
                type: string
                example: Required
            required:
              - path
              - message
          description: Every validation issue, for VALIDATION_ERROR.
        missingPermissions:
          type: array
          items:
            type: string
          description: >-
            Permissions the caller lacks for this route, as resource:action, for
            MISSING_PERMISSION and API_KEY_SCOPE.
          example:
            - task:update
      required:
        - message
        - code
    Board:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        slug:
          type: string
        icon:
          type:
            - string
            - 'null'
        description:
          type:
            - string
            - 'null'
        descriptionDeferred:
          type: boolean
          description: >-
            True when a project description above 64 KiB is omitted; use project
            detail or public project description pages for full text.
        isPublic:
          type:
            - boolean
            - 'null'
        workspaceId:
          type: string
        backgroundVersion:
          type:
            - string
            - 'null'
        columns:
          type: array
          items:
            $ref: '#/components/schemas/BoardColumn'
        archivedTasks:
          type: array
          items:
            $ref: '#/components/schemas/BoardTask'
        plannedTasks:
          type: array
          items:
            $ref: '#/components/schemas/BoardTask'
      required:
        - id
        - name
        - slug
        - icon
        - description
        - isPublic
        - workspaceId
        - backgroundVersion
        - columns
        - archivedTasks
        - plannedTasks
    BoardPagination:
      type: object
      properties:
        total:
          type: number
        page:
          type: number
        pageSize:
          type: number
        totalPages:
          type: number
        relatedPage:
          type: number
        relatedPageSize:
          type: number
        relatedTotalPages:
          type: number
        relatedRevision:
          type: string
          description: >-
            Public board labels and external links revision for this task page.
            Restart pagination if it changes during related-page continuations.
        revision:
          type: string
          description: >-
            Public board content, membership and ordering revision, including
            related records and visible subtask progress. Restart pagination if
            it changes between task or related pages.
      required:
        - total
        - page
        - pageSize
        - totalPages
        - relatedPage
        - relatedPageSize
        - relatedTotalPages
      description: >-
        Always paginated: 50 tasks by default, at most 100 per page. Continue
        through totalPages to retrieve all tasks. For each task page, follow
        relatedPage through relatedTotalPages to retrieve all labels, external
        links and columns (100 related rows per kind per request, plus up to 100
        columns needed to represent the tasks).
    BoardColumn:
      type: object
      properties:
        id:
          type: string
          description: The column slug, same as `slug`.
        slug:
          type: string
        name:
          type: string
        icon:
          type:
            - string
            - 'null'
        isFinal:
          type: boolean
        position:
          type: number
        tasks:
          type: array
          items:
            $ref: '#/components/schemas/BoardTask'
      required:
        - id
        - slug
        - name
        - icon
        - isFinal
        - tasks
    BoardTask:
      type: object
      properties:
        id:
          type: string
        title:
          type: string
        number:
          type:
            - number
            - 'null'
        description:
          type:
            - string
            - 'null'
        descriptionDeferred:
          type: boolean
          description: >-
            True when the list omits a large description; load the task detail
            or description pages to read it. Do not replace stored text with
            this null summary.
        status:
          type: string
        priority:
          type: string
          description: 'One of: no-priority, low, medium, high, urgent.'
        startDate:
          type:
            - string
            - 'null'
          format: date-time
        dueDate:
          type:
            - string
            - 'null'
          format: date-time
        position:
          type:
            - number
            - 'null'
        createdAt:
          type: string
          format: date-time
        userId:
          type:
            - string
            - 'null'
        assigneeName:
          type:
            - string
            - 'null'
        assigneeId:
          type:
            - string
            - 'null'
        assigneeImage:
          type:
            - string
            - 'null'
        projectId:
          type: string
        subtaskCounts:
          type: object
          properties:
            completed:
              type: integer
              minimum: 0
            total:
              type: integer
              minimum: 0
          required:
            - completed
            - total
          description: >-
            Direct subtasks in the workspace; completed means a final column in
            the child project. Public boards count only children in public
            projects.
        labels:
          type: array
          items:
            $ref: '#/components/schemas/TaskLabel'
        externalLinks:
          type: array
          items:
            $ref: '#/components/schemas/TaskExternalLink'
      required:
        - id
        - title
        - number
        - description
        - status
        - priority
        - startDate
        - dueDate
        - position
        - createdAt
        - userId
        - assigneeName
        - assigneeId
        - assigneeImage
        - projectId
        - subtaskCounts
        - labels
        - externalLinks
    TaskLabel:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        color:
          type: string
      required:
        - id
        - name
        - color
    TaskExternalLink:
      type: object
      properties:
        id:
          type: string
        taskId:
          type: string
        integrationId:
          type:
            - string
            - 'null'
        resourceType:
          type: string
        externalId:
          type: string
        url:
          type: string
        title:
          type:
            - string
            - 'null'
        metadata:
          type:
            - object
            - 'null'
          additionalProperties: {}
          description: >-
            Provider-specific payload, already parsed from the stored JSON
            string.
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
      required:
        - id
        - taskId
        - integrationId
        - resourceType
        - externalId
        - url
        - title
        - metadata
        - createdAt
        - updatedAt
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API key or session token (Bearer)

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.