API Documentation
Process and clean CSV files programmatically — no UI required.
Authentication
All requests require an API key passed as a Bearer token in the
Authorization header.
Generate your key in Account settings.
Authorization: Bearer csviser_xxxxxxxxxxxxxxxxxxxx
Keys start with csviser_ and are shown only once at creation — store them securely.
Endpoint
https://csviser.com/api/v1/process
Accepts a CSV or XLSX file, applies the requested operations, and returns the processed file as a download. Files are processed entirely in memory — nothing is stored on our servers.
Parameters
Send as multipart/form-data.
| Parameter | Type | Description |
|---|---|---|
| file | File * | CSV or XLSX file to process. XLSX is converted to CSV automatically. |
| fix[] | String[] |
One or more operations to apply. Repeat the parameter for multiple values.
Available values:
|
| dedup | String | Pass 1 to enable deduplication — all exact duplicate rows are removed, keeping only the first occurrence of each. |
| output_format | String |
Output format: csv (default),
xlsx,
or json.
|
| webhook_url | String |
If provided, the request returns immediately with {"queued":true,"job_id":"..."}
and the processed file is POSTed to this URL asynchronously in the background.
Requests to private/internal IPs are blocked.
|
| webhook_headers | String (JSON) |
JSON object of extra headers to include in the webhook request. Used for endpoint authentication.
Example: {"Authorization":"Bearer tok","X-Secret":"abc"}.
Only applied when webhook_url is set.
|
Limits
| Plan | Max rows per file |
|---|---|
| Free | 500 rows |
| Pro | Unlimited |
429 Too Many Requests.
The window resets after 60 seconds.
Error responses
Errors are returned as JSON with an appropriate HTTP status code.
| Status | Meaning |
|---|---|
| 401 Unauthorized | Missing or invalid API key. |
| 403 Forbidden | File exceeds the row limit for your plan. |
| 429 Too Many Requests | Rate limit exceeded — more than 10 requests per minute from this API key. |
| 422 Unprocessable | Missing file parameter or invalid XLSX. |
| 500 Server Error | Processing failed. Check the error field for details. |
{"error": "Row limit exceeded. This file has 1200 rows; free plan supports up to 500."}
Examples
Basic cleanup (blank rows + trim + nulls)
curl -X POST https://csviser.com/api/v1/process \
-H "Authorization: Bearer csviser_xxxxxxxxxxxxxxxxxxxx" \
-F "[email protected]" \
-F "fix[]=blank_rows" \
-F "fix[]=trim" \
-F "fix[]=nulls" \
-o cleaned.csv
Full cleanup + dedup + export as XLSX
curl -X POST https://csviser.com/api/v1/process \
-H "Authorization: Bearer csviser_xxxxxxxxxxxxxxxxxxxx" \
-F "[email protected]" \
-F "fix[]=blank_rows" \
-F "fix[]=trim" \
-F "fix[]=nulls" \
-F "fix[]=encoding" \
-F "fix[]=line_endings" \
-F "fix[]=delimiter" \
-F "dedup=1" \
-F "output_format=xlsx" \
-o cleaned.xlsx
Export as JSON
curl -X POST https://csviser.com/api/v1/process \
-H "Authorization: Bearer csviser_xxxxxxxxxxxxxxxxxxxx" \
-F "[email protected]" \
-F "fix[]=trim" \
-F "output_format=json" \
-o data.json
Send processed file to a webhook endpoint
Instead of downloading the result, POST it directly to your endpoint. Works with Zapier, Make, n8n, or your own backend.
curl -X POST https://csviser.com/api/v1/process \
-H "Authorization: Bearer csviser_xxxxxxxxxxxxxxxxxxxx" \
-F "[email protected]" \
-F "fix[]=blank_rows" \
-F "fix[]=trim" \
-F "output_format=json" \
-F "webhook_url=https://hooks.zapier.com/hooks/catch/123/abc/" \
-F 'webhook_headers={"Authorization":"Bearer your-token"}'
API responds immediately — file is processed and delivered in the background:
{"queued": true, "job_id": "b2d3f1a8-..."}
Create a free account to get your API key.
Sign up free →