---
title: "Mail-merge export of one of your lists (account required; included for subscribers, per row otherwise)"
method: GET
path: "/api/v1/cohorts/{id}/export"
tags: ["Leads"]
---

# Mail-merge export of one of your lists (account required; included for subscribers, per row otherwise)

`GET /api/v1/cohorts/{id}/export`

## Request

- Base URL: `https://propraven.com`
- URL: `https://propraven.com/api/v1/cohorts/{id}/export`
- Auth: HTTP bearer

A mail-merge CSV of one of the caller's own lists: one row per MAILING ADDRESS (owner, mailing line1 / city / state / ZIP, the property address(es), their canonical ids, stage, source, as_of, as_of_basis, grade). Every address is read from ONE address column family of a parcel's record, with its ZIP; only mail-ready addresses become rows, and `X-Export-Parcels-Not-Mail-Ready` counts the rest.

ACCOUNT REQUIRED: an API key or a signed-in session; anonymous callers -- including x402 / credit-token wallets -- get HTTP 401 `code: "account_required"` before any read. The list must be the caller's own (404 otherwise).

PRICE: INCLUDED for a paid PropRaven subscription. Any other account pays $0.10 per mailing row, the quote capped at $20, from a prepaid credit balance (`X-CREDIT-TOKEN`) or per call via x402 (`X-PAYMENT`, sent with your credentials); with neither, HTTP 402 carrying the exact quote. `preview=true` returns the row count and the quote, free, with no data.

Each export is recorded in PropRaven's people-data access log BEFORE the CSV is returned (and before an x402 payment settles). If the log cannot be written the export is refused (503) and any charge refunded or released.

## Path parameters

- `id` string, uuid, required

## Query parameters

- `preview` boolean

## Headers

- `X-CREDIT-TOKEN` string
- `X-PAYMENT` string

## Response `200`

The mail-merge CSV (or, with preview=true, a JSON count + quote).

- object: preview=true: { preview, parcels_listed, parcels_mail_ready, parcels_not_mail_ready, mailing_rows, truncated, quote, note }.

## Other responses

- `400`: A query or body parameter is invalid. Nothing was read or charged.
- `401`: No account (`code: "account_required"`, `reason: "people_data_requires_account"`), or an invalid API key.
- `402`: Payment required: a non-subscriber with no credits and no X-PAYMENT. `accepts[0].maxAmountRequired` carries the exact total ($0.10 per row, capped at $20).
- `404`: No list with this id belongs to the caller.
- `405`: The endpoint exists but does not support this method. `Allow` lists the methods it does.
- `500`: Unexpected server error. The body never carries database or driver text.
- `503`: The people-data access log was unavailable; the export was not made and nothing was charged.

---

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