---
title: "Get a public project page"
method: GET
path: "/v1/public/pages/{publicId}"
tags: ["Public Page"]
---

# Get a public project page

`GET /v1/public/pages/{publicId}`

Returns the published document of a public project page. The document is the owner-approved allowlist of project data plus the page-owned uploads and links. Returns 404 while the page is not published or after it expired, and 410 once the owner unpublished it. A password-protected page returns only {"protected": true} until a valid unlock token is presented in the X-Public-Unlock header.

## Path parameters

- `publicId` string, required

## Headers

- `X-Public-Unlock` string

## Response `200`

The page document

- PublicPageDocument
  - `publicId` string
  - `slug` string
  - `mode` string
  - `indexable` boolean
  - `protected` boolean
  - `payloadAt` integer
  - `expiresAt` integer
  - `payload` PublicPagePayload
    - `schemaVersion` integer
    - `title` string
    - `description` string
    - `locale` string
    - `timeZone` string
    - `ranges` PublicPageRange[]
      - `key` string
      - `label` string
      - `from` integer
      - `to` integer
      - `stats` PublicPageStats
        - `trackedSeconds` integer
        - `activeDays` integer
        - `averageSecondsPerActiveDay` integer
        - `teamSize` integer
      - `distribution` PublicPageDistributionItem[]
        - `key` string
        - `label` string
        - `trackedSeconds` integer
        - `percentage` number, double
      - `activity` PublicPageActivity
        - `granularity` string
        - `points` PublicPageActivityPoint[]
          - `date` string
          - `trackedSeconds` integer
    - `defaultRangeKey` string
    - `assets` PublicPageAssetItem[]
      - `id` string
      - `type` string
      - `url` string
      - `fileName` string
      - `contentType` string
      - `size` integer
      - `caption` string
    - `links` PublicPageLink[]
      - `label` string
      - `url` string
    - `branding` PublicPageBranding
      - `name` string
      - `color` integer
    - `visibility` PublicPageVisibility
      - `showTrackedTime` boolean
      - `showActivity` boolean
      - `showDistribution` boolean
      - `showDescription` boolean
      - `showAssets` boolean
      - `showDocuments` boolean
      - `showLinks` boolean
      - `showTeamSize` boolean
    - `generatedAt` integer

## Other responses

- `404` — Not published, expired or unknown
- `410` — Unpublished by the owner
- `429` — Rate limit exceeded

## Changes

> 8 revisions in range; 1 not diffed.

- **2026-09-06** `24f693bd6f1f` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/timesheet/apis/timesheet-api/changes/v1/public/pages/:publicId/get.md)

---

[API](https://skmtc.dev/timesheet/apis/timesheet-api.md) · [All operations](https://skmtc.dev/timesheet/apis/timesheet-api/llms.txt) · [OpenAPI document](https://skmtc.dev/timesheet/apis/timesheet-api/revisions/a3d2f44e7345?raw)
