---
title: "Get a page"
method: GET
path: "/api/pages/{id}"
tags: ["pages"]
---

# Get a page

`GET /api/pages/{id}`

## Request

- Base URL: `https://telawiki.com`
- URL: `https://telawiki.com/api/pages/{id}`
- Auth: one of:
  - HTTP bearer
  - API key in cookie `tela_session`

Returns the canonical markdown body plus how the page is exposed to the outside world.

## Response `200`

The page.

- object
  - `page` Page, required
    - `id` integer, required
    - `space_id` integer, required
    - `parent_id` integer, nullable, required
    - `title` string, required
    - `body` string, required: Canonical markdown. This is the whole document — tela has no block model.
    - `position` integer, required: Sort order among siblings.
    - `props` PageProps: Free-form page properties. Reserved keys are dropped. Two are load-bearing: `deck: true` makes the body a Slidev presentation, `sheet: true` makes it a spreadsheet — both are then stored verbatim, frontmatter included.
    - `created_at` string, required: `YYYY-MM-DD HH:MM:SS` in UTC.
    - `updated_at` string, required: `YYYY-MM-DD HH:MM:SS` in UTC.
    - `version` integer: Advances on every title/body/props change. Send it back as `base_version` on update to refuse overwriting an edit you haven't seen.
    - `status` 'draft' | 'published': A `draft` is labelled in the app and never served on public spaces or share links until published.
  - `exposure` Exposure, required: How far outside the space this page is readable.
    - `state` 'private' | 'public' | 'password', required: `public` = reachable with no credential; `password` = reachable with a share password.
    - `inherited` boolean, required: True when the exposure comes from an ancestor's subtree share rather than this page.
    - `expires_at` string, nullable, required

## Other responses

- `400`: `invalid_id` — a path parameter was not a positive integer.
- `403`: `forbidden` — **also returned when the page does not exist**, so page ids cannot be enumerated. When the page happens to live in a published space, `code` is `forbidden_public` and `public_path` points at the no-login reader. Also `api_key_scope` / `api_key_space_scope`.
- `500`: `internal` — server error.

---

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