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

# Export Your Memory

> Download everything a memory space holds (Markdown, JSONL, and an entity graph) from your dashboard.

Your memories are yours. Any space can be exported in full, as a zip you download
from the dashboard, so moving to another platform is never blocked by us.

Exports are **free** and unmetered: they don't consume credits.

## Requesting an export

**1. Open the space**

Dashboard → **Spaces** → the space you want → **Exports** tab.

**2. Request the export**

Click **Request export**. The bundle is built in the background, so you don't
need to keep the page open.

**3. Download it**

We email you when it's ready, with a link back to this tab. Click
**Download**.

## What's in the bundle

The file is named `export-{space}-{date}.zip` and contains four files:

| File | Purpose |
| - | - |
| `memories.md` | Human-readable. Grouped by month, newest first, with context and tags. |
| `memories.jsonl` | One JSON object per memory, with stable ids, timestamps, tags, and metadata. **Use this to import into another system.** |
| `graph.json` | Extracted entities and the connections between them. |
| `manifest.json` | Export date, counts, and format version. |

A `memories.jsonl` record looks like this:

```json theme={null}
{
  "id": "01J8Z...",
  "content": "Alice prefers dark mode",
  "context": "onboarding call",
  "timestamp": "2026-07-15T10:00:00Z",
  "created_at": "2026-07-15T10:00:01Z",
  "tags": ["preferences"],
  "metadata": {"source": "call"},
  "type": "fact"
}
```

> [!NOTE]
>
> Graph edges are **co-occurrence**: two entities appearing in the same memory,
> weighted by how often. They are not labeled or typed relationships, so don't
> read `source → target` as a predicate.

## Availability window

An export stays downloadable for **7 days**, then it is deleted automatically.
Request a fresh one any time. There's no limit beyond one export per space per
24 hours.

Bundles are stored encrypted and are never publicly reachable. The download link
is generated when you click **Download**, is valid for five minutes, and requires
you to be signed in, which is why the "ready" email links to your dashboard
rather than to the file itself.

## The endpoints behind the tab

The dashboard calls three endpoints. They authenticate with a **signed-in session
token**, never an API key (`401 session_required`), and only the space's owner can
call them:

| Method and path | What it does |
| - | - |
| `POST /v1/spaces/{space_id}/exports` | Queues an export. Returns `202` with the job. |
| `GET /v1/spaces/{space_id}/exports` | Lists the space's export jobs, newest first. |
| `GET /v1/spaces/{space_id}/exports/{job_id}/download` | Returns `{download_url, expires_in}`: a five-minute link to a ready bundle. |

`$SESSION` below is the session token sign-in returns; neither memory SDK wraps these,
because both authenticate with an API key.

```bash cURL theme={null}
# Queue an export
curl -X POST https://api.anonalabs.com/v1/spaces/support/exports \
  -H "Authorization: Bearer $SESSION"

# List export jobs
curl https://api.anonalabs.com/v1/spaces/support/exports \
  -H "Authorization: Bearer $SESSION"
```

```python Python theme={null}
import httpx

headers = {"Authorization": f"Bearer {SESSION}"}

job = httpx.post(
    "https://api.anonalabs.com/v1/spaces/support/exports",
    headers=headers,
).json()

jobs = httpx.get(
    "https://api.anonalabs.com/v1/spaces/support/exports",
    headers=headers,
).json()
```

```typescript TypeScript theme={null}
const headers = { Authorization: `Bearer ${SESSION}` };

const job = await (
  await fetch("https://api.anonalabs.com/v1/spaces/support/exports", {
    method: "POST",
    headers,
  })
).json();

const jobs = await (
  await fetch("https://api.anonalabs.com/v1/spaces/support/exports", { headers })
).json();
```

| Status | Code | Cause |
| - | - | - |
| 401 | `session_required` | An API key was sent; exports need a signed-in session. |
| 409 | `export_in_progress` | The space already has an export being built. |
| 409 | `export_too_recent` | Less than 24 hours since the last export of this space. |
| 409 | `export_not_ready` | The bundle is still building — poll the list until `status` is ready. |
| 410 | `export_expired` | The 7-day window has passed. Request a fresh export. |
| 503 | `export_unavailable` | Export storage is not available. Ours to fix, not yours. |

## Frequently asked

> **Can I trigger an export with my API key?**
>
> No. Exports require a signed-in session. An export bundle is a complete copy
> of a space, so we deliberately don't let a long-lived API key produce or
> fetch one — the endpoints above work with a session token only.

> **Does exporting delete anything?**
>
> No. It's a read-only copy. Your memories are untouched.

> **Are uploaded documents included?**
>
> No. The bundle contains memories and the entity graph. The original files
> you uploaded aren't re-packaged, since you already hold those.

> **Can I export every space at once?**
>
> Not yet. Export one space at a time.


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