Skip to main content
API Reference

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.com

Authentication

X-API-Key header

Response Format

JSON

Rate Limits

5-200 req/min

Quick Start

Install
npm install axios form-data
Example: Convert Image
const 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_here

Live 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

POST/api/external/v1/convert/imageConversion

Convert an uploaded image file

POST/api/external/v1/convert/documentConversion

Convert an uploaded document file

POST/api/external/v1/convert/videoConversion

Convert an uploaded video file

POST/api/external/v1/convert/audioConversion

Convert an uploaded audio file

POST/api/external/v1/compressConversion

Compress an uploaded file

GET/api/external/v1/jobs/{job_id}Jobs

Get external API job status

GET/api/external/v1/jobs/{job_id}/resultJobs

Download the converted file

GET/api/external/v1/formatsMetadata

List supported conversion formats

GET/api/external/v1/usageAccount

Get API usage statistics

GET/api/external/v1/quotaAccount

Remaining daily/monthly quota, rate limit & max file size

POST

/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

ParameterTypeRequiredDescription
filefileYesMultipart uploaded file to convert
input_formatstringNoSource format or auto detection
output_formatstringYesTarget format (e.g., webp, mp4, pdf)
qualitystringNohigh, balanced, or low where supported

Response

202 Accepted
{
  "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.

PNGJPGWebPAVIFGIFSVGHEICICOBMP

Video Conversion

Transcode videos to MP4, WebM, MOV, AVI and extract audio.

MP4WebMMOVAVIMKVGIF

Document Conversion

Convert PDFs, Word docs, spreadsheets and presentations.

PDFDOCXXLSXPPTXTXTHTML

Audio Conversion

Convert between MP3, WAV, FLAC, AAC, OGG and more.

MP3WAVFLACAACOGGM4A

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_file

Convert a local file to any format (image/document/video/audio).

compress_file

Shrink an image, PDF, video, or audio file.

get_quota

Show plan tier, rate limit, and remaining quota.

list_formats

List 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.

StatusCodeDescription
400INVALID_REQUESTInvalid request parameters
401UNAUTHORIZEDInvalid or missing API key
403FORBIDDENKey inactive, or this key's category can't access that media type
413FILE_TOO_LARGEFile exceeds your plan's max file size
429RATE_LIMITEDPer-minute rate limit or daily/monthly quota exceeded
500SERVER_ERRORInternal 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

PlanRequests/minDailyMonthlyMax File
Basic55050010 MB
Growth203005,00050 MB
Scale601,50030,000100 MB
Unlimited20010,000300,000500 MB

SDKs & Libraries

🟨

JavaScript / Node.js

Official SDK for Node.js and browser environments.

npm install @ffc/sdk
🐍

Python

Official SDK for Python 3.8+.

pip install ffc-sdk
🐘

PHP

Official SDK for PHP 8.0+.

composer require ffc/sdk

Don't see your language? Use our REST API directly or contribute on GitHub