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

# Download a program

> Save a program from Effective's library to a local folder or ZIP file, pinned to one version, to load it offline.

Download a program from Effective's library to a folder next to your work:

```python theme={null}
from relativities import Program

path = Program.download("effective://example-ca-ppa", "example-ca-ppa")
sorted(item.name for item in path.iterdir())
# ['program', 'program-manifest.json', 'rater-manifest.json', 'rater.py', 'rater.rsl', 'tables']
```

The folder holds the rater's RSL source and rating tables, and the `program/` folder with `prepare` and the example book.
A library program needs an [Effective API key](/relativities/setup#load-a-library-program) with access to it.

## Load the download offline

Load the folder by its path. The program has the same `bundle_id` as the library's copy:

```python theme={null}
program = Program.load(path)
program.rater.bundle_id == Program.load("effective://example-ca-ppa").rater.bundle_id  # True
```

`Program.load` verifies each file's hash before the program runs.

## Download one archive

To get one archive file, give a path that ends in `.zip`:

```python theme={null}
Program.download("effective://example-ca-ppa", "example-ca-ppa.zip")  # PosixPath('example-ca-ppa.zip')
```

The path must be new or an empty folder. Any other path raises `FileExistsError`.

## Pin a version

Pass `revision=` to choose a version:

* A whole number, such as `revision=1`, chooses a published version.
* A `bundle_id` chooses one exact bundle. Use it to rerun a study exactly.

```python theme={null}
Program.download("effective://example-ca-ppa", "example-ca-ppa-v1", revision=1)
```

Record the `bundle_id` with each result. Each row of `rate` carries it too.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.