---
title: "Get the durations that govern imports and exports (any member)"
method: GET
path: "/v1/projects/{project_id}/transfer/limits"
tags: ["transfers"]
---

# Get the durations that govern imports and exports (any member)

`GET /v1/projects/{project_id}/transfer/limits`

## Request

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

Any org member. Every duration a transfer is governed by, in one place, so a client never hard-codes one. Today: an upload credential lasts 12 hours (at most 36 hours), an export download link 15 minutes, a finished export is deleted after 7 days, and anything you push to the staging bucket after 2 days. The numbers in this sentence are the deployment's DEFAULTS; the response body is what this deployment is actually configured with, and is what you should render.

## Path parameters

- `project_id` string, required

## Response `200`

OK

- TransferLimitsView
  - `download_link_max_seconds` integer, required: the longest a download link can be signed for
  - `download_link_seconds` integer, required: how long a presigned export download link lasts. Re-request rather than storing one
  - `export_retention_seconds` integer, required: how long a finished export stays in object storage before the bucket deletes it
  - `incomplete_upload_abort_seconds` integer, required: when an abandoned multipart upload is aborted and its parts deleted
  - `staged_upload_retention_seconds` integer, required: how long an object you pushed to the staging bucket survives — including the sealed copy an import loads from
  - `staged_version_retention_seconds` integer, required: how long a SUPERSEDED version of a staged object is kept
  - `upload_credential_max_seconds` integer, required: the longest such credential this deployment will ever mint
  - `upload_credential_seconds` integer, required: how long the staging upload credential a plan hands you stays valid

## 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/adea029bf505?raw)
