curl --request POST \
--url https://api.gowinston.ai/v2/image-detection \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"url": "<string>",
"image": "<string>",
"version": "<string>"
}
'import requests
url = "https://api.gowinston.ai/v2/image-detection"
payload = {
"url": "<string>",
"image": "<string>",
"version": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({url: '<string>', image: '<string>', version: '<string>'})
};
fetch('https://api.gowinston.ai/v2/image-detection', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.gowinston.ai/v2/image-detection",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'url' => '<string>',
'image' => '<string>',
'version' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.gowinston.ai/v2/image-detection"
payload := strings.NewReader("{\n \"url\": \"<string>\",\n \"image\": \"<string>\",\n \"version\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.gowinston.ai/v2/image-detection")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"<string>\",\n \"image\": \"<string>\",\n \"version\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gowinston.ai/v2/image-detection")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"url\": \"<string>\",\n \"image\": \"<string>\",\n \"version\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"score": 123,
"human_probability": 123,
"ai_probability": 123,
"version": "<string>",
"mime_type": "<string>",
"c2pa": {
"active_manifest": {
"vendor": "<string>",
"claim_generator": "<string>",
"title": "<string>",
"credentials": {},
"thumbnail": {},
"ingredients": "<array>",
"ingredient_paths": "<array>",
"assertions": {},
"alg": "<string>",
"ta_url": "<string>",
"private_key": "<string>",
"sign_cert": "<string>"
},
"manifests": {
"<manifest_key>": {
"vendor": "<string>",
"claim_generator": "<string>",
"title": "<string>",
"credentials": {},
"thumbnail": {},
"ingredients": "<array>",
"ingredient_paths": "<array>",
"assertions": {},
"alg": "<string>",
"ta_url": "<string>",
"private_key": "<string>",
"sign_cert": "<string>"
}
}
},
"exif": {
"DateCreated": "<string>",
"Description": "<string>",
"Headline": "<string>",
"MaxAvailWidth": "<string>",
"MaxAvailHeight": "<string>",
"ImageRating": "<string>",
"DescriptionWriter": "<string>",
"Genre": "<string>",
"RightsUsageTerms": "<string>",
"SceneCode": "<string>",
"AdditionalModelInformation": "<string>",
"Creator": "<string>",
"CreditLine": "<string>",
"CopyrightNotice": "<string>",
"ImageSupplier": "<string>",
"Locationcreated": "<string>",
"MinorModelAgeDisclosure": "<string>",
"WebStatementofRights": "<string>",
"ModelAge": "<string>",
"ImageSupplierImageID": "<string>",
"LinkedEncodedRightsExpression": "<string>",
"DataMining": "<string>",
"Artwork": "<string>",
"ImageRegistryEntry": "<string>",
"City": "<string>",
"CodeofOrganisationFeaturedintheImage": "<string>",
"EventIdentifier": "<string>",
"EventName": "<string>",
"Contributor": "<string>",
"CopyrightOwner": "<string>",
"Country": "<string>",
"DigitalSourceType": "<string>",
"PropertyReleaseId": "<string>",
"PropertyReleaseStatus": "<string>",
"NameofOrganisationFeaturedintheImage": "<string>",
"Source": "<string>",
"DigitalImageGUID": "<string>",
"Licensor": "<string>",
"keywords": "<array>",
"ImageCreator": {},
"Instructions": "<string>",
"Title": "<string>"
},
"metadata": {
"format": "<string>",
"width": 123,
"height": 123,
"autoOrient": {
"width": 123,
"height": 123
},
"space": "<string>",
"channels": 123,
"depth": "<string>",
"isProgressive": true,
"isPalette": true,
"hasProfile": true,
"hasAlpha": true,
"orientation": 123,
"size": 123,
"density": 123,
"chromaSubsampling": "<string>",
"bitsPerSample": 123,
"pages": 123,
"pageHeight": 123,
"loop": 123,
"delay": [
123
],
"pagePrimary": 123,
"background": {
"r": 123,
"g": 123,
"b": 123
},
"levels": [
{}
],
"subifds": 123,
"resolutionUnit": "<string>",
"formatMagick": "<string>",
"comments": [
{}
]
},
"ai_watermark_detected": true,
"ai_watermark_issuers": {},
"credits_used": 123,
"credits_remaining": 123
}{
"error": "BAD_REQUEST",
"description": "The request was invalid and could not be processed. Make sure you pass valid arguments."
}{
"error": "UNAUTHORIZED",
"description": "Pass a valid API key in the Authorization header as a Bearer token."
}{
"error": "PAYMENT_REQUIRED",
"description": "Insufficient credits. Make sure you have enough credits to make the request."
}{
"error": "FORBIDDEN",
"description": "The request was forbidden. Make sure you pass a valid URL or document that we can access."
}{
"error": "UNSUPPORTED_MEDIA_TYPE",
"description": "The request content type is not supported. Make sure you pass a valid content type."
}{
"error": "TOO_MANY_REQUESTS",
"description": "You have exceeded the rate limit. Please try again later."
}{
"error": "INTERNAL_SERVER_ERROR",
"description": "An unexpected error occurred. Please try again later."
}{
"error": "SERVICE_UNAVAILABLE",
"description": "The service is currently unavailable. Please try again later."
}AI image Detection
Our image detection feature enables AI-generated image detection by verifying image metadata and using a machine learning system trained to differentiate between human and AI-generated images.
curl --request POST \
--url https://api.gowinston.ai/v2/image-detection \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"url": "<string>",
"image": "<string>",
"version": "<string>"
}
'import requests
url = "https://api.gowinston.ai/v2/image-detection"
payload = {
"url": "<string>",
"image": "<string>",
"version": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({url: '<string>', image: '<string>', version: '<string>'})
};
fetch('https://api.gowinston.ai/v2/image-detection', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.gowinston.ai/v2/image-detection",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'url' => '<string>',
'image' => '<string>',
'version' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.gowinston.ai/v2/image-detection"
payload := strings.NewReader("{\n \"url\": \"<string>\",\n \"image\": \"<string>\",\n \"version\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.gowinston.ai/v2/image-detection")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"<string>\",\n \"image\": \"<string>\",\n \"version\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gowinston.ai/v2/image-detection")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"url\": \"<string>\",\n \"image\": \"<string>\",\n \"version\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"score": 123,
"human_probability": 123,
"ai_probability": 123,
"version": "<string>",
"mime_type": "<string>",
"c2pa": {
"active_manifest": {
"vendor": "<string>",
"claim_generator": "<string>",
"title": "<string>",
"credentials": {},
"thumbnail": {},
"ingredients": "<array>",
"ingredient_paths": "<array>",
"assertions": {},
"alg": "<string>",
"ta_url": "<string>",
"private_key": "<string>",
"sign_cert": "<string>"
},
"manifests": {
"<manifest_key>": {
"vendor": "<string>",
"claim_generator": "<string>",
"title": "<string>",
"credentials": {},
"thumbnail": {},
"ingredients": "<array>",
"ingredient_paths": "<array>",
"assertions": {},
"alg": "<string>",
"ta_url": "<string>",
"private_key": "<string>",
"sign_cert": "<string>"
}
}
},
"exif": {
"DateCreated": "<string>",
"Description": "<string>",
"Headline": "<string>",
"MaxAvailWidth": "<string>",
"MaxAvailHeight": "<string>",
"ImageRating": "<string>",
"DescriptionWriter": "<string>",
"Genre": "<string>",
"RightsUsageTerms": "<string>",
"SceneCode": "<string>",
"AdditionalModelInformation": "<string>",
"Creator": "<string>",
"CreditLine": "<string>",
"CopyrightNotice": "<string>",
"ImageSupplier": "<string>",
"Locationcreated": "<string>",
"MinorModelAgeDisclosure": "<string>",
"WebStatementofRights": "<string>",
"ModelAge": "<string>",
"ImageSupplierImageID": "<string>",
"LinkedEncodedRightsExpression": "<string>",
"DataMining": "<string>",
"Artwork": "<string>",
"ImageRegistryEntry": "<string>",
"City": "<string>",
"CodeofOrganisationFeaturedintheImage": "<string>",
"EventIdentifier": "<string>",
"EventName": "<string>",
"Contributor": "<string>",
"CopyrightOwner": "<string>",
"Country": "<string>",
"DigitalSourceType": "<string>",
"PropertyReleaseId": "<string>",
"PropertyReleaseStatus": "<string>",
"NameofOrganisationFeaturedintheImage": "<string>",
"Source": "<string>",
"DigitalImageGUID": "<string>",
"Licensor": "<string>",
"keywords": "<array>",
"ImageCreator": {},
"Instructions": "<string>",
"Title": "<string>"
},
"metadata": {
"format": "<string>",
"width": 123,
"height": 123,
"autoOrient": {
"width": 123,
"height": 123
},
"space": "<string>",
"channels": 123,
"depth": "<string>",
"isProgressive": true,
"isPalette": true,
"hasProfile": true,
"hasAlpha": true,
"orientation": 123,
"size": 123,
"density": 123,
"chromaSubsampling": "<string>",
"bitsPerSample": 123,
"pages": 123,
"pageHeight": 123,
"loop": 123,
"delay": [
123
],
"pagePrimary": 123,
"background": {
"r": 123,
"g": 123,
"b": 123
},
"levels": [
{}
],
"subifds": 123,
"resolutionUnit": "<string>",
"formatMagick": "<string>",
"comments": [
{}
]
},
"ai_watermark_detected": true,
"ai_watermark_issuers": {},
"credits_used": 123,
"credits_remaining": 123
}{
"error": "BAD_REQUEST",
"description": "The request was invalid and could not be processed. Make sure you pass valid arguments."
}{
"error": "UNAUTHORIZED",
"description": "Pass a valid API key in the Authorization header as a Bearer token."
}{
"error": "PAYMENT_REQUIRED",
"description": "Insufficient credits. Make sure you have enough credits to make the request."
}{
"error": "FORBIDDEN",
"description": "The request was forbidden. Make sure you pass a valid URL or document that we can access."
}{
"error": "UNSUPPORTED_MEDIA_TYPE",
"description": "The request content type is not supported. Make sure you pass a valid content type."
}{
"error": "TOO_MANY_REQUESTS",
"description": "You have exceeded the rate limit. Please try again later."
}{
"error": "INTERNAL_SERVER_ERROR",
"description": "An unexpected error occurred. Please try again later."
}{
"error": "SERVICE_UNAVAILABLE",
"description": "The service is currently unavailable. Please try again later."
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Specifies the URL of the image to scan. The URL must be valid, publicly accessible, and point to an image in one of the following formats: JPG, JPEG, PNG, or WEBP. The image must have a minimum resolution of 256x256 pixels.
Base64-encoded image, or a data URL (data:image/...;base64,...). Provide either url or image. Original file size should be about 4 MB or less.
The model version to use. Our latest and most accurate version is "5". Using "latest" will make sure you are always using the latest version. Options: 5, 4, 3, 2, 1, latest. Default: 5
Response
Image detection Response
The human score that the image is likely to be generated by a human. A low score means our system believes that the image is generated by AI, and a higher score means that the system believes that the image is generated by a Human. The score is between 0 and 100. 0 for AI and 100 for Human.
The human probability that the image is likely to be generated by a human. The probability is between 0 and 1.
The AI probability that the image is likely to be generated by an AI. The probability is between 0 and 1.
The model version used to generate the prediction.
The mime type of the image.
The Content Provenance and Authenticity (C2PA) metadata of the image. For more information about what is C2PA, please visit https://c2pa.org/
Show child attributes
Show child attributes
The exif metadata of the image. We currently retrieve the XMP, EXIF, and IPTC metadata of the image to help us determine if the image was AI generated. For more information about the IPTC metadata, please visit https://iptc.org/
Show child attributes
Show child attributes
Image metadata including dimensions, format, color space, and other technical details
Show child attributes
Show child attributes
Whether an AI watermark was detected in the image.
The list of AI watermark issuers detected in the image.
The credits_used field represents the number of credits consumed for processing your request. Each image that is processed by the API consumes 300 credits.
The credits_remaining field shows how many credits you have left in your account after your request has been processed.