API Documentation
Convert files between 500+ format pairs with a simple REST API. Video, audio, documents, images, ebooks, archives, and more.
Quick Start
Get converting in two steps. No credit card required.
1 Get a free API key
curl -X POST https://changethisfile.com/v1/keys/free \
-H "Content-Type: application/json" \
-d '{"email": "you@example.com"}'
Response:
{
"api_key": "ctf_sk_abc123...",
"plan": "free",
"monthly_limit": 100
}
2 Convert a file
curl -X POST https://changethisfile.com/v1/convert \
-H "Authorization: Bearer ctf_sk_abc123..." \
-F "file=@document.docx" \
-F "target=pdf" \
-o document.pdf
That's it. The converted file is returned as a binary download.
Anonymous API
Convert a file without authentication. Rate-limited by IP address. Good for quick testing.
| Field | Type | Required | Description |
|---|---|---|---|
file | file | Yes | The file to convert (max 25 MB) |
source | string | Yes | Source format (e.g. docx, mkv) |
target | string | Yes | Target format (e.g. pdf, mp4) |
Example
curl -X POST https://changethisfile.com/api/convert \
-F "file=@input.docx" \
-F "source=docx" \
-F "target=pdf" \
-o output.pdf
Authenticated API
Convert a file with an API key. Higher rate limits, larger files, and monthly quota tracking.
Send your API key in the Authorization header:
Authorization: Bearer ctf_sk_your_api_key
| Field | Type | Required | Description |
|---|---|---|---|
file | file | Yes | The file to convert |
target | string | Yes | Target format (e.g. mp3, jpg) |
Example
curl -X POST https://changethisfile.com/v1/convert \
-H "Authorization: Bearer ctf_sk_your_key" \
-F "file=@video.mkv" \
-F "target=mp4" \
-o video.mp4
Response
On success, returns the converted file as a binary download with these headers:
| Header | Example |
|---|---|
Content-Disposition | attachment; filename="converted.mp4" |
Content-Type | video/mp4 |
Check Usage
curl https://changethisfile.com/v1/usage \
-H "Authorization: Bearer ctf_sk_your_key"
{
"plan": "free",
"conversions_this_month": 42,
"monthly_limit": 100,
"max_file_size": 100000000,
"rate_per_minute": 10
}
Tool API
Run file operations like merge, split, and compress. Accepts one or more files and returns the processed result.
| Field | Type | Required | Description |
|---|---|---|---|
files | file[] | Yes | One or more files to process (use multiple files fields) |
category | string | Yes | Tool category (e.g. pdf, image, video) |
action | string | Yes | Operation to perform (e.g. merge, split, compress) |
Example: Merge PDFs
curl -X POST https://changethisfile.com/api/tool \
-F "files=@page1.pdf" \
-F "files=@page2.pdf" \
-F "files=@page3.pdf" \
-F "category=pdf" \
-F "action=merge" \
-o merged.pdf
Batch API
Convert multiple files in a single request. Returns a ZIP archive containing all converted files.
| Field | Type | Required | Description |
|---|---|---|---|
files | file[] | Yes | Multiple files to convert (use multiple files fields) |
target | string | Yes | Target format for all files |
Example: Convert multiple images
curl -X POST https://changethisfile.com/api/batch-convert \
-F "files=@photo1.png" \
-F "files=@photo2.png" \
-F "files=@photo3.png" \
-F "target=jpg" \
-o converted.zip
Formats
Returns all supported conversion routes. No authentication required.
curl https://changethisfile.com/v1/formats
{
"formats": {
"png": [
{ "target": "jpg", "engine": "canvas", "tier": "free" },
{ "target": "webp", "engine": "canvas", "tier": "free" }
],
"docx": [
{ "target": "pdf", "engine": "libreoffice", "tier": "free" }
]
},
"total_routes": 500
}
Supported categories include images, video, audio, documents, spreadsheets, ebooks, archives, data formats, and fonts.
Error Codes
All errors return JSON with an error field describing what went wrong.
{
"error": "Unsupported conversion: bmp to mp4"
}
| Status | Code | Meaning |
|---|---|---|
400 | Bad Request | Missing required fields (file, target), unsupported conversion route, or invalid form data |
401 | Unauthorized | Missing or invalid API key (authenticated endpoints only) |
413 | Payload Too Large | File exceeds plan limit (25 MB free web, 100 MB free API, 500 MB Pro) |
429 | Too Many Requests | Rate limit exceeded or monthly/daily quota reached. Check retry_after field. |
502 | Bad Gateway | Conversion service temporarily unavailable. Retry after a few seconds. |
Rate limit response
{
"error": "Rate limit exceeded. Max 5 conversions per minute.",
"retry_after": 60
}
Quota exceeded response
{
"error": "Monthly quota exceeded",
"limit": 100,
"used": 100,
"plan": "free",
"upgrade_url": "https://changethisfile.com/dashboard#upgrade"
}
Rate Limits & Plans
Anonymous (no API key)
| Limit | Value |
|---|---|
| Daily conversions | 5 |
| Rate limit | 5 requests/minute |
| Max file size | 25 MB |
Authenticated (API key)
| Plan | Monthly Conversions | Max File Size | Rate Limit | Price |
|---|---|---|---|---|
| Free | 100 | 100 MB | 10/min | $0 |
| Pro | Unlimited | 500 MB | 60/min | $9/mo |
| Starter | 2,500 | 500 MB | 30/min | $15/mo |
| Growth | 10,000 | 2 GB | 60/min | $49/mo |
| Scale | 50,000 | 5 GB | 120/min | $149/mo |
Need more conversions? Buy credit packs for pay-as-you-go usage beyond your plan limits.
OpenAPI Spec
A machine-readable OpenAPI 3.0 specification is available at:
https://changethisfile.com/v1/openapi.yaml
Use it with tools like Postman, Swagger UI, or any OpenAPI-compatible client to explore and test the API.
Questions? Email cosmo@changethisfile.com
Get your API key →