---
title: "Get a live export"
method: GET
path: "/v1/live-export/live-exports/{id}"
tags: ["Live Exports"]
---

# Get a live export

`GET /v1/live-export/live-exports/{id}`

## Request

- Base URL: `https://api.whalesync.com`
- URL: `https://api.whalesync.com/v1/live-export/live-exports/{id}`
- Auth: HTTP bearer

## Path parameters

- `id` string, required

## Response `200`

- LiveExport
  - `id` string, required
  - `name` string, required
  - `status` 'draft' | 'active' | 'manual_only', required: `draft` = not yet saved (no pipeline exists). After the first save: `active` = the schedule is on, `manual_only` = it is off and the export runs only when triggered.
  - `source` LiveExportSide, required
    - `connector` string, required: The connected app, as a connector slug.
    - `auth_status` 'connected' | 'error', required: Whether the connection is currently healthy.
    - `auth_error` string, nullable, required: The connection's failure message when `auth_status` is `error`.
    - `location` LiveExportLocation
      - `id` string, required: The location id, as listed by `GET …/destination/locations`.
      - `name` string, required
  - `destination` LiveExportSide, required
    - `connector` string, required: The connected app, as a connector slug.
    - `auth_status` 'connected' | 'error', required: Whether the connection is currently healthy.
    - `auth_error` string, nullable, required: The connection's failure message when `auth_status` is `error`.
    - `location` LiveExportLocation
      - `id` string, required: The location id, as listed by `GET …/destination/locations`.
      - `name` string, required
  - `schedule` LiveExportSchedule, required
    - `enabled` boolean, required: Whether the cadence is on. This is the on/off switch for the whole export.
    - `cadence` 'every_10_minutes' | 'every_30_minutes' | 'hourly' | 'daily' | 'custom', required
    - `time_of_day` string, nullable, required: When a `daily` export runs: a whole hour in 24-hour time, in `timezone` (UTC when no timezone is set). Null for the other cadences.
    - `cron` string, required: The exact schedule, as a cron expression. Read-only; set `cadence` and `time_of_day` instead.
    - `timezone` string, nullable, required
    - `next_run_at` string, date-time, nullable, required: When the next scheduled run fires.
    - `last_triggered_at` string, date-time, nullable, required
  - `last_run` RunSummary, required
    - `id` string, required
    - `status` 'pending' | 'running' | 'completed' | 'failed' | 'cancelled', required
    - `trigger` 'manual' | 'schedule', required: Whether a person/API started it, or the cadence did.
    - `started_at` string, date-time, nullable, required
    - `finished_at` string, date-time, nullable, required
    - `summary` string, nullable, required: The one-line story: what the run is doing right now, or how it ended.
    - `warning` string, nullable, required: Set when the run completed but a step finished with a warning.
    - `error` string, nullable, required: The rolled-up error for a failed run.
    - `app_url` string, uri, required: The run in the Whalesync app, for a person who wants to watch or share it — like every app_url, nothing here needs their attention.
  - `unsaved_changes` boolean, required: True when mappings were edited over the API after the last save — `trigger` would run the last-applied pipeline, not the edits. Save to clear it. (An edit saved in the app clears it on the next save poll.)
  - `created_at` string, date-time, required
  - `app_url` string, uri, required: The export in the Whalesync app — a convenience link, never a required step (anything that needs a person arrives as a pending action).
  - `pending_actions` PendingAction[], required
    - `type` 'user_authorization' | 'user_confirmation' | 'user_api_key', required
    - `audience` 'end_user', required: Who has to do this. `end_user` means a person — not the agent, and not the API.
    - `action` 'open_in_browser', required: What to do with `url`: open it in a browser. It is a page for a person, never an endpoint to call.
    - `side` 'left' | 'right' | 'source' | 'destination' | 'null', nullable, required: The side this is about, when it is one side. Syncs have `left`/`right`; live exports have `source`/`destination`.
    - `connector` string, nullable, required: The app to connect, when we know which one was asked for.
    - `url` string, uri, required: The page to hand to the person.
    - `instruction` string, required: Plain-language instruction, safe to relay to the person verbatim.
  - `url` string, uri, required
  - `status_url` string, uri, required
  - `mappings_url` string, uri, required: The working mappings document — edit, then save.
  - `save_url` string, uri, required: The save saga: POST to apply the mappings, GET to poll.
  - `schedule_url` string, uri, required: The on/off switch and cadence.
  - `runs_url` string, uri, required: The run history, pre-filtered to this export.

## Other responses

- `401`: The API key is missing, invalid, or revoked (`missing_api_key`, `invalid_api_key`). Carries a `required_action` linking a person to key creation, naming the smallest scope this endpoint needs.
- `403`: The key's scope does not allow this call (`insufficient_scope` on a mutation with a `read` key).
- `404`: No live export with that id, or it belongs to someone else.
- `429`: Rate limit exceeded. Wait for `Retry-After` seconds.

---

[API](https://skmtc.dev/whalesync/apis/whalesync-api.md) · [All operations](https://skmtc.dev/whalesync/apis/whalesync-api/llms.txt) · [OpenAPI document](https://skmtc.dev/whalesync/apis/whalesync-api/revisions/5131522b325a?raw)
