Developer Guide

This is the API documentation for MetaDefender Sandbox. If you would like to evaluate or have any questions about this documentation, please contact us via our Contact Us form.

apiKey apiKey
Fields
KeyIn
X-Api-KeyHeader

Scan File

Perform scan of uploaded file

Auth
Request Body
Body_scan_file_api_scan_file_postobject
filefile
descriptionstring

Uploaded file/url description

tagsstring

Tags array to propagate

propagate_tagsboolean

If tags from description should be added to produced report(s)

Default: true

passwordstring

Custom password, in case uploaded archive is protected

is_privateboolean

If file should not be available for download by other users

Default: false

is_private_reportboolean

If the report should not be available for other users

Default: false

skip_whitelistedboolean

If file is detected as whitelisted, report is not created

Default: false

scan_profilestring

Id of scan profile, or name of preset scan profile

scan_enginestring

All possible scan engines that can be used

Enum: internal,mdcloud

rapid_modeboolean

Disable some scan long-running features

early_terminationboolean

Terminates scan execution once a conclusive verdict is detected

osintboolean

Enable OSINT (e.g. VirusTotal, ClamAV) lookups

extended_osintboolean

Enable OSINT lookups on extracted IOCs

extracted_files_osintboolean

Enable OSINT lookups on extracted files

visualizationboolean

Enable file visualization (e.g. PDF rendering)

files_downloadboolean

Enable download of files from extracted URLs

resolve_domainsboolean

Enable resolving domains to IPs (DNS)

input_file_yaraboolean

Enable YARA rule matches on input file

extracted_files_yaraboolean

Enable YARA rule matches on extracted files

whoisboolean

Enable WHOIS record lookups

ips_metaboolean

Enable meta-data lookups for extracted IPs

images_ocrboolean

Enable OCR text recognition on extracted images

certificatesboolean

Extract certificates

url_analysisboolean

Analyse domains and URLs, geolocation

extract_stringsboolean

Enable strings extraction

ocr_qrboolean

Extract string with OCR and process QR codes

phishing_detectionboolean

Phishing detection for URLs, emails and HTML pages

POST /api/scan/file
curl --request POST \
--url 'https://opswat.developerhub.io/api/scan/file' \
--header 'X-Api-Key: {X-Api-Key}' \
--form 'file=@{file}'
Copy
Responses
200

Successful Response

ScanResponseobject

Model for an initiated scan response

flow_idstring
priority3 fieldsobject

Priority part of the scan respoms model

400

Bad request

401

Not authorized

403

Forbidden

413

Content too large

422

Validation Error

429

Too many requests

Response
{
"flow_id": "66f1905b318df2831b854ce5",
"priority": {
"applied": 100,
"max_possible": 100
}
}
Copy

Scan URL

Scan URL resource

Auth
Request Body
Body_scan_file_api_scan_url_postobject
urlstring

Url of internet resource to be scanned

descriptionstring

Uploaded file/url description

tagsstring

Tags array to propagate

propagate_tagsboolean

If tags from description should be added to produced report(s)

Default: true

passwordstring

Custom password, in case uploaded archive is protected

is_privateboolean

If file should not be available for download by other users

Default: false

is_private_reportboolean

If the report should not be available for other users

Default: false

skip_whitelistedboolean

If file is detected as whitelisted, report is not created

Default: false

scan_profilestring

Id of scan profile, or name of preset scan profile

scan_enginestring

All possible scan engines that can be used

Enum: internal,mdcloud

rapid_modeboolean

Disable some scan long-running features

early_terminationboolean

Terminates scan execution once a conclusive verdict is detected

osintboolean

Enable OSINT (e.g. VirusTotal, ClamAV) lookups

extended_osintboolean

Enable OSINT lookups on extracted IOCs

extracted_files_osintboolean

Enable OSINT lookups on extracted files

visualizationboolean

Enable file visualization (e.g. PDF rendering)

files_downloadboolean

Enable download of files from extracted URLs

resolve_domainsboolean

Enable resolving domains to IPs (DNS)

input_file_yaraboolean

Enable YARA rule matches on input file

extracted_files_yaraboolean

Enable YARA rule matches on extracted files

whoisboolean

Enable WHOIS record lookups

ips_metaboolean

Enable meta-data lookups for extracted IPs

images_ocrboolean

Enable OCR text recognition on extracted images

certificatesboolean

Extract certificates

url_analysisboolean

Analyse domains and URLs, geolocation

extract_stringsboolean

Enable strings extraction

ocr_qrboolean

Extract string with OCR and process QR codes

phishing_detectionboolean

Phishing detection for URLs, emails and HTML pages

POST /api/scan/url
curl --request POST \
--url 'https://opswat.developerhub.io/api/scan/url' \
--header 'X-Api-Key: {X-Api-Key}'
Copy
Responses
200

Successful Response

ScanResponseobject

Model for an initiated scan response

flow_idstring
priority3 fieldsobject

Priority part of the scan respoms model

400

Bad request

401

Not authorized

403

Forbidden

422

Validation Error

429

Too many requests

Response
{
"flow_id": "66f1905b318df2831b854ce5",
"priority": {
"applied": 100,
"max_possible": 100
}
}
Copy

Save Scan Profile

Add/edit scan profile

Auth
Request Body
ScanProfilePayloadobject

User provided data to edit scan profile

idstring
namestring
descriptionstring
is_defaultboolean
options18 fieldsobject

Options to turn on/off various scan features

POST /api/scan/profiles
curl --request POST \
--url 'https://opswat.developerhub.io/api/scan/profiles' \
--header 'X-Api-Key: {X-Api-Key}' \
--data '{
"id": "{string}",
"name": "{string}",
"description": "{string}",
"is_default": "{boolean}",
"options": {
"rapid_mode": "{boolean}",
"early_termination": "{boolean}",
"osint": "{boolean}",
"extended_osint": "{boolean}",
"extracted_files_osint": "{boolean}",
"visualization": "{boolean}",
"files_download": "{boolean}",
"resolve_domains": "{boolean}",
"input_file_yara": "{boolean}",
"extracted_files_yara": "{boolean}",
"whois": "{boolean}",
"ips_meta": "{boolean}",
"images_ocr": "{boolean}",
"certificates": "{boolean}",
"url_analysis": "{boolean}",
"extract_strings": "{boolean}",
"ocr_qr": "{boolean}",
"phishing_detection": "{boolean}"
}
}'
Copy
Responses
200

Successful Response

No response body
422

Validation Error

Response
No response
Copy

Remove Scan Profile

Remove scan profile

Auth
Path Params
profile_idstring
DELETE /api/scan/profiles/{profile_id}
curl --request DELETE \
--url 'https://opswat.developerhub.io/api/scan/profiles/{profile_id}' \
--header 'X-Api-Key: {X-Api-Key}'
Copy
Responses
200

Successful Response

No response body
422

Validation Error

Response
No response
Copy

Get Chat Gpt SummaryDeprecated

Request ChatGPT summary on report

Auth
Path Params
report_idstring
GET /api/reports/{report_id}/chat-gpt
curl --get \
--url 'https://opswat.developerhub.io/api/reports/{report_id}/chat-gpt' \
--header 'X-Api-Key: {X-Api-Key}'
Copy
Responses
200

Successful Response

ChatGptSummaryobject

Summary generated for report by ChatGPT

datastring

Summary itself

created_datedate-time

Time of summary generation

400

Bad request

404

Item not found

422

Validation Error

Response
{
"data_type": "summary",
"data": "- Data Manipulation: The malware has the ability to change files and their attributes, which can lead to the concealment of its activities or the modification of legitimate files.",
"created_date": "2024-09-19 15:26:52.842000"
}
Copy

Get All Files

Obtain all files for given report

Auth
Path Params
report_idstring
Query String
type

Default: all

with_contentboolean

Compressed base64 data

Default: false

GET /api/reports/{report_id}/files
curl --get \
--url 'https://opswat.developerhub.io/api/reports/{report_id}/files' \
--header 'X-Api-Key: {X-Api-Key}' \
--data type=all \
--data with_content={with_content}
Copy
Responses
200

Successful Response

ReportAllFilesResponsearray[object]
idstring
hashstring
sizeinteger
mediaTypestring
typestring

Smaller set of ReportFileType for the get_all_files() endpoint

Enum: all,extracted,downloaded

404

Item not found

422

Validation Error

Response
[
{
"id": "6c3e8bf2-dce3-45c4-9ae1-b54b24876334",
"hash": "38cd7b61b24fa1124f13365d74e45f05ac8f1cf99119a3efaaf861e8d935e695",
"size": 2212,
"mediaType": "application/octet-stream",
"type": "extracted"
},
{
"id": "19ba4fcd-e9d3-4490-9aea-cbc0b715e7f9",
"hash": "6d02a672cabc9b9b55e7b1b2e54ce34442fa4eb52fc63e8aa713b071a5a1d62f",
"size": 3774,
"mediaType": "image/vnd.microsoft.icon",
"type": "extracted"
},
{
"id": "5146938b-cae8-4087-b27e-001b3cbe00bf",
"hash": "c0754b5494997ac938629509cd0e36b831c9bf1d7609a781e7b6a8e696f3419f",
"size": 318,
"mediaType": "image/vnd.microsoft.icon",
"type": "extracted"
}
]
Copy

Start Report Format Creation

Start creation of HTML or PDF formated report

Auth
Path Params
report_idstring

Report Id

Query String
formatstring

Enum: html,pdf

GET /api/reports/{report_id}/download/start
curl --get \
--url 'https://opswat.developerhub.io/api/reports/{report_id}/download/start' \
--header 'X-Api-Key: {X-Api-Key}' \
--data format={format}
Copy
Responses
200

Successful Response

No response body
404

Item not found

422

Validation Error

Response
{
"export_id": "66a22c48d970b67320c8a280"
}
Copy

Download Export Formats

Download the report in HTML, PDF, MISP and STIX format

Auth
Path Params
report_idstring

Report Id

Query String
formatstring

Enum: misp,stix,html,pdf

export_idstring

ID of export record

GET /api/reports/{report_id}/download
curl --get \
--url 'https://opswat.developerhub.io/api/reports/{report_id}/download' \
--header 'X-Api-Key: {X-Api-Key}' \
--data format={format} \
--data export_id={export_id}
Copy
Responses
200

Successful Response

No response body
202

Accepted

204

No content

400

Bad request

404

Item not found

408

Request timeout

422

Validation Error

500

Internal server error

Response
{"xmlns": "http://www.misp-project.org/", "Event": {"uuid": "e0e8d7e1-6e40-444e-a6ba-2833b9a4761f", "published": False, "publish_timestamp": 0, "date": "2024-09-19", "timestamp": 1726761610, "info": "FilescanIO report generated for file "eicar.txt"", "distribution": 2, "analysis": 2, "threat_level_id": 1, "Attribute": [{"category": "External analysis", "type": "link", "value": "https://staging.filescan.io/reports/275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f/e0e8d7e1-6e40-444e-a6ba-2833b9a4761f", "distribution": 3, "timestamp": 1726761626, "deleted": False, "sharing_group_id": 0}, {"category": "Internal reference", "type": "other", "value": "wscript", "distribution": 1, "timestamp": 1726761626, "deleted": False, "sharing_group_id": 0, "comment": "Emulation Process"}], "Tag": [{"name": "vbs"}, {"name": "virus"}]}}
Copy

Get Downloads List

Get list of all reports downloads by current user

Auth
Query String
pageinteger

Default: 1

page_sizeinteger

Default: 10

GET /api/users/me/downloads
curl --get \
--url 'https://opswat.developerhub.io/api/users/me/downloads' \
--header 'X-Api-Key: {X-Api-Key}' \
--data page=1 \
--data page_size=10
Copy
Responses
200

Successful Response

ReportFormatResponseobject
items12 fieldsarray[object]
countinteger
422

Validation Error

500

Internal server error

Response
{
"items": [
{
"id": "67582a23d385590c8e6c706e",
"flow_id": "674a0f1392f3eefed863e1ac",
"file_name": "2d229a302ecfdb8e3424b4ea3447586e2e3084e17b5874ebb93a5d41286ed812.bin",
"file_sha256": "2d229a302ecfdb8e3424b4ea3447586e2e3084e17b5874ebb93a5d41286ed812",
"report_id": "95f46868-9d07-47be-be9e-058ede219440",
"verdict": "malicious",
"format": "pdf",
"state": "in_progress",
"created_date": "2024-12-10T11:46:43.345000",
"started_date": "2024-12-10T11:46:43.535000",
"settings": {
"strings_limit": 100,
"strings_mode": "prefer_interesting"
}
}
],
"count": 1
}
Copy

Get Specific Report

Obtain a report for given report_id.

Auth
Path Params
report_idstring

Report Id

file_hashstring

File hash

Query String
filterarray

Report fields that should be fetched

sortingarray

Sort parameters to be applied to fetched report data

otherarray

Extra options to get special data

GET /api/reports/{report_id}/{file_hash}
curl --get \
--url 'https://opswat.developerhub.io/api/reports/{report_id}/{file_hash}' \
--header 'X-Api-Key: {X-Api-Key}' \
--data filter=general \
--data sorting=allSignalGroups(description:asc,averageSignalStrength:desc) \
--data other=emulationGraph
Copy
Responses
200

Successful Response

AllUploadRelatedReportsResponseobject

Model for get_all_upload_related_reports() endpoint

flowIdstring
allFinishedboolean
allFilesDownloadFinishedboolean
allAdditionalStepsDoneboolean
reportsAmountinteger
prioritystring
pollPauseinteger
statestring

Scan state of ScanInit instance

Enum: created,queued,scanning,finished

scanStartedDatestring
positionInQueueinteger
queueSizeinteger
fileSizeinteger
jobobject

Model for job field in AllUploadRelatedReportsResponse

errorboolean
reasonstring
fileReadProgressBytesinteger
rejected_filesarray[object]
namestring
rejected_reasonstring
sourceArchive11 fieldsobject

Model for sourceArchive field in AllUploadRelatedReportsResponse

reportsobject
*object
400

Bad request

404

Item not found

422

Validation Error

Response
{
"flowId": "66ec42875612760457943ad5",
"allFinished": true,
"allFilesDownloadFinished": true,
"allAdditionalStepsDone": true,
"reportsAmount": 1,
"priority": "max",
"pollPause": 5,
"state": "finished",
"scanStartedDate": "09/19/2024, 15:26:01",
"fileSize": 13370880,
"fileReadProgressBytes": 13370880,
"reports": {
"c1a06fb4-c035-443e-b9d8-efb5a94e1aa2": {
"overallState": "success",
"positionInQueue": -1,
"finalVerdict": {
"verdict": "MALICIOUS",
"threatLevel": 1,
"confidence": 1
},
"interestingScore": 0,
"vtRate": -1,
"file": {
"name": "bad_file.exe",
"hash": "834d1dbfab8330ea5f1844f6e905ed0ac19d1033ee9a9f1122ad2051c56783dc",
"type": "pe"
},
"filesDownloadFinished": true,
"additionalStepsRunning": [],
"additionalStepsDone": true,
"created_date": "09/19/2024, 15:26:02",
"defaultOptionsUsed": true,
"scanOptions": {
"rapid_mode": false,
"osint": true,
"extended_osint": true,
"extracted_files_osint": true,
"visualization": true,
"files_download": true,
"resolve_domains": true,
"input_file_yara": true,
"extracted_files_yara": true,
"whois": true,
"ips_meta": true,
"images_ocr": true
},
"chatGptSummary": {
"data": "- Data Manipulation: The malware has the ability to change files and their attributes, which can lead to the concealment of its activities or the modification of legitimate files.\n \n- Temporary File Creation: It can create temporary files, a common technique used to hide malicious processes or data from detection.\n \n- Installation Framework Usage: This malware operates using an established software installation framework, allowing it to efficiently deploy itself and possibly other unwanted software onto infected systems.\n \n- Anti-Debugging Techniques: It employs methods to prevent security software from analyzing its behavior, making it harder for analysts to understand its full capabilities.\n \n- Command Execution: The malware can take command-line arguments, which means it can receive instructions that dictate its behavior, potentially allowing it to act upon specific targets or functions within a system.",
"created_date": "2024-09-19 15:26:52.842000"
},
"estimatedTime": "30",
"estimated_progress": 1
}
}
}
Copy

Get Pe Emulation File

Get PE emulation files

Auth
Path Params
report_idstring

Report Id

file_name

PE emulation file name

GET /api/files/pe-emulation/{report_id}/{file_name}
curl --get \
--url 'https://opswat.developerhub.io/api/files/pe-emulation/{report_id}/{file_name}' \
--header 'X-Api-Key: {X-Api-Key}'
Copy
Responses
200

Successful Response

No response body
404

Item not found

422

Validation Error

Response
No response
Copy

Advanced Search

Search for reports and uploaded files by various tokens, like hash, filename, verdict, IOCs etc.

Auth
Query String
ageinteger

Search reports with age of "age" days

Default: -1

pageinteger

Page number starting from 1

minimum: 1

Default: 1

page_size

Page size

Default: 10

unique_filesboolean

Default: false

method

Default: and

derived_filesboolean

Default: true

no_date_limitboolean

Default: false

querystring
verdictstring
source_typestring

Enum: url,url-to-file,file

filetypestring

Enum: ace,apk,bat,64bits,bmp,csv,doc,docm,docx,dot,dotm,dotx,elf,eml,gif,hta,htm,html,iso,java,java-bytecode,javascript,jpg,lnk,mbox,mhtml,msg,msi,mso,odp,ods,odt,odg,odf,odc,odb,odi,ole,one,pdf,pedll,peexe,png,pot,potm,potx,powershell,ppt,pptm,pptx,ps,pub,rar,rfc822,rtf,svg,txt,vbs,wmv,wsf,xlm,xls,xlsb,xlsm,xlsx,xlt,xltm,xltx,xml,xsl,zip,7zip,exe,mail,ms-office,script

tagstring
tagsstring
date_fromstring
date_tostring
rate_frominteger
rate_tointeger
uuidstring
emailstring
registry_pathstring
revision_save_idstring
yara_rulestring
retry_countinteger
scan_init_idstring
report_idstring
countrystring
filenamestring
sha1string
sha256string
sha512string
md5string
domainstring
ipstring
urlstring
media_typestring
imphashstring
ssdeepstring
authentihashstring
fuzzyfsiohashstring
signal_groupsstring
mitre_techniquesstring
verdict_groupsstring
main_task_state

Default: success

excludestring
GET /api/reports/advanced-search
curl --get \
--url 'https://opswat.developerhub.io/api/reports/advanced-search' \
--header 'X-Api-Key: {X-Api-Key}' \
--data age=-1 \
--data page=1 \
--data page_size=10 \
--data unique_files={unique_files} \
--data method=and \
--data derived_files=true \
--data no_date_limit={no_date_limit} \
--data query={query} \
--data verdict={verdict} \
--data source_type={source_type} \
--data filetype={filetype} \
--data tag={tag} \
--data tags={tags} \
--data date_from={date_from} \
--data date_to={date_to} \
--data rate_from={rate_from} \
--data rate_to={rate_to} \
--data uuid={uuid} \
--data email={email} \
--data registry_path={registry_path} \
--data revision_save_id={revision_save_id} \
--data yara_rule={yara_rule} \
--data retry_count={retry_count} \
--data scan_init_id={scan_init_id} \
--data report_id={report_id} \
--data country={country} \
--data filename={filename} \
--data sha1={sha1} \
--data sha256={sha256} \
--data sha512={sha512} \
--data md5={md5} \
--data domain={domain} \
--data ip={ip} \
--data url={url} \
--data media_type={media_type} \
--data imphash={imphash} \
--data ssdeep={ssdeep} \
--data authentihash={authentihash} \
--data fuzzyfsiohash={fuzzyfsiohash} \
--data signal_groups={signal_groups} \
--data mitre_techniques={mitre_techniques} \
--data verdict_groups={verdict_groups} \
--data main_task_state=success \
--data exclude={exclude}
Copy
Responses
200

Successful Response

ReportSearchResponseobject

Search response returned to user

itemsarray
countinteger
count_search_paramsinteger
methodstring
dbs_syncboolean
400

Bad request

422

Validation Error

Response
{
"items": [
"{array...}"
],
"count": "{integer}",
"count_search_params": "{integer}",
"method": "{string}",
"dbs_sync": "{boolean}"
}
Copy

Simple Search

Search for reports and uploaded files by various tokens, like hash, filename, verdict, IOCs etc. Simple search only uses the query param (and some other defaults), other params are ignored.

Auth
Query String
ageinteger

Search reports with age of "age" days

Default: -1

pageinteger

Page number starting from 1

minimum: 1

Default: 1

page_size

Page size

Default: 10

method

Default: and

derived_filesboolean

Default: true

no_date_limitboolean

Default: false

querystring
verdictstring
source_typestring

Enum: url,url-to-file,file

filetypestring

Enum: ace,apk,bat,64bits,bmp,csv,doc,docm,docx,dot,dotm,dotx,elf,eml,gif,hta,htm,html,iso,java,java-bytecode,javascript,jpg,lnk,mbox,mhtml,msg,msi,mso,odp,ods,odt,odg,odf,odc,odb,odi,ole,one,pdf,pedll,peexe,png,pot,potm,potx,powershell,ppt,pptm,pptx,ps,pub,rar,rfc822,rtf,svg,txt,vbs,wmv,wsf,xlm,xls,xlsb,xlsm,xlsx,xlt,xltm,xltx,xml,xsl,zip,7zip,exe,mail,ms-office,script

tagstring
tagsstring
date_fromstring
date_tostring
rate_frominteger
rate_tointeger
uuidstring
emailstring
registry_pathstring
revision_save_idstring
yara_rulestring
retry_countinteger
scan_init_idstring
report_idstring
countrystring
filenamestring
sha1string
sha256string
sha512string
md5string
domainstring
ipstring
urlstring
media_typestring
imphashstring
ssdeepstring
authentihashstring
fuzzyfsiohashstring
signal_groupsstring
mitre_techniquesstring
verdict_groupsstring
main_task_state

Default: success

excludestring
GET /api/reports/search
curl --get \
--url 'https://opswat.developerhub.io/api/reports/search' \
--header 'X-Api-Key: {X-Api-Key}' \
--data age=-1 \
--data page=1 \
--data page_size=10 \
--data method=and \
--data derived_files=true \
--data no_date_limit={no_date_limit} \
--data query={query} \
--data verdict={verdict} \
--data source_type={source_type} \
--data filetype={filetype} \
--data tag={tag} \
--data tags={tags} \
--data date_from={date_from} \
--data date_to={date_to} \
--data rate_from={rate_from} \
--data rate_to={rate_to} \
--data uuid={uuid} \
--data email={email} \
--data registry_path={registry_path} \
--data revision_save_id={revision_save_id} \
--data yara_rule={yara_rule} \
--data retry_count={retry_count} \
--data scan_init_id={scan_init_id} \
--data report_id={report_id} \
--data country={country} \
--data filename={filename} \
--data sha1={sha1} \
--data sha256={sha256} \
--data sha512={sha512} \
--data md5={md5} \
--data domain={domain} \
--data ip={ip} \
--data url={url} \
--data media_type={media_type} \
--data imphash={imphash} \
--data ssdeep={ssdeep} \
--data authentihash={authentihash} \
--data fuzzyfsiohash={fuzzyfsiohash} \
--data signal_groups={signal_groups} \
--data mitre_techniques={mitre_techniques} \
--data verdict_groups={verdict_groups} \
--data main_task_state=success \
--data exclude={exclude}
Copy
Responses
200

Successful Response

ReportSearchResponseobject

Search response returned to user

itemsarray
countinteger
count_search_paramsinteger
methodstring
dbs_syncboolean
400

Bad request

422

Validation Error

Response
{
"items": [
"{array...}"
],
"count": "{integer}",
"count_search_params": "{integer}",
"method": "{string}",
"dbs_sync": "{boolean}"
}
Copy

Get Public Reports

Get all public reports

Auth
Query String
pageinteger

Page number starting from 1

minimum: 1

Default: 1

page_size

Page size

Default: 10

GET /api/reports
curl --get \
--url 'https://opswat.developerhub.io/api/reports' \
--header 'X-Api-Key: {X-Api-Key}' \
--data page=1 \
--data page_size=10
Copy
Responses
200

Successful Response

ReportSearchResponseobject

Search response returned to user

itemsarray
countinteger
count_search_paramsinteger
methodstring
dbs_syncboolean
400

Bad request

401

Not authorized

422

Validation Error

Response
{
"items": [
"{array...}"
],
"count": "{integer}",
"count_search_params": "{integer}",
"method": "{string}",
"dbs_sync": "{boolean}"
}
Copy

Get User Reports

Get reports of current user

Auth
Query String
pageinteger

Page number starting from 1

minimum: 1

Default: 1

page_size

Page size

Default: 10

date_fromstring

Results newer then this date (format YYYY-MM-DD)

verdictstring

Enum: unknown,benign,informational,no_threat,suspicious,likely_malicious,malicious

GET /api/me/reports
curl --get \
--url 'https://opswat.developerhub.io/api/me/reports' \
--header 'X-Api-Key: {X-Api-Key}' \
--data page=1 \
--data page_size=10 \
--data date_from={date_from} \
--data verdict={verdict}
Copy
Responses
200

Successful Response

ReportSearchResponseobject

Search response returned to user

itemsarray
countinteger
count_search_paramsinteger
methodstring
dbs_syncboolean
400

Bad request

401

Not authorized

422

Validation Error

Response
{
"items": [
"{array...}"
],
"count": "{integer}",
"count_search_params": "{integer}",
"method": "{string}",
"dbs_sync": "{boolean}"
}
Copy

Get Frequent Tags

Get most frequently seen tags recently

Auth
GET /api/users/get-frequent-tags
curl --get \
--url 'https://opswat.developerhub.io/api/users/get-frequent-tags' \
--header 'X-Api-Key: {X-Api-Key}'
Copy
Responses
200

Successful Response

FrequentTagsResponseobject
tagsarray[object]
updateddate-time
401

Not authorized

Response
{
"tags": [
{}
],
"updated": "{date-time}"
}
Copy

Get Most Interesting

Get most interesting report recently

Auth
GET /api/users/most-interesting
curl --get \
--url 'https://opswat.developerhub.io/api/users/most-interesting' \
--header 'X-Api-Key: {X-Api-Key}'
Copy
Responses
200

Successful Response

MostInterestingResponseobject
reportobject
updateddate-time
401

Not authorized

Response
{
"report": {},
"updated": "{date-time}"
}
Copy

Get Single File

Obtain single file for given report by hash

Auth
Path Params
hashstring

File hash

Query String
report_idstring

Report Id (only needed if original_name is true)

type

Default: base64

original_nameboolean

(only used if type is raw)

Default: false

passwordstring

Password to be used on compression (only used if type is raw)

GET /api/files/{hash}
curl --get \
--url 'https://opswat.developerhub.io/api/files/{hash}' \
--header 'X-Api-Key: {X-Api-Key}' \
--data report_id={report_id} \
--data type=base64 \
--data original_name={original_name} \
--data password={password}
Copy
Responses
200

Successful Response

GetSingleFileResponseobject

Model for get_single_file() endpoint

typestring

An enumeration.

Enum: base64,compressedBase64

contentstring
404

Item not found

422

Validation Error

Response
{
"type": "base64",
"content": "WDVPIVAlQEFQWzRcUFpYNTQoUF4pN0NDKTd9JEVJQ0FSLVNUQU5EQVJELUFOVElWSVJVUy1URVNULUZJTEUhJEgrSCo="
}
Copy

Download Samples Archive

Download an archive file

Auth
Path Params
publicitystring

Enum: public,private

typestring

Enum: doc,exec

datestring

pattern: (\d{4})\-(0[1-9]|1[012])\-(0[1-9]|[12][0-9]|3[01])

GET /api/archives/samples/{publicity}/{type}/{date}
curl --get \
--url 'https://opswat.developerhub.io/api/archives/samples/{publicity}/{type}/{date}' \
--header 'X-Api-Key: {X-Api-Key}'
Copy
Responses
200

Successful Response

No response body
401

Not authorized

403

Forbidden

404

Item not found

422

Validation Error

Response
No response
Copy

Download Samples ArchiveDeprecated

Download an archive file

Auth
Path Params
publicitystring

Enum: public,private

typestring

Enum: doc,exec

datestring

pattern: (\d{4})\-(0[1-9]|1[012])\-(0[1-9]|[12][0-9]|3[01])

GET /api/feed/archives/{publicity}/{type}/{date}
curl --get \
--url 'https://opswat.developerhub.io/api/feed/archives/{publicity}/{type}/{date}' \
--header 'X-Api-Key: {X-Api-Key}'
Copy
Responses
200

Successful Response

No response body
401

Not authorized

403

Forbidden

404

Item not found

422

Validation Error

Response
No response
Copy

Get Reports Feed

Get reports feed.

For API documentation page we show smaller amount of reports. To get full feed, query feed endpoint directly from browser address bar or from any suitable app.

Auth
GET /api/feed/reports
curl --get \
--url 'https://opswat.developerhub.io/api/feed/reports' \
--header 'X-Api-Key: {X-Api-Key}'
Copy
Responses
200

Successful Response

No response body
401

Not authorized

Response
No response
Copy

Get Reports FeedDeprecated

Get reports feed.

For API documentation page we show smaller amount of reports. To get full feed, query feed endpoint directly from browser address bar or from any suitable app.

Auth
GET /api/feed/atom
curl --get \
--url 'https://opswat.developerhub.io/api/feed/atom' \
--header 'X-Api-Key: {X-Api-Key}'
Copy
Responses
200

Successful Response

No response body
401

Not authorized

Response
No response
Copy

Get Reports Feed Info

Get reports feed info

Auth
GET /api/feed/reports/info
curl --get \
--url 'https://opswat.developerhub.io/api/feed/reports/info' \
--header 'X-Api-Key: {X-Api-Key}'
Copy
Responses
200

Successful Response

FeedInfoobject

Response model for get_feed_info endpoint

countinteger
lengthinteger
updatednumber
download_allowedboolean
401

Not authorized

Response
{
"count": 38,
"length": 1161760,
"updated": 1731932169.007461,
"download_allowed": true
}
Copy

Get Reports Feed InfoDeprecated

Get reports feed info

Auth
GET /api/feed/info
curl --get \
--url 'https://opswat.developerhub.io/api/feed/info' \
--header 'X-Api-Key: {X-Api-Key}'
Copy
Responses
200

Successful Response

FeedInfoobject

Response model for get_feed_info endpoint

countinteger
lengthinteger
updatednumber
download_allowedboolean
401

Not authorized

Response
{
"count": 38,
"length": 1161760,
"updated": 1731932169.007461,
"download_allowed": true
}
Copy

Get Daily Samples Archives

Get daily samples

Auth
GET /api/archives/samples
curl --get \
--url 'https://opswat.developerhub.io/api/archives/samples' \
--header 'X-Api-Key: {X-Api-Key}'
Copy
Responses
200

Successful Response

DailySamplesArchiveResponsearray[object]
namestring

Archive file name

linkstring

Link to file download

reports_datestring

Date of reports creation

files_countinteger

Amount of files in archive

files_typestring

An enumeration.

Enum: doc,exec

sizeinteger

Archive size in bytes

is_publicboolean

If archive contains only public or only private files

401

Not authorized

Response
[
{
"name": "2024-11-11.zip",
"link": "http://localhost:4200/api/archives/samples/public/exec/2024-11-11",
"reports_date": "2024-11-11",
"files_count": 2,
"files_type": "exec",
"size": 2534700,
"is_public": true
},
{
"name": "2024-11-06.zip",
"link": "http://localhost:4200/api/archives/samples/public/exec/2024-11-06",
"reports_date": "2024-11-06",
"files_count": 1,
"files_type": "exec",
"size": 21185,
"is_public": true
},
{
"name": "2024-11-05.zip",
"link": "http://localhost:4200/api/archives/samples/private/exec/2024-11-05",
"reports_date": "2024-11-05",
"files_count": 1,
"files_type": "exec",
"size": 2158455,
"is_public": false
}
]
Copy

Get Daily Samples ArchivesDeprecated

Get daily samples

Auth
GET /api/feed/archives
curl --get \
--url 'https://opswat.developerhub.io/api/feed/archives' \
--header 'X-Api-Key: {X-Api-Key}'
Copy
Responses
200

Successful Response

DailySamplesArchiveResponsearray[object]
namestring

Archive file name

linkstring

Link to file download

reports_datestring

Date of reports creation

files_countinteger

Amount of files in archive

files_typestring

An enumeration.

Enum: doc,exec

sizeinteger

Archive size in bytes

is_publicboolean

If archive contains only public or only private files

401

Not authorized

Response
[
{
"name": "2024-11-11.zip",
"link": "http://localhost:4200/api/archives/samples/public/exec/2024-11-11",
"reports_date": "2024-11-11",
"files_count": 2,
"files_type": "exec",
"size": 2534700,
"is_public": true
},
{
"name": "2024-11-06.zip",
"link": "http://localhost:4200/api/archives/samples/public/exec/2024-11-06",
"reports_date": "2024-11-06",
"files_count": 1,
"files_type": "exec",
"size": 21185,
"is_public": true
},
{
"name": "2024-11-05.zip",
"link": "http://localhost:4200/api/archives/samples/private/exec/2024-11-05",
"reports_date": "2024-11-05",
"files_count": 1,
"files_type": "exec",
"size": 2158455,
"is_public": false
}
]
Copy

Get Yara Feed

Get YARA rules feed

Auth
GET /api/feed/yara
curl --get \
--url 'https://opswat.developerhub.io/api/feed/yara' \
--header 'X-Api-Key: {X-Api-Key}'
Copy
Responses
200

Successful Response

No response body
401

Not authorized

Response
No response
Copy

Get Yara Feed Info

Get YARA rules feed info

Auth
GET /api/feed/yara/info
curl --get \
--url 'https://opswat.developerhub.io/api/feed/yara/info' \
--header 'X-Api-Key: {X-Api-Key}'
Copy
Responses
200

Successful Response

No response body
401

Not authorized

Response
No response
Copy

Get Daily Yara Archives

Get daily YARA rules, generated for malicious reports

Auth
GET /api/archives/yara
curl --get \
--url 'https://opswat.developerhub.io/api/archives/yara' \
--header 'X-Api-Key: {X-Api-Key}'
Copy
Responses
200

Successful Response

DailyYaraArchiveResponsearray[object]
namestring

Archive file name

linkstring

Link to file download

reports_datestring

Date of reports creation

rules_countinteger

Amount of rules in archive

sizeinteger

Archive size in bytes

401

Not authorized

Response
[
{
"name": "2024-11-11.zip",
"link": "http://localhost:4200/api/archives/yara/2024-11-11",
"reports_date": "2024-11-11",
"rules_count": 2,
"size": 2534700
},
{
"name": "2024-11-06.zip",
"link": "http://localhost:4200/api/archives/yara/2024-11-06",
"reports_date": "2024-11-06",
"rules_count": 1,
"size": 21185
},
{
"name": "2024-11-05.zip",
"link": "http://localhost:4200/api/archives/yara/2024-11-05",
"reports_date": "2024-11-05",
"rules_count": 1,
"size": 2158455
}
]
Copy

Download Yara Archive

Get daily YARA rules archive

Auth
Path Params
datestring
GET /api/archives/yara/{date}
curl --get \
--url 'https://opswat.developerhub.io/api/archives/yara/{date}'
Copy
Responses
200

Successful Response

No response body
400

Bad request

401

Not authorized

403

Forbidden

404

Item not found

422

Validation Error

Response
No response
Copy

Get Current User

Get user model of currently authenticated user

Auth
GET /api/users/me
curl --get \
--url 'https://opswat.developerhub.io/api/users/me'
Copy
Responses
200

Successful Response

GetCurrentUserResponseobject
accountIdstring
userIdstring
usernamestring
emailstring
avatarLastModifieddate-time
allowedFeaturesarray
scanProfilesarray
isAdminboolean
isAuditorboolean
isPasswordEmptyboolean
themestring
timezonestring
localestring
externalAuthobject
notificationsarray
Response
{
"accountId": "{string}",
"userId": "{string}",
"username": "{string}",
"email": "{string}",
"avatarLastModified": "{date-time}",
"allowedFeatures": [
"{array...}"
],
"scanProfiles": [
"{array...}"
],
"isAdmin": "{boolean}",
"isAuditor": "{boolean}",
"isPasswordEmpty": "{boolean}",
"theme": "{string}",
"timezone": "{string}",
"locale": "{string}",
"externalAuth": {},
"notifications": [
"{array...}"
]
}
Copy

Get Profile

Get user profile data

Auth
GET /api/users/profile
curl --get \
--url 'https://opswat.developerhub.io/api/users/profile'
Copy
Responses
200

Successful Response

UserResponseobject

System user for out

account_idstring
emailstring
usernamestring
pseudonamestring
groupsarray[object]
namestring
has_avatarboolean
profile9 fieldsobject
api_keystring
themestring
timezonestring

An enumeration.

Enum: Africa/Abidjan,Africa/Accra,Africa/Addis_Ababa,Africa/Algiers,Africa/Asmara,Africa/Asmera,Africa/Bamako,Africa/Bangui,Africa/Banjul,Africa/Bissau,Africa/Blantyre,Africa/Brazzaville,Africa/Bujumbura,Africa/Cairo,Africa/Casablanca,Africa/Ceuta,Africa/Conakry,Africa/Dakar,Africa/Dar_es_Salaam,Africa/Djibouti,Africa/Douala,Africa/El_Aaiun,Africa/Freetown,Africa/Gaborone,Africa/Harare,Africa/Johannesburg,Africa/Juba,Africa/Kampala,Africa/Khartoum,Africa/Kigali,Africa/Kinshasa,Africa/Lagos,Africa/Libreville,Africa/Lome,Africa/Luanda,Africa/Lubumbashi,Africa/Lusaka,Africa/Malabo,Africa/Maputo,Africa/Maseru,Africa/Mbabane,Africa/Mogadishu,Africa/Monrovia,Africa/Nairobi,Africa/Ndjamena,Africa/Niamey,Africa/Nouakchott,Africa/Ouagadougou,Africa/Porto-Novo,Africa/Sao_Tome,Africa/Timbuktu,Africa/Tripoli,Africa/Tunis,Africa/Windhoek,America/Adak,America/Anchorage,America/Anguilla,America/Antigua,America/Araguaina,America/Argentina/Buenos_Aires,America/Argentina/Catamarca,America/Argentina/ComodRivadavia,America/Argentina/Cordoba,America/Argentina/Jujuy,America/Argentina/La_Rioja,America/Argentina/Mendoza,America/Argentina/Rio_Gallegos,America/Argentina/Salta,America/Argentina/San_Juan,America/Argentina/San_Luis,America/Argentina/Tucuman,America/Argentina/Ushuaia,America/Aruba,America/Asuncion,America/Atikokan,America/Atka,America/Bahia,America/Bahia_Banderas,America/Barbados,America/Belem,America/Belize,America/Blanc-Sablon,America/Boa_Vista,America/Bogota,America/Boise,America/Buenos_Aires,America/Cambridge_Bay,America/Campo_Grande,America/Cancun,America/Caracas,America/Catamarca,America/Cayenne,America/Cayman,America/Chicago,America/Chihuahua,America/Coral_Harbour,America/Cordoba,America/Costa_Rica,America/Creston,America/Cuiaba,America/Curacao,America/Danmarkshavn,America/Dawson,America/Dawson_Creek,America/Denver,America/Detroit,America/Dominica,America/Edmonton,America/Eirunepe,America/El_Salvador,America/Ensenada,America/Fort_Nelson,America/Fort_Wayne,America/Fortaleza,America/Glace_Bay,America/Godthab,America/Goose_Bay,America/Grand_Turk,America/Grenada,America/Guadeloupe,America/Guatemala,America/Guayaquil,America/Guyana,America/Halifax,America/Havana,America/Hermosillo,America/Indiana/Indianapolis,America/Indiana/Knox,America/Indiana/Marengo,America/Indiana/Petersburg,America/Indiana/Tell_City,America/Indiana/Vevay,America/Indiana/Vincennes,America/Indiana/Winamac,America/Indianapolis,America/Inuvik,America/Iqaluit,America/Jamaica,America/Jujuy,America/Juneau,America/Kentucky/Louisville,America/Kentucky/Monticello,America/Knox_IN,America/Kralendijk,America/La_Paz,America/Lima,America/Los_Angeles,America/Louisville,America/Lower_Princes,America/Maceio,America/Managua,America/Manaus,America/Marigot,America/Martinique,America/Matamoros,America/Mazatlan,America/Mendoza,America/Menominee,America/Merida,America/Metlakatla,America/Mexico_City,America/Miquelon,America/Moncton,America/Monterrey,America/Montevideo,America/Montreal,America/Montserrat,America/Nassau,America/New_York,America/Nipigon,America/Nome,America/Noronha,America/North_Dakota/Beulah,America/North_Dakota/Center,America/North_Dakota/New_Salem,America/Ojinaga,America/Panama,America/Pangnirtung,America/Paramaribo,America/Phoenix,America/Port-au-Prince,America/Port_of_Spain,America/Porto_Acre,America/Porto_Velho,America/Puerto_Rico,America/Punta_Arenas,America/Rainy_River,America/Rankin_Inlet,America/Recife,America/Regina,America/Resolute,America/Rio_Branco,America/Rosario,America/Santa_Isabel,America/Santarem,America/Santiago,America/Santo_Domingo,America/Sao_Paulo,America/Scoresbysund,America/Shiprock,America/Sitka,America/St_Barthelemy,America/St_Johns,America/St_Kitts,America/St_Lucia,America/St_Thomas,America/St_Vincent,America/Swift_Current,America/Tegucigalpa,America/Thule,America/Thunder_Bay,America/Tijuana,America/Toronto,America/Tortola,America/Vancouver,America/Virgin,America/Whitehorse,America/Winnipeg,America/Yakutat,America/Yellowknife,Antarctica/Casey,Antarctica/Davis,Antarctica/DumontDUrville,Antarctica/Macquarie,Antarctica/Mawson,Antarctica/McMurdo,Antarctica/Palmer,Antarctica/Rothera,Antarctica/South_Pole,Antarctica/Syowa,Antarctica/Troll,Antarctica/Vostok,Arctic/Longyearbyen,Asia/Aden,Asia/Almaty,Asia/Amman,Asia/Anadyr,Asia/Aqtau,Asia/Aqtobe,Asia/Ashgabat,Asia/Ashkhabad,Asia/Atyrau,Asia/Baghdad,Asia/Bahrain,Asia/Baku,Asia/Bangkok,Asia/Barnaul,Asia/Beirut,Asia/Bishkek,Asia/Brunei,Asia/Calcutta,Asia/Chita,Asia/Choibalsan,Asia/Chongqing,Asia/Chungking,Asia/Colombo,Asia/Dacca,Asia/Damascus,Asia/Dhaka,Asia/Dili,Asia/Dubai,Asia/Dushanbe,Asia/Famagusta,Asia/Gaza,Asia/Harbin,Asia/Hebron,Asia/Ho_Chi_Minh,Asia/Hong_Kong,Asia/Hovd,Asia/Irkutsk,Asia/Istanbul,Asia/Jakarta,Asia/Jayapura,Asia/Jerusalem,Asia/Kabul,Asia/Kamchatka,Asia/Karachi,Asia/Kashgar,Asia/Kathmandu,Asia/Katmandu,Asia/Khandyga,Asia/Kolkata,Asia/Krasnoyarsk,Asia/Kuala_Lumpur,Asia/Kuching,Asia/Kuwait,Asia/Macao,Asia/Macau,Asia/Magadan,Asia/Makassar,Asia/Manila,Asia/Muscat,Asia/Nicosia,Asia/Novokuznetsk,Asia/Novosibirsk,Asia/Omsk,Asia/Oral,Asia/Phnom_Penh,Asia/Pontianak,Asia/Pyongyang,Asia/Qatar,Asia/Qostanay,Asia/Qyzylorda,Asia/Rangoon,Asia/Riyadh,Asia/Saigon,Asia/Sakhalin,Asia/Samarkand,Asia/Seoul,Asia/Shanghai,Asia/Singapore,Asia/Srednekolymsk,Asia/Taipei,Asia/Tashkent,Asia/Tbilisi,Asia/Tehran,Asia/Tel_Aviv,Asia/Thimbu,Asia/Thimphu,Asia/Tokyo,Asia/Tomsk,Asia/Ujung_Pandang,Asia/Ulaanbaatar,Asia/Ulan_Bator,Asia/Urumqi,Asia/Ust-Nera,Asia/Vientiane,Asia/Vladivostok,Asia/Yakutsk,Asia/Yangon,Asia/Yekaterinburg,Asia/Yerevan,Atlantic/Azores,Atlantic/Bermuda,Atlantic/Canary,Atlantic/Cape_Verde,Atlantic/Faeroe,Atlantic/Faroe,Atlantic/Jan_Mayen,Atlantic/Madeira,Atlantic/Reykjavik,Atlantic/South_Georgia,Atlantic/St_Helena,Atlantic/Stanley,Australia/ACT,Australia/Adelaide,Australia/Brisbane,Australia/Broken_Hill,Australia/Canberra,Australia/Currie,Australia/Darwin,Australia/Eucla,Australia/Hobart,Australia/LHI,Australia/Lindeman,Australia/Lord_Howe,Australia/Melbourne,Australia/NSW,Australia/North,Australia/Perth,Australia/Queensland,Australia/South,Australia/Sydney,Australia/Tasmania,Australia/Victoria,Australia/West,Australia/Yancowinna,Brazil/Acre,Brazil/DeNoronha,Brazil/East,Brazil/West,CET,CST6CDT,Canada/Atlantic,Canada/Central,Canada/Eastern,Canada/Mountain,Canada/Newfoundland,Canada/Pacific,Canada/Saskatchewan,Canada/Yukon,Chile/Continental,Chile/EasterIsland,Cuba,EET,EST5EDT,Egypt,Eire,Etc/GMT,Etc/GMT+0,Etc/GMT+1,Etc/GMT+10,Etc/GMT+11,Etc/GMT+12,Etc/GMT+2,Etc/GMT+3,Etc/GMT+4,Etc/GMT+5,Etc/GMT+6,Etc/GMT+7,Etc/GMT+8,Etc/GMT+9,Etc/GMT-0,Etc/GMT-1,Etc/GMT-10,Etc/GMT-11,Etc/GMT-12,Etc/GMT-13,Etc/GMT-14,Etc/GMT-2,Etc/GMT-3,Etc/GMT-4,Etc/GMT-5,Etc/GMT-6,Etc/GMT-7,Etc/GMT-8,Etc/GMT-9,Etc/GMT0,Etc/Greenwich,Etc/UCT,Etc/UTC,Etc/Universal,Etc/Zulu,Europe/Amsterdam,Europe/Andorra,Europe/Astrakhan,Europe/Athens,Europe/Belfast,Europe/Belgrade,Europe/Berlin,Europe/Bratislava,Europe/Brussels,Europe/Bucharest,Europe/Budapest,Europe/Busingen,Europe/Chisinau,Europe/Copenhagen,Europe/Dublin,Europe/Gibraltar,Europe/Guernsey,Europe/Helsinki,Europe/Isle_of_Man,Europe/Istanbul,Europe/Jersey,Europe/Kaliningrad,Europe/Kiev,Europe/Kirov,Europe/Lisbon,Europe/Ljubljana,Europe/London,Europe/Luxembourg,Europe/Madrid,Europe/Malta,Europe/Mariehamn,Europe/Minsk,Europe/Monaco,Europe/Moscow,Europe/Nicosia,Europe/Oslo,Europe/Paris,Europe/Podgorica,Europe/Prague,Europe/Riga,Europe/Rome,Europe/Samara,Europe/San_Marino,Europe/Sarajevo,Europe/Saratov,Europe/Simferopol,Europe/Skopje,Europe/Sofia,Europe/Stockholm,Europe/Tallinn,Europe/Tirane,Europe/Tiraspol,Europe/Ulyanovsk,Europe/Uzhgorod,Europe/Vaduz,Europe/Vatican,Europe/Vienna,Europe/Vilnius,Europe/Volgograd,Europe/Warsaw,Europe/Zagreb,Europe/Zaporozhye,Europe/Zurich,GB,GB-Eire,GMT,GMT0,Greenwich,Hongkong,Iceland,Indian/Antananarivo,Indian/Chagos,Indian/Christmas,Indian/Cocos,Indian/Comoro,Indian/Kerguelen,Indian/Mahe,Indian/Maldives,Indian/Mauritius,Indian/Mayotte,Indian/Reunion,Iran,Israel,Jamaica,Japan,Kwajalein,Libya,MET,MST7MDT,Mexico/BajaNorte,Mexico/BajaSur,Mexico/General,NZ,NZ-CHAT,Navajo,PRC,PST8PDT,Pacific/Apia,Pacific/Auckland,Pacific/Bougainville,Pacific/Chatham,Pacific/Chuuk,Pacific/Easter,Pacific/Efate,Pacific/Enderbury,Pacific/Fakaofo,Pacific/Fiji,Pacific/Funafuti,Pacific/Galapagos,Pacific/Gambier,Pacific/Guadalcanal,Pacific/Guam,Pacific/Honolulu,Pacific/Johnston,Pacific/Kiritimati,Pacific/Kosrae,Pacific/Kwajalein,Pacific/Majuro,Pacific/Marquesas,Pacific/Midway,Pacific/Nauru,Pacific/Niue,Pacific/Norfolk,Pacific/Noumea,Pacific/Pago_Pago,Pacific/Palau,Pacific/Pitcairn,Pacific/Pohnpei,Pacific/Ponape,Pacific/Port_Moresby,Pacific/Rarotonga,Pacific/Saipan,Pacific/Samoa,Pacific/Tahiti,Pacific/Tarawa,Pacific/Tongatapu,Pacific/Truk,Pacific/Wake,Pacific/Wallis,Pacific/Yap,Poland,Portugal,ROK,Singapore,Turkey,UCT,US/Alaska,US/Aleutian,US/Arizona,US/Central,US/East-Indiana,US/Eastern,US/Hawaii,US/Indiana-Starke,US/Michigan,US/Mountain,US/Pacific,US/Pacific-New,US/Samoa,UTC,Universal,W-SU,WET,Zulu

localestring

An enumeration.

Enum: de,en,hu,it,nl,sv

401

Not authorized

Response
{
"account_id": "{string}",
"email": "{string}",
"username": "{string}",
"pseudoname": "{string}",
"groups": [
{
"name": "{string}"
}
],
"has_avatar": "{boolean}",
"profile": {
"first_name": "{string}",
"last_name": "{string}",
"phone": "{string}",
"company": "{string}",
"job": "{string}",
"role": "{string}",
"department": "{string}",
"industry": "{string}",
"subscribe": "{boolean}"
},
"api_key": "{string}",
"theme": "{string}",
"timezone": "{string}",
"locale": "{string}"
}
Copy

Post Profile

Update user profile data

Auth
Request Body
Body_post_profile_api_users_profile_postobject
emailstring
usernamestring
old_passwordstring
new_passwordstring
password_confirmstring
filefile
first_namestring
last_namestring
phonestring
companystring
jobstring
rolestring
departmentstring
industrystring
subscribeboolean

Default: true

themestring
timezonestring

An enumeration.

Enum: Africa/Abidjan,Africa/Accra,Africa/Addis_Ababa,Africa/Algiers,Africa/Asmara,Africa/Asmera,Africa/Bamako,Africa/Bangui,Africa/Banjul,Africa/Bissau,Africa/Blantyre,Africa/Brazzaville,Africa/Bujumbura,Africa/Cairo,Africa/Casablanca,Africa/Ceuta,Africa/Conakry,Africa/Dakar,Africa/Dar_es_Salaam,Africa/Djibouti,Africa/Douala,Africa/El_Aaiun,Africa/Freetown,Africa/Gaborone,Africa/Harare,Africa/Johannesburg,Africa/Juba,Africa/Kampala,Africa/Khartoum,Africa/Kigali,Africa/Kinshasa,Africa/Lagos,Africa/Libreville,Africa/Lome,Africa/Luanda,Africa/Lubumbashi,Africa/Lusaka,Africa/Malabo,Africa/Maputo,Africa/Maseru,Africa/Mbabane,Africa/Mogadishu,Africa/Monrovia,Africa/Nairobi,Africa/Ndjamena,Africa/Niamey,Africa/Nouakchott,Africa/Ouagadougou,Africa/Porto-Novo,Africa/Sao_Tome,Africa/Timbuktu,Africa/Tripoli,Africa/Tunis,Africa/Windhoek,America/Adak,America/Anchorage,America/Anguilla,America/Antigua,America/Araguaina,America/Argentina/Buenos_Aires,America/Argentina/Catamarca,America/Argentina/ComodRivadavia,America/Argentina/Cordoba,America/Argentina/Jujuy,America/Argentina/La_Rioja,America/Argentina/Mendoza,America/Argentina/Rio_Gallegos,America/Argentina/Salta,America/Argentina/San_Juan,America/Argentina/San_Luis,America/Argentina/Tucuman,America/Argentina/Ushuaia,America/Aruba,America/Asuncion,America/Atikokan,America/Atka,America/Bahia,America/Bahia_Banderas,America/Barbados,America/Belem,America/Belize,America/Blanc-Sablon,America/Boa_Vista,America/Bogota,America/Boise,America/Buenos_Aires,America/Cambridge_Bay,America/Campo_Grande,America/Cancun,America/Caracas,America/Catamarca,America/Cayenne,America/Cayman,America/Chicago,America/Chihuahua,America/Coral_Harbour,America/Cordoba,America/Costa_Rica,America/Creston,America/Cuiaba,America/Curacao,America/Danmarkshavn,America/Dawson,America/Dawson_Creek,America/Denver,America/Detroit,America/Dominica,America/Edmonton,America/Eirunepe,America/El_Salvador,America/Ensenada,America/Fort_Nelson,America/Fort_Wayne,America/Fortaleza,America/Glace_Bay,America/Godthab,America/Goose_Bay,America/Grand_Turk,America/Grenada,America/Guadeloupe,America/Guatemala,America/Guayaquil,America/Guyana,America/Halifax,America/Havana,America/Hermosillo,America/Indiana/Indianapolis,America/Indiana/Knox,America/Indiana/Marengo,America/Indiana/Petersburg,America/Indiana/Tell_City,America/Indiana/Vevay,America/Indiana/Vincennes,America/Indiana/Winamac,America/Indianapolis,America/Inuvik,America/Iqaluit,America/Jamaica,America/Jujuy,America/Juneau,America/Kentucky/Louisville,America/Kentucky/Monticello,America/Knox_IN,America/Kralendijk,America/La_Paz,America/Lima,America/Los_Angeles,America/Louisville,America/Lower_Princes,America/Maceio,America/Managua,America/Manaus,America/Marigot,America/Martinique,America/Matamoros,America/Mazatlan,America/Mendoza,America/Menominee,America/Merida,America/Metlakatla,America/Mexico_City,America/Miquelon,America/Moncton,America/Monterrey,America/Montevideo,America/Montreal,America/Montserrat,America/Nassau,America/New_York,America/Nipigon,America/Nome,America/Noronha,America/North_Dakota/Beulah,America/North_Dakota/Center,America/North_Dakota/New_Salem,America/Ojinaga,America/Panama,America/Pangnirtung,America/Paramaribo,America/Phoenix,America/Port-au-Prince,America/Port_of_Spain,America/Porto_Acre,America/Porto_Velho,America/Puerto_Rico,America/Punta_Arenas,America/Rainy_River,America/Rankin_Inlet,America/Recife,America/Regina,America/Resolute,America/Rio_Branco,America/Rosario,America/Santa_Isabel,America/Santarem,America/Santiago,America/Santo_Domingo,America/Sao_Paulo,America/Scoresbysund,America/Shiprock,America/Sitka,America/St_Barthelemy,America/St_Johns,America/St_Kitts,America/St_Lucia,America/St_Thomas,America/St_Vincent,America/Swift_Current,America/Tegucigalpa,America/Thule,America/Thunder_Bay,America/Tijuana,America/Toronto,America/Tortola,America/Vancouver,America/Virgin,America/Whitehorse,America/Winnipeg,America/Yakutat,America/Yellowknife,Antarctica/Casey,Antarctica/Davis,Antarctica/DumontDUrville,Antarctica/Macquarie,Antarctica/Mawson,Antarctica/McMurdo,Antarctica/Palmer,Antarctica/Rothera,Antarctica/South_Pole,Antarctica/Syowa,Antarctica/Troll,Antarctica/Vostok,Arctic/Longyearbyen,Asia/Aden,Asia/Almaty,Asia/Amman,Asia/Anadyr,Asia/Aqtau,Asia/Aqtobe,Asia/Ashgabat,Asia/Ashkhabad,Asia/Atyrau,Asia/Baghdad,Asia/Bahrain,Asia/Baku,Asia/Bangkok,Asia/Barnaul,Asia/Beirut,Asia/Bishkek,Asia/Brunei,Asia/Calcutta,Asia/Chita,Asia/Choibalsan,Asia/Chongqing,Asia/Chungking,Asia/Colombo,Asia/Dacca,Asia/Damascus,Asia/Dhaka,Asia/Dili,Asia/Dubai,Asia/Dushanbe,Asia/Famagusta,Asia/Gaza,Asia/Harbin,Asia/Hebron,Asia/Ho_Chi_Minh,Asia/Hong_Kong,Asia/Hovd,Asia/Irkutsk,Asia/Istanbul,Asia/Jakarta,Asia/Jayapura,Asia/Jerusalem,Asia/Kabul,Asia/Kamchatka,Asia/Karachi,Asia/Kashgar,Asia/Kathmandu,Asia/Katmandu,Asia/Khandyga,Asia/Kolkata,Asia/Krasnoyarsk,Asia/Kuala_Lumpur,Asia/Kuching,Asia/Kuwait,Asia/Macao,Asia/Macau,Asia/Magadan,Asia/Makassar,Asia/Manila,Asia/Muscat,Asia/Nicosia,Asia/Novokuznetsk,Asia/Novosibirsk,Asia/Omsk,Asia/Oral,Asia/Phnom_Penh,Asia/Pontianak,Asia/Pyongyang,Asia/Qatar,Asia/Qostanay,Asia/Qyzylorda,Asia/Rangoon,Asia/Riyadh,Asia/Saigon,Asia/Sakhalin,Asia/Samarkand,Asia/Seoul,Asia/Shanghai,Asia/Singapore,Asia/Srednekolymsk,Asia/Taipei,Asia/Tashkent,Asia/Tbilisi,Asia/Tehran,Asia/Tel_Aviv,Asia/Thimbu,Asia/Thimphu,Asia/Tokyo,Asia/Tomsk,Asia/Ujung_Pandang,Asia/Ulaanbaatar,Asia/Ulan_Bator,Asia/Urumqi,Asia/Ust-Nera,Asia/Vientiane,Asia/Vladivostok,Asia/Yakutsk,Asia/Yangon,Asia/Yekaterinburg,Asia/Yerevan,Atlantic/Azores,Atlantic/Bermuda,Atlantic/Canary,Atlantic/Cape_Verde,Atlantic/Faeroe,Atlantic/Faroe,Atlantic/Jan_Mayen,Atlantic/Madeira,Atlantic/Reykjavik,Atlantic/South_Georgia,Atlantic/St_Helena,Atlantic/Stanley,Australia/ACT,Australia/Adelaide,Australia/Brisbane,Australia/Broken_Hill,Australia/Canberra,Australia/Currie,Australia/Darwin,Australia/Eucla,Australia/Hobart,Australia/LHI,Australia/Lindeman,Australia/Lord_Howe,Australia/Melbourne,Australia/NSW,Australia/North,Australia/Perth,Australia/Queensland,Australia/South,Australia/Sydney,Australia/Tasmania,Australia/Victoria,Australia/West,Australia/Yancowinna,Brazil/Acre,Brazil/DeNoronha,Brazil/East,Brazil/West,CET,CST6CDT,Canada/Atlantic,Canada/Central,Canada/Eastern,Canada/Mountain,Canada/Newfoundland,Canada/Pacific,Canada/Saskatchewan,Canada/Yukon,Chile/Continental,Chile/EasterIsland,Cuba,EET,EST5EDT,Egypt,Eire,Etc/GMT,Etc/GMT+0,Etc/GMT+1,Etc/GMT+10,Etc/GMT+11,Etc/GMT+12,Etc/GMT+2,Etc/GMT+3,Etc/GMT+4,Etc/GMT+5,Etc/GMT+6,Etc/GMT+7,Etc/GMT+8,Etc/GMT+9,Etc/GMT-0,Etc/GMT-1,Etc/GMT-10,Etc/GMT-11,Etc/GMT-12,Etc/GMT-13,Etc/GMT-14,Etc/GMT-2,Etc/GMT-3,Etc/GMT-4,Etc/GMT-5,Etc/GMT-6,Etc/GMT-7,Etc/GMT-8,Etc/GMT-9,Etc/GMT0,Etc/Greenwich,Etc/UCT,Etc/UTC,Etc/Universal,Etc/Zulu,Europe/Amsterdam,Europe/Andorra,Europe/Astrakhan,Europe/Athens,Europe/Belfast,Europe/Belgrade,Europe/Berlin,Europe/Bratislava,Europe/Brussels,Europe/Bucharest,Europe/Budapest,Europe/Busingen,Europe/Chisinau,Europe/Copenhagen,Europe/Dublin,Europe/Gibraltar,Europe/Guernsey,Europe/Helsinki,Europe/Isle_of_Man,Europe/Istanbul,Europe/Jersey,Europe/Kaliningrad,Europe/Kiev,Europe/Kirov,Europe/Lisbon,Europe/Ljubljana,Europe/London,Europe/Luxembourg,Europe/Madrid,Europe/Malta,Europe/Mariehamn,Europe/Minsk,Europe/Monaco,Europe/Moscow,Europe/Nicosia,Europe/Oslo,Europe/Paris,Europe/Podgorica,Europe/Prague,Europe/Riga,Europe/Rome,Europe/Samara,Europe/San_Marino,Europe/Sarajevo,Europe/Saratov,Europe/Simferopol,Europe/Skopje,Europe/Sofia,Europe/Stockholm,Europe/Tallinn,Europe/Tirane,Europe/Tiraspol,Europe/Ulyanovsk,Europe/Uzhgorod,Europe/Vaduz,Europe/Vatican,Europe/Vienna,Europe/Vilnius,Europe/Volgograd,Europe/Warsaw,Europe/Zagreb,Europe/Zaporozhye,Europe/Zurich,GB,GB-Eire,GMT,GMT0,Greenwich,Hongkong,Iceland,Indian/Antananarivo,Indian/Chagos,Indian/Christmas,Indian/Cocos,Indian/Comoro,Indian/Kerguelen,Indian/Mahe,Indian/Maldives,Indian/Mauritius,Indian/Mayotte,Indian/Reunion,Iran,Israel,Jamaica,Japan,Kwajalein,Libya,MET,MST7MDT,Mexico/BajaNorte,Mexico/BajaSur,Mexico/General,NZ,NZ-CHAT,Navajo,PRC,PST8PDT,Pacific/Apia,Pacific/Auckland,Pacific/Bougainville,Pacific/Chatham,Pacific/Chuuk,Pacific/Easter,Pacific/Efate,Pacific/Enderbury,Pacific/Fakaofo,Pacific/Fiji,Pacific/Funafuti,Pacific/Galapagos,Pacific/Gambier,Pacific/Guadalcanal,Pacific/Guam,Pacific/Honolulu,Pacific/Johnston,Pacific/Kiritimati,Pacific/Kosrae,Pacific/Kwajalein,Pacific/Majuro,Pacific/Marquesas,Pacific/Midway,Pacific/Nauru,Pacific/Niue,Pacific/Norfolk,Pacific/Noumea,Pacific/Pago_Pago,Pacific/Palau,Pacific/Pitcairn,Pacific/Pohnpei,Pacific/Ponape,Pacific/Port_Moresby,Pacific/Rarotonga,Pacific/Saipan,Pacific/Samoa,Pacific/Tahiti,Pacific/Tarawa,Pacific/Tongatapu,Pacific/Truk,Pacific/Wake,Pacific/Wallis,Pacific/Yap,Poland,Portugal,ROK,Singapore,Turkey,UCT,US/Alaska,US/Aleutian,US/Arizona,US/Central,US/East-Indiana,US/Eastern,US/Hawaii,US/Indiana-Starke,US/Michigan,US/Mountain,US/Pacific,US/Pacific-New,US/Samoa,UTC,Universal,W-SU,WET,Zulu

localestring

An enumeration.

Enum: de,en,hu,it,nl,sv

POST /api/users/profile
curl --request POST \
--url 'https://opswat.developerhub.io/api/users/profile' \
--form 'file=@{file}'
Copy
Responses
200

Successful Response

UserResponseobject

System user for out

account_idstring
emailstring
usernamestring
pseudonamestring
groupsarray[object]
namestring
has_avatarboolean
profile9 fieldsobject
api_keystring
themestring
timezonestring

An enumeration.

Enum: Africa/Abidjan,Africa/Accra,Africa/Addis_Ababa,Africa/Algiers,Africa/Asmara,Africa/Asmera,Africa/Bamako,Africa/Bangui,Africa/Banjul,Africa/Bissau,Africa/Blantyre,Africa/Brazzaville,Africa/Bujumbura,Africa/Cairo,Africa/Casablanca,Africa/Ceuta,Africa/Conakry,Africa/Dakar,Africa/Dar_es_Salaam,Africa/Djibouti,Africa/Douala,Africa/El_Aaiun,Africa/Freetown,Africa/Gaborone,Africa/Harare,Africa/Johannesburg,Africa/Juba,Africa/Kampala,Africa/Khartoum,Africa/Kigali,Africa/Kinshasa,Africa/Lagos,Africa/Libreville,Africa/Lome,Africa/Luanda,Africa/Lubumbashi,Africa/Lusaka,Africa/Malabo,Africa/Maputo,Africa/Maseru,Africa/Mbabane,Africa/Mogadishu,Africa/Monrovia,Africa/Nairobi,Africa/Ndjamena,Africa/Niamey,Africa/Nouakchott,Africa/Ouagadougou,Africa/Porto-Novo,Africa/Sao_Tome,Africa/Timbuktu,Africa/Tripoli,Africa/Tunis,Africa/Windhoek,America/Adak,America/Anchorage,America/Anguilla,America/Antigua,America/Araguaina,America/Argentina/Buenos_Aires,America/Argentina/Catamarca,America/Argentina/ComodRivadavia,America/Argentina/Cordoba,America/Argentina/Jujuy,America/Argentina/La_Rioja,America/Argentina/Mendoza,America/Argentina/Rio_Gallegos,America/Argentina/Salta,America/Argentina/San_Juan,America/Argentina/San_Luis,America/Argentina/Tucuman,America/Argentina/Ushuaia,America/Aruba,America/Asuncion,America/Atikokan,America/Atka,America/Bahia,America/Bahia_Banderas,America/Barbados,America/Belem,America/Belize,America/Blanc-Sablon,America/Boa_Vista,America/Bogota,America/Boise,America/Buenos_Aires,America/Cambridge_Bay,America/Campo_Grande,America/Cancun,America/Caracas,America/Catamarca,America/Cayenne,America/Cayman,America/Chicago,America/Chihuahua,America/Coral_Harbour,America/Cordoba,America/Costa_Rica,America/Creston,America/Cuiaba,America/Curacao,America/Danmarkshavn,America/Dawson,America/Dawson_Creek,America/Denver,America/Detroit,America/Dominica,America/Edmonton,America/Eirunepe,America/El_Salvador,America/Ensenada,America/Fort_Nelson,America/Fort_Wayne,America/Fortaleza,America/Glace_Bay,America/Godthab,America/Goose_Bay,America/Grand_Turk,America/Grenada,America/Guadeloupe,America/Guatemala,America/Guayaquil,America/Guyana,America/Halifax,America/Havana,America/Hermosillo,America/Indiana/Indianapolis,America/Indiana/Knox,America/Indiana/Marengo,America/Indiana/Petersburg,America/Indiana/Tell_City,America/Indiana/Vevay,America/Indiana/Vincennes,America/Indiana/Winamac,America/Indianapolis,America/Inuvik,America/Iqaluit,America/Jamaica,America/Jujuy,America/Juneau,America/Kentucky/Louisville,America/Kentucky/Monticello,America/Knox_IN,America/Kralendijk,America/La_Paz,America/Lima,America/Los_Angeles,America/Louisville,America/Lower_Princes,America/Maceio,America/Managua,America/Manaus,America/Marigot,America/Martinique,America/Matamoros,America/Mazatlan,America/Mendoza,America/Menominee,America/Merida,America/Metlakatla,America/Mexico_City,America/Miquelon,America/Moncton,America/Monterrey,America/Montevideo,America/Montreal,America/Montserrat,America/Nassau,America/New_York,America/Nipigon,America/Nome,America/Noronha,America/North_Dakota/Beulah,America/North_Dakota/Center,America/North_Dakota/New_Salem,America/Ojinaga,America/Panama,America/Pangnirtung,America/Paramaribo,America/Phoenix,America/Port-au-Prince,America/Port_of_Spain,America/Porto_Acre,America/Porto_Velho,America/Puerto_Rico,America/Punta_Arenas,America/Rainy_River,America/Rankin_Inlet,America/Recife,America/Regina,America/Resolute,America/Rio_Branco,America/Rosario,America/Santa_Isabel,America/Santarem,America/Santiago,America/Santo_Domingo,America/Sao_Paulo,America/Scoresbysund,America/Shiprock,America/Sitka,America/St_Barthelemy,America/St_Johns,America/St_Kitts,America/St_Lucia,America/St_Thomas,America/St_Vincent,America/Swift_Current,America/Tegucigalpa,America/Thule,America/Thunder_Bay,America/Tijuana,America/Toronto,America/Tortola,America/Vancouver,America/Virgin,America/Whitehorse,America/Winnipeg,America/Yakutat,America/Yellowknife,Antarctica/Casey,Antarctica/Davis,Antarctica/DumontDUrville,Antarctica/Macquarie,Antarctica/Mawson,Antarctica/McMurdo,Antarctica/Palmer,Antarctica/Rothera,Antarctica/South_Pole,Antarctica/Syowa,Antarctica/Troll,Antarctica/Vostok,Arctic/Longyearbyen,Asia/Aden,Asia/Almaty,Asia/Amman,Asia/Anadyr,Asia/Aqtau,Asia/Aqtobe,Asia/Ashgabat,Asia/Ashkhabad,Asia/Atyrau,Asia/Baghdad,Asia/Bahrain,Asia/Baku,Asia/Bangkok,Asia/Barnaul,Asia/Beirut,Asia/Bishkek,Asia/Brunei,Asia/Calcutta,Asia/Chita,Asia/Choibalsan,Asia/Chongqing,Asia/Chungking,Asia/Colombo,Asia/Dacca,Asia/Damascus,Asia/Dhaka,Asia/Dili,Asia/Dubai,Asia/Dushanbe,Asia/Famagusta,Asia/Gaza,Asia/Harbin,Asia/Hebron,Asia/Ho_Chi_Minh,Asia/Hong_Kong,Asia/Hovd,Asia/Irkutsk,Asia/Istanbul,Asia/Jakarta,Asia/Jayapura,Asia/Jerusalem,Asia/Kabul,Asia/Kamchatka,Asia/Karachi,Asia/Kashgar,Asia/Kathmandu,Asia/Katmandu,Asia/Khandyga,Asia/Kolkata,Asia/Krasnoyarsk,Asia/Kuala_Lumpur,Asia/Kuching,Asia/Kuwait,Asia/Macao,Asia/Macau,Asia/Magadan,Asia/Makassar,Asia/Manila,Asia/Muscat,Asia/Nicosia,Asia/Novokuznetsk,Asia/Novosibirsk,Asia/Omsk,Asia/Oral,Asia/Phnom_Penh,Asia/Pontianak,Asia/Pyongyang,Asia/Qatar,Asia/Qostanay,Asia/Qyzylorda,Asia/Rangoon,Asia/Riyadh,Asia/Saigon,Asia/Sakhalin,Asia/Samarkand,Asia/Seoul,Asia/Shanghai,Asia/Singapore,Asia/Srednekolymsk,Asia/Taipei,Asia/Tashkent,Asia/Tbilisi,Asia/Tehran,Asia/Tel_Aviv,Asia/Thimbu,Asia/Thimphu,Asia/Tokyo,Asia/Tomsk,Asia/Ujung_Pandang,Asia/Ulaanbaatar,Asia/Ulan_Bator,Asia/Urumqi,Asia/Ust-Nera,Asia/Vientiane,Asia/Vladivostok,Asia/Yakutsk,Asia/Yangon,Asia/Yekaterinburg,Asia/Yerevan,Atlantic/Azores,Atlantic/Bermuda,Atlantic/Canary,Atlantic/Cape_Verde,Atlantic/Faeroe,Atlantic/Faroe,Atlantic/Jan_Mayen,Atlantic/Madeira,Atlantic/Reykjavik,Atlantic/South_Georgia,Atlantic/St_Helena,Atlantic/Stanley,Australia/ACT,Australia/Adelaide,Australia/Brisbane,Australia/Broken_Hill,Australia/Canberra,Australia/Currie,Australia/Darwin,Australia/Eucla,Australia/Hobart,Australia/LHI,Australia/Lindeman,Australia/Lord_Howe,Australia/Melbourne,Australia/NSW,Australia/North,Australia/Perth,Australia/Queensland,Australia/South,Australia/Sydney,Australia/Tasmania,Australia/Victoria,Australia/West,Australia/Yancowinna,Brazil/Acre,Brazil/DeNoronha,Brazil/East,Brazil/West,CET,CST6CDT,Canada/Atlantic,Canada/Central,Canada/Eastern,Canada/Mountain,Canada/Newfoundland,Canada/Pacific,Canada/Saskatchewan,Canada/Yukon,Chile/Continental,Chile/EasterIsland,Cuba,EET,EST5EDT,Egypt,Eire,Etc/GMT,Etc/GMT+0,Etc/GMT+1,Etc/GMT+10,Etc/GMT+11,Etc/GMT+12,Etc/GMT+2,Etc/GMT+3,Etc/GMT+4,Etc/GMT+5,Etc/GMT+6,Etc/GMT+7,Etc/GMT+8,Etc/GMT+9,Etc/GMT-0,Etc/GMT-1,Etc/GMT-10,Etc/GMT-11,Etc/GMT-12,Etc/GMT-13,Etc/GMT-14,Etc/GMT-2,Etc/GMT-3,Etc/GMT-4,Etc/GMT-5,Etc/GMT-6,Etc/GMT-7,Etc/GMT-8,Etc/GMT-9,Etc/GMT0,Etc/Greenwich,Etc/UCT,Etc/UTC,Etc/Universal,Etc/Zulu,Europe/Amsterdam,Europe/Andorra,Europe/Astrakhan,Europe/Athens,Europe/Belfast,Europe/Belgrade,Europe/Berlin,Europe/Bratislava,Europe/Brussels,Europe/Bucharest,Europe/Budapest,Europe/Busingen,Europe/Chisinau,Europe/Copenhagen,Europe/Dublin,Europe/Gibraltar,Europe/Guernsey,Europe/Helsinki,Europe/Isle_of_Man,Europe/Istanbul,Europe/Jersey,Europe/Kaliningrad,Europe/Kiev,Europe/Kirov,Europe/Lisbon,Europe/Ljubljana,Europe/London,Europe/Luxembourg,Europe/Madrid,Europe/Malta,Europe/Mariehamn,Europe/Minsk,Europe/Monaco,Europe/Moscow,Europe/Nicosia,Europe/Oslo,Europe/Paris,Europe/Podgorica,Europe/Prague,Europe/Riga,Europe/Rome,Europe/Samara,Europe/San_Marino,Europe/Sarajevo,Europe/Saratov,Europe/Simferopol,Europe/Skopje,Europe/Sofia,Europe/Stockholm,Europe/Tallinn,Europe/Tirane,Europe/Tiraspol,Europe/Ulyanovsk,Europe/Uzhgorod,Europe/Vaduz,Europe/Vatican,Europe/Vienna,Europe/Vilnius,Europe/Volgograd,Europe/Warsaw,Europe/Zagreb,Europe/Zaporozhye,Europe/Zurich,GB,GB-Eire,GMT,GMT0,Greenwich,Hongkong,Iceland,Indian/Antananarivo,Indian/Chagos,Indian/Christmas,Indian/Cocos,Indian/Comoro,Indian/Kerguelen,Indian/Mahe,Indian/Maldives,Indian/Mauritius,Indian/Mayotte,Indian/Reunion,Iran,Israel,Jamaica,Japan,Kwajalein,Libya,MET,MST7MDT,Mexico/BajaNorte,Mexico/BajaSur,Mexico/General,NZ,NZ-CHAT,Navajo,PRC,PST8PDT,Pacific/Apia,Pacific/Auckland,Pacific/Bougainville,Pacific/Chatham,Pacific/Chuuk,Pacific/Easter,Pacific/Efate,Pacific/Enderbury,Pacific/Fakaofo,Pacific/Fiji,Pacific/Funafuti,Pacific/Galapagos,Pacific/Gambier,Pacific/Guadalcanal,Pacific/Guam,Pacific/Honolulu,Pacific/Johnston,Pacific/Kiritimati,Pacific/Kosrae,Pacific/Kwajalein,Pacific/Majuro,Pacific/Marquesas,Pacific/Midway,Pacific/Nauru,Pacific/Niue,Pacific/Norfolk,Pacific/Noumea,Pacific/Pago_Pago,Pacific/Palau,Pacific/Pitcairn,Pacific/Pohnpei,Pacific/Ponape,Pacific/Port_Moresby,Pacific/Rarotonga,Pacific/Saipan,Pacific/Samoa,Pacific/Tahiti,Pacific/Tarawa,Pacific/Tongatapu,Pacific/Truk,Pacific/Wake,Pacific/Wallis,Pacific/Yap,Poland,Portugal,ROK,Singapore,Turkey,UCT,US/Alaska,US/Aleutian,US/Arizona,US/Central,US/East-Indiana,US/Eastern,US/Hawaii,US/Indiana-Starke,US/Michigan,US/Mountain,US/Pacific,US/Pacific-New,US/Samoa,UTC,Universal,W-SU,WET,Zulu

localestring

An enumeration.

Enum: de,en,hu,it,nl,sv

400

Bad request

401

Not authorized

415

Unsupported media type

422

Validation Error

500

Internal server error

Response
{
"account_id": "{string}",
"email": "{string}",
"username": "{string}",
"pseudoname": "{string}",
"groups": [
{
"name": "{string}"
}
],
"has_avatar": "{boolean}",
"profile": {
"first_name": "{string}",
"last_name": "{string}",
"phone": "{string}",
"company": "{string}",
"job": "{string}",
"role": "{string}",
"department": "{string}",
"industry": "{string}",
"subscribe": "{boolean}"
},
"api_key": "{string}",
"theme": "{string}",
"timezone": "{string}",
"locale": "{string}"
}
Copy

Reset Timezone Locale

Reset user timezone and locale settings

Auth
DELETE /api/users/reset-timezone-locale
curl --request DELETE \
--url 'https://opswat.developerhub.io/api/users/reset-timezone-locale'
Copy
Responses
200

Successful Response

No response body
401

Not authorized

Response
No response
Copy

Get Avatar Image

Get use avatar image

Auth
Path Params
account_idstring
GET /api/users/{account_id}/avatar
curl --get \
--url 'https://opswat.developerhub.io/api/users/{account_id}/avatar'
Copy
Responses
200

Successful Response

No response body
401

Not authorized

404

Item not found

422

Validation Error

Response
No response
Copy

Create API Key

Create API key for current user

Auth
POST /api/users/api-key/create
curl --request POST \
--url 'https://opswat.developerhub.io/api/users/api-key/create'
Copy
Responses
200

Successful Response

UserApiKeyobject

Model for user API key create and set

api_keystring
400

Bad request

401

Not authorized

Response
{
"api_key": "{string}"
}
Copy

Set API key

Set API key for current user

Auth
Request Body
UserApiKeyobject

Model for user API key create and set

api_keystring
POST /api/users/api-key/set
curl --request POST \
--url 'https://opswat.developerhub.io/api/users/api-key/set' \
--data '{
"api_key": "{string}"
}'
Copy
Responses
200

Successful Response

No response body
400

Bad request

401

Not authorized

422

Validation Error

Response
No response
Copy

Remove API Key

Remove user's API key

Auth
POST /api/users/api-key/remove
curl --request POST \
--url 'https://opswat.developerhub.io/api/users/api-key/remove'
Copy
Responses
200

Successful Response

No response body
401

Not authorized

404

Item not found

Response
No response
Copy

Mark notification as viewed by user

Mark notification as viewed by user

Auth
Path Params
notificationstring

Enum: dark_theme

POST /api/users/notifications/{notification}
curl --request POST \
--url 'https://opswat.developerhub.io/api/users/notifications/{notification}'
Copy
Responses
200

Successful Response

No response body
401

Not authorized

422

Validation Error

Response
No response
Copy

Delete Report

Delete a report

Users can only delete their own reports

Auth
Path Params
report_idstring
DELETE /api/users/reports/{report_id}
curl --request DELETE \
--url 'https://opswat.developerhub.io/api/users/reports/{report_id}'
Copy
Responses
200

Successful Response

No response body
401

Not authorized

403

Forbidden

404

Item not found

422

Validation Error

Response
No response
Copy

Get Public ReportsDeprecated

Get all public reports

Auth
Query String
pageinteger

Page number starting from 1

minimum: 1

Default: 1

page_size

Page size

Default: 10

GET /api/users/uploads
curl --get \
--url 'https://opswat.developerhub.io/api/users/uploads' \
--data page=1 \
--data page_size=10
Copy
Responses
200

Successful Response

ReportSearchResponseobject

Search response returned to user

itemsarray
countinteger
count_search_paramsinteger
methodstring
dbs_syncboolean
400

Bad request

401

Not authorized

422

Validation Error

Response
{
"items": [
"{array...}"
],
"count": "{integer}",
"count_search_params": "{integer}",
"method": "{string}",
"dbs_sync": "{boolean}"
}
Copy

Get User ReportsDeprecated

Get reports of current user

Auth
Query String
pageinteger

Page number starting from 1

minimum: 1

Default: 1

page_size

Page size

Default: 10

date_fromstring

Results newer then this date (format YYYY-MM-DD)

verdictstring

Enum: unknown,benign,informational,no_threat,suspicious,likely_malicious,malicious

GET /api/users/me/uploads
curl --get \
--url 'https://opswat.developerhub.io/api/users/me/uploads' \
--data page=1 \
--data page_size=10 \
--data date_from={date_from} \
--data verdict={verdict}
Copy
Responses
200

Successful Response

ReportSearchResponseobject

Search response returned to user

itemsarray
countinteger
count_search_paramsinteger
methodstring
dbs_syncboolean
400

Bad request

401

Not authorized

422

Validation Error

Response
{
"items": [
"{array...}"
],
"count": "{integer}",
"count_search_params": "{integer}",
"method": "{string}",
"dbs_sync": "{boolean}"
}
Copy

Get User Stat

Get app statistics for current user or for all users

Auth
Query String
typesarray

Enum: count_malicious_ips_by_user,count_verdicts_by_user,count_reports_by_user,count_uploads_by_user

all_usersboolean

Default: false

periodstring
GET /api/users/stat
curl --get \
--url 'https://opswat.developerhub.io/api/users/stat' \
--data types={types} \
--data all_users={all_users} \
--data period={period}
Copy
Responses
200

Successful Response

UserStatResponsearray[object]
user3 fieldsobject
namestring
updated_datedate-time
401

Not authorized

403

Forbidden

422

Validation Error

Response
[
{
"user": {
"account_id": "{string}",
"username": "{string}",
"pseudoname": "{string}"
},
"name": "{string}",
"value": "{}",
"updated_date": "{date-time}"
}
]
Copy

Get User Generic Stat

Get app statistics not related to specific user

Auth
Query String
typesarray

Enum: count_reports,count_verdicts,count_iocs,count_iocs_per_period,count_yaras,count_users,count_users_signup_by_day,count_users_signin_by_day,fix_old_count_users_signin_by_day,count_active_users,count_users_uploads,count_uploads_by_date,count_reports_by_extension,count_malicious_reports_by_extension,count_malicious_reports_by_language,count_malicious_reports_by_country,count_malicious_ips,count_malicious_ips_by_user,count_malicious_ips_ratio,count_verdicts_by_date,count_verdicts_by_user,count_reports_by_date,count_reports_by_user,count_uploads_by_user,count_malicious_signal_groups,count_mitre_techniques_by_period,count_yaras_per_period,count_top_level_domains,count_phishing_brands,count_api_calls,count_ips,count_domains,count_sha256,average_scan_time,frequent_tags,frequent_yara_tags,most_interesting,finalize_fakely_hanged_reports,system_info,clean_storage,do_retention,do_healthcheck,get_fuzzyhashes_verdicts,delete_reports,postprocess_iocs,new_search_fix_search_params,count_initial_scan_jobs_by_date,count_rescan_jobs_by_date,count_mitre_techniques,load_mitre_data,get_intersting_score,collect_daily_reports,collect_daily_yara,fix_link_mime_type,update_sitemap,send_emails_queue,update_sourcetype_based_on_shorttype,copy_app_errors,add_country_search_param,set_pseudonames,normalize_verdict_history,delete_search_indexes,create_search_indexes,count_search_params,report_ocm_status,set_uploads_date_fields,set_auditor_features,change_additional_scan_steps,set_new_logos,count_reports_states_by_date,count_reports_extensions_by_date,report_usage_to_ocm,fix_origins_relations,old_errors_cleanup,cleanup_report_format_history,calculate_storage,check_license_scan_limit,generate_yara_xml_feed,send_report_summary,mark_failed_reports_for_deletion,engine_database_update,frequent_signal_tags,frequent_malware_tags

periodstring
GET /api/users/stat/generic
curl --get \
--url 'https://opswat.developerhub.io/api/users/stat/generic' \
--data types={types} \
--data period={period}
Copy
Responses
200

Successful Response

AppStatResponsearray[object]
namestring
value
booleanboolean
updated_datedate-time
400

Bad request

401

Not authorized

403

Forbidden

422

Validation Error

Response
[
{
"name": "{string}",
"value": "{boolean}",
"updated_date": "{date-time}"
}
]
Copy

Get Reports Stat

Get app statistics, which is saved per reports verdicts

Auth
Query String
typesarray

Statistics types

date_fromstring

Start of time period or the only one date to fetch

date_tostring

End of time period to fetch

verdictsarray

Reports verdicts filter

Enum: unknown,benign,informational,no_threat,suspicious,likely_malicious,malicious

order

Order applied to statistics items

Default: desc

pageinteger

Page number starting from 1

minimum: 1

Default: 1

page_size

Page size

Default: 20

asc_orderarray

Statistic types that should be sorted ascending

Default: []

desc_orderarray

Statistic types that should be sorted descending

Default: []

GET /api/users/stat/reports
curl --get \
--url 'https://opswat.developerhub.io/api/users/stat/reports' \
--data types={types} \
--data date_from={date_from} \
--data date_to={date_to} \
--data verdicts={verdicts} \
--data order=desc \
--data page=1 \
--data page_size=20 \
--data asc_order= \
--data desc_order=
Copy
Responses
200

Successful Response

VerdictDateStatResponsearray[object]
stat_name
VerdictDateGenericStatNamestring

Name of statistics types that should be stored together in a single collection

Enum: count_malicious_signal_groups,count_mitre_techniques_by_period,frequent_yara_tags,frequent_malware_tags,count_yaras_per_period,count_malicious_reports_by_extension,count_api_calls,count_top_level_domains,count_malicious_reports_by_language,count_phishing_brands,count_malicious_reports_by_country,count_malicious_ips,count_malicious_ips_ratio,count_iocs_per_period,average_scan_time

items3 fieldsarray[object]
orderstring

In case user needs to specify the order of requested items

Enum: asc,desc

400

Bad request

401

Not authorized

422

Validation Error

Response
[
{
"stat_name": "{string}",
"items": [
{
"name": "{string}",
"value": "{number}",
"country_name": "{string}"
}
],
"order": "{string}"
}
]
Copy

Get Reports Verdicts Amount

Get amount of reports verdicts for provided IOCs

Auth
Query String
date_fromstring

Start of time period or the only one date to fetch

date_tostring

End of time period to fetch

verdictsarray

Reports verdicts filter

Enum: unknown,benign,informational,no_threat,suspicious,likely_malicious,malicious

Request Body
VerdictsAmountPayloadobject
dataarray[object]
itemsarray[string]
stat_name
VerdictDateGenericStatNamestring

Name of statistics types that should be stored together in a single collection

Enum: count_malicious_signal_groups,count_mitre_techniques_by_period,frequent_yara_tags,frequent_malware_tags,count_yaras_per_period,count_malicious_reports_by_extension,count_api_calls,count_top_level_domains,count_malicious_reports_by_language,count_phishing_brands,count_malicious_reports_by_country,count_malicious_ips,count_malicious_ips_ratio,count_iocs_per_period,average_scan_time

POST /api/users/stat/reports/verdicts/amount
curl --request POST \
--url 'https://opswat.developerhub.io/api/users/stat/reports/verdicts/amount' \
--data date_from={date_from} \
--data date_to={date_to} \
--data verdicts={verdicts} \
--data '{
"data": [
{
"items": [
"{array[string]...}"
],
"stat_name": "{string}"
}
]
}'
Copy
Responses
200

Successful Response

VerdictAmountResponsearray[object]
stat_name
VerdictDateGenericStatNamestring

Name of statistics types that should be stored together in a single collection

Enum: count_malicious_signal_groups,count_mitre_techniques_by_period,frequent_yara_tags,frequent_malware_tags,count_yaras_per_period,count_malicious_reports_by_extension,count_api_calls,count_top_level_domains,count_malicious_reports_by_language,count_phishing_brands,count_malicious_reports_by_country,count_malicious_ips,count_malicious_ips_ratio,count_iocs_per_period,average_scan_time

items2 fieldsarray[object]
400

Bad request

401

Not authorized

422

Validation Error

Response
[
{
"stat_name": "{string}",
"items": [
{
"item": "{string}",
"verdicts": {}
}
]
}
]
Copy

Get Reports Verdicts Dates

Get distribution of reports verdicts for provided IOCs by dates

Auth
Query String
date_fromstring

Start of time period or the only one date to fetch

date_tostring

End of time period to fetch

verdictsarray

Reports verdicts filter

Enum: unknown,benign,informational,no_threat,suspicious,likely_malicious,malicious

Request Body
VerdictsDatesPayloadobject
dataarray[object]
itemsarray[string]
stat_name
VerdictDateGenericStatNamestring

Name of statistics types that should be stored together in a single collection

Enum: count_malicious_signal_groups,count_mitre_techniques_by_period,frequent_yara_tags,frequent_malware_tags,count_yaras_per_period,count_malicious_reports_by_extension,count_api_calls,count_top_level_domains,count_malicious_reports_by_language,count_phishing_brands,count_malicious_reports_by_country,count_malicious_ips,count_malicious_ips_ratio,count_iocs_per_period,average_scan_time

POST /api/users/stat/reports/verdicts/dates
curl --request POST \
--url 'https://opswat.developerhub.io/api/users/stat/reports/verdicts/dates' \
--data date_from={date_from} \
--data date_to={date_to} \
--data verdicts={verdicts} \
--data '{
"data": [
{
"items": [
"{array[string]...}"
],
"stat_name": "{string}"
}
]
}'
Copy
Responses
200

Successful Response

VerdictDatesResponsearray[object]
stat_name
VerdictDateGenericStatNamestring

Name of statistics types that should be stored together in a single collection

Enum: count_malicious_signal_groups,count_mitre_techniques_by_period,frequent_yara_tags,frequent_malware_tags,count_yaras_per_period,count_malicious_reports_by_extension,count_api_calls,count_top_level_domains,count_malicious_reports_by_language,count_phishing_brands,count_malicious_reports_by_country,count_malicious_ips,count_malicious_ips_ratio,count_iocs_per_period,average_scan_time

items3 fieldsarray[object]
400

Bad request

401

Not authorized

422

Validation Error

Response
[
{
"stat_name": "{string}",
"items": [
{
"item": "{string}",
"total_verdict": "{string}",
"verdicts": {}
}
]
}
]
Copy

Get Malicious Ips Stat

Get statistics on malicious IPs

Auth
Query String
periodstring
targetstring
GET /api/users/stat/malicious-ips
curl --get \
--url 'https://opswat.developerhub.io/api/users/stat/malicious-ips' \
--data period={period} \
--data target={target}
Copy
Responses
200

Successful Response

AppStatobject

Generic statistic record.

Can hold statistics of any type.

namestring
periodstring
updated_datedate-time
idstring
400

Bad request

401

Not authorized

422

Validation Error

Response
{
"name": "{string}",
"value": "{}",
"period": "{string}",
"updated_date": "2025-10-27T13:58:59.525028",
"id": "5f85f36d6dfecacc68428a46"
}
Copy

Get Ioc Stat

Get app statistics

Auth
GET /api/users/stat/iocs
curl --get \
--url 'https://opswat.developerhub.io/api/users/stat/iocs'
Copy
Responses
200

Successful Response

StatForResponseobject
count
integerinteger
updateddate-time
401

Not authorized

Response
{
"count": "{integer}",
"updated": "{date-time}"
}
Copy

Get Yara Stat

Get yara statistics

Auth
GET /api/users/stat/yara
curl --get \
--url 'https://opswat.developerhub.io/api/users/stat/yara'
Copy
Responses
200

Successful Response

StatForYaraResponseobject
count
integerinteger
updateddate-time
401

Not authorized

Response
{
"count": "{integer}",
"updated": "{date-time}"
}
Copy

Get Mitre Stat

Get statistics on MITRE techniques used in reports

Auth
GET /api/users/stat/mitre
curl --get \
--url 'https://opswat.developerhub.io/api/users/stat/mitre'
Copy
Responses
200

Successful Response

StatForResponseobject
count
integerinteger
updateddate-time
401

Not authorized

Response
{
"count": "{integer}",
"updated": "{date-time}"
}
Copy

Get Yara Info

Get yara repo info

Auth
GET /api/users/info/yara
curl --get \
--url 'https://opswat.developerhub.io/api/users/info/yara'
Copy
Responses
200

Successful Response

YaraInfoResponseobject
infoarray[object]
revisionstring
urlstring
401

Not authorized

Response
{
"info": [
{
"revision": "{string}",
"url": "{string}"
}
]
}
Copy

Get Default

Return general information about webservice, just to indicate that API is working

Auth
GET /api/system/info
curl --get \
--url 'https://opswat.developerhub.io/api/system/info'
Copy
Responses
200

Successful Response

GeneralSystemInfoobject

Response model for /api/system/info endpoint

titlestring
descriptionstring
api_versionstring
release_versionstring
release_datedate-time
Response
{
"title": "{string}",
"description": "{string}",
"api_version": "{string}",
"release_version": "{string}",
"release_date": "{date-time}"
}
Copy

Get Version

Return the version of the webservice

Auth
GET /api/system/version
curl --get \
--url 'https://opswat.developerhub.io/api/system/version'
Copy
Responses
200

Successful Response

Response Get Version Api System Version Getstring
Response
{
"schema": "{string}"
}
Copy

Get Config

Obtain project configuration to use on front-end

Auth
GET /api/system/config
curl --get \
--url 'https://opswat.developerhub.io/api/system/config'
Copy
Responses
200

Successful Response

SystemConfigobject

Response model for /api/system/config endpoint

baseUrlstring
allowAnonymousUsersboolean
appTitlestring
appDescriptionstring
adFrequencyinteger
buildTypestring

An enumeration.

Enum: default,community,develop,onpremise

maxUploadSizeinteger
maxUploadSizeLimitinteger
usernameobject

Username config model for SystemConfig response model

maximum_lengthinteger
regexstring
password4 fieldsobject

Password config model for SystemConfig response model

tokenExpire3 fieldsobject

TokenExpire config model for SystemConfig response model

reports6 fieldsobject

Reports config model for SystemConfig response model

queueJobTimeoutinteger
languagesobject

Languages config model for SystemConfig response model

languagestring
codestring
scanFilesPerUploadinteger
googleAnalyticsIDstring
googleAnalyticsUAstring
matomoContainerPathstring
supportedTypesarray[string]

Enum: ace,apk,bat,64bits,bmp,csv,doc,docm,docx,dot,dotm,dotx,elf,eml,gif,hta,htm,html,iso,java,java-bytecode,javascript,jpg,lnk,mbox,mhtml,msg,msi,mso,odp,ods,odt,odg,odf,odc,odb,odi,ole,one,pdf,pedll,peexe,png,pot,potm,potx,powershell,ppt,pptm,pptx,ps,pub,rar,rfc822,rtf,svg,txt,vbs,wmv,wsf,xlm,xls,xlsb,xlsm,xlsx,xlt,xltm,xltx,xml,xsl,zip,7zip,exe,mail,ms-office,script

fileCategoriesobject
*array[string]
fileGeneralTypesobject
*array[string]
constantStringsarray[string]
defaultThemestring
iocs3 fieldsobject

IOCs config model for SystemConfig response model

adminobject

Admin config model for SystemConfig response model

pageSizeinteger
logoSelectedTime2 fieldsobject

LogoSelectedTime config model for SystemConfig response model

askTermsConsentboolean
scanBigFileSizeinteger
statOverview3 fieldsobject

StatOverview config model for SystemConfig response model

jobs3 fieldsobject

Jobs config model for SystemConfig response model

similaritySearchEnabledboolean
TLDTypesarray[string]

Enum: com,org,edu,gov,uk,net,ca,de,jp,fr,au,us,ru,ch,it,nl,se,no,es,mil,aero,biz,coop,info,museum,name,pro,ac,ad,ae,af,ag,al,ai,am,ao,aq,ar,as,at,az,ba,bb,be,bf,bg,bh,bm,bn,bo,br,bt,bw,by,bz,cc,cd,cg,cl,cm,co,cr,cu,cx,cy,cz,dj,dk,do,dz,ec,ee,eg,et,fi,fj,fm,fo,ga,ge,gg,gh,gi,gl,gr,gs,gt,hk,hm,hn,hr,hu,id,ie,il,im,io,ir,je,jm,jo,ke,kg,kh,ki,kr,kw,ky,kz,la,lb,li,lk,lt,lu,lv,ly,ma,mc,md,mg,mk,mm,mn,mo,mp,mr,ms,mt,mu,mv,mx,my,mz,na,nc,ne,ng,ni,np,nr,nu,nz,om,pa,pe,pf,pg,ph,pk,pl,pr,pt,pw,qa,re,ro,rw,sa,sc,sg,sh,si,sk,sm,sn,sr,st,sv,sy,tc,tf,th,tj,tk,tm,tn,to,tp,tr,tt,tv,tw,tz,ua,ug,uy,uz,va,vc,ve,vg,vi,vn,vu,ws,ye,yu,za,zm,zw

showFooterboolean
maintenance4 fieldsobject

Maintenance config model for SystemConfig response model

allowedFeaturesarray[string]
ocmobject

OCM config model for SystemConfig response model

clientUrlstring
extraButton3 fieldsobject

ExtraButton config model for SystemConfig response model

newsLimitinteger
automaticReportFilesDownloadboolean
Response
{
"baseUrl": "{string}",
"allowAnonymousUsers": "{boolean}",
"appTitle": "{string}",
"appDescription": "{string}",
"adFrequency": "{integer}",
"buildType": "{string}",
"maxUploadSize": "{integer}",
"maxUploadSizeLimit": "{integer}",
"username": {
"maximum_length": "{integer}",
"regex": "{string}"
},
"password": {
"alpha_numeric": "{boolean}",
"minimum_length": "{integer}",
"mixed_case": "{boolean}",
"special_characters": "{boolean}"
},
"tokenExpire": {
"signupConfirm": "{integer}",
"passwordReset": "{integer}",
"invite": "{integer}"
},
"reports": {
"queryInterval": {
"initial": "{integer}",
"withData": "{integer}"
},
"signalTypeUpperLimit": {
"informational": "{number}",
"suspicious": "{number}"
},
"search": {
"page_size": "{integer}",
"page_size_options": [
"{array[integer]...}"
],
"reportsLimit": "{integer}",
"monthsLimit": "{integer}"
},
"maxRetryCount": "{integer}",
"viewFileContentSizeLimit": "{integer}",
"keepJobResultSeconds": "{integer}"
},
"queueJobTimeout": "{integer}",
"languages": {
"language": "{string}",
"code": "{string}"
},
"scanFilesPerUpload": "{integer}",
"googleAnalyticsID": "{string}",
"googleAnalyticsUA": "{string}",
"matomoContainerPath": "{string}",
"supportedTypes": [
"{array[string]...}"
],
"fileCategories": {},
"fileGeneralTypes": {},
"constantStrings": [
"{array[string]...}"
],
"defaultTheme": "{string}",
"iocs": {
"prevalenceExceptWhitelists": "{boolean}",
"genQueryExceptWhitelists": "{boolean}",
"prevalenceDayOptions": [
"{array[integer]...}"
]
},
"admin": {
"pageSize": "{integer}"
},
"logoSelectedTime": {
"light": {
"main": "{integer}",
"top_menu": "{integer}",
"footer": "{integer}"
},
"dark": {
"main": "{integer}",
"top_menu": "{integer}",
"footer": "{integer}"
}
},
"askTermsConsent": "{boolean}",
"scanBigFileSize": "{integer}",
"statOverview": {
"timelineMonths": [
"{array[string]...}"
],
"topItemsLimit": "{integer}",
"leaderboardItemsLimit": "{integer}"
},
"jobs": {
"memoryLimit": "{integer}",
"chartControlTime": "{integer}",
"memoryUsageTop": "{integer}"
},
"similaritySearchEnabled": "{boolean}",
"TLDTypes": [
"{array[string]...}"
],
"showFooter": "{boolean}",
"maintenance": {
"blockScan": "{boolean}",
"blockScanNotification": "{string}",
"blockSearch": "{boolean}",
"blockSearchNotification": "{string}"
},
"allowedFeatures": [
"{array[string]...}"
],
"ocm": {
"clientUrl": "{string}"
},
"extraButton": {
"text": "{string}",
"link": "{string}",
"active": "{boolean}"
},
"newsLimit": "{integer}",
"automaticReportFilesDownload": "{boolean}"
}
Copy

Get Terms

Obtain privacy policy and terms & conditions

Auth
Path Params
terms_typestring

Enum: privacy-policy,terms-condition,cookie-policy

GET /api/system/get-terms/{terms_type}
curl --get \
--url 'https://opswat.developerhub.io/api/system/get-terms/{terms_type}'
Copy
Responses
200

Successful Response

Response Get Terms Api System Get Terms Terms Type Getstring
404

Item not found

422

Validation Error

Response
{
"schema": "{string}"
}
Copy

Get Signal Groups

Obtain signal groups list

Auth
GET /api/system/signal-groups
curl --get \
--url 'https://opswat.developerhub.io/api/system/signal-groups'
Copy
Responses
200

Successful Response

SignalGroupsResponsearray[object]
typestring
namestring
categorystring
groups5 fieldsarray[object]
401

Not authorized

Response
[
{
"type": "{string}",
"name": "{string}",
"category": "{string}",
"groups": [
{
"id": "{string}",
"description": "{string}",
"mime_type": "{string}",
"mitre_technique_ids": "{string}",
"strength": "{string}"
}
]
}
]
Copy

Get Mime Types

Obtain mime type list

Auth
GET /api/system/mime-types
curl --get \
--url 'https://opswat.developerhub.io/api/system/mime-types'
Copy
Responses
200

Successful Response

arrayarray[string]
401

Not authorized

Response
[
"{array[string]...}"
]
Copy

Get Yara Rules

Get extended data of yara rules

If the name parameter is left empty, it returns the list of yara rules that already has a match in the system. Otherwise it will return a list of yara rules where the yara rule name matches the name parameter even if the yara rule has no match in the system.

Auth
Query String
namearray

Name of the YARA rule

Default: []

GET /api/system/yara
curl --get \
--url 'https://opswat.developerhub.io/api/system/yara' \
--data name=
Copy
Responses
200

Successful Response

YaraRuleResponsearray[object]
namestring
authorstring
strengthnumber
created_datedate-time
descriptionstring
other_dataobject
contentstring
401

Not authorized

422

Validation Error

Response
[
{
"name": "{string}",
"author": "{string}",
"strength": "{number}",
"created_date": "2025-10-27T13:58:59.527426",
"description": "{string}",
"other_data": {},
"content": "{string}"
}
]
Copy

Get Yara Authors

Get yara rules authors

If the name parameter is left empty, it returns the list of yara rule authors that already has a match in the system. Otherwise it will return a list of yara rule authors where the yara rule name matches the name parameter even if the yara rule has no match in the system.

Auth
Query String
namearray

Name of the YARA rule

Default: []

GET /api/system/yara-authors
curl --get \
--url 'https://opswat.developerhub.io/api/system/yara-authors' \
--data name=
Copy
Responses
200

Successful Response

arrayarray[string]
401

Not authorized

422

Validation Error

Response
[
"{array[string]...}"
]
Copy

Get Translations

Obtain translations for specific language

Auth
Path Params
langstring

Enum: en,de,zh,es,hi,ar,pt,bn,ru,ja,ko,fr,te,mr,tr,ta,vi,ur

GET /api/system/translations/{lang}
curl --get \
--url 'https://opswat.developerhub.io/api/system/translations/{lang}'
Copy
Responses
200

Successful Response

Response Get Translations Api System Translations Lang Getobject
*string
422

Validation Error

Response
{}
Copy

Get Languages

Obtain list of all detectable (and probably even more) languages

Auth
GET /api/system/languages
curl --get \
--url 'https://opswat.developerhub.io/api/system/languages'
Copy
Responses
200

Successful Response

Response Get Languages Api System Languages Getobject
*string
404

Item not found

Response
{}
Copy

Get Countries

Obtain list of all countries

Auth
GET /api/system/countries
curl --get \
--url 'https://opswat.developerhub.io/api/system/countries'
Copy
Responses
200

Successful Response

Response Get Countries Api System Countries Getobject
*string
404

Item not found

Response
{}
Copy

Get Mitre Data

Obtain MITRE tactics and techniques

Auth
GET /api/system/mitre
curl --get \
--url 'https://opswat.developerhub.io/api/system/mitre'
Copy
Responses
200

Successful Response

Response Get Mitre Data Api System Mitre Getobject
*4 fieldsobject

Response model for /api/system/mitre endpoint

404

Item not found

Response
{}
Copy

Log Client Error

Log frontend cliend errors

Auth
POST /api/system/errors/log
curl --request POST \
--url 'https://opswat.developerhub.io/api/system/errors/log'
Copy
Responses
200

Successful Response

No response body
400

Bad request

Response
No response
Copy

Get Logo

Get logo image

Auth
Query String
type

Default: main

theme

Default: light

namestring
GET /api/system/logo
curl --get \
--url 'https://opswat.developerhub.io/api/system/logo' \
--data type=main \
--data theme=light \
--data name={name}
Copy
Responses
200

Successful Response

No response body
404

Item not found

422

Validation Error

Response
No response
Copy

Do Healthcheck

Do an immediate healthcheck and return the state

Auth
GET /api/system/do-healthcheck
curl --get \
--url 'https://opswat.developerhub.io/api/system/do-healthcheck'
Copy
Responses
200

Successful Response

DoHealthcheckOutputobject
created_datedate-time
frontend_health2 fieldsobject

Frontent health log

webservice_health8 fieldsobject

Webservice health log

fstransform_health3 fieldsarray[object]
fsbroker_health3 fieldsobject

Fsbroker health log

401

Not authorized

Response
{
"created_date": "{date-time}",
"frontend_health": {
"http_info": {
"response_time_ms": "{integer}",
"response_code_http": "{integer}",
"request_success": "{boolean}"
},
"calculated_health": "{boolean}"
},
"webservice_health": {
"http_info_direct": {
"response_time_ms": "{integer}",
"response_code_http": "{integer}",
"request_success": "{boolean}"
},
"response_direct": {},
"http_info_nginx": {
"response_time_ms": "{integer}",
"response_code_http": "{integer}",
"request_success": "{boolean}"
},
"response_nginx": {},
"number_of_all_users": "{integer}",
"number_of_active_users": "{integer}",
"tasks_queues": {
"total_healthy": "{boolean}",
"queues": [
{
"queue_name": "{string}",
"check_type": "{string}",
"healthy": "{boolean}",
"last_date_healthy": "{date-time}",
"data": {}
}
]
},
"calculated_health": "{boolean}"
},
"fstransform_health": [
{
"response": {},
"instance_id": "{string}",
"calculated_health": "{boolean}"
}
],
"fsbroker_health": {
"http_info": {
"response_time_ms": "{integer}",
"response_code_http": "{integer}",
"request_success": "{boolean}"
},
"response": {},
"calculated_health": "{boolean}"
}
}
Copy

Query Healthcheck

Query past healthcheck logs

Auth
Query String
daysinteger

Default: 90

days_frominteger

Default: 0

GET /api/system/query-full-healthcheck
curl --get \
--url 'https://opswat.developerhub.io/api/system/query-full-healthcheck' \
--data days=90 \
--data days_from={days_from}
Copy
Responses
200

Successful Response

DoHealthcheckOutputarray[object]
created_datedate-time
frontend_health2 fieldsobject

Frontent health log

webservice_health8 fieldsobject

Webservice health log

fstransform_health3 fieldsarray[object]
fsbroker_health3 fieldsobject

Fsbroker health log

401

Not authorized

422

Validation Error

Response
[
{
"created_date": "{date-time}",
"frontend_health": {
"http_info": {
"response_time_ms": "{integer}",
"response_code_http": "{integer}",
"request_success": "{boolean}"
},
"calculated_health": "{boolean}"
},
"webservice_health": {
"http_info_direct": {
"response_time_ms": "{integer}",
"response_code_http": "{integer}",
"request_success": "{boolean}"
},
"response_direct": {},
"http_info_nginx": {
"response_time_ms": "{integer}",
"response_code_http": "{integer}",
"request_success": "{boolean}"
},
"response_nginx": {},
"number_of_all_users": "{integer}",
"number_of_active_users": "{integer}",
"tasks_queues": {
"total_healthy": "{boolean}",
"queues": [
{
"queue_name": "{string}",
"check_type": "{string}",
"healthy": "{boolean}",
"last_date_healthy": "{date-time}",
"data": {}
}
]
},
"calculated_health": "{boolean}"
},
"fstransform_health": [
{
"response": {},
"instance_id": "{string}",
"calculated_health": "{boolean}"
}
],
"fsbroker_health": {
"http_info": {
"response_time_ms": "{integer}",
"response_code_http": "{integer}",
"request_success": "{boolean}"
},
"response": {},
"calculated_health": "{boolean}"
}
}
]
Copy

Query Healthcheck

Query sanitized past healthcheck logs

Auth
Query String
daysinteger

Default: 90

days_frominteger

Default: 0

GET /api/system/query-healthcheck
curl --get \
--url 'https://opswat.developerhub.io/api/system/query-healthcheck' \
--data days=90 \
--data days_from={days_from}
Copy
Responses
200

Successful Response

SanitizedHealthCheckOutputarray[object]
created_datedate-time
frontend_healthobject
webservice_healthobject
fstransform_healtharray[object]
fsbroker_healthobject
422

Validation Error

Response
[
{
"created_date": "{date-time}",
"frontend_health": {},
"webservice_health": {},
"fstransform_health": [
{}
],
"fsbroker_health": {}
}
]
Copy

Check License Info

Get license information

Auth
GET /api/system/license
curl --get \
--url 'https://opswat.developerhub.io/api/system/license'
Copy
Responses
200

Successful Response

LicenseResponseobject

Fsbroker health log

http_info3 fieldsobject

HTTP health log

response
objectobject
messagestring
calculated_healthboolean

Default: false

401

Not authorized

Response
{
"http_info": {
"response_time_ms": "{integer}",
"response_code_http": "{integer}",
"request_success": "{boolean}"
},
"response": {},
"message": "{string}",
"calculated_health": "{boolean}"
}
Copy

Activate License Online

Activate license online, using license key

Auth
Request Body
LicenseActivateOnlinePayloadobject
app_serverstring
license_keystring
POST /api/system/license/activate/online
curl --request POST \
--url 'https://opswat.developerhub.io/api/system/license/activate/online' \
--data '{
"app_server": "{string}",
"license_key": "{string}"
}'
Copy
Responses
200

Successful Response

LicenseResponseobject

Fsbroker health log

http_info3 fieldsobject

HTTP health log

response
objectobject
messagestring
calculated_healthboolean

Default: false

400

Bad request

401

Not authorized

422

Validation Error

Response
{
"http_info": {
"response_time_ms": "{integer}",
"response_code_http": "{integer}",
"request_success": "{boolean}"
},
"response": {},
"message": "{string}",
"calculated_health": "{boolean}"
}
Copy

Activate License Offline

Activate license, using license file

Auth
Request Body
Body_activate_license_offline_api_system_license_activate_offline_postobject
app_serverstring
POST /api/system/license/activate/offline
curl --request POST \
--url 'https://opswat.developerhub.io/api/system/license/activate/offline'
Copy
Responses
200

Successful Response

LicenseResponseobject

Fsbroker health log

http_info3 fieldsobject

HTTP health log

response
objectobject
messagestring
calculated_healthboolean

Default: false

400

Bad request

401

Not authorized

422

Validation Error

Response
{
"http_info": {
"response_time_ms": "{integer}",
"response_code_http": "{integer}",
"request_success": "{boolean}"
},
"response": {},
"message": "{string}",
"calculated_health": "{boolean}"
}
Copy

Deactivate License

Deactivate license

Auth
Query String
app_serverstring
DELETE /api/system/license/deactivate
curl --request DELETE \
--url 'https://opswat.developerhub.io/api/system/license/deactivate' \
--data app_server={app_server}
Copy
Responses
200

Successful Response

LicenseResponseobject

Fsbroker health log

http_info3 fieldsobject

HTTP health log

response
objectobject
messagestring
calculated_healthboolean

Default: false

401

Not authorized

404

Item not found

422

Validation Error

500

Internal server error

Response
{
"http_info": {
"response_time_ms": "{integer}",
"response_code_http": "{integer}",
"request_success": "{boolean}"
},
"response": {},
"message": "{string}",
"calculated_health": "{boolean}"
}
Copy

Reputation Check Config

Check if MD Cloud Reputation is enabled

If in the /config opswatReputationAPIKeySource value FALLBACK, it returns False. If opswatReputationAPIKeySource is LICENSE or USER, it returns True

Auth
GET /api/system/reputation/check-config
curl --get \
--url 'https://opswat.developerhub.io/api/system/reputation/check-config'
Copy
Responses
200

Successful Response

ReputationCheckConfigResponseobject
reputation_enabledboolean
Response
{
"reputation_enabled": "{boolean}"
}
Copy

Get News

Get news

Auth
GET /api/system/news
curl --get \
--url 'https://opswat.developerhub.io/api/system/news'
Copy
Responses
200

Successful Response

NewsItemResponsearray[object]
idstring
linkstring
datestring

Represenation of news date, is shown as is

textstring
imagesstring

Comma separated list of images URLs

orderinteger

In what order news should be shown

activeboolean

If this news item should be shown

Response
[
{
"id": "{string}",
"link": "{string}",
"date": "{string}",
"text": "{string}",
"images": "{string}",
"order": "{integer}",
"active": "{boolean}"
}
]
Copy

Admin

Functionality for site admins.

Get Report

Get reports in raw format

Auth
Query String
scan_init_idstring
report_idstring
GET /api/debug/reports
curl --get \
--url 'https://opswat.developerhub.io/api/debug/reports' \
--data scan_init_id={scan_init_id} \
--data report_id={report_id}
Copy
Responses
200

Successful Response

RawReportResponseobject

Model for report raw format

scan_initobject
reportsarray[object]
400

Bad request

404

Item not found

422

Validation Error

Response
{
"scan_init": {
"file": {
"name": "newfile.txt",
"hash": "18ffd9682c5535a2b2798ca51b13e9490df326f185a83fe6e059f8ff47d92105",
"size": 12,
"mime_type": "text/plain",
"is_private": false
},
"scan_options": {
"rapid_mode": false,
"osint": true,
"extended_osint": true,
"extracted_files_osint": true,
"visualization": true,
"files_download": true,
"resolve_domains": true,
"input_file_yara": true,
"extracted_files_yara": true,
"whois": true,
"ips_meta": true,
"images_ocr": true
},
"default_options_used": true,
"scan_started_date": "2024-09-19T16:28:24.584000",
"data": {
"processTime": 12,
"acceptedFiles": [
{
"ID": "c9b9da03-e6a7-4fc3-821d-e767f94fd673",
"submitName": "newfile.txt",
"submitTime": 1726763304622,
"sha256": "18ffd9682c5535a2b2798ca51b13e9490df326f185a83fe6e059f8ff47d92105",
"mediaType": {
"string": "text/plain",
"slash": 4,
Copy

Save News Item

Save news item data

Auth
Request Body
AdminNewsPayloadobject
idstring
linkstring
datestring
textstring
imagesstring
orderinteger
activeboolean
POST /api/system/news
curl --request POST \
--url 'https://opswat.developerhub.io/api/system/news' \
--data '{
"id": "{string}",
"link": "{string}",
"date": "{string}",
"text": "{string}",
"images": "{string}",
"order": "{integer}",
"active": "{boolean}"
}'
Copy
Responses
200

Successful Response

No response body
400

Bad request

401

Not authorized

404

Item not found

422

Validation Error

Response
No response
Copy

Remove News Item

Remove news item

Auth
Query String
news_id
DELETE /api/system/news
curl --request DELETE \
--url 'https://opswat.developerhub.io/api/system/news' \
--data news_id={news_id}
Copy
Responses
200

Successful Response

No response body
400

Bad request

401

Not authorized

404

Item not found

422

Validation Error

Response
No response
Copy

Delete ReportDeprecated

Delete a report

Users can only delete their own reports

Auth
Path Params
report_idstring
DELETE /api/admin/reports/{report_id}
curl --request DELETE \
--url 'https://opswat.developerhub.io/api/admin/reports/{report_id}'
Copy
Responses
200

Successful Response

No response body
401

Not authorized

403

Forbidden

404

Item not found

422

Validation Error

Response
No response
Copy

Get Access Groups

Get a list of all access groups

Auth
GET /api/admin/access-groups
curl --get \
--url 'https://opswat.developerhub.io/api/admin/access-groups'
Copy
Responses
200

Successful Response

AdminGroupResponsearray[object]
idstring
namestring

maxLength: 100

descriptionstring

maxLength: 300

defaultboolean

If group is provided by app by default

401

Not authorized

Response
[
{
"id": "60d70628b5194714b89be271",
"name": "admin",
"description": "User with access to admin panel",
"default": true
},
{
"id": "65aee34a680efc464d0a1bc5",
"name": "auditor",
"description": "User with read-only access to admin panel",
"default": true
},
{
"id": "60d704ddb5194714b89be20f",
"name": "guest",
"description": "Not authenticated user",
"default": true
},
{
"id": "60d704ddb5194714b89be24c",
"name": "intel",
"description": "User with access to advanced threat-intel features",
"default": true
},
{
"id": "6049f060a86b087d7e916f3f",
"name": "user",
"description": "Ordinary authenticated user",
"default": true
}
]
Copy

Save Access Group

Add or edit group.

Note: ID is a required parameter to modify a group

Auth
Request Body
SaveAccessGroupRequestobject

Request model to save access groups

idstring
namestring
descriptionstring
POST /api/admin/access-groups
curl --request POST \
--url 'https://opswat.developerhub.io/api/admin/access-groups' \
--data '{
"id": "{string}",
"name": "{string}",
"description": "{string}"
}'
Copy
Responses
200

Successful Response

No response body
400

Bad request

401

Not authorized

404

Item not found

422

Validation Error

Response
No response
Copy

Remove Access Group

Remove group

Auth
Path Params
group_idstring
POST /api/admin/access-groups/{group_id}/remove
curl --request POST \
--url 'https://opswat.developerhub.io/api/admin/access-groups/{group_id}/remove'
Copy
Responses
200

Successful Response

No response body
400

Bad request

401

Not authorized

404

Item not found

422

Validation Error

Response
No response
Copy

Get Api Quota

Get all api quota settings

Auth
GET /api/admin/settings/api-quota
curl --get \
--url 'https://opswat.developerhub.io/api/admin/settings/api-quota'
Copy
Responses
200

Successful Response

ApiQuotaSettingarray[object]
route_idstring
groupsarray[string]

User groups to apply quota settings to

time_settings6 fieldsobject
credits_settingsobject
request_costinteger

Credits cost for single request

total_creditsinteger

Total credits available per month

idstring
401

Not authorized

Response
[
{
"route_id": "scan-file",
"groups": [
"60d704ddb5194714b89be20f"
],
"time_settings": {
"seconds": {
"seconds_amount": 10,
"requests": 5
},
"hour": 20,
"day": 50
},
"id": "66f2a40f318df2831b854f85"
}
]
Copy

Save Api Quota

Save single API quota setting

Auth
Request Body
SaveApiQuotaSettingRequestobject

Request model to save api quota setting

route_idstring
groupsarray[string]
time_settings6 fieldsobject
credits_settingsobject
request_costinteger

Credits cost for single request

total_creditsinteger

Total credits available per month

POST /api/admin/settings/api-quota
curl --request POST \
--url 'https://opswat.developerhub.io/api/admin/settings/api-quota' \
--data '{
"route_id": "{string}",
"groups": [
"{array[string]...}"
],
"time_settings": {
"seconds": {
"seconds_amount": "{integer}",
"requests": "{integer}"
},
"minute": "{integer}",
"hour": "{integer}",
"day": "{integer}",
"week": "{integer}",
"month": "{integer}"
},
"credits_settings": {
"request_cost": "{integer}",
"total_credits": "{integer}"
}
}'
Copy
Responses
200

Successful Response

No response body
400

Bad request

401

Not authorized

422

Validation Error

Response
No response
Copy

Remove Api Quota

Remove single api quota setting

Auth
Path Params
quota_idstring
POST /api/admin/settings/api-quota/{quota_id}/remove
curl --request POST \
--url 'https://opswat.developerhub.io/api/admin/settings/api-quota/{quota_id}/remove'
Copy
Responses
200

Successful Response

No response body
400

Bad request

401

Not authorized

404

Item not found

422

Validation Error

Response
No response
Copy

Get Settings Group

Get a group of admin settings

Auth
Path Params
groupstring

Enum: access,auth,environment

GET /api/admin/settings/{group}
curl --get \
--url 'https://opswat.developerhub.io/api/admin/settings/{group}'
Copy
Responses
200

Successful Response

AdminSettingOutputarray[object]
idstring
namestring
groupstring

An enumeration.

Enum: access,auth,environment

subgroupstring
value
integerinteger
401

Not authorized

422

Validation Error

Response
[
{
"id": "635ec3f6e279f644a5083b65",
"name": "all_reports",
"group": "access",
"subgroup": "groups",
"value": [
"60d70628b5194714b89be271",
"6049f060a86b087d7e916f3f",
"65aee34a680efc464d0a1bc5"
]
},
{
"id": "64c8cd1f562d2384c3466880",
"name": "chat_gpt",
"group": "access",
"subgroup": "groups",
"value": [
"60d70628b5194714b89be271",
"65aee34a680efc464d0a1bc5"
]
}
]
Copy

Save Settings Group

Update group of admin settings

Auth
Path Params
groupstring

Enum: access,auth,environment

Request Body
Dataobject
*object
POST /api/admin/settings/{group}
curl --request POST \
--url 'https://opswat.developerhub.io/api/admin/settings/{group}' \
--data '{}'
Copy
Responses
200

Successful Response

No response body
400

Bad request

401

Not authorized

422

Validation Error

Response
No response
Copy

Get Auth Services

Get all external auth services settings

Auth
GET /api/admin/auth-services
curl --get \
--url 'https://opswat.developerhub.io/api/admin/auth-services'
Copy
Responses
200

Successful Response

No response body
401

Not authorized

Response
No response
Copy

Save Auth Service

Update settings of external auth service

Auth
Request Body
SaveOAuthServicePayloadobject

Request model to save OAuth service

activeboolean
client_idstring
discovery_base_urlstring
discovery_pathstring
home_pagestring
keystring
namestring
orderstring
secretstring
auth_typestring

An enumeration.

Enum: oauth,saml

use_stateboolean
api_base_urlstring
api_typestring

Supported APIs for OAuth providers

Enum: microsoft_graph

should_map_groupsboolean
groups_maparray[object]
local_group_idstring
external_groupsarray[string]
POST /api/admin/auth-services
curl --request POST \
--url 'https://opswat.developerhub.io/api/admin/auth-services' \
--data '{
"active": "{boolean}",
"client_id": "{string}",
"discovery_base_url": "{string}",
"discovery_path": "{string}",
"home_page": "{string}",
"key": "{string}",
"name": "{string}",
"order": "{string}",
"secret": "{string}",
"auth_type": "{string}",
"use_state": "{boolean}",
"api_base_url": "{string}",
"api_type": "{string}",
"should_map_groups": "{boolean}",
"groups_map": [
{
"local_group_id": "{string}",
"external_groups": [
"{array[string]...}"
]
}
]
}'
Copy
Responses
200

Successful Response

No response body
400

Bad request

401

Not authorized

422

Validation Error

Response
No response
Copy

Remove Auth Service

Remove external auth service settings

Auth
Path Params
servicestring
POST /api/admin/auth-services/{service}/remove
curl --request POST \
--url 'https://opswat.developerhub.io/api/admin/auth-services/{service}/remove'
Copy
Responses
200

Successful Response

No response body
401

Not authorized

422

Validation Error

Response
No response
Copy

Get Users

Get list of users.

Use filter parameter to find users by email or username. It will match in any part of a word. If ids parameter is specified, filter is ignored.

Auth
Query String
page

Default: 1

idsarray
filterstring
groupstring
GET /api/admin/users
curl --get \
--url 'https://opswat.developerhub.io/api/admin/users' \
--data page=1 \
--data ids={ids} \
--data filter={filter} \
--data group={group}
Copy
Responses
200

Successful Response

AdminUsersResponseobject

Customize admin response models

items11 fieldsarray[object]
total_countinteger
matched_countinteger
401

Not authorized

422

Validation Error

Response
{
"items": [
{
"id": "66bdc33ec28618a5b322140e",
"account_id": "abc123",
"email": "mr.smith@testemail.com",
"username": "admin",
"groups": [
"6049f060a86b087d7e916f3f"
],
"confirmed": true,
"active": true,
"created_date": "2024-08-15T09:22:04.991000",
"last_login_date": "2024-09-26T11:22:17.829000",
"count_uploads": 34
},
{
"id": "668cdc756b5080fe6a28f35d",
"account_id": "def456",
"email": "test_admin@email.com",
"username": "test_admin",
"groups": [
"60d70628b5194714b89be271",
"6049f060a86b087d7e916f3f",
"65aee34a680efc464d0a1bc5"
],
"confirmed": true,
"active": true,
"created_date": "2024-07-09T06:46:08.354000",
"last_login_date": "2024-07-09T06:46:08.358000",
"count_uploads": 15
}
],
"total_count": 2
}
Copy

Get Users Overview

Download basic users info as csv file

Auth
GET /api/admin/users/import
curl --get \
--url 'https://opswat.developerhub.io/api/admin/users/import'
Copy
Responses
200

Successful Response

No response body
401

Not authorized

Response
No response
Copy

Get User

Get user by user id

Auth
Path Params
user_idstring
GET /api/admin/users/{user_id}
curl --get \
--url 'https://opswat.developerhub.io/api/admin/users/{user_id}'
Copy
Responses
200

Successful Response

AdminUserResponseobject
idstring
account_idstring

Permanent id to use, say, in urls

emailstring
usernamestring

User nickname in system

groupsarray[string]

Groups user is a member of

confirmedboolean

Default: false

activeboolean

Default: false

created_datedate-time
last_login_datedate-time
count_uploadsinteger

Amount of user uploads

Default: 0

is_service_accountboolean

The account is used for automated services

Default: false

400

Bad request

401

Not authorized

404

Item not found

422

Validation Error

Response
{
"id": "668cdc756b5080fe6a28f35d",
"account_id": "1234",
"email": "test_admin@testemail.com",
"username": "test_admin",
"groups": [
"60d70628b5194714b89be271",
"6049f060a86b087d7e916f3f",
"65aee34a680efc464d0a1bc5"
],
"confirmed": true,
"active": true,
"created_date": "2024-07-09T06:46:08.354000",
"last_login_date": "2024-07-09T06:46:08.358000",
"count_uploads": 0
}
Copy

Edit User

Edit user

Auth
Path Params
user_idstring
Request Body
EditUserRequestobject

Request model to edit user

activeboolean
confirmedboolean
groupsarray[string]
is_service_accountboolean
POST /api/admin/users/{user_id}
curl --request POST \
--url 'https://opswat.developerhub.io/api/admin/users/{user_id}' \
--data '{
"active": "{boolean}",
"confirmed": "{boolean}",
"groups": [
"{array[string]...}"
],
"is_service_account": "{boolean}"
}'
Copy
Responses
200

Successful Response

No response body
400

Bad request

401

Not authorized

404

Item not found

422

Validation Error

Response
No response
Copy

Delete User

Delete a user

Auth
Path Params
user_idstring
DELETE /api/admin/users/{user_id}
curl --request DELETE \
--url 'https://opswat.developerhub.io/api/admin/users/{user_id}'
Copy
Responses
200

Successful Response

No response body
401

Not authorized

404

Item not found

422

Validation Error

Response
No response
Copy

Get User Uploads

Get user's uploads

Auth
Path Params
user_idstring
Query String
pageinteger

minimum: 1

Default: 1

page_size

Default: 10

GET /api/admin/users/{user_id}/uploads
curl --get \
--url 'https://opswat.developerhub.io/api/admin/users/{user_id}/uploads' \
--data page=1 \
--data page_size=10
Copy
Responses
200

Successful Response

UserUploadsResponseobject
itemsarray[object]
countinteger
timingarray[object]
methodstring

An enumeration.

Enum: or,and

count_search_paramsinteger
401

Not authorized

422

Validation Error

Response
{
"items": [
{
"id": "c9b9da03-e6a7-4fc3-821d-e767f94fd673",
"file": {
"name": "newfile.txt",
"mime_type": "text/plain",
"short_type": "txt",
"sha256": "18ffd9682c5535a2b2798ca51b13e9490df326f185a83fe6e059f8ff47d92105"
},
"scan_init": {
"id": "66ec5128fa50bda8b6670153"
},
"state": "success",
"verdict": "no_threat",
"tags": [
{
"source": "MEDIA_TYPE",
"sourceIdentifier": "18ffd9682c5535a2b2798ca51b13e9490df326f185a83fe6e059f8ff47d92105",
"isRootTag": true,
"tag": {
"name": "txt",
"synonyms": [],
"descriptions": [],
"verdict": {
"verdict": "NO_THREAT",
"threatLevel": 0.1,
"confidence": 1
}
}
}
],
"date": "2024-09-19T16:28:24.981000",
"updated_date": "09/19/2024, 16:28:31",
"score": 0
}
],
"count": 1,
"timing": [
{
"lookup reports ids": "0:00:00.007331"
},
{
"finish fetching reports": "0:00:00.000034"
},
{
"lookup matches": "0:00:00.001337"
},
{
"total": 0.008702
}
],
"method": "and",
"count_search_params": 0
}
Copy

Get App Config

Get app basic config values

Auth
GET /api/admin/app-config
curl --get \
--url 'https://opswat.developerhub.io/api/admin/app-config'
Copy
Responses
200

Successful Response

Response Get App Config Api Admin App Config Getobject
401

Not authorized

Response
{
"BASE_DIR": "/app/src",
"DEBUG": false,
"APP_TITLE": "MetaDefender Sandbox",
"APP_DESC": "Next-Gen Malware Analysis Platform",
"AD_FREQUENCY": 25,
"API_VERSION": "1.0",
"SCAN_FILES_PER_UPLOAD": 5,
"MAX_UPLOAD_SIZE": 150,
"SHOW_FOOTER": true,
"REPORT_CACHE_TTL_MINUTES": 3,
"USE_HUMAN_FRIENDLY_VERDICTS": true,
"AUTOMATIC_REPORT_FILES_DOWNLOAD": true,
"OFFLINE_MODE": false,
"TRUSTED_NETWORK_MODE": false,
"DB_CONN_URL": "mongodb://db:12345",
"GRAPH_DB_CONN_URL": "http://graphdb:1234",
"REDIS_CONN_URL": "redis://redis",
"ENGINE_SCHEMA": "https",
"ENGINE_HOST": "broker",
"ENGINE_PORT": 23001,
"ENGINE_SECRET": "1234567890abcdefgh",
"DEFAULT_FILE_MANAGER": "s3",
"STORAGE_CLEAN_AGE_IN_HOURS": 24,
"S3_ACCESS_KEY_ID": "ABCD12345",
"S3_SECRET_ACCESS_KEY": "abcdef123456/1a/xy",
"S3_REGION": "eu-central-1",
"S3_BUCKET_NAME": "sandbox-bucket",
"EMAIL_SENDER_ADDRESS": "noreply@sandbox.io",
"USE_SMTP": true,
"SMTP_HOST": "smtp.eu.mailgun.org",
"SMTP_PORT": 587,
"SMTP_USER": "postmaster@mg.sandbox.io",
"SMTP_PASS": "12345abcd-123454-abcde",
"SMTP_SECURITY": "tls",
"TERMLY_ACCOUNT_ID": "abcd-efgh-1234-5678-abcd",
Copy

Get Services Stat

Get statistics of various running services

Auth
GET /api/admin/stat/services
curl --get \
--url 'https://opswat.developerhub.io/api/admin/stat/services'
Copy
Responses
200

Successful Response

ServicesStatResponseobject
queuesobject

Service Stat Response nested model

scanobject
redisobject

Service Stat Response nested model

infoobject
401

Not authorized

Response
{
"queues": {
"scan": {
"max": {
"health": "Sep-30 14:58:05 j_complete=20 j_failed=0 j_retried=0 j_ongoing=1 queued=1"
},
"medium": {
"health": "Sep-30 14:58:08 j_complete=25 j_failed=0 j_retried=0 j_ongoing=2 queued=1"
},
"low": {
"health": "Sep-30 14:58:11 j_complete=30 j_failed=0 j_retried=0 j_ongoing=3 queued=2"
},
"least": {
"health": "Sep-30 14:58:14 j_complete=35 j_failed=0 j_retried=0 j_ongoing=5 queued=3"
}
}
},
"redis": {
"info": {
"redis_version": "6.2.12",
"redis_git_sha1": 0,
"redis_git_dirty": 0,
"redis_build_id": "123456",
"redis_mode": "standalone",
"os": "Linux 5.8.0-63-generic x86_64",
"arch_bits": 64,
"monotonic_clock": "POSIX clock_gettime",
"multiplexing_api": "epoll",
"atomicvar_api": "c11-builtin",
"gcc_version": "12.2.1",
"process_id": 1,
"process_supervised": "no",
"run_id": "1234",
"tcp_port": 6000,
"server_time_usec": 1727708286071849,
"uptime_in_seconds": 255,
Copy

Generate Invite Token

Generate invitation token for user

Auth
Request Body
AdminGenerateInviteLinkResponseobject
groupsarray[string]
POST /api/admin/invite
curl --request POST \
--url 'https://opswat.developerhub.io/api/admin/invite' \
--data '{
"groups": [
"{array[string]...}"
]
}'
Copy
Responses
200

Successful Response

GenerateInviteTokenResponseobject
tokenstring
401

Not authorized

422

Validation Error

Response
{
"token": "abcd1234.efghijkl.0123456789"
}
Copy

Generate External Tokens Secret

Generate secret key to encript external auth tokens

Auth
GET /api/admin/generate-external-tokens-secret
curl --get \
--url 'https://opswat.developerhub.io/api/admin/generate-external-tokens-secret'
Copy
Responses
200

Successful Response

No response body
401

Not authorized

Response
No response
Copy

Get App Errors

Obtain saved errors

Params:

  • type - can be 'server' or 'client'
  • page - (default: 1)
  • filter - match the given string to error message
  • sort - can be 'date', 'count' or 'note'
Auth
Query String
type

Default: client

pageinteger

minimum: 1

Default: 1

filterstring
sortstring

Enum: date,count,note

GET /api/admin/errors
curl --get \
--url 'https://opswat.developerhub.io/api/admin/errors' \
--data type=client \
--data page=1 \
--data filter={filter} \
--data sort={sort}
Copy
Responses
200

Successful Response

AdminAppErrorsResponseobject

Customize admin response models

items15 fieldsarray[object]
total_countinteger
matched_countinteger
400

Bad request

401

Not authorized

422

Validation Error

Response
{
"items": [
{
"id": "1234",
"type": "client",
"message": "TypeError: Cannot read properties of undefined (reading 'detail')",
"url": "/uploads/1234/reports/1234absc/details",
"trace": "TypeError: Cannot read properties of undefined (reading 'detail')\n at c (https://my.filescan.io/main.2b0f2e6d38331320.js:291:629132)\n at async https://my.filescan.io/main.2b0f2e6d38331320.js:291:525370\n at async b (https://my.filescan.io/main.2b0f2e6d38331320.js:291:525254)",
"first_occurance_date": "2024-09-23T17:16:05.625000",
"last_occurance_date": "2024-09-23T17:16:05.625000",
"occurance_count": 1,
"is_signed_in": true,
"report_flow_id": "1234",
"report_id": "1234abcd"
}
],
"total_count": 1
}
Copy

Remove App Errors

Remove saved errors matching filter

Params:

  • type - can be 'server' or 'client'
  • filter - match the given string to error message
Auth
Query String
type

Default: client

filterstring
DELETE /api/admin/errors
curl --request DELETE \
--url 'https://opswat.developerhub.io/api/admin/errors' \
--data type=client \
--data filter={filter}
Copy
Responses
200

Successful Response

AdminAppErrorsRemovedResponseobject
removed_countinteger
400

Bad request

401

Not authorized

422

Validation Error

Response
{
"removed_count": 10
}
Copy

App Error

Remove single saved error

Auth
Path Params
error_idstring
DELETE /api/admin/errors/{error_id}
curl --request DELETE \
--url 'https://opswat.developerhub.io/api/admin/errors/{error_id}'
Copy
Responses
200

Successful Response

No response body
400

Bad request

401

Not authorized

422

Validation Error

Response
No response
Copy

Edit App Error Note

Edit saved error note, to help memorize it's specifics

Auth
Path Params
error_idstring
Request Body
AdminAppErrorNotePayloadobject
notestring
POST /api/admin/errors/{error_id}/note
curl --request POST \
--url 'https://opswat.developerhub.io/api/admin/errors/{error_id}/note' \
--data '{
"note": "{string}"
}'
Copy
Responses
200

Successful Response

No response body
400

Bad request

401

Not authorized

422

Validation Error

Response
No response
Copy

Export Errors

Export application errors in a .csv format

Auth
GET /api/admin/errors/export
curl --get \
--url 'https://opswat.developerhub.io/api/admin/errors/export'
Copy
Responses
200

Successful Response

No response body
401

Not authorized

Response
No response
Copy

Get Generic Logs

Obtain custom logs, usually aimed to trace problems

Params:

  • page - (default: 1)
  • filter - match the given string to the 'key' and the beginning of the 'related_url' and 'note' fields
  • sort - can be 'date' or 'note'
Auth
Query String
pageinteger

minimum: 1

Default: 1

filterstring
sortstring

Enum: date,note

GET /api/admin/logs
curl --get \
--url 'https://opswat.developerhub.io/api/admin/logs' \
--data page=1 \
--data filter={filter} \
--data sort={sort}
Copy
Responses
200

Successful Response

AdminGenericLogsResponseobject

Customize admin response models

items7 fieldsarray[object]
total_countinteger
matched_countinteger
400

Bad request

401

Not authorized

422

Validation Error

Response
{
"items": [
{
"id": "1234",
"key": "1234567",
"key_type": "scan_init_id",
"note": "Debug issue with missing scan file",
"saved_date": "2024-03-21T02:53:06.631000"
}
],
"total_count": 1
}
Copy

Remove Generic Logs

Remove custom logs matching filter

Params:

  • filter - match the given string to the 'key' and the beginning of the 'related_url' and 'note' fields
Auth
Query String
filterstring
DELETE /api/admin/logs
curl --request DELETE \
--url 'https://opswat.developerhub.io/api/admin/logs' \
--data filter={filter}
Copy
Responses
200

Successful Response

AdminGenericLogsRemovedResponseobject
removed_countinteger
400

Bad request

401

Not authorized

422

Validation Error

Response
{
"removed_count": 3
}
Copy

Calculate Retention

Calculate affected number of reports by retention config changes

Auth
Query String
retention_period_maliciousinteger
retention_period_suspiciousinteger
retention_period_informationalinteger
retention_period_unknowninteger
retention_period_benigninteger
GET /api/admin/retention-calculation
curl --get \
--url 'https://opswat.developerhub.io/api/admin/retention-calculation' \
--data retention_period_malicious={retention_period_malicious} \
--data retention_period_suspicious={retention_period_suspicious} \
--data retention_period_informational={retention_period_informational} \
--data retention_period_unknown={retention_period_unknown} \
--data retention_period_benign={retention_period_benign}
Copy
Responses
200

Successful Response

AdminRetentionCalculationResponseobject

Customize admin response models

total_number_of_reportsinteger
affected_number_of_reportsobject
401

Not authorized

422

Validation Error

Response
{
"total_number_of_reports": 10,
"affected_number_of_reports": {}
}
Copy

Get Full Generic Log

Obtain full log record data

Auth
Path Params
log_idstring
GET /api/admin/logs/{log_id}
curl --get \
--url 'https://opswat.developerhub.io/api/admin/logs/{log_id}'
Copy
Responses
200

Successful Response

AdminGenericLogResponseobject
idstring
keystring
key_typestring

Type of key attribute for logging record

Enum: scan_init_id,new_search

notestring

Note describing log specifics

related_urlstring

Related site page, if it exists

saved_datedate-time

Date when logging record was created

400

Bad request

401

Not authorized

404

Item not found

422

Validation Error

Response
{
"id": "1234",
"key": "1234abcd",
"key_type": "scan_init_id",
"data": {
"scan_init": {
"file": {
"name": "test.pdf",
"hash": "0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqr",
"size": 521948,
"is_private": false
},
"state": "scanning",
"created_date": "2024-02-23T00:23:39.381000",
"queue_assigned_date": "2024-02-29T12:06:32.067000",
"queued_date": "2024-03-14T13:02:49.323000",
"scan_started_date": "2024-03-14T13:02:49.430000",
"data": {
"processTime": 10,
"acceptedFiles": [
{
"ID": "01234567-89ab-cdef-ghij-klmnopqrstuv",
"submitName": "test.pdf",
"submitTime": 1708647822984,
"sha256": "0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqr",
"mediaType": {
"string": "application/pdf",
"slash": 11,
"semicolon": 15,
"parameters": {}
},
"priority": 10,
"positionInQueue": 0,
"isSourceFile": true
}
],
"rejectedFiles": [],
"submitWarnings": [],
"submitComposition": {
"mediaTypes": {
"application/pdf": 1
}
},
"acceptedComposition": {
"mediaTypes": {
"application/pdf": 1
}
},
"rejectedComposition": {
"mediaTypes": {}
}
},
"user": "123abc",
"tags": [],
"propagate_tags": true,
"client": {
"ip_addr": "192.168.0.0",
"user_agent": "Python/3.10 aiohttp/3.8.4"
},
"priority": 0,
"skip_whitelisted": false,
"transform_options": {
"rapid_mode": false,
"osint": true,
"extended_osint": true,
"extracted_files_osint": true,
"visualization": true,
"files_download": true,
"resolve_domains": true,
"input_file_yara": true,
"extracted_files_yara": true,
"whois": true,
"ips_meta": true,
"images_ocr": true
},
"default_options_used": true,
"broker_retry_count": 0,
"scans_count": 4,
"use_queued_limits": true,
"id": "12345abcdef"
},
"exception": "Traceback (most recent call last):\n Lorem ipsum",
"file_path": "/app/src/storage/temp/1234/1234abcdef",
"file_exists": false
},
"note": "Debug issue with missing scan file",
"saved_date": "2024-03-14T13:03:10.637000"
}
Copy

Remove Generic Log

Remove single log record

Auth
Path Params
log_idstring
DELETE /api/admin/logs/{log_id}
curl --request DELETE \
--url 'https://opswat.developerhub.io/api/admin/logs/{log_id}'
Copy
Responses
200

Successful Response

No response body
400

Bad request

401

Not authorized

422

Validation Error

Response
No response
Copy

Edit Generic Log Note

Edit log note, to help memorize it's specifics

Auth
Path Params
log_idstring
Request Body
AdminGenericLogNotePayloadobject
notestring
POST /api/admin/logs/{log_id}/note
curl --request POST \
--url 'https://opswat.developerhub.io/api/admin/logs/{log_id}/note' \
--data '{
"note": "{string}"
}'
Copy
Responses
200

Successful Response

No response body
400

Bad request

401

Not authorized

422

Validation Error

Response
No response
Copy

Get Logos List

Get list of all available logos

Auth
GET /api/admin/logos
curl --get \
--url 'https://opswat.developerhub.io/api/admin/logos'
Copy
Responses
200

Successful Response

arrayarray[string]
401

Not authorized

Response
[
"footer.svg",
"header.svg",
"fsio-main-light.svg",
"fsio-main-dark.svg",
"opswat.svg",
"opswat-white.svg",
"fsio-owl-blue-transparent.png",
"fsio-owl-white-transparent.png"
]
Copy

Select Logo

Select new logo

Auth
Request Body
Body_select_logo_api_admin_logos_select_postobject
filefile
namestring
typestring

Type of logo, representing it's usecase

Enum: main,top_menu,footer

themestring

All available themes

Enum: light,dark

POST /api/admin/logos/select
curl --request POST \
--url 'https://opswat.developerhub.io/api/admin/logos/select'
Copy
Responses
200

Successful Response

No response body
401

Not authorized

422

Validation Error

Response
No response
Copy

Get Stat

Get app statistics

Auth
Query String
typesarray

Enum: count_reports,count_verdicts,count_iocs,count_yaras,count_users,count_active_users,count_users_uploads,count_reports_by_extension,count_malicious_reports_by_extension,count_malicious_reports_by_language,count_malicious_reports_by_country,count_malicious_ips,count_malicious_ips_ratio,frequent_tags,frequent_yara_tags,most_interesting,system_info,count_mitre_techniques,frequent_malware_tags

GET /api/admin/stat
curl --get \
--url 'https://opswat.developerhub.io/api/admin/stat' \
--data types={types}
Copy
Responses
200

Successful Response

AppStatResponsearray[object]
namestring
value
booleanboolean
updated_datedate-time
400

Bad request

401

Not authorized

403

Forbidden

422

Validation Error

Response
[
{
"name": "{string}",
"value": "{boolean}",
"updated_date": "{date-time}"
}
]
Copy

Get Daily Stat

Get app statistics, which is saved separately in daily stat collection

Auth
Query String
typesarray

Enum: count_verdicts_by_date,count_reports_by_date,count_uploads_by_date,count_initial_scan_jobs_by_date,count_rescan_jobs_by_date,count_reports_states_by_date,count_reports_extensions_by_date,count_users_signup_by_day,count_users_signin_by_day

date_fromstring
date_tostring
GET /api/admin/stat/daily
curl --get \
--url 'https://opswat.developerhub.io/api/admin/stat/daily' \
--data types={types} \
--data date_from={date_from} \
--data date_to={date_to}
Copy
Responses
200

Successful Response

DateStatResponsearray[object]
datestring
namestring
value
booleanboolean
updated_datedate-time
400

Bad request

401

Not authorized

422

Validation Error

Response
[
{
"date": "{string}",
"name": "{string}",
"value": "{boolean}",
"updated_date": "{date-time}"
}
]
Copy

Get Jobs

Get all available jobs with some additional information

Auth
Query String
categorystring

Enum: statistics,scan,system,reports,patches

GET /api/admin/jobs
curl --get \
--url 'https://opswat.developerhub.io/api/admin/jobs' \
--data category={category}
Copy
Responses
200

Successful Response

ScheduleTaskResponsearray[object]
namestring
categorystring

Job categories

Enum: statistics,scan,system,reports,patches

descriptionstring
config6 fieldsobject

Return job config to user

state6 fieldsobject

Return job state to user

401

Not authorized

422

Validation Error

Response
[
{
"name": "{string}",
"category": "{string}",
"description": "{string}",
"config": {
"name": "{string}",
"trigger": "{string}",
"trigger_config": {},
"runtime_config": {},
"is_active": "{boolean}",
"is_editable": "{boolean}"
},
"state": {
"name": "{string}",
"state": "{string}",
"data": {},
"updated_date": "{date-time}",
"public_log": [
"{array...}"
],
"has_public_log": "{boolean}"
}
}
]
Copy

Get Jobs Config

Get jobs launch and runtime config

Auth
Query String
jobsarray
GET /api/admin/jobs/config
curl --get \
--url 'https://opswat.developerhub.io/api/admin/jobs/config' \
--data jobs={jobs}
Copy
Responses
200

Successful Response

ScheduleTaskConfigarray[object]
namestring
triggerstring

All available trigger types

Enum: once,date,interval,cron,calendarinterval

trigger_configobject
runtime_configobject
is_subprocessboolean

Field to differ real scheduled jobs from custom ones

Default: false

is_activeboolean

If job is available for running

Default: true

is_editableboolean

If user is allowed to edit this settings

Default: true

updated_datedate-time

Last time when schedual was updated by user

update_applied_datedate-time

Last date when updated schedual was applied to job

idstring
401

Not authorized

422

Validation Error

Response
[
{
"name": "{string}",
"trigger": "{string}",
"trigger_config": {},
"runtime_config": {},
"is_subprocess": "{boolean}",
"is_active": "{boolean}",
"is_editable": "{boolean}",
"updated_date": "2025-10-27T13:58:59.520665",
"update_applied_date": "2025-10-27T13:58:59.520673",
"id": "5f85f36d6dfecacc68428a46"
}
]
Copy

Get Jobs Memory Peaks

Get peak jobs memory usage

Auth
GET /api/admin/jobs/memory/peaks
curl --get \
--url 'https://opswat.developerhub.io/api/admin/jobs/memory/peaks'
Copy
Responses
200

Successful Response

ScheduleTaskPeakMemoryResponsearray[object]
namestring
descriptionstring
memorynumber
is_killedboolean
is_unresponsiveboolean
401

Not authorized

Response
[
{
"name": "{string}",
"description": "{string}",
"memory": "{number}",
"is_killed": "{boolean}",
"is_unresponsive": "{boolean}"
}
]
Copy

Get Job Memory Details

Get job memory usage details

Auth
Query String
job_namestring
GET /api/admin/jobs/memory
curl --get \
--url 'https://opswat.developerhub.io/api/admin/jobs/memory' \
--data job_name={job_name}
Copy
Responses
200

Successful Response

ScheduleTaskMemoryResponsearray[object]
namestring
resident_memorynumber
datedate-time
is_killedboolean
401

Not authorized

422

Validation Error

Response
[
{
"name": "{string}",
"resident_memory": "{number}",
"date": "{date-time}",
"is_killed": "{boolean}"
}
]
Copy

Edit Job Config

Edit job config

Auth
Path Params
job_namestring
Request Body
ScheduleTaskConfigEditobject

Job edit input model

triggerstring

All available trigger types

Enum: once,date,interval,cron,calendarinterval

trigger_configobject
runtime_configobject
is_activeboolean
POST /api/admin/jobs/{job_name}
curl --request POST \
--url 'https://opswat.developerhub.io/api/admin/jobs/{job_name}' \
--data '{
"trigger": "{string}",
"trigger_config": {},
"runtime_config": {},
"is_active": "{boolean}"
}'
Copy
Responses
200

Successful Response

No response body
400

Bad request

401

Not authorized

403

Forbidden

404

Item not found

422

Validation Error

Response
No response
Copy

Get Job Log

Get job public log

Auth
Path Params
job_namestring
GET /api/admin/jobs/{job_name}/log
curl --get \
--url 'https://opswat.developerhub.io/api/admin/jobs/{job_name}/log'
Copy
Responses
200

Successful Response

ScheduleTaskLogResponseobject

Job log response

statestring

Name of job state

Enum: succeeded,succeeded_with_errors,failed,running

logarray
401

Not authorized

404

Item not found

422

Validation Error

Response
{
"state": "{string}",
"log": [
"{array...}"
]
}
Copy

Stop All Jobs

Stop all existing jobs

Auth
POST /api/admin/jobs/stop/all
curl --request POST \
--url 'https://opswat.developerhub.io/api/admin/jobs/stop/all'
Copy
Responses
200

Successful Response

No response body
401

Not authorized

Response
No response
Copy

Enable All Jobs

Enable all existing jobs

Auth
POST /api/admin/jobs/enable/all
curl --request POST \
--url 'https://opswat.developerhub.io/api/admin/jobs/enable/all'
Copy
Responses
200

Successful Response

No response body
401

Not authorized

Response
No response
Copy

Get Scan Jobs Health

Get health statistics about scan jobs queues

Auth
Query String
queue_namestring
check_typestring

Enum: long_run,new_run

date_fromstring
GET /api/admin/stat/scan/health
curl --get \
--url 'https://opswat.developerhub.io/api/admin/stat/scan/health' \
--data queue_name={queue_name} \
--data check_type={check_type} \
--data date_from={date_from}
Copy
Responses
200

Successful Response

ScanHealthResponsearray[object]
datedate-time
valueinteger
401

Not authorized

422

Validation Error

Response
[
{
"date": "{date-time}",
"value": "{integer}"
}
]
Copy

Get Scans States

Get statistics on scans progress

Auth
Query String
queue_namestring
statearray

Enum: created,queued,scanning,queued_cancelled,changed_priority,failed,running_timedout

date_fromstring
GET /api/admin/stat/scan/states
curl --get \
--url 'https://opswat.developerhub.io/api/admin/stat/scan/states' \
--data queue_name={queue_name} \
--data state={state} \
--data date_from={date_from}
Copy
Responses
200

Successful Response

ScanStateStatResponsearray[object]
count_createdinteger
count_queuedinteger
count_scanninginteger
count_failedinteger
count_queued_cancelledinteger
count_changed_priorityinteger
count_running_timedoutinteger
datedate-time
400

Bad request

401

Not authorized

422

Validation Error

Response
[
{
"count_created": "{integer}",
"count_queued": "{integer}",
"count_scanning": "{integer}",
"count_failed": "{integer}",
"count_queued_cancelled": "{integer}",
"count_changed_priority": "{integer}",
"count_running_timedout": "{integer}",
"date": "{date-time}"
}
]
Copy

Get User Daily Stat

Get app statistics, which is saved separately in daily stat collection, available for ordinary users

Auth
Query String
typesarray

Enum: count_verdicts_by_date,count_reports_by_date,count_uploads_by_date

date_fromstring
date_tostring
GET /api/users/stat/daily
curl --get \
--url 'https://opswat.developerhub.io/api/users/stat/daily' \
--data types={types} \
--data date_from={date_from} \
--data date_to={date_to}
Copy
Responses
200

Successful Response

DateStatResponsearray[object]
datestring
namestring
value
booleanboolean
updated_datedate-time
400

Bad request

401

Not authorized

422

Validation Error

Response
[
{
"date": "{string}",
"name": "{string}",
"value": "{boolean}",
"updated_date": "{date-time}"
}
]
Copy

Get Emails History

Get history of sending mass emails

Auth
Query String
pageinteger

minimum: 1

Default: 1

GET /api/admin/emails
curl --get \
--url 'https://opswat.developerhub.io/api/admin/emails' \
--data page=1
Copy
Responses
200

Successful Response

EmailHistoryResponseobject
items10 fieldsarray[object]
total_countinteger
401

Not authorized

422

Validation Error

Response
{
"items": [
{
"id": "{string}",
"recipient_type": "{string}",
"recipient_emails": [
"{array[string]...}"
],
"subject": "{string}",
"content": "{string}",
"state": "{string}",
"created_date": "{date-time}",
"completed_date": "2025-10-27T13:58:59.520391",
"count_emails_sent": "{integer}",
"error": {}
}
],
"total_count": "{integer}"
}
Copy

Add Email Queue Item

Add record to emails queue

Auth
Request Body
EmailQueueRequestobject

Email queue input model

recipient_typestring

Recipient types of mass email sending

Enum: all_users,admins,selected_users

recipient_emailsarray[string]
subjectstring
contentstring
POST /api/admin/emails
curl --request POST \
--url 'https://opswat.developerhub.io/api/admin/emails' \
--data '{
"recipient_type": "{string}",
"recipient_emails": [
"{array[string]...}"
],
"subject": "{string}",
"content": "{string}"
}'
Copy
Responses
200

Successful Response

No response body
401

Not authorized

422

Validation Error

Response
No response
Copy

Get Emails Templates

Get predefined email templates

Auth
GET /api/admin/emails/templates
curl --get \
--url 'https://opswat.developerhub.io/api/admin/emails/templates'
Copy
Responses
200

Successful Response

EmailTemplatesResponseobject
terms_change
stringstring
401

Not authorized

Response
{
"terms_change": "{string}"
}
Copy

Get Files

Get list of files obtained from scan sources

Auth
Query String
pageinteger

minimum: 1

Default: 1

configstring
statestring

Enum: queued_for_download,downloading,queued_for_scan,scanning,scan_completed

verdictstring

Enum: unknown,benign,informational,no_threat,suspicious,likely_malicious,malicious

GET /api/admin/scan-sources/files
curl --get \
--url 'https://opswat.developerhub.io/api/admin/scan-sources/files' \
--data page=1 \
--data config={config} \
--data state={state} \
--data verdict={verdict}
Copy
Responses
200

Successful Response

AdminScanSourcesFilesResponseobject

Customize admin response models

items10 fieldsarray[object]
total_countinteger
matched_countinteger
401

Not authorized

422

Validation Error

Response
{
"items": [
{
"config": {
"id": "{string}",
"provider": "{string}",
"name": "{string}",
"source_type": "{string}"
},
"file": {
"name": "{string}",
"hash": "{string}",
"mime_type": "{string}"
},
"state": "{string}",
"verdict": "{string}",
"folder": "{string}",
"id_on_source": "{integer}",
"flow_id": "{string}",
"created_date": "{date-time}",
"created_date_on_source": "{date-time}",
"downloaded_date": "{date-time}"
}
],
"total_count": "{integer}",
"matched_count": "{integer}"
}
Copy

Get Scan Sources Configs

Obtain scan sources config records

Auth
Query String
pageinteger

minimum: 1

Default: 1

GET /api/admin/scan-sources/config
curl --get \
--url 'https://opswat.developerhub.io/api/admin/scan-sources/config' \
--data page=1
Copy
Responses
200

Successful Response

AdminScanSourcesConfigsResponseobject

Customize admin response models

items16 fieldsarray[object]
total_countinteger
401

Not authorized

422

Validation Error

Response
{
"items": [
{
"id": "{string}",
"provider": "{string}",
"name": "{string}",
"source_type": "{string}",
"host": "{string}",
"port": "{string}",
"connection_security": "{string}",
"folders": [
"{array[string]...}"
],
"remove_files_on_source": "{boolean}",
"credentials": {
"login": "{string}"
},
"is_active": "{boolean}",
"source_type_specific": {
"mark_as_seen": "{boolean}",
"append_scanned_flag": "{boolean}",
"first_fetch_mode": "{string}"
},
"files_are_private": "{boolean}",
"description": "{string}",
"propagate_tags": "{boolean}",
"schedule": {
"name": "{string}",
"trigger": "{string}",
"trigger_config": {},
"runtime_config": {},
"is_active": "{boolean}",
"is_editable": "{boolean}"
}
}
],
"total_count": "{integer}"
}
Copy

Edit Scan Source Config

Add or edit scan source config record

Auth
Request Body
EmailSourceConfigRequestobject
idstring
providerstring
namestring
source_typestring

An enumeration.

Enum: email:IMAP,s3

hoststring
portstring
connection_securitystring

An enumeration.

Enum: ssl_tls,start_tls

foldersarray[string]
remove_files_on_sourceboolean
credentials
LoginPasswordCredentialsobject

Standard credentials with login/password

loginstring
passwordstring
is_activeboolean
source_type_specific3 fieldsobject

Options specific to email sources

files_are_privateboolean
descriptionstring
propagate_tagsboolean
schedule4 fieldsobject
POST /api/admin/scan-sources/config
curl --request POST \
--url 'https://opswat.developerhub.io/api/admin/scan-sources/config' \
--data '{
"id": "{string}",
"provider": "{string}",
"name": "{string}",
"source_type": "{string}",
"host": "{string}",
"port": "{string}",
"connection_security": "{string}",
"folders": [
"{array[string]...}"
],
"remove_files_on_source": "{boolean}",
"credentials": {
"login": "{string}",
"password": "{string}"
},
"is_active": "{boolean}",
"source_type_specific": {
"mark_as_seen": "{boolean}",
"append_scanned_flag": "{boolean}",
"first_fetch_mode": "{string}"
},
"files_are_private": "{boolean}",
"description": "{string}",
"propagate_tags": "{boolean}",
"schedule": {
"trigger": "{string}",
"trigger_config": {
"time": "{string}",
"unit": "{string}",
"value": "{integer}"
},
"runtime_config": {
"run_once": "{boolean}"
},
"is_active": "{boolean}"
}
}'
Copy
Responses
200

Successful Response

No response body
400

Bad request

401

Not authorized

404

Item not found

422

Validation Error

Response
No response
Copy

Remove Scan Sources Config

Remove scan sources configs records by id

Note: This will also remove scan source files from the database. The quick overview and verdicts of these files won't be available in the Admin Panel anymore. The scan results will only remain accessible from standard reports search.

Auth
Request Body
ScanSourcesConfigIdsobject
config_ids
stringstring
DELETE /api/admin/scan-sources/config
curl --request DELETE \
--url 'https://opswat.developerhub.io/api/admin/scan-sources/config' \
--data '{
"config_ids": "{string}"
}'
Copy
Responses
200

Successful Response

AdminScanSourcesRemoveResponseobject
remove_countinteger
422

Validation Error

Response
{
"remove_count": "{integer}"
}
Copy

Check Scan Source Connection

Verify if scan source credentials are working ok

Auth
Path Params
config_idstring
GET /api/admin/scan-sources/{config_id}/check-connection
curl --get \
--url 'https://opswat.developerhub.io/api/admin/scan-sources/{config_id}/check-connection'
Copy
Responses
200

Successful Response

arrayarray[string]
401

Not authorized

404

Item not found

422

Validation Error

Response
[
"{array[string]...}"
]
Copy

Get Scan Sources Jobs State

Get state of scan sources handlers

Auth
Query String
pageinteger

minimum: 1

Default: 1

configstring
GET /api/admin/scan-sources/subjobs
curl --get \
--url 'https://opswat.developerhub.io/api/admin/scan-sources/subjobs' \
--data page=1 \
--data config={config}
Copy
Responses
200

Successful Response

AdminScanSourcesSubjobsResponseobject

Customize admin response models

items3 fieldsarray[object]
total_countinteger
matched_countinteger
401

Not authorized

422

Validation Error

Response
{
"items": [
{
"scan_source_config": {
"id": "{string}",
"provider": "{string}",
"name": "{string}",
"source_type": "{string}"
},
"config": {
"name": "{string}",
"trigger": "{string}",
"trigger_config": {},
"runtime_config": {},
"is_active": "{boolean}",
"is_editable": "{boolean}"
},
"state": {
"name": "{string}",
"state": "{string}",
"data": {},
"updated_date": "{date-time}",
"public_log": [
"{array...}"
],
"has_public_log": "{boolean}"
}
}
],
"total_count": "{integer}",
"matched_count": "{integer}"
}
Copy

Get Full Scan Source Subjob State

Obtain full scan source job record data

Auth
Path Params
job_idstring
GET /api/admin/scan-sources/subjobs/{job_id}
curl --get \
--url 'https://opswat.developerhub.io/api/admin/scan-sources/subjobs/{job_id}'
Copy
Responses
200

Successful Response

AdminScanSourceSubjobResponseobject

Customize admin response models

scan_source_config4 fieldsobject
config6 fieldsobject

Return job config to user

state6 fieldsobject

Return job state to user

400

Bad request

401

Not authorized

404

Item not found

422

Validation Error

Response
{
"scan_source_config": {
"id": "{string}",
"provider": "{string}",
"name": "{string}",
"source_type": "{string}"
},
"config": {
"name": "{string}",
"trigger": "{string}",
"trigger_config": {},
"runtime_config": {},
"is_active": "{boolean}",
"is_editable": "{boolean}"
},
"state": {
"name": "{string}",
"state": "{string}",
"data": {},
"updated_date": "{date-time}",
"public_log": [
"{array...}"
],
"has_public_log": "{boolean}"
}
}
Copy

Audit-logger

Audit Logger

Get Audit Logs

Obtain saved audit logs

Auth
Query String
logger_typestring

Enum: admin,auth

log_level_filter

Default: all

pageinteger

minimum: 1

Default: 1

filterstring
GET /api/admin/audit-logs
curl --get \
--url 'https://opswat.developerhub.io/api/admin/audit-logs' \
--data logger_type={logger_type} \
--data log_level_filter=all \
--data page=1 \
--data filter={filter}
Copy
Responses
200

Successful Response

AuditLogsResponseobject

Response model for getting audit logs

itemsarray[object]
total_countinteger
matched_countinteger
400

Bad request

401

Not authorized

422

Validation Error

Response
{
"items": [
{}
],
"total_count": "{integer}",
"matched_count": "{integer}"
}
Copy

Get prevalence of IOCs

Get prevalences of IOCs

Auth
Query String
exclude_report_idsarray
Request Body
IOCsPrevalenceSearchParamsobject

Params for IOCs' prevalence search

domainarray[string]

Default: []

iparray[string]

Default: []

urlarray[string]

Default: []

uuidarray[string]

Default: []

emailarray[string]

Default: []

registry_patharray[string]

Default: []

revision_save_idarray[string]

Default: []

sha1array[string]

Default: []

sha256array[string]

Default: []

sha512array[string]

Default: []

md5array[string]

Default: []

imphasharray[string]

Default: []

ssdeeparray[string]

Default: []

authentihasharray[string]

Default: []

fuzzyfsiohasharray[string]

Default: []

unc_patharray[string]

Default: []

daysinteger

Default: -1

POST /api/threatintel/get-prevalence
curl --request POST \
--url 'https://opswat.developerhub.io/api/threatintel/get-prevalence' \
--data exclude_report_ids={exclude_report_ids} \
--data '{
"domain": [
"{array[string]...}"
],
"ip": [
"{array[string]...}"
],
"url": [
"{array[string]...}"
],
"uuid": [
"{array[string]...}"
],
"email": [
"{array[string]...}"
],
"registry_path": [
"{array[string]...}"
],
"revision_save_id": [
"{array[string]...}"
],
"sha1": [
"{array[string]...}"
],
"sha256": [
"{array[string]...}"
],
"sha512": [
"{array[string]...}"
],
"md5": [
"{array[string]...}"
],
"imphash": [
"{array[string]...}"
],
"ssdeep": [
"{array[string]...}"
],
"authentihash": [
"{array[string]...}"
],
"fuzzyfsiohash": [
"{array[string]...}"
],
"unc_path": [
"{array[string]...}"
],
"days": "{integer}"
}'
Copy
Responses
200

Successful Response

Response Get Ioc Prevalences Api Threatintel Get Prevalence Postobject
*object
400

Bad request

401

Not authorized

422

Validation Error

Response
{
"ip": {
"13.107.246.44": {
"counts": {
"malicious": 2,
"no_threat": 1,
"benign": 1
},
"reports": [
{
"flow_id": "679cc1ff68da9e0fca82cca3",
"report_id": "833700c1-86ed-4bc6-bef5-dcda16e7ed11",
"verdict": "malicious",
"created_date": "2025-01-31T12:28:49.689000"
},
{
"flow_id": "6798a1b69d385c630bd11594",
"report_id": "a18cfa47-2a60-4457-9c86-2d7f58565b0d",
"verdict": "no_threat",
"created_date": "2025-01-28T09:21:58.715000"
},
{
"flow_id": "6798b02209ca8ddccaa4767f",
"report_id": "b05cf8e2-66a7-4827-8b9e-5443892c09e9",
"verdict": "benign",
"created_date": "2025-01-28T10:23:32.711000"
},
{
"flow_id": "679cc24f68da9e0fca82ccbe",
"report_id": "fb50c1ae-0fd8-4b93-831f-f78b349f9a4e",
"verdict": "malicious",
"created_date": "2025-01-31T12:30:10.982000"
}
],
"verdict": "malicious"
}
},
"registry_path": {
"Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Comdlg32": {
"counts": {
"malicious": 2
},
"reports": [
{
"flow_id": "679cc1ff68da9e0fca82cca3",
"report_id": "833700c1-86ed-4bc6-bef5-dcda16e7ed11",
"verdict": "malicious",
"created_date": "2025-01-31T12:28:49.689000"
},
{
"flow_id": "679cc24f68da9e0fca82ccbe",
"report_id": "fb50c1ae-0fd8-4b93-831f-f78b349f9a4e",
"verdict": "malicious",
"created_date": "2025-01-31T12:30:10.982000"
}
],
"verdict": "malicious"
}
},
"url": {
"http://SecurityXploded.com/remotedll.php": {
"counts": {
"malicious": 2
},
"reports": [
{
"flow_id": "679cc1ff68da9e0fca82cca3",
"report_id": "833700c1-86ed-4bc6-bef5-dcda16e7ed11",
"verdict": "malicious",
"created_date": "2025-01-31T12:28:49.689000"
},
{
"flow_id": "679cc24f68da9e0fca82ccbe",
"report_id": "fb50c1ae-0fd8-4b93-831f-f78b349f9a4e",
"verdict": "malicious",
"created_date": "2025-01-31T12:30:10.982000"
}
],
"verdict": "malicious"
}
}
}
Copy

Modify verdict for a given report

Modify verdict for a given report

Auth
Request Body
ModifyVerdictPayloadobject

New verdict and report id

verdictstring

An enumeration.

Enum: unknown,benign,informational,no_threat,suspicious,likely_malicious,malicious

report_idstring
POST /api/threatintel/modify-verdict
curl --request POST \
--url 'https://opswat.developerhub.io/api/threatintel/modify-verdict' \
--data '{
"verdict": "{string}",
"report_id": "{string}"
}'
Copy
Responses
200

Successful Response

No response body
401

Not authorized

404

Item not found

422

Validation Error

Response
No response
Copy

Get reports with the same special hashes (fuzzyfsio, imphash, ssdeep, authentihash)

Get reports with the same special hashes

Auth
Query String
exclude_report_idsarray
imphashstring
ssdeepstring
fuzzyfsiohashstring
authentihashstring
daysinteger

Default: -1

GET /api/threatintel/get-similars
curl --get \
--url 'https://opswat.developerhub.io/api/threatintel/get-similars' \
--data exclude_report_ids={exclude_report_ids} \
--data imphash={imphash} \
--data ssdeep={ssdeep} \
--data fuzzyfsiohash={fuzzyfsiohash} \
--data authentihash={authentihash} \
--data days=-1
Copy
Responses
200

Successful Response

Response Get Similar Reports Api Threatintel Get Similars Getobject
*object
400

Bad request

401

Not authorized

422

Validation Error

Response
{
"fuzzyfsiohash": {
"a2fb1904b8646448f703538db539925908559ed6762da77703833bd3621ff0c3": {
"counts": {
"malicious": 2
},
"reports": [
{
"flow_id": "679cc1ff68da9e0fca82cca3",
"report_id": "833700c1-86ed-4bc6-bef5-dcda16e7ed11",
"verdict": "malicious",
"file": {
"name": "RemoteDll32.clean.exe",
"sha256": "4bc95fdcf1fd2b2cfddf7312c570fb9c109b8b01e760be99797833741798fbea"
},
"created_date": "2025-01-31T12:28:49.689000"
},
{
"flow_id": "679cc24f68da9e0fca82ccbe",
"report_id": "fb50c1ae-0fd8-4b93-831f-f78b349f9a4e",
"verdict": "malicious",
"file": {
"name": "RemoteDll32.modded_2.exe",
"sha256": "90d6d2c1cbe82edc795ca8b2f09f8018902211b15e40a5b46a3673c2bb1db4de"
},
"created_date": "2025-01-31T12:30:10.982000"
}
],
"verdict": "malicious"
}
},
"imphash": {
"f446e030cec8cd0ecafb11faaaaf5acf": {
"counts": {
"malicious": 2
},
"reports": [
{
"flow_id": "679cc1ff68da9e0fca82cca3",
"report_id": "833700c1-86ed-4bc6-bef5-dcda16e7ed11",
"verdict": "malicious",
"file": {
"name": "RemoteDll32.clean.exe",
"sha256": "4bc95fdcf1fd2b2cfddf7312c570fb9c109b8b01e760be99797833741798fbea"
},
"created_date": "2025-01-31T12:28:49.689000"
},
{
"flow_id": "679cc24f68da9e0fca82ccbe",
"report_id": "fb50c1ae-0fd8-4b93-831f-f78b349f9a4e",
"verdict": "malicious",
"file": {
"name": "RemoteDll32.modded_2.exe",
"sha256": "90d6d2c1cbe82edc795ca8b2f09f8018902211b15e40a5b46a3673c2bb1db4de"
},
"created_date": "2025-01-31T12:30:10.982000"
}
],
"verdict": "malicious"
}
}
}
Copy

Get feeds with more data

Get advanced feed containing all IOCs and signatures compared to the basic feed

Auth
GET /api/threatintel/feed
curl --get \
--url 'https://opswat.developerhub.io/api/threatintel/feed'
Copy
Responses
200

Successful Response

No response body
401

Not authorized

Response
No response
Copy

Download iocs of reports in csv format

Download iocs of all reports

Auth
Headers
pageinteger

minimum: 0

Default: 0

pageSizeinteger

minimum: 0

Default: 0

Query String
unique_filesboolean

Default: false

method

Default: and

derived_filesboolean

Default: true

no_date_limitboolean

Default: false

querystring
verdictstring
source_typestring

Enum: url,url-to-file,file

filetypestring

Enum: ace,apk,bat,64bits,bmp,csv,doc,docm,docx,dot,dotm,dotx,elf,eml,gif,hta,htm,html,iso,java,java-bytecode,javascript,jpg,lnk,mbox,mhtml,msg,msi,mso,odp,ods,odt,odg,odf,odc,odb,odi,ole,one,pdf,pedll,peexe,png,pot,potm,potx,powershell,ppt,pptm,pptx,ps,pub,rar,rfc822,rtf,svg,txt,vbs,wmv,wsf,xlm,xls,xlsb,xlsm,xlsx,xlt,xltm,xltx,xml,xsl,zip,7zip,exe,mail,ms-office,script

tagstring
tagsstring
date_fromstring
date_tostring
rate_frominteger
rate_tointeger
uuidstring
emailstring
registry_pathstring
revision_save_idstring
yara_rulestring
retry_countinteger
scan_init_idstring
report_idstring
countrystring
filenamestring
sha1string
sha256string
sha512string
md5string
domainstring
ipstring
urlstring
media_typestring
imphashstring
ssdeepstring
authentihashstring
fuzzyfsiohashstring
signal_groupsstring
mitre_techniquesstring
verdict_groupsstring
main_task_state

Default: success

excludestring
GET /api/threatintel/download-iocs
curl --get \
--url 'https://opswat.developerhub.io/api/threatintel/download-iocs' \
--header 'page: {page}' \
--header 'pageSize: {pageSize}' \
--data unique_files={unique_files} \
--data method=and \
--data derived_files=true \
--data no_date_limit={no_date_limit} \
--data query={query} \
--data verdict={verdict} \
--data source_type={source_type} \
--data filetype={filetype} \
--data tag={tag} \
--data tags={tags} \
--data date_from={date_from} \
--data date_to={date_to} \
--data rate_from={rate_from} \
--data rate_to={rate_to} \
--data uuid={uuid} \
--data email={email} \
--data registry_path={registry_path} \
--data revision_save_id={revision_save_id} \
--data yara_rule={yara_rule} \
--data retry_count={retry_count} \
--data scan_init_id={scan_init_id} \
--data report_id={report_id} \
--data country={country} \
--data filename={filename} \
--data sha1={sha1} \
--data sha256={sha256} \
--data sha512={sha512} \
--data md5={md5} \
--data domain={domain} \
--data ip={ip} \
--data url={url} \
--data media_type={media_type} \
--data imphash={imphash} \
--data ssdeep={ssdeep} \
--data authentihash={authentihash} \
--data fuzzyfsiohash={fuzzyfsiohash} \
--data signal_groups={signal_groups} \
--data mitre_techniques={mitre_techniques} \
--data verdict_groups={verdict_groups} \
--data main_task_state=success \
--data exclude={exclude}
Copy
Responses
200

Successful Response

No response body
401

Not authorized

422

Validation Error

Response
IOC_type, IOC_Value, report_SHA256, report_URL
urls, http://yahoo.com.au, adcab2f65197289526992e593243d1d3edc73516c94fa2e64fa81f1c48478c47, http://localhost:4200/uploads/672a09b750270725e3077e2b/reports/40a875a4-ed9e-4fc4-b157-1b332f61605f/ioc
domains, yahoo.com.au, adcab2f65197289526992e593243d1d3edc73516c94fa2e64fa81f1c48478c47, http://localhost:4200/uploads/672a09b750270725e3077e2b/reports/40a875a4-ed9e-4fc4-b157-1b332f61605f/ioc
emails, jadoxa@yahoo.com.au, adcab2f65197289526992e593243d1d3edc73516c94fa2e64fa81f1c48478c47, http://localhost:4200/uploads/672a09b750270725e3077e2b/reports/40a875a4-ed9e-4fc4-b157-1b332f61605f/ioc
md5, 63fad30e8b00c42bf48d38dd11d3e48a, adcab2f65197289526992e593243d1d3edc73516c94fa2e64fa81f1c48478c47, http://localhost:4200/uploads/672a09b750270725e3077e2b/reports/40a875a4-ed9e-4fc4-b157-1b332f61605f/ioc
sha1, 5a34ed5cf2d9d3d332717b210c12d4232dfe443f, adcab2f65197289526992e593243d1d3edc73516c94fa2e64fa81f1c48478c47, http://localhost:4200/uploads/672a09b750270725e3077e2b/reports/40a875a4-ed9e-4fc4-b157-1b332f61605f/ioc
sha256, 5df6994146d086b0cff5ff3e6fd15811fb913a46acffb3a182a66ff09ffd75cf, adcab2f65197289526992e593243d1d3edc73516c94fa2e64fa81f1c48478c47, http://localhost:4200/uploads/672a09b750270725e3077e2b/reports/40a875a4-ed9e-4fc4-b157-1b332f61605f/ioc
sha512, 2e5692bfc4eb2c8bd3a5c9441103d5dd63245e52d15465e441eeea43a263b38a4197bef474adf055627c526ed279f0399904240c17ffc3188db6b8256cf0b4f2, adcab2f65197289526992e593243d1d3edc73516c94fa2e64fa81f1c48478c47, http://localhost:4200/uploads/672a09b750270725e3077e2b/reports/40a875a4-ed9e-4fc4-b157-1b332f61605f/ioc
Copy

Get similar reports based on the SHA256 hash, tags, threshold and verdict

Get similar reports

Auth
Query String
hashstring
min_similarityinteger

maximum: 100

minimum: 0

Default: 0

verdictstring

Enum: unknown,benign,informational,no_threat,suspicious,likely_malicious,malicious

tagsarray
GET /api/similarity-search/similarity
curl --get \
--url 'https://opswat.developerhub.io/api/similarity-search/similarity' \
--data hash={hash} \
--data min_similarity={min_similarity} \
--data verdict={verdict} \
--data tags={tags}
Copy
Responses
200

Successful Response

SimilaritiesResponseobject
notestring

Optinal notification about demo data

most_similar4 fieldsarray[object]

Default: []

most_recent4 fieldsarray[object]

Default: []

400

Bad request

401

Not authorized

422

Validation Error

Response
{
"most_similar": [
{
"sha256": "4bc95fdcf1fd2b2cfddf7312c570fb9c109b8b01e760be99797833741798fbea",
"overall_similarity": 1,
"similarities": {
"extracted": 1,
"threat_indicators": 1,
"sections": 0.9999,
"mitre_techniques": 1,
"binary_metadata": 1,
"characteristic": 1,
"disassembly_sections": 1,
"dotnet_info": 1,
"header_info": 1,
"imports": 1,
"resources": 1,
"rich_header_compiler_ids": 1,
"strings": 1,
"version_info": 1
},
"details": {
"start_date": "2025-01-31T09:42:38.174000+00:00",
"file_size": 3590144,
"tags": [
"peexe",
"txt",
"evasive",
"keylogger",
"hacktool",
"explorer",
"fingerprint",
"lolbin",
"remote",
"microsoft_visual_cc"
],
"verdict": "malicious",
"is_dotnet": 0,
"architecture": "32 Bits binary",
"entropy": 6.697518394880351
}
}
],
"most_recent": [
{
"sha256": "4bc95fdcf1fd2b2cfddf7312c570fb9c109b8b01e760be99797833741798fbea",
"overall_similarity": 1,
"similarities": {
"extracted": 1,
"threat_indicators": 1,
"sections": 0.9999,
"mitre_techniques": 1,
"binary_metadata": 1,
"characteristic": 1,
"disassembly_sections": 1,
"dotnet_info": 1,
"header_info": 1,
"imports": 1,
"resources": 1,
"rich_header_compiler_ids": 1,
"strings": 1,
"version_info": 1
},
"details": {
"start_date": "2025-01-31T09:42:38.174000+00:00",
"file_size": 3590144,
"tags": [
"peexe",
"txt",
"evasive",
"keylogger",
"hacktool",
"explorer",
"fingerprint",
"lolbin",
"remote",
"microsoft_visual_cc"
],
"verdict": "malicious",
"is_dotnet": 0,
"architecture": "32 Bits binary",
"entropy": 6.697518394880351
}
}
]
}
Copy

Backend

Backend wrapper

Get ReputationDeprecated

Wrapper for reputation api

Auth
Query String
sha256string

SHA256 digest as found in the response of submit or extracted resource in the report.

hashesarray

Array of one or more hashes

GET /api/backend/reputation
curl --get \
--url 'https://opswat.developerhub.io/api/backend/reputation' \
--data sha256={sha256} \
--data hashes={hashes}
Copy
Responses
200

Successful Response

ReputationResponseobject

Response model for get_reputation()

processTimeinteger
reputationResults1 fieldobject

Model for reputationResults field

422

Validation Error

500

Internal server error

Response
{
"processTime": "{integer}",
"reputationResults": {
"INTERNAL": {
"processTime": "{integer}",
"whitelistedHashes": [
"{array...}"
],
"invalidHashes": [
"{array...}"
]
}
}
}
Copy

Get Reputation Hash

Get the reputation for one given hash

Auth
Query String
sha256string
GET /api/reputation/hash
curl --get \
--url 'https://opswat.developerhub.io/api/reputation/hash' \
--data sha256={sha256}
Copy
Responses
200

Successful Response

ReputationResultHashobject
sha256string
overall_verdictstring

An enumeration.

Enum: unknown,benign,informational,no_threat,suspicious,likely_malicious,malicious

fuzzyhashobject

Fuzzy hash verdict

hashstring
verdictstring

An enumeration.

Enum: unknown,benign,informational,no_threat,suspicious,likely_malicious,malicious

mdcloud3 fieldsobject

Result of one multiscan

filescan_reports4 fieldsarray[object]
400

Bad request

401

Not authorized

415

Unsupported media type

422

Validation Error

Response
{
"sha256": "cd75828da7199ec27875ebb93c9bb848fe5c58baea4de185af37dc3731cb9ffc",
"overall_verdict": "malicious",
"fuzzyhash": {
"hash": "dfccbab156d3685c12ce4c9250850ef20b09f4f9c16a343cbee8b7314ea314a0",
"verdict": "unknown"
},
"mdcloud": {
"total_av_engines": 19,
"detected_av_engines": 0,
"scan_time": "2023-02-01T19:01:17.707000"
},
"filescan_reports": [
{
"verdict": "malicious",
"report_date": "01/28/2025, 10:24:45",
"report_id": "d2e899de-eb9a-4135-9f4f-80cc692a6c53",
"flow_id": "6798b06a09ca8ddccaa476ca"
}
]
}
Copy

Get Reputation Hash Bulk

Get the reputation for more hashes

Auth
Request Body
arrayarray[string]
POST /api/reputation/hash
curl --request POST \
--url 'https://opswat.developerhub.io/api/reputation/hash' \
--data '[
"{array[string]...}"
]'
Copy
Responses
200

Successful Response

ReputationResultHasharray[object]
sha256string
overall_verdictstring

An enumeration.

Enum: unknown,benign,informational,no_threat,suspicious,likely_malicious,malicious

fuzzyhashobject

Fuzzy hash verdict

hashstring
verdictstring

An enumeration.

Enum: unknown,benign,informational,no_threat,suspicious,likely_malicious,malicious

mdcloud3 fieldsobject

Result of one multiscan

filescan_reports4 fieldsarray[object]
400

Bad request

401

Not authorized

415

Unsupported media type

422

Validation Error

Response
[
{
"sha256": "a21e7b25ffe1aa4c4b30d538f71dac5fabfeda74740cb0814569fbcc1e8d9b82",
"overall_verdict": "malicious",
"fuzzyhash": {
"verdict": "unknown"
},
"mdcloud": {
"total_av_engines": 19,
"detected_av_engines": 3,
"scan_time": "2024-09-27T15:44:17.884000"
},
"filescan_reports": [
{
"verdict": "malicious",
"report_date": "01/30/2025, 08:24:49",
"report_id": "cc034b35-24c0-4b01-a75d-84a9c7630001",
"flow_id": "678f168e20b60a22331c0001"
}
]
},
{
"sha256": "cd75828da7199ec27875ebb93c9bb848fe5c58baea4de185af37dc3731cb9ffc",
"overall_verdict": "malicious",
"fuzzyhash": {
"hash": "dfccbab156d3685c12ce4c9250850ef20b09f4f9c16a343cbee8b7314ea314a0",
"verdict": "unknown"
},
"mdcloud": {
"total_av_engines": 19,
"detected_av_engines": 0,
"scan_time": "2023-02-01T19:01:17.707000"
},
"filescan_reports": [
{
"verdict": "malicious",
"report_date": "01/28/2025, 10:24:45",
"report_id": "d2e899de-eb9a-4135-9f4f-80cc692a6c53",
"flow_id": "6798b06a09ca8ddccaa476ca"
}
]
}
]
Copy

Get Reputation Ioc

Get the reputation for one given IOC

Auth
Path Params
ioc_typestring

Enum: domain,ip,url

Query String
ioc_valuestring
GET /api/reputation/{ioc_type}
curl --get \
--url 'https://opswat.developerhub.io/api/reputation/{ioc_type}' \
--data ioc_value={ioc_value}
Copy
Responses
200

Successful Response

ReputationResultIocobject
ioc_typestring
ioc_valuestring
overall_verdictstring

An enumeration.

Enum: unknown,benign,informational,no_threat,suspicious,likely_malicious,malicious

mdcloudobject

Result of one lookup for IP, domain or URL

scan_timedate-time
detectedinteger
communityobject
vote_maliciousinteger
vote_benigninteger
filescan_reports4 fieldsarray[object]
400

Bad request

401

Not authorized

415

Unsupported media type

422

Validation Error

Response
{
"ioc_type": "url",
"ioc_value": "https://netflix.com",
"overall_verdict": "malicious",
"mdcloud": {
"scan_time": "2025-02-10T13:29:04.035000",
"detected": 0
},
"community": {
"vote_malicious": 0,
"vote_benign": 0
},
"filescan_reports": [
{
"verdict": "malicious",
"report_date": "01/28/2025, 10:24:45",
"report_id": "d2e899de-eb9a-4135-9f4f-80cc692a6c53",
"flow_id": "6798b06a09ca8ddccaa476ca"
},
{
"verdict": "malicious",
"report_date": "01/28/2025, 10:24:45",
"report_id": "d2e899de-eb9a-4135-9f4f-80cc692a6c53",
"flow_id": "6798b06a09ca8ddccaa476ca"
}
]
}
Copy

Get Reputation Ioc Bulk

Get the reputation for more IOCs

Auth
Path Params
ioc_typestring

Enum: domain,ip,url

Request Body
arrayarray[string]
POST /api/reputation/{ioc_type}
curl --request POST \
--url 'https://opswat.developerhub.io/api/reputation/{ioc_type}' \
--data '[
"{array[string]...}"
]'
Copy
Responses
200

Successful Response

ReputationResultIocarray[object]
ioc_typestring
ioc_valuestring
overall_verdictstring

An enumeration.

Enum: unknown,benign,informational,no_threat,suspicious,likely_malicious,malicious

mdcloudobject

Result of one lookup for IP, domain or URL

scan_timedate-time
detectedinteger
communityobject
vote_maliciousinteger
vote_benigninteger
filescan_reports4 fieldsarray[object]
400

Bad request

401

Not authorized

415

Unsupported media type

422

Validation Error

Response
[
{
"ioc_type": "url",
"ioc_value": "https://netflix.com",
"overall_verdict": "malicious",
"mdcloud": {
"scan_time": "2025-02-10T13:29:04.035000",
"detected": 0
},
"community": {
"vote_malicious": 0,
"vote_benign": 0
},
"filescan_reports": [
{
"verdict": "malicious",
"report_date": "01/28/2025, 10:24:45",
"report_id": "d2e899de-eb9a-4135-9f4f-80cc692a6c53",
"flow_id": "6798b06a09ca8ddccaa476ca"
},
{
"verdict": "malicious",
"report_date": "01/28/2025, 10:24:45",
"report_id": "d2e899de-eb9a-4135-9f4f-80cc692a6c53",
"flow_id": "6798b06a09ca8ddccaa476ca"
}
]
},
{
"ioc_type": "url",
"ioc_value": "https://linkedin.com",
"overall_verdict": "no_threat",
"mdcloud": {
"scan_time": "2025-02-10T13:36:56.704000",
"detected": 0
},
"community": {
"vote_malicious": 0,
"vote_benign": 0
},
"filescan_reports": [
{
"verdict": "no_threat",
"report_date": "01/28/2025, 09:21:58",
"report_id": "a18cfa47-2a60-4457-9c86-2d7f58565b0d",
"flow_id": "6798a1b69d385c630bd11594"
},
{
"verdict": "no_threat",
"report_date": "01/28/2025, 09:21:58",
"report_id": "a18cfa47-2a60-4457-9c86-2d7f58565b0d",
"flow_id": "6798a1b69d385c630bd11594"
}
]
}
]
Copy

Get API Docs

Return API docs UI

Auth
GET /api/docs
curl --get \
--url 'https://opswat.developerhub.io/api/docs'
Copy
Responses
200

Successful Response

Response Get Api Docs Api Docs Getstring
Response
{
"schema": "{string}"
}
Copy

Get OpenAPI Endpoint

Return API json data to be used by docs UI

Auth
GET /openapi.json
curl --get \
--url 'https://opswat.developerhub.io/openapi.json'
Copy
Responses
200

Successful Response

GetOpenApiJsonResponseobject

Response model for get_open_api_endpoint()

openapistring
infoobject
titlestring
versionstring
pathsobject
*object
components2 fieldsobject
tagsarray[object]
namestring
descriptionstring
Response
{
"openapi": "3.1.0",
"info": {
"title": "OPSWAT Filescan",
"version": "1.0"
},
"paths": {
"/api/scan/file": {
"post": {
"tags": [
"scan"
],
"summary": "Scan File",
"description": "Perform scan of uploaded file",
"operationId": "scan_file_api_scan_file_post",
"requestBody": {
"content": {
"multipart/form-data": {
"schema": {
"allOf": [
{
"properties": {
"file": {
"type": "string",
"format": "binary",
"title": "File"
},
"description": {
"type": "string",
"title": "Description",
"description": "Uploaded file/url description"
},
"tags": {
"type": "string",
"title": "Tags",
"description": "Tags array to propagate"
Copy

Get API Doc Styles

Return styles for api docs

Auth
GET /api/docs/styles
curl --get \
--url 'https://opswat.developerhub.io/api/docs/styles'
Copy
Responses
200

Successful Response

Response Get Api Docs Styles Api Docs Styles Getstring
Response
{
"schema": "{string}"
}
Copy

Get Sitemap

Get sitemap xml

Auth
GET /api/docs/sitemap
curl --get \
--url 'https://opswat.developerhub.io/api/docs/sitemap'
Copy
Responses
200

Successful Response

No response body
Response
No response
Copy

Ocm

OPSWAT Central Management (OCM)

Get Integration State

Get current state of OCM integration

Auth
GET /api/ocm/state
curl --get \
--url 'https://opswat.developerhub.io/api/ocm/state'
Copy
Responses
200

Successful Response

OcmIntegrationStateResponseobject
server_urlstring

Base url of OCM server

registration_codestring

Code used for obtaining API key for interaction with OCM

statestring

An enumeration.

Enum: not_enrolled,enrolled,unenrolled

disconnectedboolean

If we failed to establish connection with OCM

last_connection_datedate-time

Last time connection was done to OCM

last_connection_attempt_datedate-time

Last time we tried to edtablish connection with OCM

401

Not authorized

404

Item not found

Response
{
"server_url": "{string}",
"registration_code": "{string}",
"state": "{string}",
"disconnected": "{boolean}",
"last_connection_date": "2025-10-27T13:58:59.525383",
"last_connection_attempt_date": "2025-10-27T13:58:59.525390"
}
Copy

Enroll

Register product at OPSWAT Central Management

Auth
Request Body
OcmEnrollPayloadobject
server_urlstring

Base URL of OCM server

registration_codestring

Code to reveice API key to interact with OCM

POST /api/ocm/enroll
curl --request POST \
--url 'https://opswat.developerhub.io/api/ocm/enroll' \
--data '{
"server_url": "{string}",
"registration_code": "{string}"
}'
Copy
Responses
200

Successful Response

No response body
400

Bad request

401

Not authorized

422

Validation Error

Response
No response
Copy

Unenroll

Unregister product at OPSWAT Central Management

Auth
Request Body
OcmUnenrollPayloadobject
forceboolean

Clear local enrollment data

Default: false

POST /api/ocm/unenroll
curl --request POST \
--url 'https://opswat.developerhub.io/api/ocm/unenroll' \
--data '{
"force": "{boolean}"
}'
Copy
Responses
200

Successful Response

No response body
401

Not authorized

422

Validation Error

Response
No response
Copy

Get Ai Summary

Request AI summary for report

Auth
Query String
report_idstring
GET /api/ai/report/summary
curl --get \
--url 'https://opswat.developerhub.io/api/ai/report/summary' \
--data report_id={report_id}
Copy
Responses
200

Successful Response

AiReportDataobject

AI data, provided on some request to analyze some report data

source_idstring

Id of analyzed portion of report. Usually - the dataUUID property

data_typestring

Type of data we request from AI for report

Enum: summary,decompiled_disassembly_section

data

Data provided by AI. Not all data, but only portion of it that we need

AiReportDecompiledDataobject

Parsed data of decompiled disassembly section

functionsarray[string]

Extracted names of decompiled functions

summarystring

Generic summary on all functions

contentstring

Either only all functions with comments, or whole response if we failed to parse it

created_datedate-time

Date when AI data was received

400

Bad request

404

Item not found

422

Validation Error

Response
{
"data_type": "summary",
"data": "- Data Manipulation: The malware has the ability to change files and their attributes, which can lead to the concealment of its activities or the modification of legitimate files.",
"created_date": "2024-09-19 15:26:52.842000"
}
Copy

Decompile Disassembly Section

Request AI summary for report

Auth
Query String
report_idstring
section_id
GET /api/ai/report/decompile
curl --get \
--url 'https://opswat.developerhub.io/api/ai/report/decompile' \
--data report_id={report_id} \
--data section_id={section_id}
Copy
Responses
200

Successful Response

AiReportDataobject

AI data, provided on some request to analyze some report data

source_idstring

Id of analyzed portion of report. Usually - the dataUUID property

data_typestring

Type of data we request from AI for report

Enum: summary,decompiled_disassembly_section

data

Data provided by AI. Not all data, but only portion of it that we need

AiReportDecompiledDataobject

Parsed data of decompiled disassembly section

functionsarray[string]

Extracted names of decompiled functions

summarystring

Generic summary on all functions

contentstring

Either only all functions with comments, or whole response if we failed to parse it

created_datedate-time

Date when AI data was received

400

Bad request

404

Item not found

422

Validation Error

Response
{
"source_id": "40295337-3cc1-4659-9953-54d500f7f540",
"data_type": "decompiled_disassembly_section",
"created_date": "2025-04-17 08:48:02.186000",
"data": {
"functions": [
"virtualBoxTraced",
"checkVirtualBox"
],
"summary": "The provided code consists of two functions: `virtualBoxTraced` and `checkVirtualBox`.\n\nThe `virtualBoxTraced` function checks if the program is being traced using VirtualBox processes. It performs calculations using specific memory locations and constants, calls the `lstrcmpiA` function to compare a string, and checks the return value to determine the result. The function utilizes the VirtualBox Shared Folders and a specific process called `vboxservice.exe` to carry out the trace checks.\n\nThe `checkVirtualBox` function checks if the program is running in a VirtualBox environment. It calls several functions, including `CloseHandle` and `lstrcmpiA`, to compare strings and retrieve information about the environment. It also checks a specific process called `vboxtray.exe` in addition to `vboxservice.exe` to determine if the program is running within VirtualBox. If any of the checks fail, the function sets a flag variable to 0, indicating that it is not running in a VirtualBox environment.",
"content": "// Function: virtualBoxTraced\n// Behavior: Checks if the program is being traced using VirtualBox processes (vboxservice.exe and vboxtray.exe)\n// Uses multiple instructions to calculate some values and perform comparisons with constants and strings\n\nvoid virtualBoxTraced() {\n // Calculate the difference between two memory locations and store it in [ebp - 0xc]\n int temp1 = *(ebp - 0x18);\n int temp2 = temp1 - 1;\n *(ebp - 0xc) = temp2;\n\n // Calculate the value 0x10 / (temp1 - 1) and store it in eax\n int temp3 = 0x10;\n int temp4 = 0;\n int temp5 = temp3 / temp2;\n eax = temp5;\n\n // Call a function at address 0x5c20 with argument placed in eax\n sub_5c20(eax);\n\n // Allocate space on the stack and store the address in [ebp - 0x10]\n // Calculate the address and store it in eax\n int temp6 = eax;\n int temp7 = temp6 + 0;\n *(ebp - 0x10) = temp7;\n\n // Copy the address from [ebp - 0x10] to [esp + 8]\n int temp8 = *(ebp - 0x10);\n *(esp + 8) = temp8;\n\n // Copy the value from [ebp - 0x10] to [esp + 4]\n int temp9 = *(ebp - 0x10);\n *(esp + 4) = temp9;\n\n // Copy the constant 0x250000 to [esp]\n *(esp) = 0x250000;\n\n // Call a function at address 0x4b58\n sub_4b58();\n\n // Allocate space on the stack and store the return value in [ebp - 0x14]\n *(ebp - 0x14) = eax;\n\n // Compare the value in [ebp - 0x14] with 0\n // If not equal, branch to 0x35be\n if (*(ebp - 0x14) != 0) {\n goto 0x35be;\n }\n\n // Copy the value from [ebp - 0x10] to [esp + 4]\n // Copy the constant 0x4091b3 to [esp] (refDataUUID: b1501e53-4290-48f9-9298-49f17ed0b315)\n int temp10 = *(ebp - 0x10);\n *(esp + 4) = temp10;\n *(esp) = 0x4091b3;\n\n // Call the lstrcmpiA function from the kernel32.dll library\n eax = lstrcmpiA();\n\n // Compare the return value with 0\n // If not equal, branch to 0x35b7\n if (eax != 0) {\n goto 0x35b7;\n }\n\n // Set eax to 1 and branch to 0x35c3\n eax = 1;\n goto 0x35c3;\n\n // Set eax to 0 and branch to 0x35c3\n eax = 0;\n goto 0x35c3;\n\n // Set eax to 0\n eax = 0;\n\n // Restore registers and return\n esp = ebx;\n ebx = *(ebp
}
}
Copy

Check Engine Database Update

Check for engine database update for all engines or for specific one

Auth
Query String
app_serverstring
GET /api/updates/engine/database/check
curl --get \
--url 'https://opswat.developerhub.io/api/updates/engine/database/check' \
--data app_server={app_server}
Copy
Responses
200

Successful Response

EngineDatabaseUpdateInfoarray[object]
app_serverstring
statusstring

Status of the engine database update

Enum: active,in_progress,failed

errorstring
active_package_versionstring
is_fallback_activeboolean

Default: false

active_database_api_versionstring
available_package_versionstring
update_availableboolean

Default: false

last_updatedate-time
modified_datedate-time
idstring
204

No content

404

Item not found

422

Validation Error

Response
[
{
"app_server": "app1",
"status": "active",
"active_package_version": "1759735147-f348e92e-3308-4d48-a03d-77a7433dfa61",
"is_fallback_active": false,
"active_database_api_version": "2",
"available_package_version": "20251006-0005",
"update_available": true,
"modified_date": "2025-10-06T08:07:36.957000",
"id": "68e375cf492e02cbbc011acc"
},
{
"app_server": "app2",
"status": "active",
"active_package_version": "1759735147-f348e92e-3308-4d48-a03d-77a7433dfa61",
"is_fallback_active": false,
"active_database_api_version": "2",
"available_package_version": "20251006-0005",
"update_available": true,
"modified_date": "2025-10-06T08:07:36.957000",
"id": "68e375cf492e02cbbc011acd"
}
]
Copy

Run Engine Database Update

Perform online engine database update for all engines or for specific one

Auth
Query String
app_serverstring
POST /api/updates/engine/database/run
curl --request POST \
--url 'https://opswat.developerhub.io/api/updates/engine/database/run' \
--data app_server={app_server}
Copy
Responses
200

Successful Response

No response body
204

No content

400

Bad request

404

Item not found

409

Conflict

422

Validation Error

Response
No response
Copy

Run Manual Engine Database Update

Perform manual engine database update for all engines or for specific engine

Auth
Request Body
Body_run_manual_engine_database_update_api_updates_engine_database_run_manual_postobject
app_serverstring
descriptorfile
database_packagefile
POST /api/updates/engine/database/run-manual
curl --request POST \
--url 'https://opswat.developerhub.io/api/updates/engine/database/run-manual'
Copy
Responses
200

Successful Response

No response body
400

Bad request

404

Item not found

409

Conflict

422

Validation Error

Response
No response
Copy

Revert Engine Database Update

Revert engine database to fallback version for all engines or for specific engine

Auth
Query String
app_serverstring
POST /api/updates/engine/database/revert
curl --request POST \
--url 'https://opswat.developerhub.io/api/updates/engine/database/revert' \
--data app_server={app_server}
Copy
Responses
200

Successful Response

No response body
404

Item not found

409

Conflict

422

Validation Error

Response
No response
Copy

Status Engine Database Update

Get engine database status for all engines

Auth
GET /api/updates/engine/database/status
curl --get \
--url 'https://opswat.developerhub.io/api/updates/engine/database/status'
Copy
Responses
200

Successful Response

EngineDatabaseUpdateInfoarray[object]
app_serverstring
statusstring

Status of the engine database update

Enum: active,in_progress,failed

errorstring
active_package_versionstring
is_fallback_activeboolean

Default: false

active_database_api_versionstring
available_package_versionstring
update_availableboolean

Default: false

last_updatedate-time
modified_datedate-time
idstring
Response
[
{
"app_server": "app1",
"status": "active",
"active_package_version": "1759735147-f348e92e-3308-4d48-a03d-77a7433dfa61",
"is_fallback_active": false,
"active_database_api_version": "2",
"available_package_version": "20251006-0005",
"update_available": true,
"modified_date": "2025-10-06T08:14:22.323000",
"id": "68e37a49a534aeb563ee961c"
},
{
"app_server": "app2",
"status": "active",
"active_package_version": "1759735147-f348e92e-3308-4d48-a03d-77a7433dfa61",
"is_fallback_active": false,
"active_database_api_version": "2",
"available_package_version": "20251006-0005",
"update_available": true,
"modified_date": "2025-10-06T08:14:22.323000",
"id": "68e37a49a534aeb563ee961d"
}
]
Copy