{"items":[{"type":"link","label":"VAARHAFT API","link":"/openapi","routeSlug":"/openapi","content":{"contentType":"overview","meta":{"name":"VAARHAFT API"},"children":[{"nodeType":"container","panels":[{"title":"Download OpenAPI description","titleTranslationKey":"download.description.title","children":[{"kind":"download","label":"openapi.json","url":"/_bundle/openapi.json?download"},{"kind":"download","label":"openapi.yaml","url":"/_bundle/openapi.yaml?download"}]},{"title":"Overview","titleTranslationKey":"info.title","children":[{"kind":"externallink","title":"URL","titleTranslationKey":"info.contact.url","label":"https://vaarhaft.com","url":"https://vaarhaft.com"},{"kind":"email","title":"E-mail","titleTranslationKey":"info.contact.name","email":"team@vaarhaft.com","label":"team@vaarhaft.com","withCopyButton":true,"copyContent":"team@vaarhaft.com"}]},{"title":"Languages","titleTranslationKey":"languages.title","children":[{"kind":"languages","options":[{"key":"curl","title":"curl","lang":"curl"},{"key":"javascript","title":"JavaScript","lang":"JavaScript"},{"key":"node","title":"Node.js","lang":"Node.js"},{"key":"python","title":"Python","lang":"Python"},{"key":"java","title":"Java","lang":"Java"},{"key":"csharp","title":"C#","lang":"C#"},{"key":"php","title":"PHP","lang":"PHP"},{"key":"go","title":"Go","lang":"Go"},{"key":"ruby","title":"Ruby","lang":"Ruby"},{"key":"r","title":"R","lang":"R"},{"key":"payload","title":"Payload","lang":"Payload"}]}]},{"title":"Servers","titleTranslationKey":"servers.title","children":[{"kind":"servers","servers":[{"url":"https://api.vaarhaft.com"}],"mode":"default"}]}],"children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"header","level":1,"label":"VAARHAFT API (v2.6.0)","showPageActions":true},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API for image and document verification."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Send us your files in a ZIP archive through a request like below, and we verify them for you."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"You can give us images (like JPEG, PNG, WEBP, HEIC, ...) or PDF documents - we extract relevant items like embedded images or document scans automatically."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"You will get back a response where we detail exactly what the results of our different analyses are - and if your file is suspicious."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The results are packaged in a clean, structured JSON response like below, that is easy to understand, read and integrate. Additionally, depending on the results, we"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"may send you one or multiple ZIP attachments containing additional results or indicators, like heatmaps that show you where your files have been edited."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"We can even generate an evaluation report for you, which shows you everything we found in an intuitive way, that everyone, even without"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"technical knowledge, can understand."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"tag","tag":"html","inline":true,"attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","inline":true,"attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Good to know:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"*"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Every result carries a traffic light "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"suspicion_level"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - on request, file and item level. Next to "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Green"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Yellow"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Red"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" there is a fourth,"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"neutral state "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"-"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (grey): we could not make a statement for that object, for example because its input quality was insufficient or because it was"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not relevant for the analysis (a logo, a letterhead, ...)."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Which analyses run for you is part of your configuration. Sections belonging to features you do not have enabled are either empty"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"enabled: false"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") or omitted from the response entirely - never assume a fixed set of keys, always read defensively."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Large images are handled for you: images above our analysis targets are automatically reduced server-side instead of being rejected, and we"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"tell you what we did (see "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"image_normalization"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"tag","tag":"html","inline":true,"attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","inline":true,"attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" One more thing:"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"If you're using Python (v3.9 or higher), the easiest way to integrate our API is through our SDK - just run "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"pip install vaarhaft-fraudscanner"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and you're good to go! "},"children":[]},{"$$mdtype":"Node","type":"link","inline":true,"attributes":{"href":"https://pypi.org/project/vaarhaft-fraudscanner/"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(more info here)"},"children":[]}]}]}]}]}],"sectionId":"/openapi"}],"sectionId":"/openapi"}]}]}},{"type":"group","label":"FraudScanner","link":"/openapi/fraudscanner","routeSlug":"/openapi/fraudscanner","items":[{"label":"Upload a ZIP file for fraud analysis","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/fraudscanner/analysefile","routeSlug":"/openapi/fraudscanner/analysefile","metadata":{"seo":{"title":"Upload a ZIP file for fraud analysis","description":"Analyze image and document files for fraud indicators."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"AnalyseFile","name":"Upload a ZIP file for fraud analysis","isWebhook":false,"pointer":"/paths/~1v2~1fraudscanner/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Upload a ZIP file for fraud analysis","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Analyze image and document files for fraud indicators."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"There are two ways to send your ZIP file, depending on its size:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"table","attributes":{},"children":[{"$$mdtype":"Node","type":"thead","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ZIP size"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Method"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"How"},"children":[]}]}]}]}]},{"$$mdtype":"Node","type":"tbody","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"< 10 MB"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Direct upload"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Send the ZIP as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"file"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" in the request body (multipart/form-data)"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"10–50 MB"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Presigned S3 upload"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"First call "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /v2/getUploadUrl"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", upload to S3, then call this endpoint with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"s3_key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" as query parameter"},"children":[]}]}]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"For files under 10 MB, nothing changes — use the direct upload as before."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"For larger files, the presigned flow bypasses the 10 MB gateway limit."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"And two ways to receive your attachments:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"table","attributes":{},"children":[{"$$mdtype":"Node","type":"thead","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Mode"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"You get"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"When"},"children":[]}]}]}]}]},{"$$mdtype":"Node","type":"tbody","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Inline"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (default)"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Attachments in the response itself — as ZIP parts ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"multipart/mixed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") or Base64 ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"application/json"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), controlled by the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Default for every account"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Presigned download"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A plain JSON response plus "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"attachmentDownloadUrl"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", a link to a single ZIP holding all attachments"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"If the presigned-download feature is enabled for you"},"children":[]}]}]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"If the presigned download is enabled, it applies to "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"every"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" response and takes precedence over the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header: you always receive "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"application/json"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" without inline attachments, and never a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"multipart/mixed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" body. The upside is that the ~9 MB response payload cap no longer applies to your"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"attachments, so nothing gets dropped for large cases. See "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"attachmentDownloadUrl"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" in the response schema."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Minimal example (direct upload):"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"import requests\n\nresp = requests.post(\n    \"https://api.vaarhaft.com/v2/fraudscanner\",\n    headers={\"x-api-key\": \"YOUR_KEY\", \"caseNumber\": \"Case-123\"},\n    files={\"file\": open(\"images.zip\", \"rb\")},\n)\n...\n","language":"python"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"import requests\n\nresp = requests.post(\n    \"https://api.vaarhaft.com/v2/fraudscanner\",\n    headers={\"x-api-key\": \"YOUR_KEY\", \"caseNumber\": \"Case-123\"},\n    files={\"file\": open(\"images.zip\", \"rb\")},\n)\n...\n"},"children":[]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Note: requests with many or large files can take longer due to compute-heavy analysis. The request timeout is 120s."},"children":[]}]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"apiKeyAuth","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"s3_key","in":"query","schemaId":"schema_7","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The S3 key returned by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /v2/getUploadUrl"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Use this instead of "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"file"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for ZIPs larger than 10 MB. Either "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"file"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (body) or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"s3_key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (query) must be provided — not both, not neither."},"children":[]}]}]}]}],"pointer":"/paths/~1v2~1fraudscanner/post/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"x-api-key","in":"header","schemaId":"schema_8","description":"The API key for authentication.","required":true},{"name":"caseNumber","in":"header","schemaId":"schema_9","description":"A case number to assign to the request. Typically matches the one that you use internally to track the files you're sending us. Between 4 and 50 characters.\n","required":true},{"name":"issueDate","in":"header","schemaId":"schema_7","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The issue date of the case, if available. Used as reference date for date-related checks (e.g. metadata timestamps). Accepted formats: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"DD.MM.YYYY"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"DD-MM-YYYY"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"DD/MM/YYYY"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"YYYY-MM-DD"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"YYYY.MM.DD"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", each optionally followed by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":" HH:MM:SS"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". May not be more than 5 days in the future."},"children":[]}]}]}],"example":"24.02.2026"},{"name":"language","in":"header","schemaId":"schema_10","description":"The language setting for the request; used for the generated analysis report and for textual explanations in the response. Defaults to 'de' (German)."},{"name":"contactEmail","in":"header","schemaId":"schema_11","description":"Optional contact email address for this request, used for result notifications where that is part of your configuration."},{"name":"Accept","in":"header","schemaId":"schema_12","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Optionally set the desired response media type. Use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"application/json"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for a JSON response with Base64-encoded attachments grouped by category (actual files: PDFs, PNGs, etc.; no ZIP bundles). If the header is not set, or if "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"multipart/mixed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"*/*"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is set, the server will respond with JSON plus one or more ZIP attachments (e.g., heatmaps, reports), combined in a multipart response. This is the standard way to consume the FraudScanner API."},"children":[]}]}]}],"example":"application/json"}],"pointer":"/paths/~1v2~1fraudscanner/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":false,"mediaTypes":["multipart/form-data"],"mediaTypeSchemas":{"multipart/form-data":{"schemaId":"components/schemas/Request"}},"schemaId":"components/schemas/Request","pointer":"/paths/~1v2~1fraudscanner/post/requestBody","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Required for direct upload (files < 10 MB). Omit when using the presigned S3 upload flow with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"s3_key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/v2/fraudscanner","servers":[{"url":"https://api.vaarhaft.com"}],"parameters":{"path":[],"query":[{"name":"s3_key","in":"query","required":false,"schemaId":"schema_7"}],"querystring":[],"header":[{"name":"x-api-key","in":"header","required":true,"schemaId":"schema_8"},{"name":"caseNumber","in":"header","required":true,"schemaId":"schema_9"},{"name":"issueDate","in":"header","required":false,"example":"24.02.2026","schemaId":"schema_7"},{"name":"language","in":"header","required":false,"schemaId":"schema_10"},{"name":"contactEmail","in":"header","required":false,"schemaId":"schema_11"},{"name":"Accept","in":"header","required":false,"example":"application/json","schemaId":"schema_12"}],"cookie":[]},"security":[{"schemes":[{"id":"apiKeyAuth","type":"apiKey","name":"x-api-key","in":"header"}],"scopes":[]}],"requestBody":{"multipart/form-data":{"schemaId":"components/schemas/Request"}},"responseCodes":["200","400","404","406","413","422","429","500","501","503"],"pointer":"/v2/fraudscanner","href":"fraudscanner/analysefile","openApiOperationId":"AnalyseFile","summary":"Upload a ZIP file for fraud analysis"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"https://api.vaarhaft.com"}],"schemaId":"components/schemas/Request","mediaTypes":["multipart/form-data"],"mediaTypeSchemas":{"multipart/form-data":{"schemaId":"components/schemas/Request"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Success. The file was successfully uploaded and processed. May carry the header "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X-Payload-Truncated: true"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" if attachments had to be dropped to stay within the payload limit. If the presigned-download feature is enabled for you, the response is always "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"application/json"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and the attachments are not inline - use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"attachmentDownloadUrl"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" instead."},"children":[]}]}]}],"mediaType":"application/json","mediaTypes":["application/json","multipart/mixed"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/BaseResponse"},"multipart/mixed":{"schemaId":"schema_13"}},"schemaId":"components/schemas/BaseResponse"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Input validation has failed (e.g. an invalid "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"s3_key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" was provided)."},"children":[]}]}]}],"mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ErrorResponse"}},"schemaId":"components/schemas/ErrorResponse"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The provided "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"s3_key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" could not be found or downloaded."},"children":[]}]}]}],"mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ErrorResponse"}},"schemaId":"components/schemas/ErrorResponse"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"None of the requested media types in the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header is supported."},"children":[]}]}]}],"mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ErrorResponse"}},"schemaId":"components/schemas/ErrorResponse"},{"code":"413","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The upload exceeded a size limit — either the ZIP is larger than 50 MB, a single contained file is too large, or too many items were extracted (limit: 40 files / 40 items per request; consider splitting large PDFs into multiple requests)."},"children":[]}]}]}],"mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ErrorResponse"}},"schemaId":"components/schemas/ErrorResponse"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unprocessable Entity — the request was not formed correctly. Common causes: the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"caseNumber"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is missing or has an invalid length, the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"issueDate"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is not in an allowed format, an unsupported "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"language"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" was requested, neither "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"file"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" nor "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"s3_key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" was provided, or both were provided simultaneously."},"children":[]}]}]}],"mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ErrorResponse"}},"schemaId":"components/schemas/ErrorResponse"},{"code":"429","description":"Allocated API quota has been reached / out of credits.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ErrorResponse"}},"schemaId":"components/schemas/ErrorResponse"},{"code":"500","description":"Internal server error. Something went wrong on the server while processing the request.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ErrorResponse"}},"schemaId":"components/schemas/ErrorResponse"},{"code":"501","description":"Configuration issue.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ErrorResponse"}},"schemaId":"components/schemas/ErrorResponse"},{"code":"503","description":"A required internal service is temporarily unreachable; the request can be retried.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ErrorResponse"}},"schemaId":"components/schemas/ErrorResponse"}],"pointer":"/paths/~1v2~1fraudscanner/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/BaseResponse","mediaTypes":["application/json","multipart/mixed"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/BaseResponse"},"multipart/mixed":{"schemaId":"schema_13"}}},{"code":"400","schemaId":"components/schemas/ErrorResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ErrorResponse"}}},{"code":"404","schemaId":"components/schemas/ErrorResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ErrorResponse"}}},{"code":"406","schemaId":"components/schemas/ErrorResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ErrorResponse"}}},{"code":"413","schemaId":"components/schemas/ErrorResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ErrorResponse"}}},{"code":"422","schemaId":"components/schemas/ErrorResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ErrorResponse"}}},{"code":"429","schemaId":"components/schemas/ErrorResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ErrorResponse"}}},{"code":"500","schemaId":"components/schemas/ErrorResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ErrorResponse"}}},{"code":"501","schemaId":"components/schemas/ErrorResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ErrorResponse"}}},{"code":"503","schemaId":"components/schemas/ErrorResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ErrorResponse"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/fraudscanner/analysefile"}],"panels":[]}]},"httpPath":"/v2/fraudscanner"},{"label":"Get a presigned S3 upload URL for large files","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/fraudscanner/getuploadurl","routeSlug":"/openapi/fraudscanner/getuploadurl","metadata":{"seo":{"title":"Get a presigned S3 upload URL for large files","description":"Returns a presigned S3 PUT URL for uploading ZIP files that exceed the 10 MB direct upload limit.The URL is valid for 10 minutes. After uploading to S3, pass the returned s3_key to POST /v2/fraudscanner."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"GetUploadUrl","name":"Get a presigned S3 upload URL for large files","isWebhook":false,"pointer":"/paths/~1v2~1getUploadUrl/post","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get a presigned S3 upload URL for large files","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Returns a presigned S3 PUT URL for uploading ZIP files that exceed the 10 MB direct upload limit."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The URL is valid for "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"10 minutes"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". After uploading to S3, pass the returned "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"s3_key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /v2/fraudscanner"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Flow:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":true,"marker":"."},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /v2/getUploadUrl"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" → receive "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"upload_url"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" + "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"s3_key"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PUT"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" your ZIP to "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"upload_url"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Content-Type: application/zip"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /v2/fraudscanner?s3_key=<s3_key>"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" → receive analysis results"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The uploaded file is automatically deleted after processing (or after 24h if not consumed)."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"apiKeyAuth","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key"}]}]},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"x-api-key","in":"header","schemaId":"schema_7","description":"The API key for authentication.","required":true},{"name":"caseNumber","in":"header","schemaId":"schema_7","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The case number this upload belongs to; same value you will send to "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /v2/fraudscanner"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1v2~1getUploadUrl/post/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/v2/getUploadUrl","servers":[{"url":"https://api.vaarhaft.com"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[{"name":"x-api-key","in":"header","required":true,"schemaId":"schema_7"},{"name":"caseNumber","in":"header","required":true,"schemaId":"schema_7"}],"cookie":[]},"security":[{"schemes":[{"id":"apiKeyAuth","type":"apiKey","name":"x-api-key","in":"header"}],"scopes":[]}],"responseCodes":["200","429"],"pointer":"/v2/getUploadUrl","href":"fraudscanner/getuploadurl","openApiOperationId":"GetUploadUrl","summary":"Get a presigned S3 upload URL for large files"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"https://api.vaarhaft.com"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Presigned URL generated successfully.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/UploadUrlResponse"}},"schemaId":"components/schemas/UploadUrlResponse"},{"code":"429","description":"Allocated API quota has been reached / out of credits.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ErrorResponse"}},"schemaId":"components/schemas/ErrorResponse"}],"pointer":"/paths/~1v2~1getUploadUrl/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/UploadUrlResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/UploadUrlResponse"}}},{"code":"429","schemaId":"components/schemas/ErrorResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ErrorResponse"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/fraudscanner/getuploadurl"}],"panels":[]}]},"httpPath":"/v2/getUploadUrl"}],"content":{"contentType":"group","meta":{"name":"FraudScanner"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"FraudScanner","showPageActions":true}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/v2/fraudscanner","summary":"Upload a ZIP file for fraud analysis","prefix":{"name":"post","color":"post"},"badges":[],"link":"/fraudscanner/analysefile","deprecated":false},{"title":"/v2/getUploadUrl","summary":"Get a presigned S3 upload URL for large files","prefix":{"name":"post","color":"post"},"badges":[],"link":"/fraudscanner/getuploadurl","deprecated":false}]}]}]}]}}],"store":{"schemaStore":{"components/schemas/SuspicionLevel":{"id":"components/schemas/SuspicionLevel","kind":"json-schema","title":"SuspicionLevel","data":{"type":"string","description":"Traffic light indicator, used on request, file and item level.\n","enum":["-","Green","Yellow","Red"],"x-enumDescriptions":{"-":"No statement possible / not assessed (e.g. insufficient input quality, or the object was not relevant for the analysis).","Green":"No findings.","Yellow":"Findings that warrant a look.","Red":"Strong findings."},"example":"Yellow"}},"components/schemas/DetectionClass":{"id":"components/schemas/DetectionClass","kind":"json-schema","title":"DetectionClass","data":{"type":"string","description":"Class predicted by one of our detection models.","enum":["-","real","tp","gen","gamp","Image quality too bad"],"x-enumDescriptions":{"-":"No prediction available (e.g. the analysis did not run).","real":"The model decided that the item is likely authentic.","tp":"The model decided that the item is likely edited.","gen":"The model decided that the item is likely AI generated.","gamp":"The model decided that the item likely contains a partial AI manipulation.","Image quality too bad":"The input quality was insufficient for a prediction."}}},"components/schemas/IrrelevanceReason":{"id":"components/schemas/IrrelevanceReason","kind":"json-schema","title":"IrrelevanceReason","data":{"type":"string","description":"Reason why an item was excluded from the analysis.","enum":["logo","letterhead","too_large","too_small","unprocessable","context","monochrome"],"x-enumDescriptions":{"logo":"The item is a logo.","letterhead":"The item is part of a letterhead.","too_large":"The item exceeds the hard input limits (see x-image-limits).","too_small":"The item is too small to be analysed meaningfully.","unprocessable":"The item could not be decoded / processed.","context":"The item does not fit the configured context for your cases.","monochrome":"The item is monochrome (e.g. a plain black or white area)."}}},"components/schemas/SignalSuppressionReason":{"id":"components/schemas/SignalSuppressionReason","kind":"json-schema","title":"SignalSuppressionReason","data":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Reason why a single analysis section's finding was excluded from an item's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"suspicion_level"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"enum":["insufficient_quality","heatmap_irrelevant"],"x-enumDescriptions":{"insufficient_quality":"The item's input quality was too low for this pixel-level model to be trustworthy.","heatmap_irrelevant":"The marked area is not meaningful for a fraud assessment (e.g. it lies on a logo or a plain background)."}}},"components/schemas/Request":{"id":"components/schemas/Request","kind":"json-schema","title":"Request","data":{"type":"object","properties":{"file":{"type":"string","format":"binary","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The ZIP file to be uploaded for analysis. Required for direct upload (< 10 MB). Omit when using the presigned S3 upload flow."},"children":[]}]}]}]}}}},"components/schemas/UploadUrlResponse":{"id":"components/schemas/UploadUrlResponse","kind":"json-schema","title":"UploadUrlResponse","data":{"type":"object","properties":{"upload_url":{"type":"string","format":"uri","description":"Presigned S3 PUT URL. Upload your ZIP file here using an HTTP PUT request with Content-Type application/zip. Expires after 10 minutes.\n","example":"https://uploads.vaarhaft.com/uploads/company123/a1b2c3d4.zip?..."},"s3_key":{"type":"string","description":"The S3 key to pass as query parameter to POST /v2/fraudscanner after uploading.\n","example":"uploads/company123/a1b2c3d4.zip"}},"required":["upload_url","s3_key"]}},"components/schemas/Attachment":{"id":"components/schemas/Attachment","kind":"json-schema","title":"Attachment","data":{"type":"object","properties":{"filename":{"type":"string","description":"Original filename of the attachment","example":"[HEATMAP]-3a35b619-4157-48cc-8e9a-443bd55f1edc.png"},"mime_type":{"type":"string","description":"MIME type of the attachment","example":"image/png","default":"application/octet-stream"},"data_b64":{"type":"string","format":"base64","description":"Base64-encoded content of the attachment","example":"iVBORw0KGgoAAAANSUhEUgAA..."}},"required":["filename","mime_type","data_b64"]}},"components/schemas/File":{"id":"components/schemas/File","kind":"json-schema","title":"File","data":{"type":"object","description":"The file for which the analysis was performed. Matches the naming of files in the ZIP archive from your request.\n","properties":{"file_type":{"type":"string","description":"The type of the file.","enum":["N/A","PDF","PNG (image file)","JPEG (image file)","TIFF (image file)","WEBP (image file)","HEIC (container file)"],"example":"PNG (image file)"},"suspicion_level":{"allOf":[{"$ref":"#/components/schemas/SuspicionLevel"}],"description":"An indicator as to how suspicious the contents of the file are. Is calculated from the suspicion levels of the contained items and the file level analyses."},"suspicion_by_position":{"type":"object","nullable":true,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Only for PDF files (null otherwise). Maps page numbers to the suspicion level found on that page. Keys are page numbers as strings; a letter suffix (e.g. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"2a"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") marks a page that was added compared to a restored previous version. A value of "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" marks a page that was removed."},"children":[]}]}]}],"additionalProperties":{"allOf":[{"$ref":"#/components/schemas/SuspicionLevel"}],"nullable":true},"example":{"1":"Green","2":"Red","3":null,"2a":"Red"}},"selected_positions":{"type":"array","nullable":true,"description":"The pages that were selected for analysis, if a page selection was used for this file. Null otherwise.","items":{"type":"integer"},"example":[1,2,5]},"file_level_analyses":{"$ref":"#/components/schemas/FileLevelAnalyses"},"items":{"type":"array","description":"Array of items that were analysed in the file (either images or documents).\n","items":{"oneOf":[{"$ref":"#/components/schemas/ImageItem"},{"$ref":"#/components/schemas/DocumentItem"}]}}}}},"components/schemas/FileLevelAnalyses":{"id":"components/schemas/FileLevelAnalyses","kind":"json-schema","title":"FileLevelAnalyses","data":{"type":"object","nullable":true,"description":"A collection of analyses performed at the file level (e.g. structural PDF analysis). If no file-level analyses are applicable or conducted, this will be null.\n","properties":{"pdf_analyses":{"type":"object","nullable":true,"description":"Results of the file level PDF analyses (only applicable for PDF files, else null).","properties":{"suspicion_level":{"allOf":[{"$ref":"#/components/schemas/SuspicionLevel"}],"description":"Suspicion level derived from the file level PDF analyses."},"versions":{"type":"object","nullable":true,"description":"Information about previous versions of the PDF. The number of found versions may not always be equal to the number of successfully extracted versions, as not all detectable methods of tampering allow for restoration of previous versions.","properties":{"found":{"type":"integer","example":2,"description":"The number of previous versions found."},"extracted":{"type":"integer","example":1,"description":"The number of previous versions successfully extracted. Any extracted versions will be returned as attachment."},"error":{"type":"boolean","description":"Whether an error occured during PDF version analysis.","example":false}}},"structure":{"type":"object","nullable":true,"description":"Information extracted about a PDF file's structure.","properties":{"creation_dates":{"type":"array","description":"The creation timestamps found in the PDF metadata.","items":{"type":"string","example":"2026-02-24 19:30:10 +01:00"}},"mod_dates":{"type":"array","description":"The modification timestamps found in the PDF metadata.","items":{"type":"string","example":"2026-02-24 19:39:03 +01:00"}},"inconsistent_metadata_dates":{"type":"boolean","example":false,"description":"Whether the found dates of creation and modification in the different PDF metadata formats of the file are inconsistent or suspicious, potentially indicating tampering. If nothing is out of the ordinary, this is set to false."},"editing_tools":{"type":"array","description":"The detected tools used to modify the PDF file.","items":{"type":"string","example":"Adobe Acrobat"}},"annotation_layer_found":{"type":"boolean","example":true,"description":"Indicates whether an annotation layer (a PDF feature) was found in the file. This is a normal part of many PDF documents, e.g. for interaction purposes, but may in some cases indicate tampering."},"overlapping_embeds":{"type":"boolean","example":false,"description":"Whether embedded images overlap each other, which can indicate that content was covered up."},"error":{"type":"boolean","description":"Whether an error occured during structural PDF analysis.","example":false}}},"composed_pdf_check":{"type":"object","nullable":true,"description":"Checks whether the PDF looks assembled from stitched-together document snippets.","properties":{"is_composed":{"type":"boolean","example":false,"description":"Whether the PDF looks assembled from stitched document snippets."},"shard_count":{"type":"integer","example":0,"description":"Number of embedded snippets on the flagged page(s)."},"flagged_pages":{"type":"array","description":"1-based page numbers that triggered the flag.","items":{"type":"integer"}},"error":{"type":"boolean","example":false},"enabled":{"type":"boolean","example":true}}}}},"plausibility":{"$ref":"#/components/schemas/FileLevelPlausibility"},"document_plausibility":{"type":"object","nullable":true,"description":"Optional add-on for credential/HR document checks, one entry per document contained in the file. Only present if the corresponding feature is enabled for you; null otherwise. Contact us for the detailed schema.\n","properties":{"suspicion_level":{"$ref":"#/components/schemas/SuspicionLevel"},"documents":{"type":"array","items":{"type":"object"}}}}}}},"components/schemas/FileLevelPlausibility":{"id":"components/schemas/FileLevelPlausibility","kind":"json-schema","title":"FileLevelPlausibility","data":{"type":"object","nullable":true,"description":"File-level plausibility checks on documents. Only present if plausibility checks are enabled for you.\n\n Note: sub-checks without findings are omitted from the response (the document classification is always\nincluded, as it is purely informational). Read this object defensively - a missing key means \"nothing found\", not \"not analysed\".\n","properties":{"classification":{"type":"object","nullable":true,"description":"Document classification, informational (always included when the check ran).","properties":{"document_type":{"type":"string","nullable":true,"description":"Classified document type.","example":"invoice"},"has_qr":{"type":"boolean","nullable":true,"description":"Whether a QR code was visually detected."},"reasoning":{"type":"string","nullable":true,"description":"Short explanation for the classification."},"error":{"type":"boolean"}}},"handelsregister_verification":{"type":"object","description":"Verification of a German commercial register (Handelsregister) entry found in the document.","properties":{"extracted_register_number":{"type":"string","nullable":true,"description":"Register number extracted from the document."},"extracted_company_name":{"type":"string","nullable":true,"description":"Company name extracted from the document."},"register_found":{"type":"boolean","description":"Whether the register entry was found online."},"registered_company_name":{"type":"string","nullable":true,"description":"Company name as officially registered."},"names_match":{"type":"boolean","nullable":true,"description":"Whether extracted and registered company names match."},"match_confidence":{"type":"string","nullable":true,"description":"Confidence of the match: high, medium or low."},"reasoning":{"type":"string","nullable":true},"error":{"type":"boolean"}}},"pdf_redaction_check":{"type":"object","description":"Detection of redaction annotations in the PDF.","properties":{"has_redactions":{"type":"boolean"},"redaction_count":{"type":"integer"},"redaction_types":{"type":"array","items":{"type":"string"}},"error":{"type":"boolean"}}},"page_number_consistency":{"type":"object","description":"Consistency of the page numbering printed in the document.","properties":{"is_consistent":{"type":"boolean","nullable":true},"pages_found":{"type":"array","items":{"type":"integer"}},"total_pages_stated":{"type":"integer","nullable":true},"missing_pages":{"type":"array","items":{"type":"integer"}},"duplicate_pages":{"type":"array","items":{"type":"integer"}},"reasoning":{"type":"string","nullable":true},"error":{"type":"boolean"}}},"id_document_completeness":{"type":"object","description":"Whether a submitted ID document contains all pages/sides it should.","properties":{"is_complete":{"type":"boolean","nullable":true},"document_type":{"type":"string","nullable":true},"pages_found":{"type":"array","items":{"type":"string"}},"missing_pages":{"type":"array","items":{"type":"string"}},"reasoning":{"type":"string","nullable":true},"error":{"type":"boolean"}}},"document_structure_check":{"type":"object","description":"Whether the document contains the sections and markings expected for its type.","properties":{"is_valid_structure":{"type":"boolean","nullable":true},"sections_found":{"type":"array","items":{"type":"string"}},"missing_sections":{"type":"array","items":{"type":"string"}},"suspicious_markings":{"type":"array","items":{"type":"string"}},"has_blackouts":{"type":"boolean","nullable":true},"reasoning":{"type":"string","nullable":true},"error":{"type":"boolean"}}},"spelling_grammar_check":{"type":"object","description":"Spelling, grammar and phrasing anomalies in the document text.","properties":{"has_errors":{"type":"boolean","nullable":true},"spelling_errors":{"type":"array","items":{"type":"string"}},"grammar_errors":{"type":"array","items":{"type":"string"}},"slang_terms":{"type":"array","items":{"type":"string"}},"unnatural_phrases":{"type":"array","items":{"type":"string"}},"reasoning":{"type":"string","nullable":true},"error":{"type":"boolean"}}},"error":{"type":"boolean","description":"Whether the file-level plausibility analysis encountered an error."}}}},"components/schemas/ItemBase":{"id":"components/schemas/ItemBase","kind":"json-schema","title":"ItemBase","data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","example":"f32dc630-47c1-4596-8cba-9d1584674c17","description":"Unique identifier for the item. Used as reference in attachment filenames (e.g. heatmaps)."},"item_type":{"type":"string","enum":["image","document"],"description":"The type of the item."},"position":{"type":"string","nullable":true,"example":"Page 1","description":"The position of the item within the file (e.g., \"Page 1\"). May be null if not applicable."},"suspicion_level":{"allOf":[{"$ref":"#/components/schemas/SuspicionLevel"}],"description":"An indicator as to how suspicious the contents of the item are. Is calculated from the suspicion levels of the individual analyses."},"irrelevance_reason":{"allOf":[{"$ref":"#/components/schemas/IrrelevanceReason"}],"nullable":true,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Set when this item was excluded from the analysis (its "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"suspicion_level"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is then "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"-"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Null if the item was analysed normally."},"children":[]}]}]}]},"signal_suppression":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Analysis sections whose finding was excluded from this item's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"suspicion_level"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", mapped to the reason why. The section itself keeps its raw "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"predictedClassName"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"confidence"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", so "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"check this map before displaying a finding"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - otherwise a suppressed section still reads as a hit on an item that we rated green. Empty when nothing was suppressed."},"children":[]}]}]}],"additionalProperties":{"$ref":"#/components/schemas/SignalSuppressionReason"},"example":{"tamperedDetection":"heatmap_irrelevant"}},"image_normalization":{"type":"object","nullable":true,"description":"Present when the image exceeded our analysis targets and was automatically reduced server-side before the analysis (aspect ratio preserved). Null when the input was within limits and left untouched.\n","properties":{"original_width":{"type":"integer","description":"Original image width in pixels, before normalization."},"original_height":{"type":"integer","description":"Original image height in pixels, before normalization."},"original_file_size_bytes":{"type":"integer","description":"Original file size in bytes, before normalization."},"processed_width":{"type":"integer","description":"Processed image width in pixels, as analysed."},"processed_height":{"type":"integer","description":"Processed image height in pixels, as analysed."},"processed_file_size_bytes":{"type":"integer","description":"Processed file size in bytes, as analysed."},"resized":{"type":"boolean","description":"True when the resolution was reduced."},"reencoded":{"type":"boolean","description":"True when the image bytes were re-encoded (JPEG output)."}}},"item_description":{"type":"string","nullable":true,"description":"Short description of what the item shows. Only present if the corresponding optional feature is enabled for you.\n","example":"Car crash — front-end damage to a blue sedan"},"relevance":{"type":"boolean","nullable":true,"description":"Whether the item was considered relevant for the case context configured for you. Only present if the corresponding optional feature is enabled for you; null when the check did not run.\n"},"relevance_reasoning":{"type":"string","nullable":true,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Short explanation for the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"relevance"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" verdict. Same availability as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"relevance"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}}}},"components/schemas/ImageItem":{"id":"components/schemas/ImageItem","kind":"json-schema","title":"ImageItem","data":{"description":"Represents an image item extracted from the file.","allOf":[{"$ref":"#/components/schemas/ItemBase"},{"type":"object","properties":{"analyses":{"$ref":"#/components/schemas/ImageAnalyses"}}}]}},"components/schemas/DocumentItem":{"id":"components/schemas/DocumentItem","kind":"json-schema","title":"DocumentItem","data":{"description":"Represents a document item (e.g. a scanned document page) extracted from the file.","allOf":[{"$ref":"#/components/schemas/ItemBase"},{"type":"object","properties":{"analyses":{"$ref":"#/components/schemas/DocumentAnalyses"}}}]}},"components/schemas/ImageQualityResult":{"id":"components/schemas/ImageQualityResult","kind":"json-schema","title":"ImageQualityResult","data":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Input quality of the item. If the quality is insufficient, pixel-level model findings for this item are not trustworthy and are suppressed (see "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"signal_suppression"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); depending on your configuration the item is then rated "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"-"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (\"no statement possible\") instead of green."},"children":[]}]}]}],"properties":{"result":{"type":"boolean","example":true,"description":"Indicates if the item meets our quality requirements."},"error":{"type":"boolean","example":false,"description":"Indicates if an error occurred during the quality analysis."}}}},"components/schemas/GeneratedDetectionResult":{"id":"components/schemas/GeneratedDetectionResult","kind":"json-schema","title":"GeneratedDetectionResult","data":{"type":"object","description":"Detects whether the item was generated by an AI.","properties":{"predictedClassName":{"allOf":[{"$ref":"#/components/schemas/DetectionClass"}],"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"gen"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for generated, "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"real"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for not generated."},"children":[]}]}]}],"example":"real"},"confidence":{"type":"number","example":0.99,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Confidence level of the prediction (0-1). "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"-1"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when no prediction was made."},"children":[]}]}]}]},"generatorAttribution":{"type":"object","nullable":true,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Which generator most likely produced the image. Only present for images predicted as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"gen"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", and only if the feature is enabled for you."},"children":[]}]}]}],"properties":{"predictions":{"type":"object","description":"Probability per generator.","additionalProperties":{"type":"number"},"example":{"midjourney":0.81,"sdxl":0.12}},"topClass":{"type":"string","nullable":true,"description":"The most likely generator.","example":"midjourney"},"topProb":{"type":"number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Probability of "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"topClass"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"example":0.81},"error":{"type":"boolean"}}},"error":{"type":"boolean","example":false,"description":"Indicates if an error occurred during generated detection."},"enabled":{"type":"boolean","example":true,"description":"Indicates if generated detection was activated."}}}},"components/schemas/TamperedDetectionResult":{"id":"components/schemas/TamperedDetectionResult","kind":"json-schema","title":"TamperedDetectionResult","data":{"type":"object","description":"Detects whether the item was edited. If a heatmap attachment is returned for this item, it shows where.\n","properties":{"predictedClassName":{"allOf":[{"$ref":"#/components/schemas/DetectionClass"}],"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"tp"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for tampered/edited, "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"real"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for not edited."},"children":[]}]}]}],"example":"tp"},"confidence":{"type":"number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Confidence level of the prediction (0-1). "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"-1"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when no prediction was made."},"children":[]}]}]}],"example":0.99},"error":{"type":"boolean","description":"Indicates if an error occurred during tampered detection.","example":false},"enabled":{"type":"boolean","description":"Indicates if tampered detection was activated.","example":true}}}},"components/schemas/GampDetectionResult":{"id":"components/schemas/GampDetectionResult","kind":"json-schema","title":"GampDetectionResult","data":{"type":"object","description":"Detects partial AI manipulations - an otherwise authentic item in which single elements were generated or replaced by an AI.","properties":{"predictedClassName":{"allOf":[{"$ref":"#/components/schemas/DetectionClass"}],"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"gamp"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for a detected partial AI manipulation, "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"real"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" otherwise."},"children":[]}]}]}],"example":"gamp"},"confidence":{"type":"number","example":0.9,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Confidence level of the prediction (0-1). "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"-1"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when no prediction was made."},"children":[]}]}]}]},"error":{"type":"boolean","example":false},"enabled":{"type":"boolean","example":true}}}},"components/schemas/ForensicAnalysisResult":{"id":"components/schemas/ForensicAnalysisResult","kind":"json-schema","title":"ForensicAnalysisResult","data":{"type":"object","nullable":true,"description":"Optional add-on: an in-depth forensic assessment of the item, including ready-to-use explanatory texts in the requested language. Only present if the corresponding feature is enabled for you; null otherwise. Please contact us for the detailed schema and for guidance on how to interpret and present these results.\n"}},"components/schemas/MetadataResult":{"id":"components/schemas/MetadataResult","kind":"json-schema","title":"MetadataResult","data":{"type":"object","description":"Extracted and analysed metadata of the item, including inferences across all items of the request.","properties":{"inferences":{"type":"object","nullable":true,"description":"Inferences across items regarding their metadata. Only applicable if multiple items contain relevant metadata, such as GPS-, timestamp- or model-data.","properties":{"distance":{"type":"object","description":"Inferences regarding the distances calculated between the places where the items/images were taken, according to their GPS metadata.","properties":{"unusually_high_distance":{"type":"boolean","description":"Whether the highest distance found is unusually high for a single case.","example":false},"highest_distance_in_km":{"type":"number","description":"The highest distance in kilometers between this and another given item in the request, according to their GPS metadata. High values may hint at inconsistencies and will trigger flagging.","example":153.9},"highest_distance_item_uuid":{"type":"string","description":"The UUID of another item in the request, if any, that has the highest distance to this item. Only applies if this item has GPS metadata and at least one more item in the request does too.","example":"d25a844c-43f9-470e-8b55-0a55639072d9"}}},"gps_outlier":{"type":"object","description":"Inferences regarding clustered GPS data of all items that possess the relevant metadata.","properties":{"is_geographical_outlier":{"type":"boolean","description":"Whether the item's GPS metadata is an outlier, compared to other items with GPS metadata in the request.","example":true},"distance_from_mean_in_km":{"type":"number","description":"The distance in kilometers from the cluster-mean that was calculated from all items' metadata.","example":402.12}}},"model_consistency":{"type":"object","description":"Inferences regarding the used model of camera, phone, or other device used to take the image, as noted in the image's metadata.","properties":{"is_consistent":{"type":"boolean","description":"Whether or not the model of the used camera/phone/etc. is consistent across items that possess the relevant metadata information.","example":true}}},"time_consistency":{"type":"object","description":"Inferences regarding GPS metadata in combination with timestamp metadata.","properties":{"is_possible":{"type":"boolean","description":"Whether or not it is plausible that all images were taken by one individual, taking into account all available timestamps and corresponding GPS data. An example would be; \"According to their GPS metadata, Image1 was taken in Berlin, Image2 was taken in Munich. Their timestamps are only 20min apart, however. Thus, it was likely someone else that took one of the images.\"\n","example":true},"implied_speed_kmh":{"type":"number","description":"The speed, according to GPS and timestamp metadata, that the individual taking the images must have traveled at, at least. High values may hint at inconsistencies and will trigger flagging.","example":26.4}}}}},"analysed":{"type":"object","nullable":true,"description":"Contains analysed metadata.","properties":{"creationDate":{"type":"object","description":"Contains creation date information.","properties":{"cDate":{"type":"string","description":"The creation date of the item (or \"-\" if not found)."},"cTime":{"type":"string","description":"The creation time of the item (or \"-\" if not found)."},"isSus":{"type":"boolean","description":"Indicates if the creation date is suspicious."},"diffInDays":{"type":"integer","description":"Difference in days between the creation date and the reference date."},"isTodayUsed":{"type":"boolean","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Indicates if the current date was used as reference date (because no "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"issueDate"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" was supplied)."},"children":[]}]}]}]},"refDate":{"type":"string","description":"The reference date used for checking the creation date."}}},"imgRanking":{"type":"integer","nullable":true,"description":"Ranking of the item based on the richness of its metadata. May be null."},"fieldsMarkedSus":{"type":"object","description":"Suspicious fields found in the metadata, mapped to a short explanation.","additionalProperties":{"type":"string"}}}},"gpsInfo":{"type":"object","nullable":true,"description":"GPS information of the item, if available.","additionalProperties":true},"is_screenshot":{"type":"boolean","description":"Indicates whether the item is likely a screenshot, based on its metadata.","example":false},"raw":{"type":"object","nullable":true,"description":"Raw metadata containing detailed information.","properties":{"Rating":{"type":"object","description":"Per-field rating of the found metadata.","additionalProperties":{"type":"integer"}},"Dates":{"type":"object","description":"Date entries found in the metadata.","additionalProperties":{"type":"string"}},"GPS":{"type":"object","description":"GPS entries found in the metadata.","additionalProperties":true},"Other":{"type":"array","description":"Other metadata found during analysis.","items":{"type":"object"}}}},"error":{"type":"boolean","example":false,"description":"Indicates if an error occurred during metadata analysis."},"enabled":{"type":"boolean","example":true,"description":"Indicates if metadata analysis was enabled."}}}},"components/schemas/C2paResult":{"id":"components/schemas/C2paResult","kind":"json-schema","title":"C2paResult","data":{"type":"object","description":"Results of the C2PA metadata / Content Credentials analysis.","properties":{"c2pa_extracted":{"type":"boolean","example":true,"description":"Indicates if C2PA data was extracted."},"reason":{"type":"string","example":"C2PA data found","description":"Explanation for why C2PA data was extracted / not extracted."},"data":{"type":"object","nullable":true,"description":"Detailed information regarding the extracted C2PA data. If no data was extracted, this will be null.","properties":{"is_valid":{"type":"boolean","example":true,"description":"Indicates if the C2PA data is valid. This will check, for example, if the signature matches the content."},"suspicious_keywords":{"type":"array","items":{"type":"string"},"description":"Keywords that may indicate tampering or AI generation."},"validation_status_base64":{"type":"string","format":"base64","description":"Base64 encoded validation status."},"manifest_base64":{"type":"string","format":"base64","description":"Base64 encoded manifest of the C2PA data."}}},"error":{"type":"boolean","example":false},"enabled":{"type":"boolean","example":true}}}},"components/schemas/DoubletCheckResult":{"id":"components/schemas/DoubletCheckResult","kind":"json-schema","title":"DoubletCheckResult","data":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Checks whether we have seen this item before - either in one of your own earlier cases (internal) or across our wider dataset (external)."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Internal matches carry full context: per hit you get the case number it was submitted under, plus the date"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"and time of that submission (see "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internalDuplicates"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). External matches are reported as an anonymous summary only ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"externalDuplicates"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") - case numbers and submission timestamps of other organisations are never disclosed."},"children":[]}]}]}],"properties":{"result":{"type":"boolean","description":"Indicates if the item was already seen.","example":true},"internal":{"type":"boolean","description":"Indicates if the duplicate was found in your own case history.","example":true},"caseNumber":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Compatibility field: the case numbers from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internalDuplicates"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", joined by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"|"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (space-pipe-space) and in the same order. Empty string when there is no internal match. Prefer "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internalDuplicates"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for new integrations - it carries the submission date and time per hit."},"children":[]}]}]}],"example":"Case 321B | Case 118A"},"internalDuplicates":{"type":"array","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Details per internal duplicate match. Always present; empty when there is no internal match (for example when only external matches were found)."},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"*"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Sorted by submission date and time, newest first. Entries without a timestamp are listed last."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Capped at 10 entries. If more internal matches exist, only the 10 most recent ones are returned, and"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"caseNumber"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is capped identically."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"submissionDate"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"submissionTime"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" are "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for legacy entries that were indexed before we started"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"storing submission timestamps. Display those as \"not available\" instead of treating them as an error."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"totalKeypoints"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"matchedKeypoints"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" are only populated by the similarity-based matching; with"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"hash-based matching they are "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}]}],"items":{"type":"object","properties":{"caseNumber":{"type":"string","description":"The case number this item was submitted under previously.","example":"Case 321B"},"submissionDate":{"type":"string","nullable":true,"description":"Date the duplicate was submitted (YYYY-MM-DD). Null for legacy entries.","example":"2026-05-14"},"submissionTime":{"type":"string","nullable":true,"description":"Time the duplicate was submitted (HH:MM, 24h). Null for legacy entries.","example":"09:32"},"totalKeypoints":{"type":"integer","nullable":true,"description":"Number of compared image keypoints. Null for hash-based matches."},"matchedKeypoints":{"type":"integer","nullable":true,"description":"Number of matching image keypoints. Null for hash-based matches."}}}},"externalDuplicates":{"type":"object","nullable":true,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Summary of external duplicate matches. Null when there are none."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Deliberately anonymous: it reports how many matches were found at how many other organisations, but never"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"a case number or a submission date - those belong to the other organisation. The per-hit fields of "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internalDuplicates"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" therefore have no counterpart here."},"children":[]}]}]}],"properties":{"matches":{"type":"integer","description":"Number of external matches found.","example":3},"companies":{"type":"integer","description":"Number of distinct other organisations the matches were found at.","example":2},"totalKeypoints":{"type":"integer","nullable":true},"matchedKeypoints":{"type":"integer","nullable":true}}},"error":{"type":"boolean","example":false},"enabled":{"type":"boolean","example":true}}}},"components/schemas/ReverseSearchResult":{"id":"components/schemas/ReverseSearchResult","kind":"json-schema","title":"ReverseSearchResult","data":{"type":"object","description":"Results of the reverse image search - whether the image (or part of it) can be found online.","properties":{"matches":{"type":"array","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"List of matching images found online, if any. Each entry is a two-element array "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"[url, score]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", where "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"score"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is the match score."},"children":[]}]}]}],"items":{"type":"array","minItems":2,"maxItems":2,"items":{"oneOf":[{"type":"string"},{"type":"number"}]}},"example":[["https://example.com/image.jpg",98]]},"error":{"type":"boolean","example":false},"enabled":{"type":"boolean","example":true}}}},"components/schemas/ScreenCaptureDetectionResult":{"id":"components/schemas/ScreenCaptureDetectionResult","kind":"json-schema","title":"ScreenCaptureDetectionResult","data":{"type":"object","description":"Detects whether the item is a photo of a screen or a screenshot rather than an original capture. Only part of the response if the feature is enabled for you.\n","properties":{"predictedClassName":{"type":"string","enum":["-","real","screenshot"],"example":"screenshot"},"confidence":{"type":"number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Confidence level of the prediction (0-1). "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"-1"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when no prediction was made."},"children":[]}]}]}],"example":0.8},"error":{"type":"boolean","example":false},"enabled":{"type":"boolean","example":true}}}},"components/schemas/ImageModerationResult":{"id":"components/schemas/ImageModerationResult","kind":"json-schema","title":"ImageModerationResult","data":{"type":"object","description":"Content classification of the item (e.g. which kind of object it shows). Only part of the response if the feature is enabled for you.\n","properties":{"classification":{"type":"string","nullable":true,"example":"PKW"},"error":{"type":"boolean","example":false},"enabled":{"type":"boolean","example":true}}}},"components/schemas/DocumentTemplateMatchResult":{"id":"components/schemas/DocumentTemplateMatchResult","kind":"json-schema","title":"DocumentTemplateMatchResult","data":{"type":"object","description":"Matches the item against known document templates configured for you, and extracts their fields. Only part of the response if the feature is enabled for you.\n","properties":{"matched_template_id":{"type":"string","nullable":true},"matched_template_name":{"type":"string","nullable":true,"example":"Invoice — Garage XY"},"confidence":{"type":"number","example":0.93},"extracted_fields":{"type":"object","description":"Fields extracted from the matched template.","additionalProperties":{"type":"string"}},"error":{"type":"boolean"},"enabled":{"type":"boolean"}}}},"components/schemas/PlausibilityResult":{"id":"components/schemas/PlausibilityResult","kind":"json-schema","title":"PlausibilityResult","data":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Item-level plausibility checks on documents. Only part of the response if plausibility checks are enabled for you."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Note: sub-checks without findings are omitted ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id_field_extraction"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is always included when it ran)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Read this object defensively - a missing key means \"nothing found\", not \"not analysed\"."},"children":[]}]}]}],"properties":{"qr_code_analysis":{"type":"object","description":"Cross-validation of a QR code found on the document against the document's visible content.","properties":{"status":{"type":"string","enum":["PASS","FAIL","SKIPPED","ERROR"]},"qr_detected":{"type":"boolean"},"qr_data":{"type":"string","nullable":true,"description":"Decoded QR code content."},"qr_code_type":{"type":"string","nullable":true,"description":"Detected QR code type (e.g. tse, swiss, other)."},"tse_signature_valid":{"type":"boolean","nullable":true,"description":"Signature validity for signed (TSE) QR codes; null for other types."},"details":{"type":"string","nullable":true},"error":{"type":"boolean"}}},"expired_document_check":{"type":"object","description":"Whether the document is expired.","properties":{"is_expired":{"type":"boolean","nullable":true},"expiry_date":{"type":"string","nullable":true,"description":"Extracted expiry date (YYYY-MM-DD)."},"document_type":{"type":"string","nullable":true},"reasoning":{"type":"string","nullable":true},"error":{"type":"boolean"}}},"punched_document_check":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Whether the document was invalidated - punched, marked (e.g. \"UNGÜLTIG\"/\"VOID\") or physically damaged."},"children":[]}]}]}],"properties":{"is_punched":{"type":"boolean","nullable":true},"is_invalidated":{"type":"boolean","nullable":true},"invalidation_marking":{"type":"string","nullable":true},"physically_damaged":{"type":"boolean","nullable":true},"damage_type":{"type":"string","nullable":true},"reasoning":{"type":"string","nullable":true},"error":{"type":"boolean"}}},"id_field_extraction":{"type":"object","description":"Fields extracted from an ID document.","properties":{"extracted_fields":{"type":"object","additionalProperties":{"type":"string"}},"error":{"type":"boolean"}}},"mrz_cross_validation":{"type":"object","description":"Cross-validation of the machine-readable zone of an ID document against its visible fields.","properties":{"is_consistent":{"type":"boolean","nullable":true},"mismatches":{"type":"array","items":{"type":"string"}},"check_digit_valid":{"type":"boolean","nullable":true},"reasoning":{"type":"string","nullable":true},"error":{"type":"boolean"}}},"document_deep_analysis":{"type":"object","description":"Rule-based deep analysis of the document's contents (arithmetic, VAT, fee factors, dates, prices).","properties":{"gesamtscore":{"type":"string","enum":["UNKNOWN","GREEN","YELLOW","RED"],"description":"Overall score of the deep analysis."},"math_correct":{"type":"boolean","nullable":true,"description":"Whether all arithmetic checks passed."},"vat_correct":{"type":"boolean","nullable":true,"description":"Whether the VAT checks passed."},"goae_plausible":{"type":"boolean","nullable":true,"description":"Whether the fee factor checks passed."},"dates_plausible":{"type":"boolean","nullable":true,"description":"Whether the date checks passed."},"prices_plausible":{"type":"boolean","nullable":true,"description":"Whether the price/amount checks passed."},"erklaerung_summary":{"type":"string","description":"Human-readable summary of the findings."},"suspicious_ids":{"type":"array","description":"Identifiers of the text lines that were found suspicious.","items":{"type":"string"}},"error":{"type":"boolean"}}},"enabled":{"type":"boolean","description":"Whether any plausibility sub-check is enabled."},"error":{"type":"boolean","description":"Whether the overall plausibility analysis encountered an error."}}}},"components/schemas/ImageAnalyses":{"id":"components/schemas/ImageAnalyses","kind":"json-schema","title":"ImageAnalyses","data":{"type":"object","nullable":true,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Analysis results for an image item. Sections belonging to features that are not enabled for you are either empty ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"enabled: false"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") or omitted entirely."},"children":[]}]}]}],"properties":{"imageQuality":{"$ref":"#/components/schemas/ImageQualityResult"},"metadata":{"$ref":"#/components/schemas/MetadataResult"},"c2pa":{"$ref":"#/components/schemas/C2paResult"},"doubletCheck":{"$ref":"#/components/schemas/DoubletCheckResult"},"reverseSearch":{"$ref":"#/components/schemas/ReverseSearchResult"},"imageModeration":{"$ref":"#/components/schemas/ImageModerationResult"},"generatedDetection":{"$ref":"#/components/schemas/GeneratedDetectionResult"},"tamperedDetection":{"$ref":"#/components/schemas/TamperedDetectionResult"},"gampDetection":{"$ref":"#/components/schemas/GampDetectionResult"},"forensicAnalysis":{"$ref":"#/components/schemas/ForensicAnalysisResult"},"screenCaptureDetection":{"$ref":"#/components/schemas/ScreenCaptureDetectionResult"},"documentTemplateMatch":{"$ref":"#/components/schemas/DocumentTemplateMatchResult"},"plausibility":{"$ref":"#/components/schemas/PlausibilityResult"},"phoneNumber":{"type":"object","deprecated":true,"description":"Deprecated - detection of phone numbers within the image. Only part of the response if explicitly configured for you.","properties":{"text":{"type":"string","example":"+49 123 456789"},"result":{"type":"boolean"},"error":{"type":"boolean"},"enabled":{"type":"boolean"}}},"qrCode":{"type":"object","deprecated":true,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Deprecated - detection of QR codes within the image (superseded by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"plausibility.qr_code_analysis"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Only part of the response if explicitly configured for you."},"children":[]}]}]}],"properties":{"result":{"type":"boolean"},"error":{"type":"boolean"},"enabled":{"type":"boolean"}}},"link":{"type":"object","deprecated":true,"description":"Deprecated - detection of URLs within the image. Only part of the response if explicitly configured for you.","properties":{"text":{"type":"string","example":"https://www.example.com"},"result":{"type":"boolean"},"error":{"type":"boolean"},"enabled":{"type":"boolean"}}}}}},"components/schemas/DocumentAnalyses":{"id":"components/schemas/DocumentAnalyses","kind":"json-schema","title":"DocumentAnalyses","data":{"type":"object","nullable":true,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Analysis results for a document item. Sections belonging to features that are not enabled for you are either empty ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"enabled: false"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") or omitted entirely."},"children":[]}]}]}],"properties":{"imageQuality":{"allOf":[{"$ref":"#/components/schemas/ImageQualityResult"}],"nullable":true,"description":"Input quality of the document scan. Null when no quality assessment ran."},"metadata":{"$ref":"#/components/schemas/MetadataResult"},"c2pa":{"$ref":"#/components/schemas/C2paResult"},"doubletCheck":{"$ref":"#/components/schemas/DoubletCheckResult"},"generatedDetection":{"$ref":"#/components/schemas/GeneratedDetectionResult"},"tamperedDetection":{"$ref":"#/components/schemas/TamperedDetectionResult"},"gampDetection":{"$ref":"#/components/schemas/GampDetectionResult"},"forensicAnalysis":{"$ref":"#/components/schemas/ForensicAnalysisResult"},"documentTemplateMatch":{"$ref":"#/components/schemas/DocumentTemplateMatchResult"},"plausibility":{"$ref":"#/components/schemas/PlausibilityResult"}}}},"components/schemas/BaseResponseCommon":{"id":"components/schemas/BaseResponseCommon","kind":"json-schema","title":"BaseResponseCommon","data":{"type":"object","properties":{"suspicion_level":{"allOf":[{"$ref":"#/components/schemas/SuspicionLevel"}],"description":"An indicator as to how suspicious the contents of the request were. Is calculated from the suspicion levels of the contained files."},"Files":{"type":"object","description":"A mapping of filename to file analysis results.","additionalProperties":{"x-additionalPropertiesName":"<FileName>","$ref":"#/components/schemas/File"}},"caseNumber":{"type":"string","description":"The case number assigned to the request.","example":"Case 123A"},"sessionId":{"type":"string","format":"uuid","description":"A unique identifier generated for the request. Please include it in support requests.","example":"5a8d8fd2-3317-4964-8298-caa96cd5cfa3"},"modelVersions":{"type":"object","description":"Overview of the internal VAARHAFT AI models used for classification.","properties":{"imagesModelVersion":{"type":"string","example":"vh-mo-images-alpha","description":"The VAARHAFT AI model used for the analysis of images."},"documentsModelVersion":{"type":"string","example":"vh-mo-docs-alpha","description":"The VAARHAFT AI model used for the analysis of documents."}}},"tokensConsumed":{"type":"integer","description":"The amount of API tokens that were consumed by this request, depending for example on the number and types of processed files.","example":12},"cross_file_analyses":{"type":"object","nullable":true,"description":"Optional add-on: checks that compare the submitted documents against each other across the whole request. Only present if the corresponding feature is enabled for you. Contact us for the detailed schema.\n"},"agenticRecommendation":{"type":"object","nullable":true,"description":"Optional add-on: a consolidated, case-level recommendation summarising the findings of the request. Only present if the corresponding feature is enabled for you. Contact us for the detailed schema.\n"},"attachmentDownloadUrl":{"type":"string","nullable":true,"format":"uri","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Link to download all attachments of this request as a single ZIP, instead of receiving them inline. Only present if the presigned-download feature is enabled for you; null / absent otherwise."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"How it works:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"*"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Whenever this mode is active, the response is always plain "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"application/json"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with no inline"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"attachments - no "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"multipart/mixed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" body and no Base64 "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"attachments"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" map, regardless of the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Because the attachments no longer travel in the response, the ~9 MB payload cap does not apply to them."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Download it with a simple "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". The link is already signed, so no "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"x-api-key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is needed - treat it as a secret."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The link is valid for "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"12 hours"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; the stored file is deleted automatically after 24 hours."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The download is one ZIP ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"attachments.zip"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") that contains the per-category ZIPs as entries, i.e. the same"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bundles as the multipart mode: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"analysis_report.zip"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"enfsi_report.zip"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"heatmaps.zip"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"thumbnails.zip"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":","},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"reverse_search_downloads.zip"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"pdf_versions.zip"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"pdf_diffs.zip"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - whichever were generated for the request."},"children":[]}]}]}]}],"example":"https://downloads.vaarhaft.com/responses/company123/5a8d8fd2-3317-4964-8298-caa96cd5cfa3.zip?..."},"pdfReportMapping":{"type":"object","nullable":true,"description":"Maps each input filename to the 1-based page of its detail view in the analysis report PDF. Empty when no report was generated. Only present if the corresponding feature is enabled for you.\n","additionalProperties":{"type":"integer"},"example":{"damage_photo.jpg":4,"invoice.pdf":7}},"etag":{"type":"string","nullable":true,"description":"Internal value used by our own frontend clients; null for API integrations."},"pdfEditingToolsBlacklist":{"type":"array","nullable":true,"description":"Internal value used by our own frontend clients; null for API integrations.","items":{"type":"string"}}}}},"components/schemas/BaseResponseMultipart":{"id":"components/schemas/BaseResponseMultipart","kind":"json-schema","title":"BaseResponseMultipart","data":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The JSON part of a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"multipart/mixed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" response. Attachments are delivered as separate ZIP parts (see the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"attachments"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" array of the 200 response) rather than inside the JSON."},"children":[]}]}]}],"allOf":[{"$ref":"#/components/schemas/BaseResponseCommon"}]}},"components/schemas/BaseResponse":{"id":"components/schemas/BaseResponse","kind":"json-schema","title":"BaseResponse","data":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The JSON response returned when "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept: application/json"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" was requested."},"children":[]}]}]}],"allOf":[{"$ref":"#/components/schemas/BaseResponseCommon"},{"type":"object","properties":{"attachments":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Map of 'categories-to-lists' for attachment objects (only relevant for pure JSON responses; see the 'Accept' header). Attachments are base64 encoded strings of the raw files. Categories:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"analysis_report"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (PDF files)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"enfsi_report"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (PDF files)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"heatmaps"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (PNG files)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"thumbnails"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (PNG files)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"downloads"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (reverse search results; different formats)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"pdf_versions"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (PDF files)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"pdf_diffs"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (PDF files)"},"children":[]}]}]}]}],"properties":{"heatmaps":{"type":"array","items":{"$ref":"#/components/schemas/Attachment"},"example":[{"filename":"[HEATMAP]-3a35b619-4157-48cc-8e9a-443bd55f1edc.png","mime_type":"image/png","data_b64":"..."},{"filename":"[HEATMAP]-71bcd34e-025b-4efa-93f7-fac9f754c02c.png","mime_type":"image/png","data_b64":"..."}]},"thumbnails":{"type":"array","items":{"$ref":"#/components/schemas/Attachment"}},"downloads":{"type":"array","items":{"$ref":"#/components/schemas/Attachment"}},"pdf_versions":{"type":"array","items":{"$ref":"#/components/schemas/Attachment"}},"pdf_diffs":{"type":"array","items":{"$ref":"#/components/schemas/Attachment"}},"analysis_report":{"type":"array","items":{"$ref":"#/components/schemas/Attachment"},"example":[{"filename":"[ANALYSIS-REPORT]-90211b82-a602-48b5-9cdf-2f189abbe7e7.pdf","mime_type":"application/pdf","data_b64":"..."}]},"enfsi_report":{"type":"array","items":{"$ref":"#/components/schemas/Attachment"}}}}}}]}},"components/schemas/ErrorResponse":{"id":"components/schemas/ErrorResponse","kind":"json-schema","title":"ErrorResponse","data":{"type":"object","properties":{"detail":{"type":"string","example":"Some error details.","description":"Details about why the request was not successful."}}}},"schema_7":{"kind":"json-schema","data":{"type":"string"},"id":"schema_7"},"schema_8":{"kind":"json-schema","data":{"type":"string","minLength":40,"maxLength":40},"id":"schema_8"},"schema_9":{"kind":"json-schema","data":{"type":"string","minLength":4,"maxLength":50},"id":"schema_9"},"schema_10":{"kind":"json-schema","data":{"type":"string","enum":["de","en","pl"]},"id":"schema_10"},"schema_11":{"kind":"json-schema","data":{"type":"string","format":"email"},"id":"schema_11"},"schema_12":{"kind":"json-schema","data":{"type":"string","enum":["application/json","multipart/mixed","*/*"]},"id":"schema_12"},"schema_13":{"kind":"json-schema","data":{"type":"object","properties":{"jsonResponse":{"$ref":"#/components/schemas/BaseResponseMultipart"},"attachments":{"type":"array","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The ZIP files containing attachments generated as part of the analysis process."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Depending on the results and your personalised configuration, this may include:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"analysis_report.zip"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — an analysis report generated by us (in PDF format), showing you what we found in detail and in an intuitive, human readable format"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"pdf_versions.zip"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"pdf_diffs.zip"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — previous versions of PDF files we were able to restore, as well as a visual overview of the detected changes"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"thumbnails.zip"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — thumbnails for images and document scans extracted from PDF files"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"heatmaps.zip"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — heatmap overlays, showing where editing was likely done in an image or document"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"reverse_search_downloads.zip"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — images found online that match the ones you sent us"},"children":[]}]}]}]}],"items":{"type":"string","format":"binary"}}}},"id":"schema_13"}},"exampleStore":{},"securitySchemeStore":{"apiKeyAuth":{"id":"apiKeyAuth","type":"apiKey","in":"header","paramName":"x-api-key"}},"servers":[{"url":"https://api.vaarhaft.com"}]},"options":{"hideSidebar":true,"mockServer":{"off":true},"disableRouter":true,"downloadUrls":[{"url":"/_bundle/openapi.json?download"},{"url":"/_bundle/openapi.yaml?download"}],"excludeFromSearch":false,"specType":"openapi","markdocOptions":{"tags":{},"nodes":{},"components":{}},"metadata":{"title":"VAARHAFT API","description":"API for image and document verification.\n\n Send us your files in a ZIP archive through a request like below, and we verify them for you.\nYou can give us images (like JPEG, PNG, WEBP, HEIC, ...) or PDF documents - we extract relevant items like embedded images or document scans automatically.\n\n You will get back a response where we detail exactly what the results of our different analyses are - and if your file is suspicious.\n\n The results are packaged in a clean, structured JSON response like below, that is easy to understand, read and integrate. Additionally, depending on the results, we\nmay send you one or multiple ZIP attachments containing additional results or indicators, like heatmaps that show you where your files have been edited.\n\n We can even generate an evaluation report for you, which shows you everything we found in an intuitive way, that everyone, even without\ntechnical knowledge, can understand.\n\n  <br><br> Good to know:\n\n * Every result carries a traffic light `suspicion_level` - on request, file and item level. Next to `Green`, `Yellow` and `Red` there is a fourth,\n  neutral state `-` (grey): we could not make a statement for that object, for example because its input quality was insufficient or because it was\n  not relevant for the analysis (a logo, a letterhead, ...).\n\n * Which analyses run for you is part of your configuration. Sections belonging to features you do not have enabled are either empty\n  (`enabled: false`) or omitted from the response entirely - never assume a fixed set of keys, always read defensively.\n\n * Large images are handled for you: images above our analysis targets are automatically reduced server-side instead of being rejected, and we\n  tell you what we did (see `image_normalization`).\n\n  <br><br> One more thing:\n\n   If you're using Python (v3.9 or higher), the easiest way to integrate our API is through our SDK - just run `pip install vaarhaft-fraudscanner` and you're good to go! [(more info here)](https://pypi.org/project/vaarhaft-fraudscanner/)\n"}},"baseSlug":"/openapi","routesMapping":{}}