Create Export
Endpointโ
POST /v1/exports
Requires an API key with the reports:read scope.
Request Bodyโ
| Field | Type | Required | Description |
|---|---|---|---|
dataset | string | Yes | What the file is about โ see the dataset list |
format | string | No | csv (default), xlsx or pdf; myob for the myob dataset |
columns | array | No | Only these columns, in this order. Omit for the usual ones. An unknown column is refused with the valid list |
date_from | string | No | Only rows from this date (YYYY-MM-DD). Without any dates a year of history is used |
date_to | string | No | Only rows up to this date (YYYY-MM-DD) |
status | string | No | Only rows with this status |
payment_status | string | No | Bookings only |
customer_id | integer | No | Bookings only โ one customer's rows |
experience_id | integer | No | Sessions only โ one experience's sessions |
group_by | string | No | PDF only. Break the table into sections by this column |
title | string | No | What to call the file |
Responseโ
A small export is built immediately and comes back completed with a download_url. A larger one
comes back pending โ poll Get Export until it is completed.
curl -X POST "https://app.equipdash.com/api/v1/exports" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"dataset": "bookings",
"format": "xlsx",
"columns": ["id", "customer", "start_date", "total", "payment_status"],
"date_from": "2026-06-01",
"date_to": "2026-08-31",
"title": "Summer bookings"
}'
{
"data": {
"id": 42,
"dataset": "bookings",
"format": "xlsx",
"title": "Summer bookings",
"status": "completed",
"row_count": 318,
"file_size": 24576,
"expires_at": "2026-08-28T09:00:00+00:00",
"created_at": "2026-08-21T09:00:00+00:00",
"download_url": "https://app.equipdash.com/exports/42/download?expires=..&signature=.."
}
}
Errorsโ
422 export_not_allowed covers every refusal, with a message saying what to change:
- more rows than one file can hold โ narrow the dates or filter by status
- too many rows for a PDF โ use a spreadsheet
- a column that does not exist โ the valid columns are listed in the message
- the caller may not see that dataset
- too many exports this hour, or too many already building