POST /v1/documents/xlsx-to-csv
Excel to CSV
One sheet or every sheet, as plain CSV that any tool can read.
Get CSV out of a spreadsheet now No key, no code — 3 credits either way.
curl -X POST "$DOATHING_API/v1/documents/xlsx-to-csv" \
-H "x-api-key: $DOATHING_KEY" \
-H "content-type: application/json" \
-d '{"file": {"filename": "book.xlsx", "data_b64": "<base64>", "content_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}, "options": {"sheet": "all"}}'
One sheet or every sheet, as plain CSV that any tool can read.
Extract one or all worksheets from an .xlsx workbook as CSV.
Input
Send a file object with base64 data_b64, its content_type and a filename. Accepted types: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.
The declared type is not trusted — the bytes are sniffed and a contradiction is rejected rather than corrected.
Response
The result carries your remaining balance alongside it, so you can track spend without a second call.
{
"sheets": [
{
"name": "Sheet1",
"csv": "Name,Qty\nBolt,4",
"rows": 3
}
],
"count": 2,
"sheet_names": [
"Sheet1",
"Sheet2"
],
"request_id": "37f01edb-0163-42a1-ac51-0acaef979800",
"credits_remaining": 96
}
Cost
3 credits per call, whether it is run from the site or from the API — the credential differs, the price does not. A new account starts with 20 credits.
A rejected request still costs a credit: the authorizer decrements before the tool validates. A call rejected for a missing or invalid key is free.
Parameters
Generated from the endpoint’s own validation, so this is exactly what it accepts. A body field goes at the top level; an option goes inside options.
| Name | In | Type | Default | Notes |
|---|---|---|---|---|
| delimiter | options | string | "," | Single-character output delimiter. |
| sheet | options | string | "first" | first, all, or a sheet name. |