---
title: "Get short-lived presigned download links for a finished export"
method: GET
path: "/v1/projects/{project_id}/exports/{job_id}/download"
tags: ["exports"]
---

# Get short-lived presigned download links for a finished export

`GET /v1/projects/{project_id}/exports/{job_id}/download`

## Request

- Base URL: `https://api.wavehouse.cloud`
- URL: `https://api.wavehouse.cloud/v1/projects/{project_id}/exports/{job_id}/download`
- Auth: one of:
  - API key in cookie `whc_session`
  - HTTP bearer
  - API key in header `X-API-Key`

Any org member. Returns one presigned GET per produced object (data + schema sidecar), signed by a read-only session scoped to this job's prefix alone. Each link expires in 15 minutes — re-request them rather than storing them. Only a succeeded job has links. The export itself is deleted from object storage 7 days after it is produced; see the transfer/limits endpoint for this deployment's exact values.

## Path parameters

- `project_id` string, required
- `job_id` string, required

## Response `200`

OK

- DownloadProjectExportOutput
  - `downloads` ExportDownloadView[], required
    - `expires_at` string, date-time, required
    - `kind` string, required: data | schema
    - `name` string, required
    - `table` string, required
    - `url` string, required: presigned GET; expires shortly — treat it as single-use

## Other responses

- `429`: Rate limited, per client IP, API key or org; a client IP is also refused on every route for a while after repeated authentication failures. A limited operation carries RateLimit-Policy and RateLimit on every response; wait Retry-After seconds before retrying.
- `default`: Error

---

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