API-Dokumentation

Zwei Endpoints, ein Bearer-Token, JSON-Antworten. Alles, was Sie brauchen, um KI-generierte Texte und Bilder aus Ihrem eigenen Backend zu erkennen.

Erste Schritte

  1. 1Erstellen Sie ein Konto und bestätigen Sie Ihre E-Mail-Adresse. Erst mit der Bestätigung werden die 1.000 kostenlosen Credits freigeschaltet – ein unbestätigtes Konto hat keine.
  2. 2Kopieren Sie Ihren API-Schlüssel aus dem Dashboard. Er wird automatisch mit dem Konto angelegt.
  3. 3Senden Sie Ihren ersten Request. Die gesamte Integration ist ein POST mit Bearer-Header.

Basis-URL

https://www.wasitaigenerated.com/api/v1

Authentifizierung

Jeder Request muss Ihren API-Schlüssel als Bearer-Token mitsenden. Es gibt kein anderes Authentifizierungsverfahren und keinen Zugang ohne Authentifizierung.

Authorization: Bearer YOUR_API_KEY

Halten Sie den Schlüssel auf dem Server. Er verbraucht Ihr Credit-Guthaben – alles, was ihn an einen Browser oder in eine mobile App ausliefert, ist ein Loch in Ihrer Abrechnung. Leiten Sie den Aufruf stattdessen über Ihr eigenes Backend.

Credits & Limits

Die Nutzung wird in Credits abgerechnet. Credits werden abgebucht, bevor die Erkennung läuft. Bei API Business verbrauchen API- und MCP-Aufrufe zuerst die 3.000.000 monatlichen Credits des Tarifs, danach Ihr Credit-Guthaben.

EndpointKosten1.000 Gratis-Credits reichen für
/detect/text1 Credit pro Wort~1.000 Wörter
/detect/image300 Credits pro Bild3 Bilder
/detect/video300 Credits pro analysiertem Frame (16–50 pro Clip)—
/detect/video300 Credits pro Einzelframe3 Frames
50.000
Credits – 10 $ einmalig
300.000
Credits – 49 $ einmalig
1.500.000
Credits – 199 $ einmalig

Einmal gekaufte Credits verfallen nie und gelten auf der Website, in der API und im MCP-Server. API Business kostet 299 $/Monat und enthält jeden Monat 3.000.000 API- & MCP-Credits, dazu White-Label-PDF-Berichte und bevorzugten Support. Pro (14,99 $/Monat) gilt nur für die Website und enthält keinen API-Zugang. Jeder API-Schlüssel ist auf 120 Requests pro Minute begrenzt (darüber 429 mit Retry-After), verarbeiten Sie Stapel also nacheinander oder mit moderater Parallelität. Enterprise bietet individuelle Rate-Limits und ein SLA. Alle Tarife finden Sie unter Preise.

POST/api/v1/detect/text

Erkennt KI-generierte Texte von ChatGPT, GPT-4, Claude, Gemini und anderen Sprachmodellen. Liefert ein Urteil für das gesamte Dokument und einen Score für jeden Satz.

Request-Body

FeldTypHinweise
contentstringPflichtfeld. Der zu analysierende Text.
textstringWird als Alias für content akzeptiert.
modestringOptional. "depth" liefert für jeden Satz einen echten Score (zum Hervorheben). Weglassen, wenn nur ein Score für das Dokument nötig ist.
modelstringOptional. Standard ist "tropa-3". Mit "tropa-1" bleiben Sie bei einer älteren Generation, während Sie Ihre Schwellenwerte neu kalibrieren. "tropa-2" wird weiterhin akzeptiert und von tropa-3 beantwortet. Gleiche Credit-Kosten.

Example request

curl -X POST https://www.wasitaigenerated.com/api/v1/detect/text \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "Your text content here..."
  }'

Response

{
  "isAI": true,
  "confidence": 0.92,
  "score": 92.3,
  "verdict": "ai",
  "model": "tropa-3",
  "patterns": ["AI patterns detected"],
  "analysis": {
    "likelihood": "AI-generated",
    "reasoning": "Overall AI score: 92.3%"
  },
  "sentences": [
    {
      "text": "The sentence that was analyzed.",
      "isAI": true,
      "confidence": 0.95,
      "scores": { "ai": 0.95, "human": 0.05 }
    }
  ],
  "humanizedHint": "possibly_humanized",
  "inputAnomalies": { "homoglyph": 13, "zero_width": 0, "exotic_space": 0, "fullwidth": 0, "variation_selector": 0 },
  "subclassProbs": { "human": 0.0, "ai": 0.71, "ai_edited": 0.02, "humanized": 0.27 }
}
  • isAI – Urteil für das gesamte Dokument (score > 50).
  • confidence – 0 bis 1, wie eindeutig das Urteil ist.
  • score – kalibrierte Wahrscheinlichkeit von 0–100, dass der Text KI-generiert ist.
  • verdict – der Score in Stufen: human (< 40), uncertain (40–70), likely_ai (70–90), ai (≥ 90). Geben Sie Texte mit uncertain an eine Person zur Prüfung, statt sie automatisch zu markieren.
  • model – das Erkennungsmodell, das das Ergebnis erzeugt hat.
  • sentences[] – Urteil und ai/human-Scores pro Satz, zum Hervorheben in Ihrer eigenen Oberfläche. Echte Werte pro Satz erfordern mode: "depth".
  • humanizedHint – nur vorhanden, mit dem Wert possibly_humanized, wenn das Modell das KI-Signal überwiegend einer Nachbearbeitung durch einen Humanizer zuschreibt. Fehlt das Feld, bedeutet das nichts: Das Signal ist präzise, schlägt aber nur bei ~40 % der humanisierten Texte an – zeigen Sie also nie einen Status „nicht humanisiert“ an.
  • inputAnomalies – nur vorhanden, wenn der Text versteckte Zeichen enthielt (kyrillische Homoglyphen, Zeichen ohne Breite, exotische Leerzeichen), mit denen häufig versucht wird, Detektoren zu umgehen. Sie wurden vor der Analyse entfernt.
  • subclassProbs – Verteilung auf die Klassen (human / ai / ai_edited / humanized). Diagnosedetail; kann fehlen, wenn das Fallback-Modell den Request beantwortet hat.

Kosten: 1 Credit pro Wort. Integrationsmuster und ausgearbeitete Beispiele finden Sie im Leitfaden zur Texterkennungs-API.

POST/api/v1/detect/image

Erkennt KI-generierte und synthetisch manipulierte Bilder. Enthält die Datei noch C2PA-Content-Credentials, wird das Ergebnis kryptografisch verifiziert statt geschätzt.

Request

Senden Sie das Bild als multipart/form-data mit dem Feldnamen file.

  • Unterstützte Formate: PNG, JPG, JPEG, GIF, WebP
  • Maximale Größe: 4 MB pro Request

Example request

curl -X POST https://www.wasitaigenerated.com/api/v1/detect/image \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "file=@/path/to/image.jpg"

Response

{
  "isAI": true,
  "confidence": 0.99,
  "verified": true,
  "c2pa": {
    "vendor": "OpenAI",
    "generator": "ChatGPT",
    "generatorVersion": null,
    "softwareAgent": null,
    "issuer": "OpenAI",
    "signedAt": "2024-08-06T21:53:37+00:00",
    "signatureValid": true,
    "trusted": false,
    "validationState": "Valid",
    "validationCodes": ["signingCredential.untrusted"],
    "sourceType": "trainedAlgorithmicMedia",
    "isAI": true,
    "actions": ["c2pa.created"],
    "ingredients": 0,
    "manifestCount": 1
  },
  "provenance": {
    "platform": null,
    "watermarks": [],
    "signals": [],
    "confidence": "none"
  },
  "patterns": ["ai_verified", "c2pa_signed", "synthetic_artifacts"],
  "analysis": {
    "likelihood": "high",
    "reasoning": "AI-generated imagery detected with 99.0% confidence. Verified AI-generated: content credentials signed by ChatGPT (OpenAI) on 2024-08-06."
  },
  "detailed": {
    "scores": { "ai": 99.0, "human": 1.0 },
    "model": "v1.1"
  }
}
  • verified – bei true enthält das Bild ein C2PA-Content-Credential mit gültiger Signatur, das die Datei als KI-generiert ausweist. Das ist Gewissheit, kein Score, und erzwingt isAI: true unabhängig vom Pixelmodell. Bei false stammt das Urteil aus der Analyse der Pixel durch das Modell.
  • c2pa – das ausgelesene Content-Credential oder null, wenn die Datei keines enthält. issuer ist der Aussteller des X.509-Zertifikats und das einzige Feld, das sich nicht fälschen lässt; vendor und generator werden daraus und aus dem Manifest abgeleitet (OpenAI / ChatGPT, Google, Microsoft, Adobe, Leica, …). signatureValid ist die kryptografische Prüfung; trusted setzt zusätzlich voraus, dass der Aussteller auf einer C2PA-Vertrauensliste steht, und ist derzeit immer false. sourceType ist trainedAlgorithmicMedia bei KI-Ausgaben und digitalCapture bei einem signierten Kamerafoto – ein gültiges Manifest mit isAI: false ist ein Beleg dafür, dass das Bild echt ist.
  • provenance – Plattform- und Wasserzeichen-Heuristiken (nicht kryptografisch), mit eigener confidence: high / medium / low / none.
  • patterns – Tags: ai_verified, c2pa_signed (gültiges Manifest, KI oder nicht), c2pa_invalid (Signatur ungültig), c2pa_marker (Marker ohne lesbares Manifest), high_ai_confidence, synthetic_artifacts, human_generated.
  • confidence – 0 bis 1, vom Erkennungsmodell.
  • detailed.scores – Wahrscheinlichkeit KI vs. Mensch in Prozent.

Kosten: 300 Credits pro Bild. Moderationsmuster und Schwellenwerte finden Sie im Leitfaden zur Bilderkennungs-API.

POST/api/v1/detect/video

Erkennt KI-generierte Videos. Senden Sie einen ganzen Clip, um ihn anhand gesampelter Frames zu bewerten, oder ein Einzelbild aus einem Video (Thumbnail, Screenshot), um nur diesen Frame mit dem Videomodell zu bewerten.

Request

Zwei Wege, die Datei zu senden:

  • multipart/form-data mit dem Feldnamen file, bis 4 MB
  • application/json mit {"url": "https://…"}, das auf eine öffentlich erreichbare Datei verweist, bis 50 MB. Für die meisten echten Clips der richtige Weg.
  • Clips: MP4, MOV, WebM, AVI. Die Frames werden gleichmäßig über den Clip verteilt gesampelt, 10 pro Minute, höchstens 50.
  • Einzelframes: PNG, JPG, JPEG, WebP
  • Der Dateityp bestimmt den Modus; detailed.mode gibt ihn zurück.
  • Planen Sie ein Timeout von 60 s ein.

Example request

# Clip up to 4MB, uploaded directly
curl -X POST https://www.wasitaigenerated.com/api/v1/detect/video \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "file=@/path/to/clip.mp4"

# Larger clip (up to 50MB), passed by URL
curl -X POST https://www.wasitaigenerated.com/api/v1/detect/video \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com/clip.mp4"}'

Response

{
  "isAI": true,
  "confidence": 0.94,
  "creditsCharged": 4800,
  "verified": false,
  "patterns": ["ai_generated_frames", "synthetic_artifacts"],
  "analysis": {
    "likelihood": "high",
    "reasoning": "AI-generated video detected with 94.0% confidence. 15 of 16 frames flagged as AI-generated."
  },
  "detailed": {
    "scores": { "ai": 94.0, "human": 6.0 },
    "model": "video-v1",
    "mode": "video",
    "framesAnalyzed": 16,
    "framesFlaggedAi": 15,
    "videoDurationSec": 8.2
  }
}
  • isAI / confidence – das Urteil für den Clip und seine Sicherheit (0 bis 1).
  • detailed.mode – video für einen Clip, frame für ein Einzelbild.
  • detailed.framesAnalyzed / framesFlaggedAi – wie viele gesampelte Frames bewertet wurden und wie viele davon KI-generiert wirkten. Nur bei Clips.
  • detailed.frames – Scores pro Frame, sofern das Modell sie liefert.

Kosten: 300 Credits pro analysiertem Frame. Ein Clip wird mit 10 Frames pro Minute gesampelt, mindestens 16 und höchstens 50, und kostet daher 4.800 bis 15.000 Credits. Das Minimum wird vorab abgebucht, der Rest, sobald die Anzahl der Frames feststeht; creditsCharged in der Response zeigt, was der Aufruf gekostet hat. Ein Einzelframe kostet 300 Credits.

MCP-Server

Die Erkennung ist auch über das Model Context Protocol verfügbar: Ein KI-Assistent kann Texte und Bilder so selbst prüfen, statt dass Sie Ergebnisse hin- und herkopieren. Nichts zu installieren – der Server ist gehostet, Sie verbinden sich mit einer URL.

Endpoint

https://www.wasitaigenerated.com/api/mcp

Verbinden

Clients mit OAuth-Unterstützung beziehen alles Nötige direkt vom Endpoint und öffnen einen Browser, in dem Sie die Verbindung bestätigen. Clients, die einen statischen Header verwenden, können stattdessen einen API-Schlüssel nutzen:

claude mcp add --transport http wasitaigenerated \
  https://www.wasitaigenerated.com/api/mcp \
  --header "Authorization: Bearer $WAI_API_KEY"

Tools

  • detect_ai_text – bewertet einen Textabschnitt, mit Aufschlüsselung pro Satz. Kostet 1 Credit pro Wort.
  • detect_ai_image – prüft ein Bild per URL oder Base64, einschließlich etwaiger C2PA-Content-Credentials. Kostet 300 Credits.
  • get_credit_balance – liest Ihr verbleibendes Guthaben. Kostenlos.

Aufrufe eines Assistenten verbrauchen Ihre Credits genau wie die REST-API. Ein Agent, der ein langes Dokument prüfen soll, verbraucht einen Credit pro Wort – es lohnt sich also, ihm ein Budget zu nennen.

Fehler

Bei Fehlern kommt ein JSON-Body mit einem Feld error zurück, oft zusätzlich mit einer lesbaren message.

400 Bad Request
Kein Inhalt beim Text, fehlende oder nicht unterstützte Datei bei Bild oder Video, oder eine Video-URL, die sich nicht abrufen lässt.
401 Unauthorized
Der Authorization-Header fehlt, ist fehlerhaft, oder der Schlüssel ist ungültig.
402 Payment Required
Nicht genug Credits (insufficient_credits). Der Body enthält required und available, damit Sie den Fehlbetrag anzeigen können.
403 Forbidden
plan_without_api – Pro gilt nur für die Website. Die API läuft mit Credits, API Business oder Enterprise.
413 Payload Too Large
Text, Bild oder Video überschreitet die Größengrenze. Teilen Sie den Text auf, verkleinern Sie das Bild oder übergeben Sie Clips über 4 MB per URL (bis 50 MB).
429 Too Many Requests
rate_limited – mehr als 120 Requests pro Minute mit diesem API-Schlüssel. Warten Sie die im Retry-After-Header angegebenen Sekunden und versuchen Sie es dann erneut.
500 Internal Server Error
Auf unserer Seite ist etwas schiefgegangen. Wiederholen Sie den Request mit exponentiellem Backoff; wenden Sie sich an den Support, falls der Fehler bestehen bleibt.

Beispiel: keine Credits mehr

{
  "error": "Insufficient credits",
  "message": "You need 300 credits for image detection. You have 120 credits remaining.",
  "required": 300,
  "available": 120
}

Best Practices

Asynchron aufrufen

Bei großen Payloads braucht die Erkennung spürbar Zeit. Stellen Sie den Aufruf in eine Warteschlange und aktualisieren Sie den Datensatz, wenn er zurückkommt, statt einen Request für Nutzer darauf warten zu lassen. Setzen Sie ein großzügiges Client-Timeout – 60s für Text und Video, 120s für Bilder.

Den Score als Indiz behandeln, nicht als Urteil

Die Erkennung ist probabilistisch. Stark überarbeiteter KI-Text liest sich wie menschlicher, und manche menschlichen Texte sind tatsächlich formelhaft. Geben Sie markierte Inhalte an eine Person weiter, zeigen Sie ihr die Aufschlüsselung pro Satz und lassen Sie sie entscheiden. Automatische Sanktionen auf Basis einer Konfidenzzahl führen zu Beschwerden, die Sie nicht verteidigen können.

Originaldateien bevorzugen

Screenshots und neu kodierte Bilder verlieren Signal, und ein Screenshot entfernt Content-Credentials vollständig – deshalb kann ein offensichtlich synthetischer Screenshot mit verified: false zurückkommen. Senden Sie den Original-Upload, wo Sie ihn haben.

Lange Dokumente aufteilen

Ein sehr langer Body liefert 413. Teilen Sie ihn in Abschnitte von einigen tausend Wörtern und fassen Sie die Ergebnisse zusammen. Längere Texte sind zuverlässiger als ein paar Sätze – sehr kurze Eingaben tragen schlicht nicht genug Signal.

402 ausdrücklich behandeln

Credits werden pro Aufruf abgebucht, eine stark genutzte Integration kann also mitten im Stapel leerlaufen. Fangen Sie 402 ab, stoppen Sie den Stapel und alarmieren Sie jemanden – die Response sagt Ihnen genau, wie viel gefehlt hat.

Support

Fragen zur Integration, zu Mengenpreisen, zu einem SLA oder zu einem Endpoint, den Sie brauchen und den es noch nicht gibt? Schreiben Sie uns. Feature-Wünsche aus echten Integrationen haben Vorrang.