
Detect face-swapped deepfakes in photos and selfie frames with Bynn's own detector, built for identity verification. Names the face-swapping method behind an attack.
The Bynn Image Deepfake Detection model identifies face swaps in images: a photo or selfie frame in which the face has been replaced by a face-swapping tool. Built by Bynn for identity verification, it returns a clear decision, a probability and the face-swapping method the content most resembles.
Deepfake technology has democratized face manipulation. What once required Hollywood-level resources now runs on consumer hardware. Free tools replace a face in a photo or a live camera feed in seconds, with lighting, expression and head movement carried over from the real person in front of the camera.
The consequences are severe. Criminals create fake IDs using face-swapped photos. Romance scammers build profile pictures that pass casual inspection. KYC verification systems face manipulated selfies designed to match stolen identity documents. Financial fraud, account takeovers and synthetic identity creation all leverage face manipulation technology.
Detection is an arms race. Yesterday's detection methods fail against today's tools. Platforms need detection that is built for the content they actually receive and refreshed as new tools appear.
The Bynn Deepfake Detection model is Bynn's own face-swap detector, built for identity verification: it is designed for the selfie frames and videos real verification sessions produce, and it is kept current as new face-swapping tools appear. It returns a probability, a clear decision and the face-swapping method the content most resembles.
Achieving 99.8% accuracy, with 99.99% of face-swap attacks detected at a false reject rate of 0.32% on held-out verification sessions, it provides robust protection against face-swap attacks on identity verification and authentication flows.
Send one image with image_url or base64_image (JPEG, PNG or WebP, up to 20MB). Send the image as it was captured, without resizing or re-encoding it first. To analyze several frames of the same capture together, use Video Deepfake Detection with the recording.
The API returns a structured JSON response containing:
Example Response:
{
"label": "fake",
"is_fake": true,
"is_real": false,
"fake_probability": 0.998,
"confidence": 0.998,
"frames_total": 1,
"frames_scored": 1,
"swapper": "inswapper_128",
"frame_probabilities": [0.998]
}Code
Note: an "unverifiable" result means no face could be analyzed. Treat it as content to retry or review, not as evidence of a real person.
| Metric | Value |
|---|---|
| Detection Accuracy | 99.8% |
| True Positive Rate (burst) | 99.99% |
| True Positive Rate (single frame) | 99.90% |
| False Reject Rate (FRR) | 0.32% |
| AUC | 0.999 |
| Average Response Time | 800ms |
| Max File Size | 20MB |
| Supported Formats | JPEG, PNG, WebP |
This model provides a probability and a decision, not definitive proof of manipulation.
Live face-swap detection on a burst of selfie frames: detects real-time face swaps and names the swapper family they resemble
framesarrayThe stills of one verification burst, 1 to 32 JPEG or PNG frames as URLs. Frames are scored individually and pooled; a frame without a face is reported and left out of the decision
["https://example.com/burst/frame1.jpg","https://example.com/burst/frame2.jpg"]base64_framesarrayThe same burst as base64-encoded frames (bare or data URI)
["/9j/4AAQSkZJRgABAQAA..."]image_urlstringA single frame, scored as a one-frame burst
https://example.com/selfie.jpgvideo_urlstringA video (MP4, MOV, AVI, WebM, MKV, up to 100MB): 32 evenly spaced frames per minute are cut from it and scored as one burst
https://example.com/selfie.mp4base64_videostringThe same video, base64-encoded
AAAAIGZ0eXBpc29t...Face-swap verdict for the burst with the per-frame evidence behind it
labelstring"fake" or "real" at the calibrated burst threshold; "unverifiable" when no frame had a face
fakeis_fakebooleanTrue if the burst is a face swap; null when unverifiable
trueis_realbooleanInverse of is_fake; null when unverifiable
falsefake_probabilityfloatProbability that the content is a face swap: the strongest evidence found, the pooled score or the highest frame; null when unverifiable
0.998confidencefloatProbability of the returned label: fake_probability for "fake", its complement for "real"
0.998frames_totalintegerFrames received
5frames_scoredintegerFrames in which a face was found and scored
5fake_framesintegerFrames whose face the model flagged as swapped
5swapperstringThe swapper family the artefacts most resemble, "real" for real content; explanatory only
inswapper_128frame_probabilitiesarrayThe fake probability of each frame in order, null where no face was found
[
0.998,
0.997,
null
]{
"model": "bynn-deepfake-image",
"frames": [
"https://example.com/burst/frame1.jpg",
"https://example.com/burst/frame2.jpg",
"https://example.com/burst/frame3.jpg"
]
}{
"success": true,
"data": {
"label": "fake",
"is_fake": true,
"is_real": false,
"fake_probability": 0.998,
"confidence": 0.998,
"frames_total": 3,
"frames_scored": 2,
"fake_frames": 2,
"swapper": "inswapper_128",
"frame_probabilities": [
0.998,
0.997,
null
]
}
}429 HTTP error code along with an error message. You should then retry with an exponential back-off strategy, meaning that you should retry after 4 seconds, then 8 seconds, then 16 seconds, etc.Integrate Image Deepfake Detection into your application today with our easy-to-use API.