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

# Snapshot Downloads

> The point-in-time CSV snapshots – what each bundle contains, how to fetch files with a browser session or an API key, how to cite a snapshot, and why archive pages stay permanent.

**Current snapshot:** [beliefsystems.xyz/data](https://beliefsystems.xyz/data)
**Archive:** [beliefsystems.xyz/data/archive](https://beliefsystems.xyz/data/archive)

The snapshots are the full record: every published level since inception, composition membership with target weights, reconstitution events, and the Belief Volatility legs and attribution. They are captured at a moment, checksummed, and never rewritten. Where the [Data API](/data-access/data-api) serves a trailing window at chart granularity, this is the whole history at full depth.

## What a snapshot contains

| File                                                            | Contents                                                                                  |
| --------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| `belief-index-levels_{TICKER}.csv`                              | Every published level for one index, since inception                                      |
| `belief-index-compositions_{TICKER}.csv`                        | Constituent membership and target weights                                                 |
| `belief-index-reconstitutions_{TICKER}.csv`                     | Composition changes with the chain-link arithmetic                                        |
| `belief-index-series.csv`                                       | The series catalog with inception dates and row counts                                    |
| `belief-volatility-levels_{TICKER}.csv`                         | Published Belief Volatility values                                                        |
| `belief-volatility-legs_{TICKER}.csv`                           | Per-leg detail behind each value                                                          |
| `belief-volatility-attribution_{TICKER}.csv`                    | Attribution of each move across legs                                                      |
| `belief-index-data.zip`, `belief-volatility-data.zip`           | Everything above, bundled                                                                 |
| `manifest.json`                                                 | Snapshot date, per-file byte counts and SHA-256 checksums, row counts, observation ranges |
| `DATA-DICTIONARY.md`, `LICENSE.md`, `CITATION.cff`, `README.md` | Column definitions, license terms, and a machine-readable citation record                 |

## Getting the files

Snapshot files sit behind the same free account as everything else. A signed-in browser downloads them by clicking; a program sends the same `belief_live_` key it uses for the API, as an `Authorization` header on the file URL.

<CodeGroup>
  ```bash curl theme={null}
  curl -s -O -H "Authorization: Bearer $BELIEF_API_KEY" \
    https://beliefsystems.xyz/data/latest/belief-index-levels_CONFLICT.csv
  ```

  ```python Python theme={null}
  import hashlib
  import os

  import requests

  BASE = "https://beliefsystems.xyz/data/latest"
  HEADERS = {"Authorization": f"Bearer {os.environ['BELIEF_API_KEY']}"}

  manifest = requests.get(f"{BASE}/manifest.json", headers=HEADERS, timeout=30).json()
  entry = next(f for f in manifest["files"] if f["name"] == "belief-index-levels_CONFLICT.csv")

  body = requests.get(f"{BASE}/{entry['name']}", headers=HEADERS, timeout=60).content
  assert hashlib.sha256(body).hexdigest() == entry["sha256"]

  with open(entry["name"], "wb") as fh:
      fh.write(body)
  print(entry["rows"], "rows through", entry["last_observation"])
  ```

  ```javascript JavaScript theme={null}
  import { writeFile } from "node:fs/promises";

  const base = "https://beliefsystems.xyz/data/latest";
  const headers = { Authorization: `Bearer ${process.env.BELIEF_API_KEY}` };

  const manifest = await (await fetch(`${base}/manifest.json`, { headers })).json();
  const entry = manifest.files.find((f) => f.name === "belief-index-levels_CONFLICT.csv");

  const res = await fetch(`${base}/${entry.name}`, { headers });
  if (!res.ok) throw new Error(`Belief Systems snapshots ${res.status}`);

  await writeFile(entry.name, Buffer.from(await res.arrayBuffer()));
  console.log(entry.rows, "rows through", entry.last_observation);
  ```
</CodeGroup>

`manifest.json` carries a SHA-256 for every file, so a download can be verified before it is trusted. Verifying it is the difference between a reproducible dataset and a file you happen to have.

A request with no session and no key returns `401` with a coded JSON body naming the account requirement, not an HTML page – a `pandas.read_csv` against a gated URL fails as an authentication error rather than a parse error. Browser navigation is redirected to the data page instead, with the file you asked for named on arrival.

`/data/latest/` always holds the most recent snapshot. `/data/archive/{date}/` holds each earlier one at its own permanent path.

## Citing a snapshot

Cite the dated snapshot, not the live page: it is the version that will still say what you said it said.

* Attribution line: `Source: Belief Systems (beliefsystems.xyz)`
* Cite the snapshot date from `manifest.json`, and link its archive page rather than the file
* `CITATION.cff` in each bundle carries the same record in machine-readable form
* Terms are in `LICENSE.md`: CC BY-NC 4.0 with an editorial-use grant

**Archive index pages are public and permanent.** A citation that resolves to `/data/archive/{date}` will keep resolving, without an account, for anyone checking a footnote – the page describes the snapshot, lists its files, and carries the checksums. The files themselves need the free account; the record of what they contained does not.

## Next

<CardGroup cols={3}>
  <Card title="Data API" icon="terminal" href="/data-access/data-api">
    Latest levels and the trailing window, on the same key.
  </Card>

  <Card title="Data boundaries" icon="signs-post" href="/data-access/data-api-boundaries">
    What each lane carries, and what a license adds.
  </Card>

  <Card title="Index methodology" icon="book" href="/indices/nav-methodology">
    How the levels in these files are computed.
  </Card>
</CardGroup>
