API
Every file tool is available over a simple REST API. Jobs run asynchronously on the priority queue: create a run, poll it, download the results.
Authentication
Create an API key in your account and send it as a bearer token. Keys are shown once; we only store a hash.
Authorization: Bearer tsk_…
1. Create a run
POST https://toolseta.com/api/v1/tools/{tool}/runs with multipart/form-data: one or more files[] and optional options[...].
curl -X POST https://toolseta.com/api/v1/tools/invoice-to-excel/runs \ -H "Authorization: Bearer $TOOLSETA_KEY" \ -H "Accept: application/json" \ -F "files[]=@invoice-1.pdf" \ -F "files[]=@invoice-2.pdf"
Response 202 Accepted:
{"data": {"id": "9f0c…", "status": "pending", "progress": 0, "files": []}}
2. Poll the run
GET https://toolseta.com/api/v1/runs/{id} until status is completed or failed. Completed runs list result files with signed, expiring download URLs.
{"data": {"id": "9f0c…", "status": "completed", "progress": 100,
"files": [{"name": "invoices-2026-09-27.xlsx", "size": 18230, "url": "https://toolseta.com/files/…/download?expires=…&signature=…"}]}}
Errors & limits
401invalid key ·403plan without API access ·422validation error (details inerrors) ·429rate or daily limit reached.- 120 requests per minute per key. Daily processing limits are the same as your plan.
Tools
| Tool | Accepts | Options |
|---|---|---|
pdf-compressor |
pdf (multiple) |
options[level] strong | recommended | light |
merge-pdf |
pdf (multiple) | — |
split-pdf |
options[mode] ranges | everyoptions[ranges] text |
|
pdf-to-images |
options[format] png | jpgoptions[dpi] 72 | 150 | 300 |
|
images-to-pdf |
jpg, jpeg, png, webp (multiple) |
options[page_size] a4 | letter | fitoptions[margin] none | small | large |
pdf-to-text |
pdf (multiple) |
options[layout] checkbox |
pdf-to-csv |
pdf (multiple) |
options[delimiter] comma | semicolon | tab |
pdf-to-excel |
pdf (multiple) | — |
invoice-to-excel |
pdf, jpg, jpeg, png (multiple) | — |
ocr |
pdf, jpg, jpeg, png (multiple) |
options[language] eng | pol | deu | spa | eng+pol+deu+spa |
image-compressor |
jpg, jpeg, png, webp (multiple) |
options[quality] number |
image-resizer |
jpg, jpeg, png, webp (multiple) |
options[width] numberoptions[height] numberoptions[fit] contain | cover | stretch |
jpg-to-png |
jpg, jpeg (multiple) | — |
png-to-jpg |
png (multiple) |
options[quality] numberoptions[background] ffffff | 000000 |