---
title: "Start subscriptions TSV export (async)"
method: POST
path: "/exports/subscriptions"
---

# Start subscriptions TSV export (async)

`POST /exports/subscriptions`

Queue a background job that exports the entire filtered subscription
set as a TSV file (UTF-8 BOM, tab-delimited, Excel-friendly). Useful
when the dataset is too large to page through `/subscriptions/list`.

The endpoint returns immediately with `status: "pending"` and an
`id`. Poll `GET /exports/{id}` until `status == "completed"`, then
fetch `download_url` (signed, expires in 1 hour).

Accepts the same filters as `/subscriptions/list`. All filters are
optional — omit them to export everything in the project.

## Headers

- `api_key` string, required

## Request body

- object
  - `user_id` string
  - `search` string
  - `payment_system` string
  - `price_id` string
  - `from` string — ISO date (inclusive, project timezone)
  - `to` string — ISO date (inclusive, project timezone)
  - `status` 'active' | 'incomplete' | 'incomplete_expired' | 'trialing' | 'past_due' | 'canceled' | 'unpaid' | 'paused'
  - `ltv_min` number
  - `ltv_max` number
  - `quiz_id` string
  - `paywall_id` string

## Response `202`

Export job has been queued.

- object
  - `success` integer
  - `export` ExportRecord — Background export job. Statuses: 0=pending, 1=processing, 2=completed, 3=failed. `download_url` is signed and valid only while `download_expires_at` has not passed; call `GET /exports/{id}` again to obtain a fresh link.
    - `id` integer
    - `project_id` integer
    - `type` string
    - `subtype` string, nullable
    - `status` 0 | 1 | 2 | 3
    - `status_label` 'Pending' | 'Processing' | 'Completed' | 'Failed'
    - `file_name` string
    - `file_size` integer, nullable
    - `file_size_human` string
    - `mime_type` string, nullable
    - `parameters` object
    - `created_at` string, date-time
    - `started_at` string, date-time, nullable
    - `completed_at` string, date-time, nullable
    - `error_message` string, nullable — Populated only when status=failed.
    - `status_url` string, uri — URL of GET /exports/{id} — poll this until completed.
    - `download_url` string, uri, nullable — Short-lived signed URL to download the file. Null until status=completed.
    - `download_expires_at` string, date-time, nullable

---

[API](https://skmtc.net/web2wave/apis/web2wave-api.md) · [All operations](https://skmtc.net/web2wave/apis/web2wave-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/web2wave/web2wave-api/versions/c88545119271/schema)
