ObfusGuard  / API reference

API reference

Response schema version 1.0

Submit a file, get a static analysis verdict with the evidence behind it. Need a key? Get one free.

Analyze a file

POST https://obfusguard.com/api/analyze
Header:  X-API-Key: <your key>
Body:    multipart/form-data, field "file"

Windows (PowerShell)

curl.exe -s -H "X-API-Key: YOUR_KEY" -F "file=@C:\path\to\sample.exe" https://obfusguard.com/api/analyze | ConvertFrom-Json | Select-Object -ExpandProperty verdict | Format-List

Use curl.exe, not curl — in PowerShell, curl is a different command.

macOS / Linux

curl -s -H "X-API-Key: YOUR_KEY" -F "file=@/path/to/sample.exe" https://obfusguard.com/api/analyze

Python

import requests

with open("sample.exe", "rb") as f:
    r = requests.post("https://obfusguard.com/api/analyze",
                      headers={"X-API-Key": "YOUR_KEY"},
                      files={"file": f}, timeout=180)
result = r.json()
print(result["verdict"]["level"], result["verdict"]["score"], result["verdict"]["summary"])

Analysis is synchronous and typically takes 10–30 seconds; large installers can take over a minute. Set client timeouts to at least 180 seconds. Each successful analysis uses one credit; a failed analysis is refunded.

Response

All fields below are stable within schema version 1: they will not be renamed or removed. New fields may be added, so ignore fields you don't recognise. Any field may be null when the information isn't available for a file.

FieldContents
schema_version"1.0"
oktrue on success
filename, sha256, sha1, md5, size, type (detected), expected_type (from extension), version_info
verdictlevel (LOW / MEDIUM / HIGH), score (0–100), summary, threat_class, threat_reason, highlights (short findings)
signaturestatus — see below; present, subject, issuer, digest_valid, chain_valid, code_signing, expired, self_signed, signer_sha256
packerlabel (detected packer), ml_class, ml_confidence, ml_breakdown
installeris_installer, family, kind, probability
peimphash, rich_hash, compile_time, timestamp_anomaly, pdb_path, requested_execution_level, tls_callbacks, exports, overlay_ratio, sections (name, entropy, size), imports (dlls, functions, flagged)
entry_pointEntry-point code traits: anti_debug, api_resolution, mem_manipulation, xor_loop, …
anomalyByte-distribution anomaly level, score, notes
mitreList of technique, name, reason
yaraList of severity, description, matches (offset, preview)
embeddedPayloads found inside the file: type, offset, size, sha256, method
iocsurls, domains, ips, emails, registry, paths, onion_domains, crypto_wallets, decoded_urls, decoded_ips, suspicious_apis
duration_msAnalysis time
credits_remainingCredits left on your key

Lists are capped at 50 entries.

Signature status

unsignedNo Authenticode signature.
digest_mismatchSigned, but the file was modified after signing. A strong tampering indicator.
validSignature and certificate chain verify to a trusted root.
untrusted_chainThe certificate can't vouch for this file: self-signed, not issued for code signing (for example a website certificate), or a chain that doesn't reach a trusted root. Takes precedence over expired.
expiredA genuine code-signing certificate that has expired.
unverifiedSigned, but the signature couldn't be checked either way.

Errors

Errors return "ok": false with an error code, and often a detail message.

401 unauthorizedreason is missing, unknown, revoked or expired.
402 quota_exceededNo credits left. Contact support@obfusguard.com.
429 rate_limitedToo many requests in a short time. Retry after a pause.
400Missing or empty file field, or an invalid parameter.
500 analysis_failedThe file couldn't be analysed. No credit is used.

Your data

Uploaded files are deleted within minutes of analysis and are never shared or used for training. Details in the privacy notice.

Get an API key • Privacy notice