Reports API
Overview
The Reports API starts an asynchronous export job. Rather than paging through data yourself, request an export and it is emailed to the address you specify once it's ready.
Authentication
All endpoints require API key authentication:
X-API-Key: your-api-key-here
Request an export
POST /api/reports/export
Request body
| Field | Type | Required | Description |
|---|---|---|---|
receiver_email | string (email) | Yes | Where the completed export is sent. |
report_type | string | Yes | One of campaigns, marketing_email_details, subscribers, form_submissions. |
output_format | string | Yes | Currently only csv. |
filters | object | Yes | Export-type-specific filter key/value pairs. |
Example request
curl -X POST \
https://apis.app.stack9.co/api/reports/export \
-H 'X-API-Key: your-api-key-here' \
-H 'Content-Type: application/json' \
-d '{
"receiver_email": "ops@example.com",
"report_type": "campaigns",
"output_format": "csv",
"filters": {
"start_date": "2026-01-01T00:00:00Z",
"end_date": "2026-03-31T23:59:59Z"
}
}'
Example response
{ "messageId": "msg_9kL3mP5n" }
note
The exact shape of filters is export-type-specific and not fully enumerated in the public contract beyond being a free-form object. The response only confirms the export job was accepted (messageId) — there is no polling or status endpoint documented here; the finished export arrives by email to receiver_email.
Related
- Marketing Events API — query engagement data directly instead of exporting a CSV.
- Forms API — the
form_submissionsreport type exports data captured by the forms you build there.