Introduction
Verisys Antivirus API provides authorised API consumers with the ability to scan files for malware and NSFW (Not Safe for Work) content. REST API endpoints are provided for performing both synchronous and asynchronous scans.
You can find the OpenAPI Specification for our API here. The spec can be used to auto-generate API clients for many popular programming languages.
_ _ ____ ____ _ ____ _ _ ____
| | |___ |__/ | [__ \_/ [__
\/ |___ | \ | ___] | ___]
Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.
Endpoints
Multiple base URLs are available, segregated by geographic region. For compliance purposes, data sent to a specific region never leaves that region.
Note that URLs must include the API version, with the latest version currently at v1
Base URL | Region |
---|---|
https://gb1.api.av.ionxsolutions.com/v1 | UK |
https://eu1.api.av.ionxsolutions.com/v1 | EU |
https://us1.api.av.ionxsolutions.com/v1 | USA |
Authentication
API keys are used to authenticate requests. When subscribing to Verisys Antivirus API, we create a default API key for you, and you can create amd manage additional API keys at the Verisys Licensing & Support site.
For example, to call the `/v1/ping` test endpoint
curl --header 'X-Api-Key: API_KEY' https://gb1.api.av.ionxsolutions.com/v1/ping
fetch("https://gb1.api.av.ionxsolutions.com/v1/ping", {
"method": "GET",
"headers": {
"X-API-Key": "API_KEY"
}
});
const http = require("https");
const options = {
"method": "GET",
"hostname": "gb1.api.av.ionxsolutions.com",
"path": "/v1/ping",
"headers": {
"X-API-Key": "API_KEY"
}
};
const req = http.request(options, function (res) { });
req.end();
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://gb1.api.av.ionxsolutions.com/v1/ping"),
Headers =
{
{ "X-API-Key", "API_KEY" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
}
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://gb1.api.av.ionxsolutions.com/v1/ping")
.get()
.addHeader("X-API-Key", "API_KEY")
.build();
Response response = client.newCall(request).execute();
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://gb1.api.av.ionxsolutions.com/v1/ping"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "API_KEY")
res, _ := http.DefaultClient.Do(req)
if err != nil {
fmt.Println("HTTP call failed:", err)
}
defer res.Body.Close()
}
import requests
url = "https://gb1.api.av.ionxsolutions.com/v1/ping"
response = requests.request("GET", url, headers={
"X-API-Key": "API_KEY"
})
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://gb1.api.av.ionxsolutions.com/v1/ping")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = 'API_KEY'
response = http.request(request)
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://gb1.api.av.ionxsolutions.com/v1/ping",
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: API_KEY"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
}
$headers=@{}
$headers.Add("X-API-Key", "API_KEY")
$response = Invoke-WebRequest -Uri 'https://gb1.api.av.ionxsolutions.com/v1/ping' -Method GET -Headers $headers
A valid API key must be sent in an X-API-Key
HTTP header with every request.
Rate Limits
To ensure sufficient capacity for all API consumers, we use request rate limiting, on a per-API key basis.
The API returns HTTP code 429
when it receives too many requests, and also returns a Retry-After
header, which contains the minimum number of seconds that must be waited before the API can handle another request.
For API requests that are not rate limited, the response includes headers that indicate the current state of your rate limit quota:
Header | Value |
---|---|
X-Rate-Limit-Limit |
Rate limit ceiling that is applicable for the current request, e.g. 1m ("1 minute") |
X-Rate-Limit-Remaining |
Number of requests left for the current rate-limit window, e.g. 9 |
X-Rate-Limit-Reset |
The time at which the rate limit resets, specified as an ISO 8601 timestamp |
If you are having difficulties with limits, please feel free to contact us.
File Limits
The maximum permitted file sizes are shown below.
Scan Type | Scan Method | Maximum File Size |
---|---|---|
Malware | Sync | 100MB |
Malware | Async | 250MB |
NSFW Image | Async | 8MB |
NSFW Image | Async | 16MB |
NSFW Image scanning APIs support the following image formats:
Format | Permitted File Extensions |
---|---|
JPEG | .jpg , .jpeg |
PNG | .png |
GIF* | .gif |
WebP | .webp |
Credits
Each plan comes with a set number of credits, and 1 credit is consumed when you make a request to an API endpoint that requests file scanning:
/v1/malware/scan/*
/v1/malware/submit/*
/v1/nsfw/images/scan/*
/v1/nsfw/images/submit/*
Every API response includes headers containing information about your remaining credits:
Header | Value |
---|---|
X-API-Credit-Limit |
Total number of credits that were allocated for your current billing cycle, e.g. 10000 |
X-API-Credit-Remaining |
Number of credits remaining in your current billing cycle, e.g. 5000 |
If you need more credits, you can upgrade your plan at any time, or purchase a credit addon that provides additional credits.
Versioning
This API uses versioning. A new API version is released whenever we introduce any backwards-incompatible changes to the API, such as changing a parameter name or type, or deprecating an endpoint. Previous versions will remain functional, but will be considered deprecated, and it is therefore strongly recommended to always use the latest version. When making an API request, the desired version must be used to prefix the endpoint path, for example to call v1
of the ping
endpoint: https://gb1.api.av.ionxsolutions.com/v1/ping
Data Retention
Files sent to the API for Malware/NSFW scanning are only kept for the short time it takes to perform the scan, and are then immediately and permanently deleted. Files are not shared with any third parties, and are processed solely for the purposes of the request Malware/NSFW scan.
Validation
API endpoints perform validation on all input. Any request that fails validation will result in an error response with HTTP status code 422
. The response body will be a ValidationProblemDetails that contains details of all validation errors.
Validation Errors Example
{
"type": "https://ionxsolutions.com/schema/rest/model-validation-error",
"title": "One or more validation errors occurred.",
"status": 422,
"traceId": "00-dbb62d1d43e81d9af3952ec39bdec4e0-6aa0ae188e8e1154-01",
"errors": {
"file_url": [
"Invalid format for file_url"
],
"file_name": [
"file_name must not be empty"
]
}
}
Errors
Verisys Antivirus API uses standard HTTP response codes to indicate the success or failure of an API request. In case of an error, the response body will be a ProblemDetails that contains additional information about the error.
Error Code | Meaning |
---|---|
401 | Unauthorized; API key may be missing or invalid, or your subscription may have expired. Ensure your API key is passed via the X-Api-Key header |
403 | Forbidden; insufficient credit quota remaining |
404 | Not Found; resource not found |
422 | Unprocessable Content; unable to validate your request, see Validation |
429 | Too Many Requests; rate limit exceeded, see Rate Limits |
500 | Server Error; something is wrong at our end. Try again later or contact us: contact us |
Webhooks
Verisys Antivirus API provides endpoints for performing both synchronous and asynchronous scans. When performing an asynchronous scan, there are two different means to later obtain the scan result:
- Polling: repeatedly calling a Fetch Scan Result endpoint (e.g.
/v1/malware/{id}
,/v1/nsfw/images/{id}
) until the result is available - Callback/webhook: we automatically contact one of your API endpoints when the result is available
If you provided a valid callback URL in your asynchronous scan request, when the scan result is available our system will automatically send a POST request to the specified URL with a ScanResult
object as the payload.
Each webhook request will include an X-Api-Signature
header, which contains an HMAC-256 signature computed over the payload. You can verify that webhook requests originated from the Verisys Antivirus API by computing the HMAC-256 signature and comparing it to the X-Api-Signature
header. Each Verisys Antivirus API account uses a unique webhook secret for the HMAC key, which you can find at the Verisys Licensing & Support site.
Security & Privacy
All data in transit is secured by TLS.
Files submitted for scanning are stored in encrypted format (using AES-256), and are only kept for as long as is required to complete the scan - often as little as 1 second.
Verisys Antivirus API is fully compliant with GDPR. Files submitted to a particular region will never leave that region - your data will never traverse jurisdictions, allowing you to remain compliant.
Content Type Detection
When submitting files for Malware/NSFW scans, we will also detect the actual content type (the real content type can differ from that purported by the file extension) by scanning the file signature. The following content types are currently supported:
File Type | Media Type |
---|---|
Microsoft Office Excel | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet |
Microsoft Office Outlook | application/vnd.ms-outlook |
Microsoft Office PowerPoint | application/vnd.openxmlformats-officedocument.presentationml.presentation |
Microsoft Office Visio | application/vnd.visio |
Microsoft Office Word | application/vnd.openxmlformats-officedocument.wordprocessingml.document |
Microsoft Office XPS | application/vnd.ms-xpsdocument |
Microsoft Office Excel (97-2003) | application/vnd.ms-excel |
Microsoft Office PowerPoint (97-2003) | application/vnd.ms-powerpoint |
Microsoft Office Visio (97-2003) | application/vnd.visio |
Microsoft Office Word (97-2003) | application/msword |
OpenDocument Text | application/vnd.oasis.opendocument.text |
OpenDocument Presentation | application/vnd.oasis.opendocument.presentation |
OpenDocument Spreadsheet | application/vnd.oasis.opendocument.spreadsheet |
Rich Text Document | application/rtf |
PDF Document | application/pdf |
Plain Text | text/plain |
XML | application/xml |
vCard (VCF) | text/vcard |
7-Zip Archive | application/x-7z-compressed |
Bzip2 Archive | application/x-bzip2 |
Microsoft Cabinet Archive | application/vnd.ms-cab-compressed |
GZIP Archive | application/gzip |
RAR Archive | application/vnd.rar |
Tarball Archive | application/x-tar |
ZIP Archive | application/zip |
AutoCAD Drawing | application/acad |
Bitmap Image | image/bmp |
GIF Image | image/gif |
JPEG Image | image/jpeg |
Photoshop Image | image/vnd.adobe.photoshop |
PNG Image | image/png |
TIFF Image | image/tiff |
WebP Image | image/webp |
Adaptive Multi-Rate Wideband Audio | audio/amr |
Dolby Digital AC-3 Audio | audio/ac3 |
FLAC Audio | audio/flac |
MP3 Audio | audio/mpeg |
Ogg Vorbis Audio | audio/ogg |
Ogg Opus Audio | audio/opus |
Waveform Audio | audio/wav |
ASF Audio | video/x-ms-asf |
3GPP Video | video/3gpp |
AVI Video | video/x-msvideo |
QuickTime Video | video/quicktime |
MP4 (MPEG-4) Video | video/mp4 |
Matroska (MKV) Video | video/x-matroska |
ASF Video | video/x-ms-asf |
DOS Executable | application/vnd.microsoft.portable-executable |
Windows Executable | application/vnd.microsoft.portable-executable |
Linux ELF Executable | application/x-elf |
Linux Shared Library | application/x-elf |
Linux PIE Executable | application/x-elf |
Unknown Binary Data | application/octet-stream |
Malware Scanning
Fetch Scan Result
Code samples
curl --request GET \
--url https://gb1.api.av.ionxsolutions.com/v1/malware/497f6eca-6276-4993-bfeb-53cbbbba6f08 \
--header 'Accept: application/json' \
--header 'X-API-Key: API_KEY'
fetch("https://gb1.api.av.ionxsolutions.com/v1/malware/497f6eca-6276-4993-bfeb-53cbbbba6f08", {
"method": "GET",
"headers": {
"Accept": "application/json",
"X-API-Key": "API_KEY"
}
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
const http = require("https");
const options = {
"method": "GET",
"hostname": "gb1.api.av.ionxsolutions.com",
"port": null,
"path": "/v1/malware/497f6eca-6276-4993-bfeb-53cbbbba6f08",
"headers": {
"Accept": "application/json",
"X-API-Key": "API_KEY"
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.end();
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://gb1.api.av.ionxsolutions.com/v1/malware/497f6eca-6276-4993-bfeb-53cbbbba6f08"),
Headers =
{
{ "Accept", "application/json" },
{ "X-API-Key", "API_KEY" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://gb1.api.av.ionxsolutions.com/v1/malware/497f6eca-6276-4993-bfeb-53cbbbba6f08")
.get()
.addHeader("Accept", "application/json")
.addHeader("X-API-Key", "API_KEY")
.build();
Response response = client.newCall(request).execute();
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://gb1.api.av.ionxsolutions.com/v1/malware/497f6eca-6276-4993-bfeb-53cbbbba6f08"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Accept", "application/json")
req.Header.Add("X-API-Key", "API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
import requests
url = "https://gb1.api.av.ionxsolutions.com/v1/malware/497f6eca-6276-4993-bfeb-53cbbbba6f08"
headers = {
"Accept": "application/json",
"X-API-Key": "API_KEY"
}
response = requests.request("GET", url, headers=headers)
print(response.text)
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://gb1.api.av.ionxsolutions.com/v1/malware/497f6eca-6276-4993-bfeb-53cbbbba6f08")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
request["Accept"] = 'application/json'
request["X-API-Key"] = 'API_KEY'
response = http.request(request)
puts response.read_body
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://gb1.api.av.ionxsolutions.com/v1/malware/497f6eca-6276-4993-bfeb-53cbbbba6f08",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Accept: application/json",
"X-API-Key: API_KEY"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
$headers=@{}
$headers.Add("Accept", "application/json")
$headers.Add("X-API-Key", "API_KEY")
$response = Invoke-WebRequest -Uri 'https://gb1.api.av.ionxsolutions.com/v1/malware/497f6eca-6276-4993-bfeb-53cbbbba6f08' -Method GET -Headers $headers
/v1/malware/{id}
Fetch the result of a previously submitted malware scan job
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
id | path | string(uuid) | true | Identifier of the malware scan job to fetch results for |
Example responses
200 Response
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"scan_type": "malware",
"status": "pending",
"content_length": 0,
"content_type": "string",
"signals": [
"string"
],
"metadata": {
"property1": "string",
"property2": "string"
},
"created_at": "2019-08-24T14:15:22Z",
"completed_at": "2019-08-24T14:15:22Z"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Returns the result of a previously submitted malware scan job | ScanResult |
401 | Unauthorized | Invalid API key | ProblemDetails |
403 | Forbidden | Insufficient credit quota remaining | None |
422 | Unprocessable Entity | Validation errors | ValidationProblemDetails |
500 | Internal Server Error | Internal Server Error | ProblemDetails |
Scan File
Code samples
curl --request POST \
--url https://gb1.api.av.ionxsolutions.com/v1/malware/scan/file \
--header 'Accept: application/json' \
--header 'Content-Type: multipart/form-data; boundary=---011000010111000001101001' \
--header 'X-API-Key: API_KEY' \
--form file=string \
--form file_name=my-file.docx
const form = new FormData();
form.append("file", "string");
form.append("file_name", "my-file.docx");
fetch("https://gb1.api.av.ionxsolutions.com/v1/malware/scan/file", {
"method": "POST",
"headers": {
"Content-Type": "multipart/form-data; boundary=---011000010111000001101001",
"Accept": "application/json",
"X-API-Key": "API_KEY"
}
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
const http = require("https");
const options = {
"method": "POST",
"hostname": "gb1.api.av.ionxsolutions.com",
"port": null,
"path": "/v1/malware/scan/file",
"headers": {
"Content-Type": "multipart/form-data; boundary=---011000010111000001101001",
"Accept": "application/json",
"X-API-Key": "API_KEY"
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.write("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\nstring\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file_name\"\r\n\r\nmy-file.docx\r\n-----011000010111000001101001--\r\n");
req.end();
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = new Uri("https://gb1.api.av.ionxsolutions.com/v1/malware/scan/file"),
Headers =
{
{ "Accept", "application/json" },
{ "X-API-Key", "API_KEY" },
},
Content = new MultipartFormDataContent
{
new StreamContent(File.OpenRead("my-file.docx"))
{
Headers =
{
ContentDisposition = new ContentDispositionHeaderValue("form-data")
{
Name = "file",
}
}
},
new StringContent("my-file.docx")
{
Headers =
{
ContentDisposition = new ContentDispositionHeaderValue("form-data")
{
Name = "file_name",
}
}
},
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("multipart/form-data; boundary=---011000010111000001101001");
RequestBody body = RequestBody.create(mediaType, "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\nstring\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file_name\"\r\n\r\nmy-file.docx\r\n-----011000010111000001101001--\r\n");
Request request = new Request.Builder()
.url("https://gb1.api.av.ionxsolutions.com/v1/malware/scan/file")
.post(body)
.addHeader("Content-Type", "multipart/form-data; boundary=---011000010111000001101001")
.addHeader("Accept", "application/json")
.addHeader("X-API-Key", "API_KEY")
.build();
Response response = client.newCall(request).execute();
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://gb1.api.av.ionxsolutions.com/v1/malware/scan/file"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\nstring\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file_name\"\r\n\r\nmy-file.docx\r\n-----011000010111000001101001--\r\n")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "multipart/form-data; boundary=---011000010111000001101001")
req.Header.Add("Accept", "application/json")
req.Header.Add("X-API-Key", "API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
import requests
url = "https://gb1.api.av.ionxsolutions.com/v1/malware/scan/file"
payload = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\nstring\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file_name\"\r\n\r\nmy-file.docx\r\n-----011000010111000001101001--\r\n"
headers = {
"Content-Type": "multipart/form-data; boundary=---011000010111000001101001",
"Accept": "application/json",
"X-API-Key": "API_KEY"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://gb1.api.av.ionxsolutions.com/v1/malware/scan/file")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'multipart/form-data; boundary=---011000010111000001101001'
request["Accept"] = 'application/json'
request["X-API-Key"] = 'API_KEY'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\nstring\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file_name\"\r\n\r\nmy-file.docx\r\n-----011000010111000001101001--\r\n"
response = http.request(request)
puts response.read_body
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://gb1.api.av.ionxsolutions.com/v1/malware/scan/file",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\nstring\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file_name\"\r\n\r\nmy-file.docx\r\n-----011000010111000001101001--\r\n",
CURLOPT_HTTPHEADER => [
"Accept: application/json",
"Content-Type: multipart/form-data; boundary=---011000010111000001101001",
"X-API-Key: API_KEY"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
$headers=@{}
$headers.Add("Content-Type", "multipart/form-data; boundary=---011000010111000001101001")
$headers.Add("Accept", "application/json")
$headers.Add("X-API-Key", "API_KEY")
$response = Invoke-WebRequest -Uri 'https://gb1.api.av.ionxsolutions.com/v1/malware/scan/file' -Method POST -Headers $headers -ContentType 'multipart/form-data; boundary=---011000010111000001101001' -Body '-----011000010111000001101001
Content-Disposition: form-data; name="file"
string
-----011000010111000001101001
Content-Disposition: form-data; name="file_name"
my-file.docx
-----011000010111000001101001--
'
/v1/malware/scan/file
Scans a file for malware
Body parameters
file: binary
file_name: my-file.docx
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | object | false | none |
» file | body | string(binary) | true | none |
» file_name | body | string | false | none |
Example responses
201 Response
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"scan_type": "malware",
"status": "pending",
"content_length": 0,
"content_type": "string",
"signals": [
"string"
],
"metadata": {
"property1": "string",
"property2": "string"
},
"created_at": "2019-08-24T14:15:22Z",
"completed_at": "2019-08-24T14:15:22Z"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
201 | Created | File has been scanned | ScanResult |
401 | Unauthorized | Invalid API key | ProblemDetails |
403 | Forbidden | Insufficient credit quota remaining | None |
422 | Unprocessable Entity | Validation errors | ValidationProblemDetails |
500 | Internal Server Error | Internal Server Error | ProblemDetails |
Scan URL
Code samples
curl --request POST \
--url https://gb1.api.av.ionxsolutions.com/v1/malware/scan/url \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'X-API-Key: API_KEY' \
--data '{"file_url":"https://www.example.com/my-file","file_name":"my-file.docx"}'
fetch("https://gb1.api.av.ionxsolutions.com/v1/malware/scan/url", {
"method": "POST",
"headers": {
"Content-Type": "application/json",
"Accept": "application/json",
"X-API-Key": "API_KEY"
},
"body": "{\"file_url\":\"https://www.example.com/my-file\",\"file_name\":\"my-file.docx\"}"
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
const http = require("https");
const options = {
"method": "POST",
"hostname": "gb1.api.av.ionxsolutions.com",
"port": null,
"path": "/v1/malware/scan/url",
"headers": {
"Content-Type": "application/json",
"Accept": "application/json",
"X-API-Key": "API_KEY"
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.write(JSON.stringify({file_url: 'https://www.example.com/my-file', file_name: 'my-file.docx'}));
req.end();
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = new Uri("https://gb1.api.av.ionxsolutions.com/v1/malware/scan/url"),
Headers =
{
{ "Accept", "application/json" },
{ "X-API-Key", "API_KEY" },
},
Content = new StringContent("{\"file_url\":\"https://www.example.com/my-file\",\"file_name\":\"my-file.docx\"}")
{
Headers =
{
ContentType = new MediaTypeHeaderValue("application/json")
}
}
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"file_url\":\"https://www.example.com/my-file\",\"file_name\":\"my-file.docx\"}");
Request request = new Request.Builder()
.url("https://gb1.api.av.ionxsolutions.com/v1/malware/scan/url")
.post(body)
.addHeader("Content-Type", "application/json")
.addHeader("Accept", "application/json")
.addHeader("X-API-Key", "API_KEY")
.build();
Response response = client.newCall(request).execute();
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://gb1.api.av.ionxsolutions.com/v1/malware/scan/url"
payload := strings.NewReader("{\"file_url\":\"https://www.example.com/my-file\",\"file_name\":\"my-file.docx\"}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Accept", "application/json")
req.Header.Add("X-API-Key", "API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
import requests
url = "https://gb1.api.av.ionxsolutions.com/v1/malware/scan/url"
payload = {
"file_url": "https://www.example.com/my-file",
"file_name": "my-file.docx"
}
headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"X-API-Key": "API_KEY"
}
response = requests.request("POST", url, json=payload, headers=headers)
print(response.text)
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://gb1.api.av.ionxsolutions.com/v1/malware/scan/url")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request["Accept"] = 'application/json'
request["X-API-Key"] = 'API_KEY'
request.body = "{\"file_url\":\"https://www.example.com/my-file\",\"file_name\":\"my-file.docx\"}"
response = http.request(request)
puts response.read_body
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://gb1.api.av.ionxsolutions.com/v1/malware/scan/url",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "{\"file_url\":\"https://www.example.com/my-file\",\"file_name\":\"my-file.docx\"}",
CURLOPT_HTTPHEADER => [
"Accept: application/json",
"Content-Type: application/json",
"X-API-Key: API_KEY"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
$headers=@{}
$headers.Add("Content-Type", "application/json")
$headers.Add("Accept", "application/json")
$headers.Add("X-API-Key", "API_KEY")
$response = Invoke-WebRequest -Uri 'https://gb1.api.av.ionxsolutions.com/v1/malware/scan/url' -Method POST -Headers $headers -ContentType 'application/json' -Body '{"file_url":"https://www.example.com/my-file","file_name":"my-file.docx"}'
/v1/malware/scan/url
Downloads and scans a file for malware
Body parameters
{
"file_url": "https://www.example.com/my-file",
"file_name": "my-file.docx"
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | ScanUrlCommand | false | none |
Example responses
201 Response
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"scan_type": "malware",
"status": "pending",
"content_length": 0,
"content_type": "string",
"signals": [
"string"
],
"metadata": {
"property1": "string",
"property2": "string"
},
"created_at": "2019-08-24T14:15:22Z",
"completed_at": "2019-08-24T14:15:22Z"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
201 | Created | File has been scanned | ScanResult |
401 | Unauthorized | Invalid API key | ProblemDetails |
403 | Forbidden | Insufficient credit quota remaining | None |
422 | Unprocessable Entity | Validation errors | ValidationProblemDetails |
500 | Internal Server Error | Internal Server Error | ProblemDetails |
Submit File
Code samples
curl --request POST \
--url https://gb1.api.av.ionxsolutions.com/v1/malware/submit/file \
--header 'Accept: application/json' \
--header 'Content-Type: multipart/form-data; boundary=---011000010111000001101001' \
--header 'X-API-Key: API_KEY' \
--form file=string \
--form file_name=my-file.docx \
--form callback_url=https://www.example.com/webhook
const form = new FormData();
form.append("file", "string");
form.append("file_name", "my-file.docx");
form.append("callback_url", "https://www.example.com/webhook");
fetch("https://gb1.api.av.ionxsolutions.com/v1/malware/submit/file", {
"method": "POST",
"headers": {
"Content-Type": "multipart/form-data; boundary=---011000010111000001101001",
"Accept": "application/json",
"X-API-Key": "API_KEY"
}
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
const http = require("https");
const options = {
"method": "POST",
"hostname": "gb1.api.av.ionxsolutions.com",
"port": null,
"path": "/v1/malware/submit/file",
"headers": {
"Content-Type": "multipart/form-data; boundary=---011000010111000001101001",
"Accept": "application/json",
"X-API-Key": "API_KEY"
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.write("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\nstring\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file_name\"\r\n\r\nmy-file.docx\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"callback_url\"\r\n\r\nhttps://www.example.com/webhook\r\n-----011000010111000001101001--\r\n");
req.end();
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = new Uri("https://gb1.api.av.ionxsolutions.com/v1/malware/submit/file"),
Headers =
{
{ "Accept", "application/json" },
{ "X-API-Key", "API_KEY" },
},
Content = new MultipartFormDataContent
{
new StreamContent(File.OpenRead("my-file.docx"))
{
Headers =
{
ContentDisposition = new ContentDispositionHeaderValue("form-data")
{
Name = "file",
}
}
},
new StringContent("my-file.docx")
{
Headers =
{
ContentDisposition = new ContentDispositionHeaderValue("form-data")
{
Name = "file_name",
}
}
},
new StringContent("https://www.example.com/webhook")
{
Headers =
{
ContentDisposition = new ContentDispositionHeaderValue("form-data")
{
Name = "callback_url",
}
}
},
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("multipart/form-data; boundary=---011000010111000001101001");
RequestBody body = RequestBody.create(mediaType, "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\nstring\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file_name\"\r\n\r\nmy-file.docx\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"callback_url\"\r\n\r\nhttps://www.example.com/webhook\r\n-----011000010111000001101001--\r\n");
Request request = new Request.Builder()
.url("https://gb1.api.av.ionxsolutions.com/v1/malware/submit/file")
.post(body)
.addHeader("Content-Type", "multipart/form-data; boundary=---011000010111000001101001")
.addHeader("Accept", "application/json")
.addHeader("X-API-Key", "API_KEY")
.build();
Response response = client.newCall(request).execute();
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://gb1.api.av.ionxsolutions.com/v1/malware/submit/file"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\nstring\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file_name\"\r\n\r\nmy-file.docx\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"callback_url\"\r\n\r\nhttps://www.example.com/webhook\r\n-----011000010111000001101001--\r\n")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "multipart/form-data; boundary=---011000010111000001101001")
req.Header.Add("Accept", "application/json")
req.Header.Add("X-API-Key", "API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
import requests
url = "https://gb1.api.av.ionxsolutions.com/v1/malware/submit/file"
payload = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\nstring\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file_name\"\r\n\r\nmy-file.docx\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"callback_url\"\r\n\r\nhttps://www.example.com/webhook\r\n-----011000010111000001101001--\r\n"
headers = {
"Content-Type": "multipart/form-data; boundary=---011000010111000001101001",
"Accept": "application/json",
"X-API-Key": "API_KEY"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://gb1.api.av.ionxsolutions.com/v1/malware/submit/file")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'multipart/form-data; boundary=---011000010111000001101001'
request["Accept"] = 'application/json'
request["X-API-Key"] = 'API_KEY'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\nstring\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file_name\"\r\n\r\nmy-file.docx\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"callback_url\"\r\n\r\nhttps://www.example.com/webhook\r\n-----011000010111000001101001--\r\n"
response = http.request(request)
puts response.read_body
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://gb1.api.av.ionxsolutions.com/v1/malware/submit/file",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\nstring\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file_name\"\r\n\r\nmy-file.docx\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"callback_url\"\r\n\r\nhttps://www.example.com/webhook\r\n-----011000010111000001101001--\r\n",
CURLOPT_HTTPHEADER => [
"Accept: application/json",
"Content-Type: multipart/form-data; boundary=---011000010111000001101001",
"X-API-Key: API_KEY"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
$headers=@{}
$headers.Add("Content-Type", "multipart/form-data; boundary=---011000010111000001101001")
$headers.Add("Accept", "application/json")
$headers.Add("X-API-Key", "API_KEY")
$response = Invoke-WebRequest -Uri 'https://gb1.api.av.ionxsolutions.com/v1/malware/submit/file' -Method POST -Headers $headers -ContentType 'multipart/form-data; boundary=---011000010111000001101001' -Body '-----011000010111000001101001
Content-Disposition: form-data; name="file"
string
-----011000010111000001101001
Content-Disposition: form-data; name="file_name"
my-file.docx
-----011000010111000001101001
Content-Disposition: form-data; name="callback_url"
https://www.example.com/webhook
-----011000010111000001101001--
'
/v1/malware/submit/file
Submits a file for asynchronous malware scanning.
The result can be obtained at a later date by calling: GET /v1/malware/{id}
Alternatively, if a webhook callback URL is provided, the result will be sent automatically when ready.
Body parameters
file: binary
file_name: my-file.docx
callback_url: https://www.example.com/webhook
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | object | false | none |
» file | body | string(binary) | true | none |
» file_name | body | string | false | none |
» callback_url | body | string | false | none |
Example responses
202 Response
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
201 | Created | Scan job submitted | None |
202 | Accepted | Accepted | ScanReceipt |
401 | Unauthorized | Invalid API key | ProblemDetails |
422 | Unprocessable Entity | Validation errors | ValidationProblemDetails |
500 | Internal Server Error | Internal Server Error | ProblemDetails |
Response Headers
Status | Header | Type | Format | Description |
---|---|---|---|---|
202 | X-API-Result | string | Identifier of the newly created malware scan job |
Submit URL
Code samples
curl --request POST \
--url https://gb1.api.av.ionxsolutions.com/v1/malware/submit/url \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'X-API-Key: API_KEY' \
--data '{"file_url":"https://www.example.com/my-file","file_name":"my-file.docx","callback_url":"https://www.example.com/webhook"}'
fetch("https://gb1.api.av.ionxsolutions.com/v1/malware/submit/url", {
"method": "POST",
"headers": {
"Content-Type": "application/json",
"Accept": "application/json",
"X-API-Key": "API_KEY"
},
"body": "{\"file_url\":\"https://www.example.com/my-file\",\"file_name\":\"my-file.docx\",\"callback_url\":\"https://www.example.com/webhook\"}"
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
const http = require("https");
const options = {
"method": "POST",
"hostname": "gb1.api.av.ionxsolutions.com",
"port": null,
"path": "/v1/malware/submit/url",
"headers": {
"Content-Type": "application/json",
"Accept": "application/json",
"X-API-Key": "API_KEY"
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.write(JSON.stringify({
file_url: 'https://www.example.com/my-file',
file_name: 'my-file.docx',
callback_url: 'https://www.example.com/webhook'
}));
req.end();
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = new Uri("https://gb1.api.av.ionxsolutions.com/v1/malware/submit/url"),
Headers =
{
{ "Accept", "application/json" },
{ "X-API-Key", "API_KEY" },
},
Content = new StringContent("{\"file_url\":\"https://www.example.com/my-file\",\"file_name\":\"my-file.docx\",\"callback_url\":\"https://www.example.com/webhook\"}")
{
Headers =
{
ContentType = new MediaTypeHeaderValue("application/json")
}
}
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"file_url\":\"https://www.example.com/my-file\",\"file_name\":\"my-file.docx\",\"callback_url\":\"https://www.example.com/webhook\"}");
Request request = new Request.Builder()
.url("https://gb1.api.av.ionxsolutions.com/v1/malware/submit/url")
.post(body)
.addHeader("Content-Type", "application/json")
.addHeader("Accept", "application/json")
.addHeader("X-API-Key", "API_KEY")
.build();
Response response = client.newCall(request).execute();
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://gb1.api.av.ionxsolutions.com/v1/malware/submit/url"
payload := strings.NewReader("{\"file_url\":\"https://www.example.com/my-file\",\"file_name\":\"my-file.docx\",\"callback_url\":\"https://www.example.com/webhook\"}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Accept", "application/json")
req.Header.Add("X-API-Key", "API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
import requests
url = "https://gb1.api.av.ionxsolutions.com/v1/malware/submit/url"
payload = {
"file_url": "https://www.example.com/my-file",
"file_name": "my-file.docx",
"callback_url": "https://www.example.com/webhook"
}
headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"X-API-Key": "API_KEY"
}
response = requests.request("POST", url, json=payload, headers=headers)
print(response.text)
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://gb1.api.av.ionxsolutions.com/v1/malware/submit/url")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request["Accept"] = 'application/json'
request["X-API-Key"] = 'API_KEY'
request.body = "{\"file_url\":\"https://www.example.com/my-file\",\"file_name\":\"my-file.docx\",\"callback_url\":\"https://www.example.com/webhook\"}"
response = http.request(request)
puts response.read_body
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://gb1.api.av.ionxsolutions.com/v1/malware/submit/url",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "{\"file_url\":\"https://www.example.com/my-file\",\"file_name\":\"my-file.docx\",\"callback_url\":\"https://www.example.com/webhook\"}",
CURLOPT_HTTPHEADER => [
"Accept: application/json",
"Content-Type: application/json",
"X-API-Key: API_KEY"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
$headers=@{}
$headers.Add("Content-Type", "application/json")
$headers.Add("Accept", "application/json")
$headers.Add("X-API-Key", "API_KEY")
$response = Invoke-WebRequest -Uri 'https://gb1.api.av.ionxsolutions.com/v1/malware/submit/url' -Method POST -Headers $headers -ContentType 'application/json' -Body '{"file_url":"https://www.example.com/my-file","file_name":"my-file.docx","callback_url":"https://www.example.com/webhook"}'
/v1/malware/submit/url
Submits a URL for asynchronous malware scanning.
The result can be obtained at a later date by calling: GET /v1/malware/{id}
Alternatively, if a webhook callback URL is provided, the result will be sent automatically when ready
Body parameters
{
"file_url": "https://www.example.com/my-file",
"file_name": "my-file.docx",
"callback_url": "https://www.example.com/webhook"
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | SubmitUrlCommand | false | none |
Example responses
202 Response
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
201 | Created | Scan job submitted | None |
202 | Accepted | Accepted | ScanReceipt |
401 | Unauthorized | Invalid API key | ProblemDetails |
403 | Forbidden | Insufficient credit quota remaining | None |
422 | Unprocessable Entity | Validation errors | ValidationProblemDetails |
500 | Internal Server Error | Internal Server Error | ProblemDetails |
Response Headers
Status | Header | Type | Format | Description |
---|---|---|---|---|
202 | X-API-Result | string | Identifier of the newly created malware scan job |
NSFW Image Scanning
Fetch Scan Result
Code samples
curl --request GET \
--url https://gb1.api.av.ionxsolutions.com/v1/nsfw/images/497f6eca-6276-4993-bfeb-53cbbbba6f08 \
--header 'Accept: application/json' \
--header 'X-API-Key: API_KEY'
fetch("https://gb1.api.av.ionxsolutions.com/v1/nsfw/images/497f6eca-6276-4993-bfeb-53cbbbba6f08", {
"method": "GET",
"headers": {
"Accept": "application/json",
"X-API-Key": "API_KEY"
}
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
const http = require("https");
const options = {
"method": "GET",
"hostname": "gb1.api.av.ionxsolutions.com",
"port": null,
"path": "/v1/nsfw/images/497f6eca-6276-4993-bfeb-53cbbbba6f08",
"headers": {
"Accept": "application/json",
"X-API-Key": "API_KEY"
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.end();
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://gb1.api.av.ionxsolutions.com/v1/nsfw/images/497f6eca-6276-4993-bfeb-53cbbbba6f08"),
Headers =
{
{ "Accept", "application/json" },
{ "X-API-Key", "API_KEY" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://gb1.api.av.ionxsolutions.com/v1/nsfw/images/497f6eca-6276-4993-bfeb-53cbbbba6f08")
.get()
.addHeader("Accept", "application/json")
.addHeader("X-API-Key", "API_KEY")
.build();
Response response = client.newCall(request).execute();
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://gb1.api.av.ionxsolutions.com/v1/nsfw/images/497f6eca-6276-4993-bfeb-53cbbbba6f08"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Accept", "application/json")
req.Header.Add("X-API-Key", "API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
import requests
url = "https://gb1.api.av.ionxsolutions.com/v1/nsfw/images/497f6eca-6276-4993-bfeb-53cbbbba6f08"
headers = {
"Accept": "application/json",
"X-API-Key": "API_KEY"
}
response = requests.request("GET", url, headers=headers)
print(response.text)
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://gb1.api.av.ionxsolutions.com/v1/nsfw/images/497f6eca-6276-4993-bfeb-53cbbbba6f08")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
request["Accept"] = 'application/json'
request["X-API-Key"] = 'API_KEY'
response = http.request(request)
puts response.read_body
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://gb1.api.av.ionxsolutions.com/v1/nsfw/images/497f6eca-6276-4993-bfeb-53cbbbba6f08",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Accept: application/json",
"X-API-Key: API_KEY"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
$headers=@{}
$headers.Add("Accept", "application/json")
$headers.Add("X-API-Key", "API_KEY")
$response = Invoke-WebRequest -Uri 'https://gb1.api.av.ionxsolutions.com/v1/nsfw/images/497f6eca-6276-4993-bfeb-53cbbbba6f08' -Method GET -Headers $headers
/v1/nsfw/images/{id}
Fetch the result of a previously submitted NSFW (Not Safe for Work) image scan job
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
id | path | string(uuid) | true | Identifier of the NSFW image scan job to fetch results for |
Example responses
200 Response
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"scan_type": "malware",
"status": "pending",
"content_length": 0,
"content_type": "string",
"signals": [
"string"
],
"metadata": {
"property1": "string",
"property2": "string"
},
"created_at": "2019-08-24T14:15:22Z",
"completed_at": "2019-08-24T14:15:22Z"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Returns the result of a previously submitted NSFW image scan job | ScanResult |
401 | Unauthorized | Invalid API key | ProblemDetails |
403 | Forbidden | Insufficient credit quota remaining | None |
422 | Unprocessable Entity | Validation errors | ValidationProblemDetails |
500 | Internal Server Error | Internal Server Error | ProblemDetails |
Scan File
Code samples
curl --request POST \
--url https://gb1.api.av.ionxsolutions.com/v1/nsfw/images/scan/file \
--header 'Accept: application/json' \
--header 'Content-Type: multipart/form-data; boundary=---011000010111000001101001' \
--header 'X-API-Key: API_KEY' \
--form file=string \
--form file_name=my-file.docx
const form = new FormData();
form.append("file", "string");
form.append("file_name", "my-file.docx");
fetch("https://gb1.api.av.ionxsolutions.com/v1/nsfw/images/scan/file", {
"method": "POST",
"headers": {
"Content-Type": "multipart/form-data; boundary=---011000010111000001101001",
"Accept": "application/json",
"X-API-Key": "API_KEY"
}
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
const http = require("https");
const options = {
"method": "POST",
"hostname": "gb1.api.av.ionxsolutions.com",
"port": null,
"path": "/v1/nsfw/images/scan/file",
"headers": {
"Content-Type": "multipart/form-data; boundary=---011000010111000001101001",
"Accept": "application/json",
"X-API-Key": "API_KEY"
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.write("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\nstring\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file_name\"\r\n\r\nmy-file.docx\r\n-----011000010111000001101001--\r\n");
req.end();
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = new Uri("https://gb1.api.av.ionxsolutions.com/v1/nsfw/images/scan/file"),
Headers =
{
{ "Accept", "application/json" },
{ "X-API-Key", "API_KEY" },
},
Content = new MultipartFormDataContent
{
new StreamContent(File.OpenRead("my-file.docx"))
{
Headers =
{
ContentDisposition = new ContentDispositionHeaderValue("form-data")
{
Name = "file",
}
}
},
new StringContent("my-file.docx")
{
Headers =
{
ContentDisposition = new ContentDispositionHeaderValue("form-data")
{
Name = "file_name",
}
}
},
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("multipart/form-data; boundary=---011000010111000001101001");
RequestBody body = RequestBody.create(mediaType, "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\nstring\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file_name\"\r\n\r\nmy-file.docx\r\n-----011000010111000001101001--\r\n");
Request request = new Request.Builder()
.url("https://gb1.api.av.ionxsolutions.com/v1/nsfw/images/scan/file")
.post(body)
.addHeader("Content-Type", "multipart/form-data; boundary=---011000010111000001101001")
.addHeader("Accept", "application/json")
.addHeader("X-API-Key", "API_KEY")
.build();
Response response = client.newCall(request).execute();
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://gb1.api.av.ionxsolutions.com/v1/nsfw/images/scan/file"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\nstring\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file_name\"\r\n\r\nmy-file.docx\r\n-----011000010111000001101001--\r\n")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "multipart/form-data; boundary=---011000010111000001101001")
req.Header.Add("Accept", "application/json")
req.Header.Add("X-API-Key", "API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
import requests
url = "https://gb1.api.av.ionxsolutions.com/v1/nsfw/images/scan/file"
payload = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\nstring\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file_name\"\r\n\r\nmy-file.docx\r\n-----011000010111000001101001--\r\n"
headers = {
"Content-Type": "multipart/form-data; boundary=---011000010111000001101001",
"Accept": "application/json",
"X-API-Key": "API_KEY"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://gb1.api.av.ionxsolutions.com/v1/nsfw/images/scan/file")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'multipart/form-data; boundary=---011000010111000001101001'
request["Accept"] = 'application/json'
request["X-API-Key"] = 'API_KEY'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\nstring\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file_name\"\r\n\r\nmy-file.docx\r\n-----011000010111000001101001--\r\n"
response = http.request(request)
puts response.read_body
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://gb1.api.av.ionxsolutions.com/v1/nsfw/images/scan/file",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\nstring\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file_name\"\r\n\r\nmy-file.docx\r\n-----011000010111000001101001--\r\n",
CURLOPT_HTTPHEADER => [
"Accept: application/json",
"Content-Type: multipart/form-data; boundary=---011000010111000001101001",
"X-API-Key: API_KEY"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
$headers=@{}
$headers.Add("Content-Type", "multipart/form-data; boundary=---011000010111000001101001")
$headers.Add("Accept", "application/json")
$headers.Add("X-API-Key", "API_KEY")
$response = Invoke-WebRequest -Uri 'https://gb1.api.av.ionxsolutions.com/v1/nsfw/images/scan/file' -Method POST -Headers $headers -ContentType 'multipart/form-data; boundary=---011000010111000001101001' -Body '-----011000010111000001101001
Content-Disposition: form-data; name="file"
string
-----011000010111000001101001
Content-Disposition: form-data; name="file_name"
my-file.docx
-----011000010111000001101001--
'
/v1/nsfw/images/scan/file
Scans an image file for NSFW (Not Safe for Work) content
Body parameters
file: binary
file_name: my-file.docx
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | object | false | none |
» file | body | string(binary) | true | none |
» file_name | body | string | false | none |
Example responses
201 Response
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"scan_type": "malware",
"status": "pending",
"content_length": 0,
"content_type": "string",
"signals": [
"string"
],
"metadata": {
"property1": "string",
"property2": "string"
},
"created_at": "2019-08-24T14:15:22Z",
"completed_at": "2019-08-24T14:15:22Z"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
201 | Created | Image file has been scanned | ScanResult |
401 | Unauthorized | Invalid API key | ProblemDetails |
403 | Forbidden | Insufficient credit quota remaining | None |
422 | Unprocessable Entity | Validation errors | ValidationProblemDetails |
500 | Internal Server Error | Internal Server Error | ProblemDetails |
Scan URL
Code samples
curl --request POST \
--url https://gb1.api.av.ionxsolutions.com/v1/nsfw/images/scan/url \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'X-API-Key: API_KEY' \
--data '{"file_url":"https://www.example.com/my-file","file_name":"my-file.docx"}'
fetch("https://gb1.api.av.ionxsolutions.com/v1/nsfw/images/scan/url", {
"method": "POST",
"headers": {
"Content-Type": "application/json",
"Accept": "application/json",
"X-API-Key": "API_KEY"
},
"body": "{\"file_url\":\"https://www.example.com/my-file\",\"file_name\":\"my-file.docx\"}"
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
const http = require("https");
const options = {
"method": "POST",
"hostname": "gb1.api.av.ionxsolutions.com",
"port": null,
"path": "/v1/nsfw/images/scan/url",
"headers": {
"Content-Type": "application/json",
"Accept": "application/json",
"X-API-Key": "API_KEY"
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.write(JSON.stringify({file_url: 'https://www.example.com/my-file', file_name: 'my-file.docx'}));
req.end();
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = new Uri("https://gb1.api.av.ionxsolutions.com/v1/nsfw/images/scan/url"),
Headers =
{
{ "Accept", "application/json" },
{ "X-API-Key", "API_KEY" },
},
Content = new StringContent("{\"file_url\":\"https://www.example.com/my-file\",\"file_name\":\"my-file.docx\"}")
{
Headers =
{
ContentType = new MediaTypeHeaderValue("application/json")
}
}
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"file_url\":\"https://www.example.com/my-file\",\"file_name\":\"my-file.docx\"}");
Request request = new Request.Builder()
.url("https://gb1.api.av.ionxsolutions.com/v1/nsfw/images/scan/url")
.post(body)
.addHeader("Content-Type", "application/json")
.addHeader("Accept", "application/json")
.addHeader("X-API-Key", "API_KEY")
.build();
Response response = client.newCall(request).execute();
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://gb1.api.av.ionxsolutions.com/v1/nsfw/images/scan/url"
payload := strings.NewReader("{\"file_url\":\"https://www.example.com/my-file\",\"file_name\":\"my-file.docx\"}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Accept", "application/json")
req.Header.Add("X-API-Key", "API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
import requests
url = "https://gb1.api.av.ionxsolutions.com/v1/nsfw/images/scan/url"
payload = {
"file_url": "https://www.example.com/my-file",
"file_name": "my-file.docx"
}
headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"X-API-Key": "API_KEY"
}
response = requests.request("POST", url, json=payload, headers=headers)
print(response.text)
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://gb1.api.av.ionxsolutions.com/v1/nsfw/images/scan/url")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request["Accept"] = 'application/json'
request["X-API-Key"] = 'API_KEY'
request.body = "{\"file_url\":\"https://www.example.com/my-file\",\"file_name\":\"my-file.docx\"}"
response = http.request(request)
puts response.read_body
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://gb1.api.av.ionxsolutions.com/v1/nsfw/images/scan/url",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "{\"file_url\":\"https://www.example.com/my-file\",\"file_name\":\"my-file.docx\"}",
CURLOPT_HTTPHEADER => [
"Accept: application/json",
"Content-Type: application/json",
"X-API-Key: API_KEY"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
$headers=@{}
$headers.Add("Content-Type", "application/json")
$headers.Add("Accept", "application/json")
$headers.Add("X-API-Key", "API_KEY")
$response = Invoke-WebRequest -Uri 'https://gb1.api.av.ionxsolutions.com/v1/nsfw/images/scan/url' -Method POST -Headers $headers -ContentType 'application/json' -Body '{"file_url":"https://www.example.com/my-file","file_name":"my-file.docx"}'
/v1/nsfw/images/scan/url
Downloads and scans an image file for NSFW (Not Safe for Work) content
Body parameters
{
"file_url": "https://www.example.com/my-file",
"file_name": "my-file.docx"
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | ScanUrlCommand | false | none |
Example responses
201 Response
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"scan_type": "malware",
"status": "pending",
"content_length": 0,
"content_type": "string",
"signals": [
"string"
],
"metadata": {
"property1": "string",
"property2": "string"
},
"created_at": "2019-08-24T14:15:22Z",
"completed_at": "2019-08-24T14:15:22Z"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
201 | Created | Image file has been scanned | ScanResult |
401 | Unauthorized | Invalid API key | ProblemDetails |
403 | Forbidden | Insufficient credit quota remaining | None |
422 | Unprocessable Entity | Validation errors | ValidationProblemDetails |
500 | Internal Server Error | Internal Server Error | ProblemDetails |
Submit File
Code samples
curl --request POST \
--url https://gb1.api.av.ionxsolutions.com/v1/nsfw/images/submit/file \
--header 'Accept: application/json' \
--header 'Content-Type: multipart/form-data; boundary=---011000010111000001101001' \
--header 'X-API-Key: API_KEY' \
--form file=string \
--form file_name=my-file.docx \
--form callback_url=https://www.example.com/webhook
const form = new FormData();
form.append("file", "string");
form.append("file_name", "my-file.docx");
form.append("callback_url", "https://www.example.com/webhook");
fetch("https://gb1.api.av.ionxsolutions.com/v1/nsfw/images/submit/file", {
"method": "POST",
"headers": {
"Content-Type": "multipart/form-data; boundary=---011000010111000001101001",
"Accept": "application/json",
"X-API-Key": "API_KEY"
}
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
const http = require("https");
const options = {
"method": "POST",
"hostname": "gb1.api.av.ionxsolutions.com",
"port": null,
"path": "/v1/nsfw/images/submit/file",
"headers": {
"Content-Type": "multipart/form-data; boundary=---011000010111000001101001",
"Accept": "application/json",
"X-API-Key": "API_KEY"
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.write("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\nstring\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file_name\"\r\n\r\nmy-file.docx\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"callback_url\"\r\n\r\nhttps://www.example.com/webhook\r\n-----011000010111000001101001--\r\n");
req.end();
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = new Uri("https://gb1.api.av.ionxsolutions.com/v1/nsfw/images/submit/file"),
Headers =
{
{ "Accept", "application/json" },
{ "X-API-Key", "API_KEY" },
},
Content = new MultipartFormDataContent
{
new StreamContent(File.OpenRead("my-file.docx"))
{
Headers =
{
ContentDisposition = new ContentDispositionHeaderValue("form-data")
{
Name = "file",
}
}
},
new StringContent("my-file.docx")
{
Headers =
{
ContentDisposition = new ContentDispositionHeaderValue("form-data")
{
Name = "file_name",
}
}
},
new StringContent("https://www.example.com/webhook")
{
Headers =
{
ContentDisposition = new ContentDispositionHeaderValue("form-data")
{
Name = "callback_url",
}
}
},
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("multipart/form-data; boundary=---011000010111000001101001");
RequestBody body = RequestBody.create(mediaType, "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\nstring\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file_name\"\r\n\r\nmy-file.docx\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"callback_url\"\r\n\r\nhttps://www.example.com/webhook\r\n-----011000010111000001101001--\r\n");
Request request = new Request.Builder()
.url("https://gb1.api.av.ionxsolutions.com/v1/nsfw/images/submit/file")
.post(body)
.addHeader("Content-Type", "multipart/form-data; boundary=---011000010111000001101001")
.addHeader("Accept", "application/json")
.addHeader("X-API-Key", "API_KEY")
.build();
Response response = client.newCall(request).execute();
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://gb1.api.av.ionxsolutions.com/v1/nsfw/images/submit/file"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\nstring\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file_name\"\r\n\r\nmy-file.docx\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"callback_url\"\r\n\r\nhttps://www.example.com/webhook\r\n-----011000010111000001101001--\r\n")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "multipart/form-data; boundary=---011000010111000001101001")
req.Header.Add("Accept", "application/json")
req.Header.Add("X-API-Key", "API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
import requests
url = "https://gb1.api.av.ionxsolutions.com/v1/nsfw/images/submit/file"
payload = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\nstring\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file_name\"\r\n\r\nmy-file.docx\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"callback_url\"\r\n\r\nhttps://www.example.com/webhook\r\n-----011000010111000001101001--\r\n"
headers = {
"Content-Type": "multipart/form-data; boundary=---011000010111000001101001",
"Accept": "application/json",
"X-API-Key": "API_KEY"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://gb1.api.av.ionxsolutions.com/v1/nsfw/images/submit/file")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'multipart/form-data; boundary=---011000010111000001101001'
request["Accept"] = 'application/json'
request["X-API-Key"] = 'API_KEY'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\nstring\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file_name\"\r\n\r\nmy-file.docx\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"callback_url\"\r\n\r\nhttps://www.example.com/webhook\r\n-----011000010111000001101001--\r\n"
response = http.request(request)
puts response.read_body
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://gb1.api.av.ionxsolutions.com/v1/nsfw/images/submit/file",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\nstring\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file_name\"\r\n\r\nmy-file.docx\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"callback_url\"\r\n\r\nhttps://www.example.com/webhook\r\n-----011000010111000001101001--\r\n",
CURLOPT_HTTPHEADER => [
"Accept: application/json",
"Content-Type: multipart/form-data; boundary=---011000010111000001101001",
"X-API-Key: API_KEY"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
$headers=@{}
$headers.Add("Content-Type", "multipart/form-data; boundary=---011000010111000001101001")
$headers.Add("Accept", "application/json")
$headers.Add("X-API-Key", "API_KEY")
$response = Invoke-WebRequest -Uri 'https://gb1.api.av.ionxsolutions.com/v1/nsfw/images/submit/file' -Method POST -Headers $headers -ContentType 'multipart/form-data; boundary=---011000010111000001101001' -Body '-----011000010111000001101001
Content-Disposition: form-data; name="file"
string
-----011000010111000001101001
Content-Disposition: form-data; name="file_name"
my-file.docx
-----011000010111000001101001
Content-Disposition: form-data; name="callback_url"
https://www.example.com/webhook
-----011000010111000001101001--
'
/v1/nsfw/images/submit/file
Submits a file for asynchronous NSFW image scanning.
The result can be obtained at a later date by calling GET /v1/nsfw/images/{id}
Alternatively, if a webhook callback URL is provided, the result will be sent automatically when ready.
Body parameters
file: binary
file_name: my-file.docx
callback_url: https://www.example.com/webhook
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | object | false | none |
» file | body | string(binary) | true | none |
» file_name | body | string | false | none |
» callback_url | body | string | false | none |
Example responses
202 Response
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
201 | Created | Scan job submitted | None |
202 | Accepted | Accepted | ScanReceipt |
401 | Unauthorized | Invalid API key | ProblemDetails |
403 | Forbidden | Insufficient credit quota remaining | None |
422 | Unprocessable Entity | Validation errors | ValidationProblemDetails |
500 | Internal Server Error | Internal Server Error | ProblemDetails |
Response Headers
Status | Header | Type | Format | Description |
---|---|---|---|---|
202 | X-API-Result | string | Identifier of the submitted NSFW scan job |
Submit URL
Code samples
curl --request POST \
--url https://gb1.api.av.ionxsolutions.com/v1/nsfw/images/submit/url \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'X-API-Key: API_KEY' \
--data '{"file_url":"https://www.example.com/my-file","file_name":"my-file.docx","callback_url":"https://www.example.com/webhook"}'
fetch("https://gb1.api.av.ionxsolutions.com/v1/nsfw/images/submit/url", {
"method": "POST",
"headers": {
"Content-Type": "application/json",
"Accept": "application/json",
"X-API-Key": "API_KEY"
},
"body": "{\"file_url\":\"https://www.example.com/my-file\",\"file_name\":\"my-file.docx\",\"callback_url\":\"https://www.example.com/webhook\"}"
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
const http = require("https");
const options = {
"method": "POST",
"hostname": "gb1.api.av.ionxsolutions.com",
"port": null,
"path": "/v1/nsfw/images/submit/url",
"headers": {
"Content-Type": "application/json",
"Accept": "application/json",
"X-API-Key": "API_KEY"
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.write(JSON.stringify({
file_url: 'https://www.example.com/my-file',
file_name: 'my-file.docx',
callback_url: 'https://www.example.com/webhook'
}));
req.end();
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = new Uri("https://gb1.api.av.ionxsolutions.com/v1/nsfw/images/submit/url"),
Headers =
{
{ "Accept", "application/json" },
{ "X-API-Key", "API_KEY" },
},
Content = new StringContent("{\"file_url\":\"https://www.example.com/my-file\",\"file_name\":\"my-file.docx\",\"callback_url\":\"https://www.example.com/webhook\"}")
{
Headers =
{
ContentType = new MediaTypeHeaderValue("application/json")
}
}
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"file_url\":\"https://www.example.com/my-file\",\"file_name\":\"my-file.docx\",\"callback_url\":\"https://www.example.com/webhook\"}");
Request request = new Request.Builder()
.url("https://gb1.api.av.ionxsolutions.com/v1/nsfw/images/submit/url")
.post(body)
.addHeader("Content-Type", "application/json")
.addHeader("Accept", "application/json")
.addHeader("X-API-Key", "API_KEY")
.build();
Response response = client.newCall(request).execute();
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://gb1.api.av.ionxsolutions.com/v1/nsfw/images/submit/url"
payload := strings.NewReader("{\"file_url\":\"https://www.example.com/my-file\",\"file_name\":\"my-file.docx\",\"callback_url\":\"https://www.example.com/webhook\"}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Accept", "application/json")
req.Header.Add("X-API-Key", "API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
import requests
url = "https://gb1.api.av.ionxsolutions.com/v1/nsfw/images/submit/url"
payload = {
"file_url": "https://www.example.com/my-file",
"file_name": "my-file.docx",
"callback_url": "https://www.example.com/webhook"
}
headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"X-API-Key": "API_KEY"
}
response = requests.request("POST", url, json=payload, headers=headers)
print(response.text)
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://gb1.api.av.ionxsolutions.com/v1/nsfw/images/submit/url")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request["Accept"] = 'application/json'
request["X-API-Key"] = 'API_KEY'
request.body = "{\"file_url\":\"https://www.example.com/my-file\",\"file_name\":\"my-file.docx\",\"callback_url\":\"https://www.example.com/webhook\"}"
response = http.request(request)
puts response.read_body
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://gb1.api.av.ionxsolutions.com/v1/nsfw/images/submit/url",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "{\"file_url\":\"https://www.example.com/my-file\",\"file_name\":\"my-file.docx\",\"callback_url\":\"https://www.example.com/webhook\"}",
CURLOPT_HTTPHEADER => [
"Accept: application/json",
"Content-Type: application/json",
"X-API-Key: API_KEY"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
$headers=@{}
$headers.Add("Content-Type", "application/json")
$headers.Add("Accept", "application/json")
$headers.Add("X-API-Key", "API_KEY")
$response = Invoke-WebRequest -Uri 'https://gb1.api.av.ionxsolutions.com/v1/nsfw/images/submit/url' -Method POST -Headers $headers -ContentType 'application/json' -Body '{"file_url":"https://www.example.com/my-file","file_name":"my-file.docx","callback_url":"https://www.example.com/webhook"}'
/v1/nsfw/images/submit/url
Submits a URL for asynchronous NSFW image scanning.
The result can be obtained at a later date by calling GET /v1/nsfw/images/{id}
Alternatively, if a webhook callback URL is provided, the result will be sent automatically when ready.
Body parameters
{
"file_url": "https://www.example.com/my-file",
"file_name": "my-file.docx",
"callback_url": "https://www.example.com/webhook"
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | SubmitUrlCommand | false | none |
Example responses
202 Response
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
201 | Created | Scan job submitted | None |
202 | Accepted | Accepted | ScanReceipt |
401 | Unauthorized | Invalid API key | ProblemDetails |
403 | Forbidden | Insufficient credit quota remaining | None |
422 | Unprocessable Entity | Validation errors | ValidationProblemDetails |
500 | Internal Server Error | Internal Server Error | ProblemDetails |
Response Headers
Status | Header | Type | Format | Description |
---|---|---|---|---|
202 | X-API-Result | string | Identifier of the submitted NSFW scan job |
General
Fetch Account Info
Code samples
curl --request GET \
--url https://gb1.api.av.ionxsolutions.com/v1/me \
--header 'Accept: application/json' \
--header 'X-API-Key: API_KEY'
fetch("https://gb1.api.av.ionxsolutions.com/v1/me", {
"method": "GET",
"headers": {
"Accept": "application/json",
"X-API-Key": "API_KEY"
}
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
const http = require("https");
const options = {
"method": "GET",
"hostname": "gb1.api.av.ionxsolutions.com",
"port": null,
"path": "/v1/me",
"headers": {
"Accept": "application/json",
"X-API-Key": "API_KEY"
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.end();
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://gb1.api.av.ionxsolutions.com/v1/me"),
Headers =
{
{ "Accept", "application/json" },
{ "X-API-Key", "API_KEY" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://gb1.api.av.ionxsolutions.com/v1/me")
.get()
.addHeader("Accept", "application/json")
.addHeader("X-API-Key", "API_KEY")
.build();
Response response = client.newCall(request).execute();
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://gb1.api.av.ionxsolutions.com/v1/me"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Accept", "application/json")
req.Header.Add("X-API-Key", "API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
import requests
url = "https://gb1.api.av.ionxsolutions.com/v1/me"
headers = {
"Accept": "application/json",
"X-API-Key": "API_KEY"
}
response = requests.request("GET", url, headers=headers)
print(response.text)
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://gb1.api.av.ionxsolutions.com/v1/me")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
request["Accept"] = 'application/json'
request["X-API-Key"] = 'API_KEY'
response = http.request(request)
puts response.read_body
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://gb1.api.av.ionxsolutions.com/v1/me",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Accept: application/json",
"X-API-Key: API_KEY"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
$headers=@{}
$headers.Add("Accept", "application/json")
$headers.Add("X-API-Key", "API_KEY")
$response = Invoke-WebRequest -Uri 'https://gb1.api.av.ionxsolutions.com/v1/me' -Method GET -Headers $headers
/v1/me
Fetch information about your account, including the number of credits remaining
Example responses
200 Response
{
"plan": "string",
"credit_limit": 0,
"credit_remaining": 0,
"created_date": "2019-08-24T14:15:22Z",
"period_start_date": "2019-08-24T14:15:22Z",
"period_end_date": "2019-08-24T14:15:22Z"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Returns account information | Account |
401 | Unauthorized | Invalid API key | ProblemDetails |
403 | Forbidden | Insufficient credit quota remaining | None |
500 | Internal Server Error | Internal Server Error | ProblemDetails |
Test Endpoint
Code samples
curl --request GET \
--url https://gb1.api.av.ionxsolutions.com/v1/ping \
--header 'Accept: application/json' \
--header 'X-API-Key: API_KEY'
fetch("https://gb1.api.av.ionxsolutions.com/v1/ping", {
"method": "GET",
"headers": {
"Accept": "application/json",
"X-API-Key": "API_KEY"
}
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
const http = require("https");
const options = {
"method": "GET",
"hostname": "gb1.api.av.ionxsolutions.com",
"port": null,
"path": "/v1/ping",
"headers": {
"Accept": "application/json",
"X-API-Key": "API_KEY"
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.end();
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://gb1.api.av.ionxsolutions.com/v1/ping"),
Headers =
{
{ "Accept", "application/json" },
{ "X-API-Key", "API_KEY" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://gb1.api.av.ionxsolutions.com/v1/ping")
.get()
.addHeader("Accept", "application/json")
.addHeader("X-API-Key", "API_KEY")
.build();
Response response = client.newCall(request).execute();
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://gb1.api.av.ionxsolutions.com/v1/ping"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Accept", "application/json")
req.Header.Add("X-API-Key", "API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
import requests
url = "https://gb1.api.av.ionxsolutions.com/v1/ping"
headers = {
"Accept": "application/json",
"X-API-Key": "API_KEY"
}
response = requests.request("GET", url, headers=headers)
print(response.text)
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://gb1.api.av.ionxsolutions.com/v1/ping")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
request["Accept"] = 'application/json'
request["X-API-Key"] = 'API_KEY'
response = http.request(request)
puts response.read_body
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://gb1.api.av.ionxsolutions.com/v1/ping",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Accept: application/json",
"X-API-Key: API_KEY"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
$headers=@{}
$headers.Add("Accept", "application/json")
$headers.Add("X-API-Key", "API_KEY")
$response = Invoke-WebRequest -Uri 'https://gb1.api.av.ionxsolutions.com/v1/ping' -Method GET -Headers $headers
/v1/ping
Can be used to test API connectivity and authentication
Example responses
401 Response
{
"type": "string",
"title": "string",
"status": 0,
"detail": "string",
"instance": "string",
"property1": null,
"property2": null
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Returns an empty body | None |
401 | Unauthorized | Invalid API key | ProblemDetails |
403 | Forbidden | Insufficient credit quota remaining | None |
500 | Internal Server Error | Internal Server Error | ProblemDetails |
Schemas
Account
{
"plan": "string",
"credit_limit": 0,
"credit_remaining": 0,
"created_date": "2019-08-24T14:15:22Z",
"period_start_date": "2019-08-24T14:15:22Z",
"period_end_date": "2019-08-24T14:15:22Z"
}
Properties
Name | Type | Required | Description |
---|---|---|---|
plan | string | true | none |
credit_limit | integer(int32) | true | none |
credit_remaining | integer(int32) | true | none |
created_date | string(date-time) | true | none |
period_start_date | string(date-time) | true | none |
period_end_date | string(date-time) | true | none |
JobType
"malware"
Enumerated Values
Value |
---|
malware |
nsfw_image |
nsfw_text |
ProblemDetails
{
"type": "string",
"title": "string",
"status": 0,
"detail": "string",
"instance": "string",
"property1": null,
"property2": null
}
Properties
Name | Type | Required | Description |
---|---|---|---|
additionalProperties | any | false | none |
type | string¦null | false | none |
title | string¦null | false | none |
status | integer(int32)¦null | false | none |
detail | string¦null | false | none |
instance | string¦null | false | none |
ScanReceipt
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08"
}
Properties
Name | Type | Required | Description |
---|---|---|---|
id | string(uuid) | true | none |
ScanResult
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"scan_type": "malware",
"status": "pending",
"content_length": 0,
"content_type": "string",
"signals": [
"string"
],
"metadata": {
"property1": "string",
"property2": "string"
},
"created_at": "2019-08-24T14:15:22Z",
"completed_at": "2019-08-24T14:15:22Z"
}
Properties
Name | Type | Required | Description |
---|---|---|---|
id | string(uuid) | true | none |
scan_type | JobType | true | none |
status | ScanResultType | true | none |
content_length | integer(int64) | true | Size of the scanned content, in bytes |
content_type | string | true | The detected media type, determined by inspecting file content, e.g. application/gzip |
signals | [string]¦null | false | none |
metadata | object¦null | false | Content metadata, including SHA-1 and SHA-256 hashes |
» additionalProperties | string | false | none |
created_at | string(date-time) | true | Time when the Job was first submitted |
completed_at | string(date-time)¦null | false | Time when the Job was completed (whether it resulted in an error or not) |
ScanResultType
"pending"
Enumerated Values
Value |
---|
pending |
clean |
threat |
error |
ScanUrlCommand
{
"file_url": "https://www.example.com/my-file",
"file_name": "my-file.docx"
}
Properties
Name | Type | Required | Description |
---|---|---|---|
file_url | string | true | none |
file_name | string¦null | false | none |
SubmitUrlCommand
{
"file_url": "https://www.example.com/my-file",
"file_name": "my-file.docx",
"callback_url": "https://www.example.com/webhook"
}
Properties
Name | Type | Required | Description |
---|---|---|---|
file_url | string | true | none |
file_name | string¦null | false | none |
callback_url | string¦null | false | none |
ValidationProblemDetails
{
"type": "string",
"title": "string",
"status": 0,
"detail": "string",
"instance": "string",
"errors": {
"property1": [
"string"
],
"property2": [
"string"
]
},
"property1": null,
"property2": null
}
Properties
Name | Type | Required | Description |
---|---|---|---|
additionalProperties | any | false | none |
type | string¦null | false | none |
title | string¦null | false | none |
status | integer(int32)¦null | false | none |
detail | string¦null | false | none |
instance | string¦null | false | none |
errors | object | false | none |
» additionalProperties | [string] | false | none |