Example request and result
You send
curl -X POST …/v1/convert \
-H "x-api-key: $KEY" \
-d '{"data": [
{"name": "Alice", "plan": "Pro",
"address": {"city": "Austin"}, "seats": 12},
{"name": "Bob", "plan": "Free",
"address": {"city": "Leeds"}, "seats": 3}
]}' -o team.xlsx
You get team.xlsx
| A | B | C | D | |
| 1 | Name | Plan | Address.City | Seats |
|---|---|---|---|---|
| 2 | Alice | Pro | Austin | 12 |
| 3 | Bob | Free | Leeds | 3 |
Nested address.city became its own column. No spreadsheet code on your side.
- Both directions, one key. JSON or CSV to Excel, and Excel or CSV back to JSON.
- Nested data, handled. Objects become dot-notation columns, with the same rules as the web tool.
- Nothing stored. Each request runs in AWS Lambda and ends there. We don't keep your data.
Start free. Go Pro when you ship.
Pro works out to under a tenth of a cent per conversion.
We use it for your account and sign-in links. Your key appears right here, once, so save it.
Free
$0
Try it on your real data.
- 10 requests a month
- 5 requests per second
- Both endpoints: to Excel and to JSON
- Nested JSON flattened into columns
- No credit card
- No-code webhooks
For production
Pro
$19/month
Ship it inside your product.
- 20,000 requests a month
- 20 requests per second
- Both endpoints: to Excel and to JSON
- Nested JSON flattened into columns
- No-code webhooks: Zapier, Make or n8n posts JSON, an Excel file lands in the inbox
- Cancel anytime from your account
Already have a key? Sign in to see it or manage your subscription.
What people build with it
- Export buttons. Add "Download as Excel" to a dashboard or admin panel without writing spreadsheet code.
- Automated reports. With Pro webhooks, a Zap or n8n flow posts the day's data and a formatted Excel file arrives by email.
- Spreadsheet imports. Turn the Excel or CSV files your users upload into JSON your app can read.
API reference
Two endpoints, one key. Send your key in the x-api-key header; both share your plan's quota.
Convert JSON or CSV to Excel
POST https://veqix61rpf.execute-api.us-east-1.amazonaws.com/dev/v1/convert
x-api-key: <your API key>
Content-Type: application/json
{"data": [{"name": "Alice", "age": 30}, {"name": "Bob", "age": 25}]}
Returns a binary .xlsx file (same output as the web converter, including headers and formatting). A single JSON object is automatically wrapped in an array.
Example
curl -X POST https://veqix61rpf.execute-api.us-east-1.amazonaws.com/dev/v1/convert \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"data": [{"name": "Alice", "age": 30}]}' \
-o converted.xlsx
Convert Excel or CSV to JSON
The reverse direction: same key, same quota, no separate signup. The file field is base64-encoded for xlsx, or raw text for csv.
POST https://veqix61rpf.execute-api.us-east-1.amazonaws.com/dev/v1/excel-to-json
x-api-key: <your API key>
Content-Type: application/json
{"format": "xlsx", "file": "<base64-encoded .xlsx contents>"}
Returns {"data": [...]}: the header row becomes object keys, one JSON object per following row.
Example
curl -X POST https://veqix61rpf.execute-api.us-east-1.amazonaws.com/dev/v1/excel-to-json \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"format\": \"xlsx\", \"file\": \"$(base64 -w0 report.xlsx)\"}"
No-code webhooks with Zapier (Pro)
Zapier has no built-in step for turning JSON into a spreadsheet. Pro accounts get an inbound webhook URL that fills the gap with zero code: Zapier posts JSON, JSON Support converts it and emails back a formatted .xlsx file.
- Create a webhook. On the account page, create a webhook and set the email address that should receive the converted file.
- Add a "Webhooks by Zapier: POST" action. In your Zap, use Zapier's built-in Webhooks action, set the method to
POST, and paste in your webhook URL. - Set the payload. Configure the request body as
{"data": [...]}, an array of objects built from your Zap's trigger data. - Turn it on. Every time the Zap fires, an Excel file lands in the destination inbox.
It works the same way with any no-code tool that can send an outbound webhook, such as Make, n8n or IFTTT.