API-documentatie
ISO 27001SOC 2 CertifiedGDPR Compliant

AI-afbeeldingsdetectie-API

Volledige documentatie voor het integreren van de AI-afbeeldingsdetectie-API van TruthScan in uw applicaties.

Probeer het zonder code via ons FastAPI-eindpunt: https://detect-image.truthscan.com/docs

Authenticatie

TruthScan gebruikt API-sleutels voor toegang tot de API. U vindt uw API-sleutel bovenaan de pagina in ons ontwikkelaarsportaal.

TruthScan verwacht dat de API-sleutel in alle API-verzoeken naar de server wordt opgenomen in een request body die er als volgt uitziet:

{
  "key": "YOUR API KEY GOES HERE"
}

Vervang YOUR API KEY GOES HERE door uw persoonlijke API-sleutel.

AI-afbeeldingsdetector

Detecteren (3 stappen)

De AI-afbeeldingsdetectieworkflow bestaat uit de volgende stappen:

  • Vraag een vooraf ondertekende upload-URL aan
  • Upload de afbeelding
  • Dien de afbeelding in voor detectie

1. Vraag een vooraf ondertekende upload-URL aan

Vraag eerst een vooraf ondertekende URL aan bij de API. Met deze URL upload u uw afbeeldingsbestand veilig naar de opslagserver.

Ondersteunde bestandsformaten

JPG, JPEG, PNG, WebP, JFIF, HEIC, HEIF, AVIF, BMP, TIFF, TIF

Belangrijke opmerking

Verwijder spaties uit de afbeeldingsbestandsnaam bij het aanvragen van een vooraf ondertekende URL.

GET https://detect-image.truthscan.com/get-presigned-url?file_name=example.jpg

Voorbeeldverzoek

curl -X GET 'https://detect-image.truthscan.com/get-presigned-url?file_name=example.jpg' \
--header 'apikey: YOUR API KEY GOES HERE'

Voorbeeldantwoord

{
  "status": "success",
  "presigned_url": "https://image-presigned-upload.ai-assets-cdn.com?file_name=581d47c7-3ef4-42af-88d9-6dab6bf69389_20250611-121955_example.jpg?...",
  "file_path": "uploads/example.jpg"
}

2. Upload de afbeelding

Gebruik de opgegeven 'presigned_url' om uw afbeelding via een PUT-verzoek te uploaden. Zorg dat het juiste content type is ingesteld volgens uw afbeeldingsformaat.

Belangrijke opmerking

Verwijder spaties uit de afbeeldingsbestandsnaam bij het uploaden.

Voorbeeldverzoek

curl -X PUT 'https://image-presigned-upload.ai-assets-cdn.com?file_name=581d47c7-3ef4-42af-88d9-6dab6bf69389_20250611-121955_example.jpg?...' \
  --header 'Content-Type: image/<FILE_FORMAT - jpeg, jpg, png, webp, heic, heif, avif, bmp, tiff, tif>' \
  --header 'x-amz-acl: private' \
  --data-binary '@example.jpg' # Attachment

Bestandsgroottelimieten

  • Minimale bestandsgrootte: 1 KB
  • Maximale bestandsgrootte: 10 MB

Zorg dat het bestandsformaat tijdens het uploaden gelijk blijft. Een geslaagde upload geeft statuscode 200 terug.

3. Dien afbeelding in voor AI-detectie

Na het uploaden dient u de afbeelding in voor AI-detectie door te verwijzen naar 'file_path' uit de vorige stap.

POST https://detect-image.truthscan.com/detect

Voorbeeldverzoek

curl -X 'POST' \
  'https://detect-image.truthscan.com/detect' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "key": "YOUR-API-KEY-GOES-HERE",
  "url": "https://ai-image-detector-prod.nyc3.digitaloceanspaces.com/<FILE_PATH>",
  "generate_preview": false,
  "generate_analysis_details": true
}'

'FILE_PATH' verwijst naar het pad uit het antwoord in de eerste stap, 'Vraag een vooraf ondertekende upload-URL aan'.

Optionele parameters

  • generate_preview: Zet op 'true' om een preview-URL voor de afbeelding te genereren (standaard: 'false')
  • document_type: Documenttype (standaard: 'Image')
  • email: E-mailadres voor verwerking
  • generate_analysis_details: Zet op 'true' voor diepe AI-analyseresultaten (standaard: 'false'). Indien ingeschakeld bevat het query-antwoord analysis_results_status en analysis_results.

Voorbeeldantwoord

{
    "id": "77565038-9e3d-4e6a-8c80-e20785be5ee9",
    "status": "pending"
}

Het antwoord bevat een unieke afbeeldings-ID om de detectiestatus te volgen.

Query

Dit eindpunt accepteert een image id uit het /detect-verzoek en geeft de status van de indiening en het volledige resultaat van de AI-detectie, inclusief metadata, OCR en ML-modelanalyse.

POST https://detect-image.truthscan.com/query

Voorbeeldverzoek

curl -X 'POST' \
  'https://detect-image.truthscan.com/query' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "id": "IMAGE-ID-GOES-HERE"
}'

Voorbeeldantwoord

{
    "id": "00fee5ff-a55b-42fb-b7c7-d14f05ae0769",
    "status": "done",
    "result": 90.2371538185235,
    "result_details": {
        "is_valid": true,
        "detection_step": 3,
        "final_result": "AI Generated",
        "metadata": [
            "No Information Detected for Real/AI",
            "Could not find anything from ExifTool and Pillow metadata"
        ],
        "metadata_basic_source": "null",
        "ocr": [
            "OCR did not detect AI",
            0.0
        ],
        "ml_model": [
            "AI Generated",
            90.2371538185235
        ],
        "confidence": 90.2371538185235,
        "heatmap_status": "ready",
        "heatmap_url": "https://ai-image-detector-prod.nyc3.digitaloceanspaces.com/uploads/....",
        "analysis_results_status": "pending",
        "analysis_results": null
    },
    "preview_url": "https://ai-image-detector-prod.nyc3.digitaloceanspaces.com/previews/..."
}

Resultaat uitleggen

  • result: Score 1–100: waarschijnlijkheid dat de afbeelding met AI is gegenereerd. Hogere scores = grotere AI-kans.
  • final_result: De algemene uitspraak (bijv. 'AI Generated', 'Real', 'Digitally Edited', 'AI Edited')
  • confidence: Het betrouwbaarheidspercentage van de detectie
  • detection_step: Geeft aan in welke fase detectie klaar was. 1 = alleen metadata, 2 = metadata en OCR, 3 = metadata, OCR en ML (meest volledig)
  • metadata: Informatie uit afbeeldingsmetadata via ExifTool en Pillow
  • ocr: Resultaten van OCR voor watermerkdetectie
  • ml_model: Resultaten van het machinelearningmodel
  • preview_url: URL naar de preview-afbeelding (als generate_preview true was)
  • heatmap_status: Status van heatmapgeneratie ('pending' of 'ready'). Heatmaps zijn asynchroon: eerst vaak heatmap_status 'pending' en heatmap_url leeg/null; daarna 'ready' en heatmap_url gevuld.
  • heatmap_url: URL naar de heatmap wanneer heatmap_status 'ready' is. Alleen voor afbeeldingen met score >= 20.
  • analysis_results_status: Status van diepe AI-analyse ('pending', 'done', 'skipped' of null). Bij 'pending' blijft u /query pollen. Bij 'done' staat de analyse in analysis_results. Bij 'skipped', null of afwezig is geen diepe analyse beschikbaar.
  • analysis_results: Diepe AI-analyseresultaten (als analysis_results_status 'done' is): agreement (strong/moderate/weak/disagreement), confidence (0–100), keyIndicators, detailedReasoning, visualPatterns en recommendations.

Belangrijke opmerking

Heatmapgeneratie is asynchroon. Eerst is heatmap_status vaak 'pending' en heatmap_url leeg/null. Als het klaar is, wordt heatmap_status 'ready' en heatmap_url gevuld. Heatmaps alleen voor afbeeldingen met score >= 20.

Hier betekent "result": 90,24 een hoge kans op AI-generatie. "final_result": "AI Generated" geeft de uitspraak, "confidence": 90,24 het vertrouwen. "detection_step": 3 betekent volledige analyse (metadata, OCR, ML). "heatmap_status": "ready" en "heatmap_url" geven toegang tot de visuele heatmap.

Analyseresultaten (asynchrone diepe analyse)

Als u 'generate_analysis_details' op 'true' zet in het /detect-verzoek, draait TruthScan na de eerste detectie een diepe AI-analyse op de achtergrond. Het eerste query-antwoord kan status 'done' hebben met uw detectieresultaten, terwijl analysis_results_status nog 'pending' kan zijn. U kunt de eerste resultaten direct gebruiken en optioneel blijven pollen voor de diepe analyse.

1. Eerste resultaat klaar (analyse nog bezig)

Bij indienen met 'generate_analysis_details': true en eerste query met status 'done' zijn de kernresultaten (result, final_result, confidence) klaar. analysis_results_status kan nog 'pending' zijn — de diepe AI-analyse loopt dan nog.

{
    "id": "00fee5ff-a55b-42fb-b7c7-d14f05ae0769",
    "status": "done",
    "result": 90.2371538185235,
    "result_details": {
        "is_valid": true,
        "detection_step": 3,
        "final_result": "AI Generated",
        "confidence": 90.2371538185235,
        "analysis_results_status": "pending",
        "analysis_results": null
    }
}

Wat te doen

U kunt de eerste detectieresultaten (result, final_result, confidence, metadata, ocr, ml_model) direct gebruiken. Voor de diepe analyse blijft u /query pollen met dezelfde image ID tot analysis_results_status niet meer 'pending' is.

2. Blijf pollen voor analyseresultaten

Roep /query opnieuw aan met dezelfde image ID. Controleer analysis_results_status. Als die van 'pending' naar 'done' gaat, wordt analysis_results gevuld.

curl -X 'POST' \
  'https://detect-image.truthscan.com/query' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "id": "00fee5ff-a55b-42fb-b7c7-d14f05ae0769"
}'

3. Analyse volledig — volledig antwoord

Als analysis_results_status 'done' is, bevat analysis_results de volledige diepe analyse met overeenstemming, betrouwbaarheid, indicatoren, uitleg, visuele patronen en aanbevelingen.

{
    "id": "00fee5ff-a55b-42fb-b7c7-d14f05ae0769",
    "status": "done",
    "result": 90.2371538185235,
    "result_details": {
        "is_valid": true,
        "detection_step": 3,
        "final_result": "AI Generated",
        "confidence": 90.2371538185235,
        "heatmap_status": "ready",
        "heatmap_url": "https://ai-image-detector-prod.nyc3.digitaloceanspaces.com/uploads/....",
        "analysis_results_status": "done",
        "analysis_results": {
            "agreement": "strong",
            "confidence": 92,
            "keyIndicators": [
                "Unnaturally smooth skin texture",
                "Consistent lighting anomalies"
            ],
            "detailedReasoning": "The image shows clear signs of AI generation with unnaturally smooth textures and consistent lighting patterns not typical of real photography.",
            "visualPatterns": [
                "Uniform noise pattern typical of diffusion models"
            ],
            "recommendations": [
                "Cross-reference with original source if available",
                "Check for metadata inconsistencies",
                "Compare with known AI generation patterns"
            ]
        }
    },
    "preview_url": "https://ai-image-detector-prod.nyc3.digitaloceanspaces.com/previews/..."
}

Wanneer analyse niet beschikbaar is

Als analysis_results_status 'skipped', null of ontbreekt, wordt geen diepe analyse gemaakt. Dat gebeurt als 'generate_analysis_details' niet 'true' was in /detect, of bij bepaalde afbeeldingen/scenario's. Beschouw de eerste detectieresultaten dan als definitief.

{
    "status": "done",
    "result": 12.5,
    "result_details": {
        "analysis_results_status": "skipped",
        "analysis_results": null
    }
}

Velden van analyseresultaten

  • analysis_results_status: 'pending' = nog bezig, 'done' = resultaten klaar, 'skipped' / null / afwezig = niet beschikbaar voor deze afbeelding
  • analysis_results.agreement: Hoe sterk de diepe analyse overeenkomt met de eerste detectie (strong / moderate / weak / disagreement)
  • analysis_results.confidence: Betrouwbaarheidsscore van de diepe analyse (0–100)
  • analysis_results.keyIndicators: Lijst van gedetecteerde visuele afwijkingen
  • analysis_results.detailedReasoning: Korte uitleg (2–4 zinnen) waarom de afbeelding zo is ingedeeld
  • analysis_results.visualPatterns: Stilistische patronen (bijv. ruis zoals bij diffusiemodellen)
  • analysis_results.recommendations: Concrete aanbevelingen voor verdere verificatie

Controleer gebruikerscredits

Dit eindpunt accepteert de apikey van de gebruiker via de header en geeft de creditdetails terug.

GET https://detect-image.truthscan.com/check-user-credits

Voorbeeldverzoek

curl -X 'GET' \
  'https://detect-image.truthscan.com/check-user-credits' \
  -H 'apikey: YOUR API KEY GOES HERE' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json'

Voorbeeldantwoord

{
    "baseCredits": 10000,
    "boostCredits": 1000,
    "credits": 11000
}

Health check

Met dit eindpunt controleert u de status van de AI-afbeeldingsdetectieservice.

GET https://detect-image.truthscan.com/health

Voorbeeldverzoek

curl -X 'GET' \
  'https://detect-image.truthscan.com/health' \
  -H 'accept: application/json'

Voorbeeldantwoord

{
    "status": "healthy",
    "timestamp": "2024-01-15T10:30:00Z"
}

Een "healthy"-antwoord betekent dat de service normaal werkt.

Fouten

De meeste fouten komen door onjuiste parameters. Controleer elke API-aanroep en probeer de voorbeeldcode.

De algemene foutcodes volgen de REST-standaard:

FoutcodeBetekenis
400Bad Request – Uw verzoek is ongeldig.
403Forbidden – De API-sleutel is ongeldig of er zijn onvoldoende credits voor beeldverwerking.
404Not Found – De opgegeven resource bestaat niet.
405Method Not Allowed – U probeerde een resource met een ongeldige methode te benaderen.
406Not Acceptable – U vroeg een formaat dat geen JSON is.
410Gone – De resource op dit eindpunt is verwijderd.
422Invalid Request Body – Uw request body is onjuist of mist parameters.
429Too Many Requests – U stuurt te veel verzoeken. Vertraag het tempo.
500Internal Server Error – Er ging iets mis op onze server. Probeer later opnieuw.
503Service Unavailable – We zijn tijdelijk offline voor onderhoud. Probeer later opnieuw.

Veelvoorkomende problemen en oplossingen

Authenticatieproblemen

"User verification failed" (403)

Oorzaak: Ongeldige of verlopen API-sleutel

Oplossing:

  1. Controleer of uw API-sleutel klopt
  2. Controleer of uw API-sleutel actief is in uw account
  3. Genereer zo nodig een nieuwe API-sleutel

"Not enough credits" (403)

Oorzaak: Onvoldoende credits voor beeldverwerking

Oplossing:

  1. Controleer uw resterende credits via /check-user-credits
  2. Koop indien nodig extra credits
  3. Optimaliseer de afbeeldingsgrootte vóór upload om minder credits te verbruiken

Validatieproblemen bij invoer

"Unsupported file format" (400)

Oorzaak: Niet-ondersteund of ongeldig afbeeldingsformaat

Oplossing:

  1. Controleer of het formaat wordt ondersteund (JPG, JPEG, PNG, WebP, JFIF, HEIC, HEIF, AVIF, BMP, TIFF, TIF)
  2. Controleer of het bestand niet beschadigd is
  3. Controleer de Content-Type-header bij uploaden

"File too large" (400)

Oorzaak: Bestandsgrootte overschrijdt de limiet van 10 MB

Oplossing:

  1. Verklein of comprimeer de afbeelding tot onder 10 MB
  2. Controleer de bestandsgrootte vóór upload
  3. Gebruik waar mogelijk efficiëntere formaten zoals WebP

Verwerkingsproblemen

"Request timeout" (WebSocket)

Oorzaak: Beeldverwerking duurde te lang

Oplossing:

  1. Probeer een kleiner of minder complex beeld
  2. Controleer of de service hoge belasting heeft
  3. Probeer het verzoek opnieuw

Documentstatus "failed"

Oorzaak: Verwerking om diverse redenen mislukt

Oplossing:

  1. Controleer of de afbeelding aan de minimumvereisten voldoet (1 KB – 10 MB)
  2. Controleer of het formaat wordt ondersteund
  3. Controleer of de upload succesvol was vóór indienen voor detectie
  4. Neem contact op met support als het probleem aanhoudt

Uploadproblemen

"Image upload failed" (403/400)

Oorzaak: Ongeldige of verlopen vooraf ondertekende URL, of problemen met de opslagserver

Oplossing:

  1. Gebruik de vooraf ondertekende URL direct na ontvangst (kan verlopen)
  2. Controleer of de Content-Type-header klopt voor het afbeeldingsformaat
  3. Verwijder spaties uit de bestandsnaam vóór upload
  4. Genereer een nieuwe vooraf ondertekende URL als de huidige is verlopen

"Invalid pre-signed URL" (400)

Oorzaak: Bestandsnaam met spaties of verlopen/beschadigde vooraf ondertekende URL

Oplossing:

  1. Verwijder alle spaties uit de bestandsnaam vóór het aanvragen van de URL
  2. Gebruik alleen alfanumerieke tekens, koppeltekens en underscores in de bestandsnaam
  3. Genereer zo nodig een nieuwe vooraf ondertekende URL

Hulp nodig?

Voor meer informatie over onze API of technische ondersteuning kunt u contact met ons opnemen.

Veelgestelde vragen over de API

Antwoorden op de meest gestelde vragen over onze AI-afbeeldingsdetectie-API.