Skip to content

CSV Exports

Export your data as CSV. These are the only /v1 endpoints that do not return JSON — each responds with Content-Type: text/csv and a Content-Disposition: attachment header followed by a raw CSV body.

Account-wide exports

GET /v1/exports/licenses
GET /v1/exports/customers
GET /v1/exports/payments
GET /v1/exports/sales
EndpointColumnsFilters
/exports/licensesLicense Key, Email, Name, Product, Status, Seats, Sites, Created?search= (license key / customer email)
/exports/customersEmail, First Name, Last Name, Company, Phone, Country, Created?search= (email / first / last name)
/exports/paymentsID, Email, Amount, Currency, Status, Method, Created
/exports/salesDate, Order ID, Customer Email, Product, License Key, Amount, Currency, Status, Method?from=, ?to=, ?product_id=, ?status=, ?search=

Per-product exports

GET /v1/products/:id/export/licenses
GET /v1/products/:id/export/orders
GET /v1/products/:id/export/subscriptions
GET /v1/products/:id/export/sites

Per-product exports require a Pro+ plan. The plan gate runs before any CSV bytes are written, so a denial is still a JSON 402 response.

EndpointColumns
/export/licensesLicense Key, Email, Name, Status, Seats, Sites, Expires, Created
/export/ordersID, Email, Amount, Currency, Status, Method, Created
/export/subscriptionsEmail, License Key, Status, Renews / Ends, Cancel At Period End, Created
/export/sitesURL, Status, Email, License Key, Activated, Deactivated, Last Checked

Example

bash
curl -X GET "https://api.packedge.dev/v1/exports/licenses" \
  -H "Authorization: Bearer pk_your_api_key" \
  -o licenses.csv

Sample body:

csv
License Key,Email,Name,Product,Status,Seats,Sites,Created
MYPLUGIN-XXXX-XXXX-XXXX-XXXX,[email protected],John Doe,My Plugin,active,5,2,2026-02-06T00:00:00Z

Notes

  • Timestamps are RFC 3339; amounts are formatted with two decimals
  • Exports stream the full dataset — there is no pagination