---
title: "Fetch one snapshot's status + records"
method: GET
path: "/api/snapshots/{id}"
tags: ["Snapshots"]
---

# Fetch one snapshot's status + records

`GET /api/snapshots/{id}`

## Request

- Base URL: `https://twitr.sh`
- URL: `https://twitr.sh/api/snapshots/{id}`
- Auth: API key in header `SIGN-IN-WITH-X`

Returns a single snapshot. If pending, it is reconciled against the live extraction job first; if ready, includes all records (cached 24h for free re-fetches). Wallet-gated via SIWX — only the wallet that paid for this snapshot can read it.

## Path parameters

- `id` string, required

## Response `200`

Snapshot is ready (includes `download_url` for the JSON blob) OR failed (includes `error`). Rate-limited to 10 download_url issuances per wallet per hour.

- object
  - `snapshot_id` string, required
  - `status` 'ready' | 'failed', required
  - `actor_id` string
  - `mode` string
  - `record_count` integer
  - `bytes` integer: Size of the blob in bytes.
  - `download_url` string: Vercel Blob URL. Fetch with plain GET; no additional auth required. URL is stable until blob expiry (24h by default).
  - `expires_at_estimate` integer: Unix ms when the blob will expire (estimate — blob retention is 24h after creation).
  - `error` string: Only when status=failed.

## Other responses

- `202`: Snapshot still pending — the extraction job is still running.
- `402`: Identity Required — sign SIWX and retry.
- `403`: Signing wallet doesn't own this snapshot.
- `404`: Snapshot unknown or expired.
- `429`: 60 downloads/hour per wallet exceeded. Includes Retry-After header.

---

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