kriyam.aistudioAPI reference
AI Generated Image Detection

Check an image

POSThttps://studioapi.kriyam.ai/models/defake/v2

Content type multipart/form-data

Tells you whether an image is AI-generated, manipulated or a real photograph, and checks any face in it for deepfake signs. The call is synchronous: you get back the finished run, already charged.

Request

curl -X POST "https://studioapi.kriyam.ai/models/defake/v2" \
  -H "X-API-Key: $KRIYAM_API_KEY" \
  -F "image=@photo.jpg"

Response

{7 items
"id":"0c9d41a7-6b2e-4f10-93a5-77e2b0..."
"tool_url_path":"ai-image-detection"
"status":"completed"
"result":{1 item
"aigc_analysis":{5 items
"classification":"ai_generated"
"confidence_score":94.2
"watermark_detected":false
"watermark_details":{}0 items
"face_deepfake":{4 items
"face_detected":true
"verdict":"fake"
"real_probability":0.08
"fake_probability":0.92
}
}
}
"error":null
"credits":2
"created_at":"2026-09-18T09:12:04.182741Z"
}

Authentication

Send your key in the X-API-Key header. See Authentication.

Request

Body

NameTypeRequiredDescription
imagefileRequired

The image to check. PNG or JPEG, up to 2 MB.

Response

200 OK

Returns the run envelope. The fields below are what this tool puts inside it.

FieldTypeDescription
result.aigc_analysis.classificationstring | null

How the whole image was judged to have been produced.

result.aigc_analysis.confidence_scorenumber | null

How sure that classification is, 0-100.

result.aigc_analysis.watermark_detectedboolean | null

A generator's watermark was found — strong evidence, independent of the classifier's own judgement.

result.aigc_analysis.watermark_detailsobject

{} when nothing was found. On a detection it carries confidence — note that one is 0-1, unlike confidence_score — plus whatever else the detector reports. The watermark image itself is in output_urls.

result.aigc_analysis.face_deepfake.face_detectedboolean

Whether the face model had anything to judge. False means not applicable, not clean — every field below is null then.

result.aigc_analysis.face_deepfake.verdictstring | null

real or fake, for faces within the image. This can disagree with classification — a face-swap on a real photograph fails here and passes there — so check both.

result.aigc_analysis.face_deepfake.fake_probabilitynumber | null

How likely the face is swapped or synthetic, 0-1.

result.aigc_analysis.face_deepfake.real_probabilitynumber | null

The converse, 0-1.

Errors

StatusCodeWhen
400—

The image is empty, over 2 MB, or can't be decoded.

Every keyed call can also get401402403404429— see Errors.