API Reference
Programmatic access to the Shopify CSV Cleaner. Requires a Pro subscription.
Authentication
Pass your API key in the X-Api-Key request header, or use a JWT Bearer token via the Authorization header. Both require an active Pro subscription.
X-Api-Key: YOUR_API_KEY\n# or\nAuthorization: Bearer YOUR_JWTEndpoints
/api/processUpload a CSV file and receive a cleaned version. Multipart form data.
curl -X POST https://shopifycsvclean.com/api/process \
-H "X-Api-Key: YOUR_API_KEY" \
-F "file=@products.csv" \
-F 'options={"fix_encoding":true,"generate_handles":true}'Response
{
"status": "success",
"rows": 120,
"total_errors": 4,
"error_count": 2,
"warning_count": 2,
"download": "https://...",
"filename": "cleaned_products.csv",
"diff_url": "/api/diff/diff_cleaned_products.csv.json",
"source_detected": "shopify",
"issues": [ ... ],
"error_previews": { ... }
}Options (all default true):
fix_encoding— Repair UTF-8 byte sequencesgenerate_handles— Slugify titles into Handle columngenerate_skus— Build unique SKUs from handle + optionsfix_image_urls— Prepend https:// to bare image URLsnormalize_variants— Propagate Option names across rowsfix_price— Strip symbols, fix comma decimals
/api/templatesReturn the list of blank Shopify CSV templates.
curl https://shopifycsvclean.com/api/templates/api/templates/{id}Download a blank template CSV by ID (general, apparel, digital-downloads, food-beverage, electronics).
/api/historyReturn the processing history for the authenticated Pro user (last 50 jobs).
curl https://shopifycsvclean.com/api/history \
-H "Authorization: Bearer YOUR_JWT"/api/auth/generate-api-keyGenerate or rotate the API key for the authenticated Pro account.
curl -X POST https://shopifycsvclean.com/api/auth/generate-api-key \
-H "Authorization: Bearer YOUR_JWT"Error responses
All errors return JSON with a detail key.
{
"detail": "File too large. Maximum size is 10 MB."
}| Status | Meaning |
|---|---|
| 400 | Bad request — invalid file or parameters |
| 401 | Missing or invalid credentials |
| 402 | Payment required — Pro subscription needed |
| 413 | File too large (max 10 MB) |
| 429 | Rate limit exceeded |
| 500 | Internal server error |
Rate limits
Pro/API-key requests: 60 req/min per IP. Unauthenticated requests: 10 req/min per IP. Exceeded requests receive a 429 with a Retry-After: 60 header.