---
title: "Get Website Snapshot"
method: GET
path: "/api/v1/website/properties/{property_id}/snapshots/{snapshot_id}"
tags: ["website"]
---

# Get Website Snapshot

`GET /api/v1/website/properties/{property_id}/snapshots/{snapshot_id}`

## Request

- Base URL: `https://api.getanana.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.getanana.com/api/v1/website/properties/{property_id}/snapshots/{snapshot_id}`
- Auth: none declared

Poll one snapshot: status, counters, error.

## Path parameters

- `snapshot_id` string, uuid, required
- `property_id` string, uuid, required

## Response `200`

Successful Response

- WebsiteSnapshotRead
  - `id` string, uuid, required
  - `property_id` string, uuid, required
  - `base_url` string, required
  - `registrable_domain` string, required
  - `status` 'queued' | 'discovering' | 'capturing' | 'completed' | 'failed', required: Lifecycle of a website capture run (see ``WebsiteSnapshot``). A real capture (discovery + rendering up to 60 pages in a browser) takes minutes, so the work runs on the arq worker and callers poll this status. QUEUED → DISCOVERING → CAPTURING → COMPLETED, or → FAILED at any point with a human-readable ``error_message``.
  - `pages_discovered` integer, required
  - `pages_captured` integer, required
  - `error_message` string, nullable, required
  - `design_tokens` WebsiteDesignTokens, required: Brand facts extracted from the rendered site (PR 7 fills these). The DB column is JSONB but this mirror is the only shape that crosses the API — never a raw dict (AGENTS.md: dict-typed response fields generate Record<string, unknown> and TS callers lose structural access).
    - `body_font` string, nullable
    - `heading_font` string, nullable
    - `text_color` string, nullable
    - `background_color` string, nullable
    - `link_color` string, nullable
    - `palette` PaletteEntry[]
      - `hex` string, required
      - `count` integer, required
    - `logo_url` string, nullable
    - `favicon_url` string, nullable
  - `started_at` string, date-time, nullable, required
  - `completed_at` string, date-time, nullable, required

## Other responses

- `403`: Error
- `404`: Error
- `422`: Validation Error

## Changes

> 55 revisions in range; 1 not diffed.

- **2026-09-03** `d65b8fefae34`: 2 info
  - added the optional property `detail/items/ctx` to the response with the `422` status
  - added the optional property `detail/items/input` to the response with the `422` status

[Operation history](https://skmtc.dev/getanana/apis/cleon-api/changes/api/v1/website/properties/:property_id/snapshots/:snapshot_id/get.md)

---

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