Quick Start
Make your first API call in under two minutes.
Step 1: Get an API key
- Sign in at accounts.tools.fast.
- Go to API Keys.
- Click Create API Key -- the key starts with
fast_prod_. - Copy and save it. The full key is only shown once.
export API_KEY="fast_prod_your_key_here"
Free accounts get 500 bonus credits at signup -- enough for hundreds of conversions.
Step 2: Convert a file
Use Convert.FAST to convert between 200+ format pairs.
# 1) Submit -- converts HEIC to JPG
JOB_ID=$(curl -sS -X POST "https://api.tools.fast/convert" \
-H "X-Fast-Api-Key: $API_KEY" \
-F "file=@photo.heic" \
-F "targetFormat=jpg" | jq -r '.id')
echo "Job submitted: $JOB_ID"
# 2) Poll until complete
while true; do
RESPONSE=$(curl -sS "https://api.tools.fast/convert/job/${JOB_ID}" \
-H "X-Fast-Api-Key: $API_KEY")
STATUS=$(echo "$RESPONSE" | jq -r '.status')
echo "Status: $STATUS"
[ "$STATUS" = "Succeeded" ] && break
[ "$STATUS" = "Failed" ] || [ "$STATUS" = "Canceled" ] && exit 1
sleep 1
done
# 3) Download the result
FILENAME=$(echo "$RESPONSE" | jq -r '.output.fileName')
curl -sS "https://api.tools.fast/convert/job/${JOB_ID}/download" \
-H "X-Fast-Api-Key: $API_KEY" -o "./${FILENAME}"
echo "Saved: ${FILENAME}"
# 1) Submit -- converts HEIC to JPG
$job = Invoke-RestMethod -Method Post "https://api.tools.fast/convert" `
-Headers @{ "X-Fast-Api-Key" = $env:API_KEY } `
-Form @{ file = Get-Item "photo.heic"; targetFormat = "jpg" }
Write-Host "Job submitted: $($job.id)"
# 2) Poll until complete
do {
$status = Invoke-RestMethod "https://api.tools.fast/convert/job/$($job.id)" `
-Headers @{ "X-Fast-Api-Key" = $env:API_KEY }
Write-Host "Status: $($status.status)"
if ($status.status -in "Failed", "Canceled") { throw "Job $($job.id) $($status.status)" }
Start-Sleep -Seconds 1
} while ($status.status -ne "Succeeded")
# 3) Download the result
Invoke-RestMethod "https://api.tools.fast/convert/job/$($job.id)/download" `
-Headers @{ "X-Fast-Api-Key" = $env:API_KEY } -OutFile "./$($status.output.fileName)"
Write-Host "Saved: $($status.output.fileName)"
Even faster: Convert.FAST provides a one-line CLI wrapper:
curl -fsSL https://convert.fast/convert.fast.sh -o convert.fast.sh && chmod +x convert.fast.sh
export TOOLS_FAST_API_KEY="$API_KEY"
./convert.fast.sh photo.heic jpg
./convert.fast.sh document.pdf docx
./convert.fast.sh scan.pdf docx output.docx '{"ocr":{"enabled":true}}'
Step 3: Compress a file
Use Compress.FAST to reduce file sizes.
# 1) Submit -- compress a PNG
JOB_ID=$(curl -sS -X POST "https://api.tools.fast/compress" \
-H "X-Fast-Api-Key: $API_KEY" \
-F "file=@screenshot.png" | jq -r '.id')
echo "Job submitted: $JOB_ID"
# 2) Poll until complete
while true; do
STATUS=$(curl -sS "https://api.tools.fast/compress/job/${JOB_ID}" \
-H "X-Fast-Api-Key: $API_KEY" | jq -r '.status')
echo "Status: $STATUS"
[ "$STATUS" = "Succeeded" ] && break
[ "$STATUS" = "Failed" ] || [ "$STATUS" = "Canceled" ] && exit 1
sleep 1
done
# 3) Download the compressed file
curl -sS "https://api.tools.fast/compress/job/${JOB_ID}/download" \
-H "X-Fast-Api-Key: $API_KEY" -o screenshot-compressed.png
echo "Saved: screenshot-compressed.png"
# 1) Submit -- compress a PNG
$job = Invoke-RestMethod -Method Post "https://api.tools.fast/compress" `
-Headers @{ "X-Fast-Api-Key" = $env:API_KEY } `
-Form @{ file = Get-Item "screenshot.png" }
Write-Host "Job submitted: $($job.id)"
# 2) Poll until complete
do {
$status = Invoke-RestMethod "https://api.tools.fast/compress/job/$($job.id)" `
-Headers @{ "X-Fast-Api-Key" = $env:API_KEY }
Write-Host "Status: $($status.status)"
if ($status.status -in "Failed", "Canceled") { throw "Job $($job.id) $($status.status)" }
Start-Sleep -Seconds 1
} while ($status.status -ne "Succeeded")
# 3) Download the compressed file
Invoke-RestMethod "https://api.tools.fast/compress/job/$($job.id)/download" `
-Headers @{ "X-Fast-Api-Key" = $env:API_KEY } -OutFile "screenshot-compressed.png"
Write-Host "Saved: screenshot-compressed.png"
Step 4: Check your credits
Your credit balance is shared across the entire Tools.FAST network. Check it from any tool:
curl -sS "https://api.tools.fast/convert/entitlements/me" \
-H "X-Fast-Api-Key: $API_KEY" | jq
Invoke-RestMethod "https://api.tools.fast/convert/entitlements/me" `
-Headers @{ "X-Fast-Api-Key" = $env:API_KEY }
{
"planId": "free",
"planName": "Free",
"tier": "free",
"totalCredits": 495,
"dailyLimit": 100,
"dailyUsed": 5,
"resetDate": "2026-02-21"
}
What next?
- Authentication -- Production key management, IP allowlists, rotation
- Credits -- How the credit system works, pricing by tier
- Errors -- Error codes and how to handle them
- Convert.FAST API -- Full converter reference with 200+ format pairs
- Compress.FAST API -- Compression options and strategies