# Get the account export

Source: https://workroad.app/docs/api/get-export

`GET https://workroad.app/api/v1/export`

The latest account export: everything the user's account holds in one ZIP (notes as Markdown with their images and files, recordings, study sets with their review history, tasks, schedules, tests, Copilot chats and settings as JSON). Start one with `POST /export`. `data` is null when none was started in the last 7 days.

- MCP tool: `getExport` on `https://workroad.app/api/mcp`
- Required scopes: account:export
- Test mode: `GET https://workroad.app/api/test/v1/export` checks the request and returns the example response without changing anything.
- Next: when `status` is `pending` or `running`, call it again in a minute.

## Response

`200` OK

- `data`: object or null, required
  - `id`: string (uuid), required. The export's id.
  - `status`: one of `"pending"`, `"running"`, `"ready"`, `"failed"`, `"expired"`, required. `pending` and `running` while it is built, `ready` while it can be downloaded, `expired` once its download window has passed, `failed` if it could not be built.
  - `createdAt`: string (date-time), required. When the export was requested.
  - `downloadUrl`: string or null, required. When `status` is `ready`: a URL that downloads the ZIP for the next 5 minutes, without credentials. Ask again for a fresh one. Null otherwise.
  - `expiresAt`: string (date-time) or null, required. When `status` is `ready`: when the export stops being available. Null otherwise.
  - `sizeBytes`: integer or null, required. The ZIP's size when `status` is `ready`, else null.

### Example

```json
{
  "data": {
    "id": "4f1c2b3a-5d6e-4f70-8a9b-0c1d2e3f4a5b",
    "status": "ready",
    "createdAt": "2026-10-28T09:15:00.000Z",
    "downloadUrl": "https://storage.example.com/export/…/4f1c2b3a.zip?X-Amz-Signature=…",
    "expiresAt": "2026-11-04T09:21:42.000Z",
    "sizeBytes": 48213504
  }
}
```

## Errors

Every error has the body `{ "error": { "code", "message", "details" } }`.

- `400`: Invalid request body or query
- `401`: Missing, invalid, disabled or expired API key
- `402`: `api_allowance_reached`: this month's API and AI app requests on the free plan are used up. `details` has `limit`, `used`, `resetsAt` and `upgradeUrl`. Nothing ran; WorkRoad Plus has no monthly limit.
- `403`: The API key lacks the required scope
- `404`: No endpoint exists at this path.
- `405`: Method not allowed. Use a method from the Allow header.
- `429`: Rate limit exceeded. Wait for Retry-After before retrying. The rate-limit headers are absent when the key's own limiter rejected the request before the per-endpoint bucket check ran.
- `500`: Internal server error
