---
title: "Read an Excel .xlsx or legacy .xls file (file_base64), incl. HomeTax downloads, into rows or header-keyed records per sheet"
method: POST
path: "/api/xlsx-read"
tags: ["Data"]
---

# Read an Excel .xlsx or legacy .xls file (file_base64), incl. HomeTax downloads, into rows or header-keyed records per sheet

`POST /api/xlsx-read`

## Request

- Base URL: `https://toolsthatdontupload.com`
- URL: `https://toolsthatdontupload.com/api/xlsx-read`
- Auth: one of:
  - none
  - API key in header `X-API-Key`

## Request body

- object
  - `file_base64` string, required: The .xlsx file, base64-encoded (max 10 MB). Legacy .xls is not supported.
  - `sheet` union: Sheet name or 0-based index; default all sheets
    - string
    - integer
  - `header` union: true = first row is the header; a number = that row (1-based) is the header
    - boolean
    - integer
  - `max_rows` integer
  - `dates` 'iso' | 'serial'
  - `password` string: Only for password-protected .xls files

## Response `200`

Success (JSON)

## Other responses

- `400`: Invalid input (problem+json)

---

[API](https://skmtc.dev/toolsthatdontupload/apis/tools-that-don-t-upload-api.md) · [All operations](https://skmtc.dev/toolsthatdontupload/apis/tools-that-don-t-upload-api/llms.txt) · [OpenAPI document](https://skmtc.dev/toolsthatdontupload/apis/tools-that-don-t-upload-api/revisions/fc4cea318919?raw)
