Preview. Part of the Migration API — in active design and not yet generally
available. Endpoints and payloads may change. See the
overview.
Authentication
Requires anx-api-key header. See Authentication.
Query parameters
Which sheet to export. Provide it to download a single sheet as
.csv. Omit it
to download every sheet in the workbook as a .zip. (Single-sheet CSV comes
first in preview; the multi-sheet ZIP is still being built.)valid (the default — a cleaning product shouldn’t emit dirty rows) returns
only fully clean rows: any row with even one cell that failed validation is
excluded entirely, so the row count can be lower than the workbook’s total.
all returns every row, including those with invalid cells.Response
200 OK. A single sheet returns Content-Type: text/csv; a whole workbook
returns application/zip. Both carry a Content-Disposition attachment header,
and the body is streamed.
Errors
| Status | Meaning |
|---|---|
400 | filter not one of valid / all. |
401 | API key missing or invalid. |
404 | No such sheet, or the company isn’t in your account. |
429 | Rate limit hit — back off and retry. |
500 | Server error. |
Example
Into your own storage
The endpoint hands you the file in the HTTP response — Vern doesn’t push it anywhere. To land the clean CSV in your own bucket, pull it from your backend and pipe it straight into object storage. The body streams, so you never have to buffer the whole file:x-api-key server-side — run this from your backend, never the browser. Vern
never receives your storage credentials; your backend relays the bytes.
Prefer Vern to deliver directly into a bucket you own — via a presigned URL
or stored bucket credentials — instead of relaying it yourself? That’s not
available today. Tell us at vish@vern.so if you’d use it.
Next
- Export to a destination — push data instead of downloading it.
- Errors & idempotency — shared conventions.