Photos, videos and documents carry hidden details: GPS positions, phone and camera serial numbers, author names, editing software, dates, and labels saying an AI made them. When a person shares one file, they can clean it by hand. When files move through software (user uploads, a document workflow, a media library), nobody is there to remember. A metadata removal API does it automatically, as one step in the pipeline.
What is a metadata removal API?
It's a web service you send a file to. It sends back a copy with the hidden details removed, and the visible content unchanged. Ours takes images, videos, PDFs and camera RAW files through a single endpoint, and reports what it found and removed in each one.
Who needs one?
- Apps and sites that accept uploads: marketplaces, dating apps, forums, real-estate and classified sites. A seller's listing photo can carry the GPS position of their home. Cleaning every upload protects users who never think about it.
- Agencies and creators publishing AI images and video: generator tools write Content Credentials and AI labels into files, and platforms read them. Cleaning before publishing is one step in the workflow.
- Legal, HR and finance teams sending documents: PDFs carry the author's name, the software, edit dates and sometimes the photos' own GPS. A contract or report should say what's on the page, not who drafted it and when.
- Video and photo archives: drone and dashcam footage carries position tracks and serial numbers; RAW files carry camera serial numbers and owner names.
Why not strip metadata in your own code?
You can, and for images it's a few lines. We tested the common ways, and they fail silently:
- The usual Python and Node.js image code turns phone photos sideways and lowers JPEG quality (Python, Node.js).
- ExifTool's PDF edits can be undone, and it can't write WebM or MKV video at all. Every common PDF recipe we tried left the GPS position of a photo inside the PDF (PDF in Python).
- The popular ffmpeg shortcut copies iPhone's hidden face-detection tracks into the "clean" file (what ffmpeg and ExifTool miss).
In each case the command reports success. The difference with an API like ours is that every output is read again and checked before it's called clean.
What does our API remove?
| Kind | Formats | What's removed |
|---|---|---|
| Images | JPEG, PNG, WebP | EXIF, GPS, XMP, IPTC, C2PA Content Credentials, AI prompts and generation settings |
| Video | MP4, MOV, M4V, 3GP, MKV, WebM | GPS, device, dates, C2PA, XMP, author, hidden per-frame data tracks (such as iPhone face detection) |
| Author, software, dates, XMP, C2PA, metadata inside embedded photos, digital signatures (optional) | ||
| RAW | CR2, CR3, NEF, ARW, RAF, RW2, DNG | GPS, serial numbers, owner, dates, shutter count, XMP |
Several image APIs we looked at handle only JPEG and PNG. If videos from phones, PDFs from Word or RAW files from cameras pass through your system too, they carry the same kind of details.
How does it work?
One call, the same for every file type:
curl -X POST https://api.aimetadatacleaner.com/v1/clean \
-H "Authorization: Bearer $AMC_API_KEY" \
-F [email protected]
The response is a report, plus a one-time link to the cleaned file:
{
"status": "clean",
"file_type": "MOV",
"kind": "video",
"removed": ["Device make and model", "GPS location", "Software / OS version"],
"kept": [],
"left": {},
"download_url": "https://api.aimetadatacleaner.com/v1/files/45e1e41d...",
"expires_in": 900,
"usage": { "jobs_used": 12, "job_limit": 10000 }
}
cleanmeans the cleaned file was read again and nothing identifying was found, and the content was checked: video and audio identical, RAW sensor data and white balance identical, image pixels identical, PDF still opens.unverifiedmeans a file was produced but can't be proven clean, and the report says why. For example, a Sony A7 V RAW file comes back unverified today, because no raw decoder can read that camera yet.- HTTP 422 means the file couldn't be cleaned without risking damage. No file is returned, and the job isn't counted.
keptlists anything left on purpose, with the reason. RAW files keep camera make, model and lens, because raw editors need them.
How do I call it from Python?
import os, requests
API = "https://api.aimetadatacleaner.com"
headers = {"Authorization": "Bearer " + os.environ["AMC_API_KEY"]}
with open("scan.pdf", "rb") as f:
r = requests.post(f"{API}/v1/clean", headers=headers, files={"file": f})
r.raise_for_status()
report = r.json()
if report["status"] == "clean":
cleaned = requests.get(report["download_url"])
open("scan-clean.pdf", "wb").write(cleaned.content)
else:
print("Not verified clean:", report["left"], report.get("problems"))
How do I call it from Node.js?
Node 18 or newer:
import { readFile, writeFile } from 'node:fs/promises';
const form = new FormData();
form.append('file', new Blob([await readFile('photo.jpg')]), 'photo.jpg');
const res = await fetch('https://api.aimetadatacleaner.com/v1/clean', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.AMC_API_KEY}` },
body: form,
});
const report = await res.json();
if (!res.ok) throw new Error(report.error.message);
const file = await fetch(report.download_url);
await writeFile('photo-clean.jpg', Buffer.from(await file.arrayBuffer()));
To clean a whole folder, see how to bulk remove metadata. It has a script we ran on 12 mixed files.
To clean a whole folder, see our bulk metadata guide, which has a script we ran on 12 mixed files. For large videos, see the video API guide, which streams uploads up to 2GB.
Can I keep image quality or PDF signatures?
Add these as query parameters or form fields:
mode=strip(images): remove metadata only and keep every pixel byte-for-byte identical. The default,mode=reencode, redraws the image so none of the original file's bytes remain, which also makes it harder to match with reverse image search. The difference is invisible.format=jpeg|png|webp(images): change the output format.keep_signature=true(PDF): keep digital signatures. They still name the signer, and they'll show as invalid, because cleaning changes the file.
How much does it cost?
The API comes with the Business plan: $49 a month, or $449 a year:
- 10,000 files a month
- 1TB uploaded a month
- files up to 2GB
- 60 requests a minute
Files that fail or aren't supported don't count. Keys are created on the API keys page, up to five. Business also includes everything in Pro on the website, with larger batches.
What happens to my files?
Files are cleaned on our server in Germany and never kept. The upload is deleted as soon as cleaning finishes. The cleaned file is deleted once you download it, or after 15 minutes if you don't. The download link works once and needs no key, so you can hand it to another service. We record file type, size and result for billing, never the file name or contents.
Can I use it without writing code?
Yes. The same cleaning works from Claude, Cursor, VS Code and other AI assistants. Add our MCP add-on with your key, then ask: "Remove the location from the videos in my Downloads folder." Clean copies are saved next to the originals.
Frequently asked questions
Is there a free metadata removal API?
Our API is part of the Business plan and has no free tier. For free options: our website cleans images in your browser for free (10 a day with a free account), and ExifTool is free if you run it yourself. It handles images well, but its PDF edits can be undone and its RAW strip can damage files unless you target it carefully.
Can I use the metadata removal API from Python?
Yes. It's a plain HTTP upload, so requests is all you need. Post the file to /v1/clean with your key in the Authorization header, then download the cleaned file from download_url. The full example is above.
Does the API reduce image or video quality?
Video is never re-encoded: the video and audio data are copied as they are, and checked to be identical. RAW sensor data is untouched. Images are redrawn by default, with no visible change. Use mode=strip to keep image pixels byte-for-byte identical.
Which file types does the metadata removal API support?
JPEG, PNG and WebP images; MP4, MOV, M4V, 3GP, MKV and WebM video; PDF; and CR2, CR3, NEF, ARW, RAF, RW2 and DNG RAW files. AVI and password-protected PDFs aren't supported yet.
How do I know the metadata is really gone?
Every cleaned file is read again before we answer. If anything identifying remains, or the content can't be checked, the status is unverified instead of clean, and the report says what and why.
Where are the files processed?
On our own server in Germany. Files are deleted right after cleaning, and cleaned copies after download or 15 minutes.
