---
title: "Fetch the current selected-item snapshot, one page at a time"
method: GET
path: "/api/v1/selected/snapshot"
---

# Fetch the current selected-item snapshot, one page at a time

`GET /api/v1/selected/snapshot`

## Request

- Base URL: `https://bithot.news`
- URL: `https://bithot.news/api/v1/selected/snapshot`
- Auth: none declared

One-time bootstrap for clients that keep a complete local copy of the selected set. Not a browsing endpoint and not something to poll: page through it once with limit (default 500, max 1000) until hasMore is false, keep the cursor from the FIRST page, then stay current with /api/v1/selected/changes. The full set runs to several thousand items and only grows; fields=minimal keeps the bootstrap small. A widget that just shows today's picks does not need this at all — use /api/v1/items.

## Query parameters

- `fields` 'default' | 'minimal'
- `limit` integer
- `page` string

## Headers

- `User-Agent` string
- `If-None-Match` string

## Response `200`

OK

- union
  - object
    - `schemaVersion` unknown, required
    - `asOf` string, date-time, required
    - `fields` 'default', required
    - `cursor` string, required
    - `count` integer, required
    - `hasMore` boolean, required
    - `nextPage` string, nullable, required
    - `items` Item[], required
      - `id` string, required
      - `title` string, required
      - `originalTitle` string, nullable, required
      - `summary` string, nullable, required
      - `source` object, required
        - `name` string, required
      - `links` object, required
        - `aihot` string, uri, required
        - `original` string, uri, required
      - `publishedAt` string, date-time, nullable, required
      - `discoveredAt` string, date-time, required
      - `category` string, nullable, required: Current values: projects, memecoins, products, markets, investment, industry, security, tip, opinion. Clients must tolerate future string values.
      - `score` number, nullable, required
      - `selected` boolean, required
      - `reason` string, nullable: Reader-facing recommendation reason, the same text shown as 推荐理由 on the website. Always present on /api/v1/items; null when the item is not selected or has no reader-facing reason. Selected snapshot and changes do not include this field yet.
      - `attribution` Attribution: Machine-readable BITHOT provenance for traceability. Retain it where technically feasible. Attribution alone is not authorization; see the public terms.
        - `name` string, required
        - `url` string, uri, required
  - object
    - `schemaVersion` unknown, required
    - `asOf` string, date-time, required
    - `fields` 'minimal', required
    - `cursor` string, required
    - `count` integer, required
    - `hasMore` boolean, required
    - `nextPage` string, nullable, required
    - `items` ItemMinimal[], required
      - `id` string, required
      - `title` string, required
      - `source` object, required
        - `name` string, required
      - `links` object, required
        - `aihot` string, uri, required
      - `publishedAt` string, date-time, nullable, required
      - `discoveredAt` string, date-time, required
      - `category` string, nullable, required: Current values: projects, memecoins, products, markets, investment, industry, security, tip, opinion. Clients must tolerate future string values.
      - `score` number, nullable, required
      - `selected` boolean, required

## Other responses

- `304`: Not Modified
- `400`: Machine-readable problem response.
- `403`: Machine-readable problem response.
- `405`: Machine-readable problem response.
- `409`: Machine-readable problem response.
- `429`: Machine-readable problem response.
- `503`: Machine-readable problem response.

---

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