# Bulk download

Manifest plus time-limited download URLs for parquet files. Same Bearer key as the rest of the API. No MCP tool.

Resale of the dataset is prohibited. Dumps are for your own systems.

## Request

```bash
curl -sS -H "Authorization: Bearer $FDS_API_KEY" \
  https://api.fulldatasets.com/v1/datasets/books/releases/latest
```

## Response `200`

```json
{
  "release": "2026-09.2",
  "schema_version": "books.v1",
  "created_at": "…",
  "manifest": {},
  "downloads": {
    "manifest.json": { "url": "https://api.fulldatasets.com/v1/datasets/books/releases/2026-09.2/files/manifest.json", "expires_in": 3600 },
    "books.parquet": { "url": "…", "expires_in": 3600 },
    "changes.parquet": { "url": "…", "expires_in": 3600 },
    "redirects.parquet": { "url": "…", "expires_in": 3600 }
  }
}
```

Fetch each `downloads.*.url` with the **same** `Authorization` header. URLs expire in 3600 seconds. File route:

`GET /v1/datasets/books/releases/{release}/files/{file}`

| File | Contents |
|---|---|
| `manifest.json` | Release metadata |
| `books.parquet` | Denormalized bulk table |
| `changes.parquet` | Changelog snapshot |
| `redirects.parquet` | Retired id → surviving id |

`404` if no release is loaded or the file name is unknown.

## See also

- [Changelog](/docs/changes) — incremental after you have a snapshot
- [Known gaps](/docs/gaps)
