API Documentation
Integrate file conversion into your application with our powerful REST API. Supports 100+ file formats with fast, reliable processing.
Base URL
api.freefastconverter.comAuthentication
X-API-Key headerResponse Format
JSONRate Limits
5-200 req/minQuick Start
npm install axios form-dataconst axios = require('axios');
const fs = require('fs');
const FormData = require('form-data');
const API_KEY = 'ffc_live_your_api_key';
const API_URL = 'https://freefastconverter.com/api/external/v1';
async function convertImage(filePath, outputFormat) {
const form = new FormData();
form.append('file', fs.createReadStream(filePath));
form.append('output_format', outputFormat);
form.append('quality', 'balanced');
try {
const response = await axios.post(`${API_URL}/convert/image`, form, {
headers: {
'X-API-Key': API_KEY,
...form.getHeaders()
}
});
return response.data;
} catch (error) {
console.error('Conversion failed:', error.response?.data);
throw error;
}
}
// Usage
const result = await convertImage('./image.png', 'webp');
console.log('Job:', result.job_id, result.status_url);Authentication
All API requests require authentication using an API key. Include your API key in the X-API-Key header.
Request Header
X-API-Key: ffc_live_your_api_key_hereLive Keys
Use live keys for production. Prefix: ffc_live_
Usage is counted against your plan quota.
Test Keys
Use test keys for development. Prefix: ffc_test_
Limited to 10 requests/day. Watermarked output.
API Endpoints
/api/external/v1/convert/imageConversionConvert an uploaded image file
/api/external/v1/convert/documentConversionConvert an uploaded document file
/api/external/v1/convert/videoConversionConvert an uploaded video file
/api/external/v1/convert/audioConversionConvert an uploaded audio file
/api/external/v1/compressConversionCompress an uploaded file
/api/external/v1/jobs/{job_id}JobsGet external API job status
/api/external/v1/jobs/{job_id}/resultJobsDownload the converted file
/api/external/v1/formatsMetadataList supported conversion formats
/api/external/v1/usageAccountGet API usage statistics
/api/external/v1/quotaAccountRemaining daily/monthly quota, rate limit & max file size
/api/external/v1/convert/{media_type}
Convert an uploaded file using an API key. Use image, document, video, or audio as the media type.
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
file | file | Yes | Multipart uploaded file to convert |
input_format | string | No | Source format or auto detection |
output_format | string | Yes | Target format (e.g., webp, mp4, pdf) |
quality | string | No | high, balanced, or low where supported |
Response
{
"job_id": "job_abc123xyz",
"status": "queued",
"input_format": "png",
"output_format": "webp",
"status_url": "/api/external/v1/jobs/job_abc123xyz",
"result_url": "/api/external/v1/jobs/job_abc123xyz/result",
"estimated_wait_seconds": 5
}Use Cases
Image Conversion
Convert between PNG, JPG, WebP, AVIF, GIF, SVG, HEIC and more.
Video Conversion
Transcode videos to MP4, WebM, MOV, AVI and extract audio.
Document Conversion
Convert PDFs, Word docs, spreadsheets and presentations.
Audio Conversion
Convert between MP3, WAV, FLAC, AAC, OGG and more.
Why use the API
The API runs the same conversion engine as the website — so a file you convert via the API is produced by the exact same pipeline, with identical output. It just adds programmatic access so you can build it into your own product or automate at scale.
Identical results
Same workers and settings as the website — byte-for-byte the same output, no quality difference.
300+ formats
Images, documents, video, audio, and compression — one API for every conversion type.
Works anywhere
Plain REST + an X-API-Key header. Call it from any language, server, serverless function, or no-code tool (Zapier, Make, n8n).
Built for scale
Async submit → poll → download. Fire off bulk/batch jobs and collect results as they finish.
Predictable limits
Clear per-plan rate limit and daily/monthly quota — check what is left any time via GET /quota.
Webhooks (Growth+)
Get a callback the moment a job completes instead of polling, for hands-off pipelines.
Use it from AI assistants (MCP)
Connect the converter to Claude Desktop, Claude Code, Cursor, or any MCP-compatible assistant. Then just ask — "convert this HEIC to PNG" or "compress this PDF" — and it runs the conversion through your API key. Powered by the open Model Context Protocol.
Requirements: Node.js 18+ and an API key. No install needed — npx fetches the server automatically.
Add it to your assistant
Claude Desktop — add to claude_desktop_config.json:
{
"mcpServers": {
"freefast-converter": {
"command": "npx",
"args": ["-y", "freefast-converter-mcp"],
"env": { "FFC_API_KEY": "ffc_live_your_key_here" }
}
}
}Claude Code: claude mcp add freefast-converter -e FFC_API_KEY=ffc_live_... -- npx -y freefast-converter-mcp
Tools the assistant gets
convert_fileConvert a local file to any format (image/document/video/audio).
compress_fileShrink an image, PDF, video, or audio file.
get_quotaShow plan tier, rate limit, and remaining quota.
list_formatsList supported input/output formats.
The MCP server simply wraps the same REST endpoints documented on this page, so anything the API can do, your AI assistant can do too.
Error Handling
The API uses standard HTTP status codes. All error responses include a JSON body with error details.
| Status | Code | Description |
|---|---|---|
| 400 | INVALID_REQUEST | Invalid request parameters |
| 401 | UNAUTHORIZED | Invalid or missing API key |
| 403 | FORBIDDEN | Key inactive, or this key's category can't access that media type |
| 413 | FILE_TOO_LARGE | File exceeds your plan's max file size |
| 429 | RATE_LIMITED | Per-minute rate limit or daily/monthly quota exceeded |
| 500 | SERVER_ERROR | Internal server error |
Error Response Format
{
"error": {
"code": "RATE_LIMITED",
"message": "Rate limit exceeded. Please wait before making more requests.",
"retry_after": 60
}
}Webhooks
Receive real-time notifications when jobs complete. Configure webhook URLs in your dashboard or per-request.
Webhook Payload
{
"event": "job.completed",
"job_id": "job_abc123xyz",
"status": "completed",
"download_url": "https://cdn.freefastconverter.com/...",
"timestamp": "2024-01-15T10:30:00Z",
"signature": "sha256=abc123..."
}Verifying Webhook Signatures
Each webhook includes a X-FFC-Signature header. Verify this using your webhook secret to ensure the request is authentic.
Rate Limits
| Plan | Requests/min | Daily | Monthly | Max File |
|---|---|---|---|---|
| Basic | 5 | 50 | 500 | 10 MB |
| Growth | 20 | 300 | 5,000 | 50 MB |
| Scale | 60 | 1,500 | 30,000 | 100 MB |
| Unlimited | 200 | 10,000 | 300,000 | 500 MB |
SDKs & Libraries
JavaScript / Node.js
Official SDK for Node.js and browser environments.
npm install @ffc/sdkPython
Official SDK for Python 3.8+.
pip install ffc-sdkPHP
Official SDK for PHP 8.0+.
composer require ffc/sdkDon't see your language? Use our REST API directly or contribute on GitHub
Related API and product pages
Move between API pricing, public converters, compression tools, privacy details, and support while planning an integration.
All file converters
Convert PDFs, images, video, audio, archives, subtitles, and email files.
Compression tools
Reduce image, PDF, video, and audio file size with visible compression levels.
Plans and credits
Compare monthly credits, file-size limits, support, and account options.
API pricing
Review request limits, monthly quotas, webhooks, and developer plan options.
API documentation
Use conversion and compression endpoints in app and automation workflows.
Privacy policy
Read how file handling, account data, cookies, and retention are described.
Contact support
Ask about a conversion issue, billing question, API workflow, or partnership.