{"componentChunkName":"component---src-templates-docs-template-js","path":"/customers/metadata-fields-reference","result":{"data":{"allMarkdownRemark":{"edges":[{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/customers/api/polyswarm-customer-api-v3.md","frontmatter":{"title":"PolySwarm Customer API v3","excerpt":"An interface to the version 3 PolySwarm customer APIs..."},"html":"<h1 id=\"polyswarm-customer-api-v3\" style=\"position:relative;\"><a href=\"#polyswarm-customer-api-v3\" aria-label=\"polyswarm customer api v3 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>PolySwarm Customer API v3</h1>\n<p>A Python interface for interacting with version 3 of the PolySwarm Customer APIs.</p>\n<p>Supports Python 3.10 and greater.</p>\n<h2 id=\"getting-started\" style=\"position:relative;\"><a href=\"#getting-started\" aria-label=\"getting started permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Getting Started</h2>\n<h3 id=\"installation\" style=\"position:relative;\"><a href=\"#installation\" aria-label=\"installation permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Installation</h3>\n<p>From PyPI:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ pip <span class=\"token function\">install</span> polyswarm_api</code></pre></div>\n<blockquote>\n<p>If you get an error about a missing package named <code class=\"language-text\">wheel</code>, that means your version of pip is too old.\nYou need pip version 19 or newer.\nTo update pip, run <code class=\"language-text\">pip install -U pip</code>.</p>\n</blockquote>\n<p>From source:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ python setup.py <span class=\"token function\">install</span></code></pre></div>\n<blockquote>\n<p>If you get an error about a missing package named <code class=\"language-text\">wheel</code>, that means your version of setuptools is too old.\nYou need setuptools version 40.8.0 or newer.\nTo update setuptools, run <code class=\"language-text\">pip install -U setuptools</code>.</p>\n</blockquote>\n<h3 id=\"creating-api-client\" style=\"position:relative;\"><a href=\"#creating-api-client\" aria-label=\"creating api client permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Creating an API Client</h3>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">from</span> polyswarm_api<span class=\"token punctuation\">.</span>api <span class=\"token keyword\">import</span> PolyswarmAPI\n\napi_key <span class=\"token operator\">=</span> <span class=\"token string\">\"1234123412341234123412341234\"</span>\ncommunity_name <span class=\"token operator\">=</span> <span class=\"token string\">\"default\"</span>\napi <span class=\"token operator\">=</span> PolyswarmAPI<span class=\"token punctuation\">(</span>key<span class=\"token operator\">=</span>api_key<span class=\"token punctuation\">,</span> community<span class=\"token operator\">=</span>community_name<span class=\"token punctuation\">)</span></code></pre></div>\n<p>Locate the <code class=\"language-text\">api_key</code> for the User/Team from <a href=\"https://polyswarm.network/account/api-keys\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">here</a></p>\n<blockquote>\n<p>If the Subscription plan has <strong>\"Private Communities\"</strong> then Define the Private Community Name provided to you by PolySwarm in the <code class=\"language-text\">community_name</code> value above and the Team API key in the <code class=\"language-text\">api_key</code> field.</p>\n</blockquote>\n<h3 id=\"retrieve-account-information\" style=\"position:relative;\"><a href=\"#retrieve-account-information\" aria-label=\"retrieve account information permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Retrieve account information</h3>\n<table>\n<thead>\n<tr>\n<th>Feature</th>\n<th>What is it for?</th>\n<th>Package</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Account Details</td>\n<td>Retrieve account number and the teams you belong to.</td>\n<td><code class=\"language-text\">api.account_whois()</code></td>\n</tr>\n<tr>\n<td>Account features and quotas</td>\n<td>Retrieve enabled features, plan period, and daily API quota.</td>\n<td><code class=\"language-text\">api.account_features()</code></td>\n</tr>\n</tbody>\n</table>\n<h6 id=\"account-details\" style=\"position:relative;\"><a href=\"#account-details\" aria-label=\"account details permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Account Details</h6>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">whois <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>account_whois<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Account number: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>whois<span class=\"token punctuation\">.</span>account_number<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span></code></pre></div>\n<h6 id=\"account-features-and-quotas\" style=\"position:relative;\"><a href=\"#account-features-and-quotas\" aria-label=\"account features and quotas permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Account Features and Quotas</h6>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">features <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>account_features<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Plan: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>features<span class=\"token punctuation\">.</span>account_plan_name<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Plan window: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>features<span class=\"token punctuation\">.</span>plan_period_start<span class=\"token punctuation\">}</span></span><span class=\"token string\"> → </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>features<span class=\"token punctuation\">.</span>plan_period_end<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Daily API limit: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>features<span class=\"token punctuation\">.</span>daily_api_limit<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Daily API remaining: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>features<span class=\"token punctuation\">.</span>daily_api_remaining<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Stream access: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>features<span class=\"token punctuation\">.</span>has_stream_access<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Trial: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>features<span class=\"token punctuation\">.</span>is_trial<span class=\"token punctuation\">}</span></span><span class=\"token string\"> (expired: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>features<span class=\"token punctuation\">.</span>is_trial_expired<span class=\"token punctuation\">}</span></span><span class=\"token string\">)'</span></span><span class=\"token punctuation\">)</span></code></pre></div>\n<blockquote>\n<p>Use <code class=\"language-text\">daily_api_remaining</code> to back off gracefully before hitting the daily quota.\nIf you need higher limits or stream access, contact sales@polyswarm.io.</p>\n</blockquote>\n<h2 id=\"scanning-artifact\" style=\"position:relative;\"><a href=\"#scanning-artifact\" aria-label=\"scanning artifact permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Scanning an Artifact</h2>\n<table>\n<thead>\n<tr>\n<th>Feature</th>\n<th>What is it for?</th>\n<th>Package</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Scan File</td>\n<td>Scan a File in the PolySwarm network to retrieve a verdict.</td>\n<td><code class=\"language-text\">api.submit()</code></td>\n</tr>\n<tr>\n<td>Scan URL</td>\n<td>Scan a URL in the PolySwarm network to retrieve a verdict.</td>\n<td><code class=\"language-text\">api.submit(URL, artifact_type='url')</code></td>\n</tr>\n</tbody>\n</table>\n<h6 id=\"scan-a-file\" style=\"position:relative;\"><a href=\"#scan-a-file\" aria-label=\"scan a file permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Scan a File</h6>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">FILE <span class=\"token operator\">=</span> <span class=\"token string\">'/home/user/malicious.bin'</span>\n\npositives <span class=\"token operator\">=</span> <span class=\"token number\">0</span>\ntotal <span class=\"token operator\">=</span> <span class=\"token number\">0</span>\n\ninstance <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>submit<span class=\"token punctuation\">(</span>FILE<span class=\"token punctuation\">)</span>\nresult <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>wait_for<span class=\"token punctuation\">(</span>instance<span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">if</span> result<span class=\"token punctuation\">.</span>failed<span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Failed to get results'</span></span><span class=\"token punctuation\">)</span>\n    sys<span class=\"token punctuation\">.</span>exit<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">'Engine Assertions:'</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">for</span> assertion <span class=\"token keyword\">in</span> result<span class=\"token punctuation\">.</span>assertions<span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">if</span> assertion<span class=\"token punctuation\">.</span>verdict<span class=\"token punctuation\">:</span>\n        positives <span class=\"token operator\">+=</span> <span class=\"token number\">1</span>\n    total <span class=\"token operator\">+=</span> <span class=\"token number\">1</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">'\\tEngine {} asserts {}'</span><span class=\"token punctuation\">.</span>\\\n            <span class=\"token builtin\">format</span><span class=\"token punctuation\">(</span>assertion<span class=\"token punctuation\">.</span>author_name<span class=\"token punctuation\">,</span>\n                   <span class=\"token string\">'Malicious'</span> <span class=\"token keyword\">if</span> assertion<span class=\"token punctuation\">.</span>verdict <span class=\"token keyword\">else</span> <span class=\"token string\">'Benign'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Positives: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>positives<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Total: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>total<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'PolyScore: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>result<span class=\"token punctuation\">.</span>polyscore<span class=\"token punctuation\">}</span></span><span class=\"token string\">\\n'</span></span><span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'sha256: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>result<span class=\"token punctuation\">.</span>sha256<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'sha1: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>result<span class=\"token punctuation\">.</span>sha1<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'md5: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>result<span class=\"token punctuation\">.</span>md5<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Extended type: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>result<span class=\"token punctuation\">.</span>extended_type<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'First Seen: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>result<span class=\"token punctuation\">.</span>first_seen<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Last Seen: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>result<span class=\"token punctuation\">.</span>last_seen<span class=\"token punctuation\">}</span></span><span class=\"token string\">\\n'</span></span><span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Permalink: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>result<span class=\"token punctuation\">.</span>permalink<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span></code></pre></div>\n<p>Here is another example of sending a sample inside a zip file that is protected with a password <code class=\"language-text\">infected</code>:</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">result <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>submit<span class=\"token punctuation\">(</span><span class=\"token string\">'./malicious-enc.zip'</span><span class=\"token punctuation\">,</span>\n                    preprocessing<span class=\"token operator\">=</span><span class=\"token punctuation\">{</span><span class=\"token string\">'type'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'zip'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'password'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'infected'</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>result<span class=\"token punctuation\">.</span>status<span class=\"token punctuation\">)</span></code></pre></div>\n<h6 id=\"scan-a-url\" style=\"position:relative;\"><a href=\"#scan-a-url\" aria-label=\"scan a url permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Scan a URL</h6>\n<blockquote>\n<p>When scanning a URL, you should always include the protocol (<code class=\"language-text\">http://</code> or <code class=\"language-text\">https://</code>).</p>\n</blockquote>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">URL <span class=\"token operator\">=</span> <span class=\"token string\">'https://polyswarm.io'</span>\n\npositives <span class=\"token operator\">=</span> <span class=\"token number\">0</span>\ntotal <span class=\"token operator\">=</span> <span class=\"token number\">0</span>\n\ninstance <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>submit<span class=\"token punctuation\">(</span>URL<span class=\"token punctuation\">,</span> artifact_type<span class=\"token operator\">=</span><span class=\"token string\">'url'</span><span class=\"token punctuation\">)</span>\nresult <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>wait_for<span class=\"token punctuation\">(</span>instance<span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">if</span> result<span class=\"token punctuation\">.</span>failed<span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Failed to get results'</span></span><span class=\"token punctuation\">)</span>\n    sys<span class=\"token punctuation\">.</span>exit<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">'Engine Assertions:'</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">for</span> assertion <span class=\"token keyword\">in</span> result<span class=\"token punctuation\">.</span>assertions<span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">if</span> assertion<span class=\"token punctuation\">.</span>verdict<span class=\"token punctuation\">:</span>\n        positives <span class=\"token operator\">+=</span> <span class=\"token number\">1</span>\n    total <span class=\"token operator\">+=</span> <span class=\"token number\">1</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">'\\tEngine {} asserts {}'</span><span class=\"token punctuation\">.</span>\\\n            <span class=\"token builtin\">format</span><span class=\"token punctuation\">(</span>assertion<span class=\"token punctuation\">.</span>author_name<span class=\"token punctuation\">,</span>\n                   <span class=\"token string\">'Malicious'</span> <span class=\"token keyword\">if</span> assertion<span class=\"token punctuation\">.</span>verdict <span class=\"token keyword\">else</span> <span class=\"token string\">'Benign'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Positives: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>positives<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Total: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>total<span class=\"token punctuation\">}</span></span><span class=\"token string\">\\n'</span></span><span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Permalink: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>result<span class=\"token punctuation\">.</span>permalink<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span></code></pre></div>\n<p>The Scanning endpoint has options available to extend the scan time, for urls this should always be <code class=\"language-text\">most-time</code>.</p>\n<table>\n<thead>\n<tr>\n<th>Option</th>\n<th>Value</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">scan_config</code></td>\n<td><code class=\"language-text\">default</code></td>\n<td>25 second scan window</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">scan_config</code></td>\n<td><code class=\"language-text\">more-time</code></td>\n<td>50 second scan window</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">scan_config</code></td>\n<td><code class=\"language-text\">most-time</code></td>\n<td>100 second scan window</td>\n</tr>\n</tbody>\n</table>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">instance <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>submit<span class=\"token punctuation\">(</span>URL<span class=\"token punctuation\">,</span> artifact_type<span class=\"token operator\">=</span><span class=\"token string\">'url'</span><span class=\"token punctuation\">,</span> scan_config<span class=\"token operator\">=</span><span class=\"token string\">'most-time'</span><span class=\"token punctuation\">)</span>\nresult <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>wait_for<span class=\"token punctuation\">(</span>instance<span class=\"token punctuation\">)</span></code></pre></div>\n<h2 id=\"rescanning-artifacts\" style=\"position:relative;\"><a href=\"#rescanning-artifacts\" aria-label=\"rescanning artifacts permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Rescanning Artifacts</h2>\n<table>\n<thead>\n<tr>\n<th>Feature</th>\n<th>What is it for?</th>\n<th>Package</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Rescan</td>\n<td>Rescan an Artifact to provide up to date verdict and analysis</td>\n<td><code class=\"language-text\">api.rescan()</code></td>\n</tr>\n</tbody>\n</table>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">instance <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>rescan<span class=\"token punctuation\">(</span><span class=\"token string\">\"275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f\"</span><span class=\"token punctuation\">)</span>\nresult <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>wait_for<span class=\"token punctuation\">(</span>instance<span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">if</span> result<span class=\"token punctuation\">.</span>failed<span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Failed to get results'</span></span><span class=\"token punctuation\">)</span>\n    sys<span class=\"token punctuation\">.</span>exit<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n\npositives <span class=\"token operator\">=</span> <span class=\"token number\">0</span>\ntotal <span class=\"token operator\">=</span> <span class=\"token number\">0</span>\n\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">'Engine Assertions:'</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">for</span> assertion <span class=\"token keyword\">in</span> result<span class=\"token punctuation\">.</span>assertions<span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">if</span> assertion<span class=\"token punctuation\">.</span>verdict<span class=\"token punctuation\">:</span>\n        positives <span class=\"token operator\">+=</span> <span class=\"token number\">1</span>\n    total <span class=\"token operator\">+=</span> <span class=\"token number\">1</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">'\\tEngine {} asserts {}'</span><span class=\"token punctuation\">.</span>\\\n            <span class=\"token builtin\">format</span><span class=\"token punctuation\">(</span>assertion<span class=\"token punctuation\">.</span>author_name<span class=\"token punctuation\">,</span>\n                   <span class=\"token string\">'Malicious'</span> <span class=\"token keyword\">if</span> assertion<span class=\"token punctuation\">.</span>verdict <span class=\"token keyword\">else</span> <span class=\"token string\">'Benign'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Positives: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>positives<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Total: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>total<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'PolyScore: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>result<span class=\"token punctuation\">.</span>polyscore<span class=\"token punctuation\">}</span></span><span class=\"token string\">\\n'</span></span><span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'sha256: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>result<span class=\"token punctuation\">.</span>sha256<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'sha1: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>result<span class=\"token punctuation\">.</span>sha1<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'md5: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>result<span class=\"token punctuation\">.</span>md5<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Extended type: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>result<span class=\"token punctuation\">.</span>extended_type<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'First Seen: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>result<span class=\"token punctuation\">.</span>first_seen<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Last Seen: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>result<span class=\"token punctuation\">.</span>last_seen<span class=\"token punctuation\">}</span></span><span class=\"token string\">\\n'</span></span><span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Permalink: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>result<span class=\"token punctuation\">.</span>permalink<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span></code></pre></div>\n<h2 id=\"downloading-artifacts\" style=\"position:relative;\"><a href=\"#downloading-artifacts\" aria-label=\"downloading artifacts permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Downloading Artifacts</h2>\n<table>\n<thead>\n<tr>\n<th>Feature</th>\n<th>What is it for?</th>\n<th>Package</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Download Artifact</td>\n<td>Download the file locally by searching with a hash value</td>\n<td><code class=\"language-text\">api.download()</code></td>\n</tr>\n</tbody>\n</table>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">OUTPUT_DIR <span class=\"token operator\">=</span> <span class=\"token string\">'/tmp/'</span>\nEICAR_HASH <span class=\"token operator\">=</span> <span class=\"token string\">'275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f'</span>\n\nartifact <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>download<span class=\"token punctuation\">(</span>OUTPUT_DIR<span class=\"token punctuation\">,</span> EICAR_HASH<span class=\"token punctuation\">)</span></code></pre></div>\n<h2 id=\"downloading-bundles\" style=\"position:relative;\"><a href=\"#downloading-bundles\" aria-label=\"downloading bundles permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Downloading Bundles</h2>\n<p>This provides the ability to 'bundle' selected items together into a single zip file for easy collection. This is a three step process.</p>\n<ul>\n<li>Create the bundle</li>\n<li>Get the bundle status, wait for it to be built</li>\n<li>Download the bundle</li>\n</ul>\n<table>\n<thead>\n<tr>\n<th>Feature</th>\n<th>What is it for?</th>\n<th>Package</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Create Bundle</td>\n<td>Create the bundle based of the instance_id values of the items in the bundle.</td>\n<td><code class=\"language-text\">api.sample_bundle_task_create()</code></td>\n</tr>\n<tr>\n<td>Get Bundle</td>\n<td>Get the status of the bundle creation, wait for <code class=\"language-text\">State: SUCCEEDED</code> before continuing.</td>\n<td><code class=\"language-text\">api.sample_bundle_task_get()</code></td>\n</tr>\n<tr>\n<td>Download Bundle</td>\n<td>Download the bundle.</td>\n<td><code class=\"language-text\">api.sample_bundle_download()</code></td>\n</tr>\n</tbody>\n</table>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">task <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>sample_bundle_task_create<span class=\"token punctuation\">(</span><span class=\"token punctuation\">[</span><span class=\"token string\">'51375268900310741'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> preserve_filenames<span class=\"token operator\">=</span><span class=\"token boolean\">False</span><span class=\"token punctuation\">,</span> filename<span class=\"token operator\">=</span><span class=\"token string\">'bundle-archive'</span><span class=\"token punctuation\">)</span>\ntask_id <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>sample_bundle_task_get<span class=\"token punctuation\">(</span>task<span class=\"token punctuation\">.</span><span class=\"token builtin\">id</span><span class=\"token punctuation\">)</span>\napi<span class=\"token punctuation\">.</span>sample_bundle_download<span class=\"token punctuation\">(</span>task_id<span class=\"token punctuation\">,</span> <span class=\"token string\">'/download/bundles/'</span><span class=\"token punctuation\">)</span></code></pre></div>\n<h2 id=\"report\" style=\"position:relative;\"><a href=\"#report\" aria-label=\"report permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Reporting</h2>\n<table>\n<thead>\n<tr>\n<th>Feature</th>\n<th>What is it for?</th>\n<th>Package</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Create report</td>\n<td>Create a report in html or pdf for an artifact, this endpoint is also used to create a zip file of sandbox artifacts.</td>\n<td><code class=\"language-text\">api.report_create()</code></td>\n</tr>\n<tr>\n<td>Get report status</td>\n<td>Retrieve the report creation status</td>\n<td><code class=\"language-text\">api.report_get()</code></td>\n</tr>\n<tr>\n<td>Download report</td>\n<td>Download the finished report locally</td>\n<td><code class=\"language-text\">api.report_download()</code></td>\n</tr>\n<tr>\n<td>List templates</td>\n<td>List the templates</td>\n<td><code class=\"language-text\">api.report_template_list()</code></td>\n</tr>\n<tr>\n<td>Create a template</td>\n<td>Create a new template</td>\n<td><code class=\"language-text\">api.report_template_create()</code></td>\n</tr>\n<tr>\n<td>Delete a template</td>\n<td>Delete a template</td>\n<td><code class=\"language-text\">api.report_template_delete()</code></td>\n</tr>\n<tr>\n<td>Get template details</td>\n<td>View specific template</td>\n<td><code class=\"language-text\">api.report_template_get()</code></td>\n</tr>\n<tr>\n<td>Update template</td>\n<td>Update a current template</td>\n<td><code class=\"language-text\">api.report_template_update()</code></td>\n</tr>\n<tr>\n<td>Update template logo</td>\n<td>Upload a logo for template</td>\n<td><code class=\"language-text\">api.report_template_logo_update()</code></td>\n</tr>\n<tr>\n<td>Delete template logo</td>\n<td>Delete a logo for a template</td>\n<td><code class=\"language-text\">api.report_template_logo_delete()</code></td>\n</tr>\n<tr>\n<td>Download template logo</td>\n<td>Download a logo from the template</td>\n<td><code class=\"language-text\">api.report_template_logo_download()</code></td>\n</tr>\n</tbody>\n</table>\n<h6 id=\"create-report\" style=\"position:relative;\"><a href=\"#create-report\" aria-label=\"create report permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Create report</h6>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">report <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>report_create<span class=\"token punctuation\">(</span><span class=\"token builtin\">type</span><span class=\"token operator\">=</span><span class=\"token string\">'scan'</span><span class=\"token punctuation\">,</span> <span class=\"token builtin\">format</span><span class=\"token operator\">=</span><span class=\"token string\">'pdf'</span><span class=\"token punctuation\">,</span> instance_id<span class=\"token operator\">=</span>instance_id<span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Report ID: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>report<span class=\"token punctuation\">.</span><span class=\"token builtin\">id</span><span class=\"token punctuation\">}</span></span><span class=\"token string\"> (State: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>report<span class=\"token punctuation\">.</span>state<span class=\"token punctuation\">}</span></span><span class=\"token string\">)'</span></span><span class=\"token punctuation\">)</span>\n\n<span class=\"token comment\"># `report_wait_for()` is a method to fetch the report progress over</span>\n<span class=\"token comment\"># and over until is not in PENDING state anymore</span>\nreport <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>report_wait_for<span class=\"token punctuation\">(</span>report<span class=\"token punctuation\">.</span><span class=\"token builtin\">id</span><span class=\"token punctuation\">,</span> timeout<span class=\"token operator\">=</span>timeout_seconds<span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">if</span> report<span class=\"token punctuation\">.</span>state <span class=\"token operator\">==</span> <span class=\"token string\">'SUCCEEDED'</span><span class=\"token punctuation\">:</span>\n    response <span class=\"token operator\">=</span> requests<span class=\"token punctuation\">.</span>get<span class=\"token punctuation\">(</span>report<span class=\"token punctuation\">.</span>url<span class=\"token punctuation\">,</span> stream<span class=\"token operator\">=</span><span class=\"token boolean\">True</span><span class=\"token punctuation\">)</span>\n    response<span class=\"token punctuation\">.</span>raise_for_status<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">with</span> <span class=\"token builtin\">open</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'scan-</span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>instance_id<span class=\"token punctuation\">}</span></span><span class=\"token string\">.pdf'</span></span><span class=\"token punctuation\">,</span> <span class=\"token string\">'wb'</span><span class=\"token punctuation\">)</span> <span class=\"token keyword\">as</span> f<span class=\"token punctuation\">:</span>\n        response<span class=\"token punctuation\">.</span>raw<span class=\"token punctuation\">.</span>decode_content <span class=\"token operator\">=</span> <span class=\"token boolean\">True</span>\n        shutil<span class=\"token punctuation\">.</span>copyfileobj<span class=\"token punctuation\">(</span>response<span class=\"token punctuation\">.</span>raw<span class=\"token punctuation\">,</span> f<span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">else</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Report failed (State: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>report<span class=\"token punctuation\">.</span>state<span class=\"token punctuation\">}</span></span><span class=\"token string\">)'</span></span><span class=\"token punctuation\">)</span></code></pre></div>\n<h6 id=\"create-a-zip-file-of-sandbox-artifacts\" style=\"position:relative;\"><a href=\"#create-a-zip-file-of-sandbox-artifacts\" aria-label=\"create a zip file of sandbox artifacts permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Create a ZIP file of Sandbox Artifacts</h6>\n<p>The <code class=\"language-text\">template_metadata</code> value can contain one or many separated by commas of: <code class=\"language-text\">report</code> , <code class=\"language-text\">raw_report</code> , <code class=\"language-text\">screenshot</code> , <code class=\"language-text\">recording</code> , <code class=\"language-text\">dropped_file</code> , <code class=\"language-text\">memory_dump</code> , <code class=\"language-text\">pcap</code> or <code class=\"language-text\">jarm</code>.</p>\n<p>The below example highlights how to download a zip file that contains the following sandbox files: pdf report, report, raw_report, screenshot and jarm.</p>\n<p>The <code class=\"language-text\">sandbox_task_id</code> is the ID for the sandbox session that you wish to download the files from.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">report <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>report_create<span class=\"token punctuation\">(</span><span class=\"token builtin\">type</span><span class=\"token operator\">=</span><span class=\"token string\">'sandbox_zip'</span><span class=\"token punctuation\">,</span> <span class=\"token builtin\">format</span><span class=\"token operator\">=</span><span class=\"token string\">'zip'</span><span class=\"token punctuation\">,</span> sandbox_task_id<span class=\"token operator\">=</span><span class=\"token number\">123456</span><span class=\"token punctuation\">,</span> template_metadata<span class=\"token operator\">=</span><span class=\"token punctuation\">{</span><span class=\"token string\">'zip_report_ids'</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">[</span><span class=\"token number\">123</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'sandbox_artifact_types'</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">[</span><span class=\"token string\">'report'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'raw_report'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'screenshot'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'jarm'</span><span class=\"token punctuation\">]</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span></code></pre></div>\n<h6 id=\"create-llm-report\" style=\"position:relative;\"><a href=\"#create-llm-report\" aria-label=\"create llm report permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Create LLM Report</h6>\n<p>LLM reports are AI-generated reports created from scan and/or sandbox analysis results. You can provide an <code class=\"language-text\">instance_id</code> (from a scan), a <code class=\"language-text\">cape_sandbox_task_id</code> (from a Cape sandbox session), a <code class=\"language-text\">triage_sandbox_task_id</code> (from a Triage sandbox session), or any combination of these.</p>\n<p>For this to work, the team plan must include access to <code class=\"language-text\">downloads</code>. This feature consumes one unit from the PolySwarm Intelligence quota per report generated, which covers both the create and download steps.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token comment\"># Create LLM report from a scan result</span>\nllm_report <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>llm_report_create<span class=\"token punctuation\">(</span>instance_id<span class=\"token operator\">=</span>instance_id<span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'LLM Report ID: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>llm_report<span class=\"token punctuation\">.</span><span class=\"token builtin\">id</span><span class=\"token punctuation\">}</span></span><span class=\"token string\"> (State: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>llm_report<span class=\"token punctuation\">.</span>state<span class=\"token punctuation\">}</span></span><span class=\"token string\">)'</span></span><span class=\"token punctuation\">)</span>\n\n<span class=\"token comment\"># Or create LLM report from a Cape sandbox result</span>\nllm_report <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>llm_report_create<span class=\"token punctuation\">(</span>cape_sandbox_task_id<span class=\"token operator\">=</span>cape_sandbox_task_id<span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'LLM Report ID: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>llm_report<span class=\"token punctuation\">.</span><span class=\"token builtin\">id</span><span class=\"token punctuation\">}</span></span><span class=\"token string\"> (State: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>llm_report<span class=\"token punctuation\">.</span>state<span class=\"token punctuation\">}</span></span><span class=\"token string\">)'</span></span><span class=\"token punctuation\">)</span>\n\n<span class=\"token comment\"># Or create LLM report from a Triage sandbox result</span>\nllm_report <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>llm_report_create<span class=\"token punctuation\">(</span>triage_sandbox_task_id<span class=\"token operator\">=</span>triage_sandbox_task_id<span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'LLM Report ID: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>llm_report<span class=\"token punctuation\">.</span><span class=\"token builtin\">id</span><span class=\"token punctuation\">}</span></span><span class=\"token string\"> (State: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>llm_report<span class=\"token punctuation\">.</span>state<span class=\"token punctuation\">}</span></span><span class=\"token string\">)'</span></span><span class=\"token punctuation\">)</span>\n\n<span class=\"token comment\"># Or create LLM report combining Cape and Triage sandbox results (optionally with a scan)</span>\nllm_report <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>llm_report_create<span class=\"token punctuation\">(</span>cape_sandbox_task_id<span class=\"token operator\">=</span>cape_sandbox_task_id<span class=\"token punctuation\">,</span> triage_sandbox_task_id<span class=\"token operator\">=</span>triage_sandbox_task_id<span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'LLM Report ID: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>llm_report<span class=\"token punctuation\">.</span><span class=\"token builtin\">id</span><span class=\"token punctuation\">}</span></span><span class=\"token string\"> (State: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>llm_report<span class=\"token punctuation\">.</span>state<span class=\"token punctuation\">}</span></span><span class=\"token string\">)'</span></span><span class=\"token punctuation\">)</span></code></pre></div>\n<h6 id=\"get-llm-report-status\" style=\"position:relative;\"><a href=\"#get-llm-report-status\" aria-label=\"get llm report status permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Get LLM Report Status</h6>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">llm_report <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>llm_report_get<span class=\"token punctuation\">(</span>report_task_id<span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'LLM Report State: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>llm_report<span class=\"token punctuation\">.</span>state<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'LLM Report ID: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>llm_report<span class=\"token punctuation\">.</span><span class=\"token builtin\">id</span><span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span></code></pre></div>\n<h6 id=\"download-llm-report\" style=\"position:relative;\"><a href=\"#download-llm-report\" aria-label=\"download llm report permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Download LLM Report</h6>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">result <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>llm_report_download<span class=\"token punctuation\">(</span>report_task_id<span class=\"token punctuation\">,</span> <span class=\"token string\">'/download/reports/'</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>result<span class=\"token punctuation\">)</span></code></pre></div>\n<h6 id=\"list-templates\" style=\"position:relative;\"><a href=\"#list-templates\" aria-label=\"list templates permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>List Templates</h6>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">results <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>report_template_list<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">for</span> template <span class=\"token keyword\">in</span> results<span class=\"token punctuation\">:</span>\n   <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'ID: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>template<span class=\"token punctuation\">.</span><span class=\"token builtin\">id</span><span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n   <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Created: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>template<span class=\"token punctuation\">.</span>created<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n   <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Name: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>template<span class=\"token punctuation\">.</span>template_name<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n   <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Color: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>template<span class=\"token punctuation\">.</span>primary_color<span class=\"token punctuation\">}</span></span><span class=\"token string\">\\n'</span></span><span class=\"token punctuation\">)</span></code></pre></div>\n<h6 id=\"create-a-template\" style=\"position:relative;\"><a href=\"#create-a-template\" aria-label=\"create a template permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Create a template</h6>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">result <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>report_template_create<span class=\"token punctuation\">(</span>template_name<span class=\"token operator\">=</span><span class=\"token string\">'testreport1'</span><span class=\"token punctuation\">)</span></code></pre></div>\n<h6 id=\"delete-a-template\" style=\"position:relative;\"><a href=\"#delete-a-template\" aria-label=\"delete a template permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Delete a template</h6>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">result <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>report_template_delete<span class=\"token punctuation\">(</span><span class=\"token number\">98453877554394669</span><span class=\"token punctuation\">)</span></code></pre></div>\n<h6 id=\"get-template-details\" style=\"position:relative;\"><a href=\"#get-template-details\" aria-label=\"get template details permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Get template details</h6>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">result <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>report_template_get<span class=\"token punctuation\">(</span><span class=\"token number\">95389624286242180</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'ID: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>result<span class=\"token punctuation\">.</span><span class=\"token builtin\">id</span><span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Created: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>result<span class=\"token punctuation\">.</span>created<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Name: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>result<span class=\"token punctuation\">.</span>template_name<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Color: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>result<span class=\"token punctuation\">.</span>primary_color<span class=\"token punctuation\">}</span></span><span class=\"token string\">\\n'</span></span><span class=\"token punctuation\">)</span></code></pre></div>\n<h2 id=\"hash-searching\" style=\"position:relative;\"><a href=\"#hash-searching\" aria-label=\"hash searching permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Hash Searching</h2>\n<table>\n<thead>\n<tr>\n<th>Feature</th>\n<th>What is it for?</th>\n<th>Package</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Search</td>\n<td>Search the polyswarm dataset with a hash (sha256,md5 or sha1) value</td>\n<td><code class=\"language-text\">api.search()</code></td>\n</tr>\n</tbody>\n</table>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token comment\"># sha256, md5, and sha1 supported</span>\nEICAR_HASH <span class=\"token operator\">=</span> <span class=\"token string\">'275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f'</span>\n\npositives <span class=\"token operator\">=</span> <span class=\"token number\">0</span>\ntotal <span class=\"token operator\">=</span> <span class=\"token number\">0</span>\n\n<span class=\"token keyword\">try</span><span class=\"token punctuation\">:</span>\n    results <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>search<span class=\"token punctuation\">(</span>EICAR_HASH<span class=\"token punctuation\">)</span>\n\n    <span class=\"token keyword\">for</span> result <span class=\"token keyword\">in</span> results<span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">if</span> result<span class=\"token punctuation\">.</span>failed<span class=\"token punctuation\">:</span>\n            <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Failed to get result.'</span></span><span class=\"token punctuation\">)</span>\n            <span class=\"token keyword\">break</span>\n\n        <span class=\"token keyword\">if</span> <span class=\"token keyword\">not</span> result<span class=\"token punctuation\">.</span>assertions<span class=\"token punctuation\">:</span>\n            <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">'Artifact not scanned yet - Run rescan for Engine Assertions.'</span><span class=\"token punctuation\">)</span>\n        <span class=\"token keyword\">else</span><span class=\"token punctuation\">:</span>\n            <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">'Engine Assertions:'</span><span class=\"token punctuation\">)</span>\n\n            <span class=\"token keyword\">for</span> assertion <span class=\"token keyword\">in</span> result<span class=\"token punctuation\">.</span>assertions<span class=\"token punctuation\">:</span>\n                <span class=\"token keyword\">if</span> assertion<span class=\"token punctuation\">.</span>verdict<span class=\"token punctuation\">:</span>\n                    positives <span class=\"token operator\">+=</span> <span class=\"token number\">1</span>\n                total <span class=\"token operator\">+=</span> <span class=\"token number\">1</span>\n                <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">'\\tEngine {} asserts {}'</span><span class=\"token punctuation\">.</span> \\\n                      <span class=\"token builtin\">format</span><span class=\"token punctuation\">(</span>assertion<span class=\"token punctuation\">.</span>author_name<span class=\"token punctuation\">,</span>\n                             <span class=\"token string\">'Malicious'</span> <span class=\"token keyword\">if</span> assertion<span class=\"token punctuation\">.</span>verdict <span class=\"token keyword\">else</span> <span class=\"token string\">'Benign'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\n        <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Positives: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>positives<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n        <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Total: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>total<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n        <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'PolyScore: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>result<span class=\"token punctuation\">.</span>polyscore<span class=\"token punctuation\">}</span></span><span class=\"token string\">\\n'</span></span><span class=\"token punctuation\">)</span>\n\n        <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'sha256: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>result<span class=\"token punctuation\">.</span>sha256<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n        <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'sha1: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>result<span class=\"token punctuation\">.</span>sha1<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n        <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'md5: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>result<span class=\"token punctuation\">.</span>md5<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n        <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Extended type: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>result<span class=\"token punctuation\">.</span>extended_type<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n        <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'First Seen: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>result<span class=\"token punctuation\">.</span>first_seen<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n        <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Last Seen: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>result<span class=\"token punctuation\">.</span>last_seen<span class=\"token punctuation\">}</span></span><span class=\"token string\">\\n'</span></span><span class=\"token punctuation\">)</span>\n\n        <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Permalink: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>result<span class=\"token punctuation\">.</span>permalink<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">except</span> exceptions<span class=\"token punctuation\">.</span>NoResultsException<span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'No results for the provided hash.'</span></span><span class=\"token punctuation\">)</span></code></pre></div>\n<h2 id=\"metadata-searching\" style=\"position:relative;\"><a href=\"#metadata-searching\" aria-label=\"metadata searching permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Metadata Searching</h2>\n<p>PolySwarm's Metadata Search is a powerful and flexible means to discover previously unknown malware. Metadata commands can be built and fed into the arguments for the below api endpoint.\nTo understand how to build out a Metadata query see the <a href=\"/customers/polyswarm-customer-meta-query/#meta-getting-started\">How-To Guide</a>.</p>\n<table>\n<thead>\n<tr>\n<th>Feature</th>\n<th>What is it for?</th>\n<th>Package</th>\n<th>Parameters</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Search</td>\n<td>Search the polyswarm dataset for metadata</td>\n<td><code class=\"language-text\">api.search_by_metadata()</code></td>\n<td>include, exclude</td>\n</tr>\n</tbody>\n</table>\n<p>The following sections will list specific examples with the scopes of the searches and real world use case examples.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">query <span class=\"token operator\">=</span> <span class=\"token string\">'artifact.sha256:\"275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f\"'</span>\n\nresults <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>search_by_metadata<span class=\"token punctuation\">(</span>query<span class=\"token punctuation\">)</span>\n\n<span class=\"token comment\"># Our query is by cryptographic hash; we expect at most 1 result.</span>\n<span class=\"token comment\"># Regardless, it's good practice to properly handle multiple results.</span>\n<span class=\"token keyword\">for</span> result <span class=\"token keyword\">in</span> results<span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f\"Artifact Attributes: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>result<span class=\"token punctuation\">.</span>artifact<span class=\"token punctuation\">}</span></span><span class=\"token string\">\"</span></span><span class=\"token punctuation\">)</span></code></pre></div>\n<p>Exclude Results in the Metadata query example:</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">query <span class=\"token operator\">=</span> <span class=\"token string\">'artifact.sha256:\"275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f\"'</span>\n\nresults <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>search_by_metadata<span class=\"token punctuation\">(</span>query<span class=\"token punctuation\">,</span> exclude<span class=\"token operator\">=</span><span class=\"token punctuation\">[</span><span class=\"token string\">\"exiftool\"</span><span class=\"token punctuation\">,</span><span class=\"token string\">\"lief\"</span><span class=\"token punctuation\">,</span><span class=\"token string\">\"polyunite.malware_family\"</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token comment\"># Process results</span>\n<span class=\"token keyword\">for</span> result <span class=\"token keyword\">in</span> results<span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f\"Artifact Attributes: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>result<span class=\"token punctuation\">.</span>json<span class=\"token punctuation\">}</span></span><span class=\"token string\">\"</span></span><span class=\"token punctuation\">)</span>  <span class=\"token comment\"># Debugging: Print full response to verify fields</span></code></pre></div>\n<p>Include Results in the Metadata query example:</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">query <span class=\"token operator\">=</span> <span class=\"token string\">'artifact.sha256:\"275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f\"'</span>\n\nresults <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>search_by_metadata<span class=\"token punctuation\">(</span>query<span class=\"token punctuation\">,</span> include<span class=\"token operator\">=</span><span class=\"token punctuation\">[</span><span class=\"token string\">\"pefile\"</span><span class=\"token punctuation\">,</span><span class=\"token string\">\"polyunite.malware_family\"</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token comment\"># Process results</span>\n<span class=\"token keyword\">for</span> result <span class=\"token keyword\">in</span> results<span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f\"Artifact Attributes: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>result<span class=\"token punctuation\">.</span>json<span class=\"token punctuation\">}</span></span><span class=\"token string\">\"</span></span><span class=\"token punctuation\">)</span>  <span class=\"token comment\"># Debugging: Print full response to verify fields</span></code></pre></div>\n<h2 id=\"ioc-searching\" style=\"position:relative;\"><a href=\"#ioc-searching\" aria-label=\"ioc searching permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>IOC Searching</h2>\n<p>IOC Searching can be split into three groups of functions, these are:</p>\n<table>\n<thead>\n<tr>\n<th>Feature</th>\n<th>What is it for?</th>\n<th>Package</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Associated IOCs</td>\n<td>Searching for Associated IOCs related to a Hash</td>\n<td><code class=\"language-text\">api.iocs_by_hash()</code></td>\n</tr>\n<tr>\n<td>Associated Hashes</td>\n<td>Searching for Associated Hashes to a IP, URL, imphash or MITRE TTP</td>\n<td><code class=\"language-text\">api.search_by_ioc()</code></td>\n</tr>\n<tr>\n<td>Known Good Domains</td>\n<td>Check for known good domains and IPs</td>\n<td><code class=\"language-text\">api.check_known_hosts()</code></td>\n</tr>\n</tbody>\n</table>\n<ul>\n<li>Searching for Associated IOCs related to a Hash: This returns IOCs that were observed by our sandbox during analysis. These IP's and Domains are classified as C2 or malicious.</li>\n<li>Searching for Associated Hashes related to an IP, URL, imphash or MITRE TTP: This returns file hashes that were seen communicating with the specified IPs or domains in our sandbox — regardless of whether the communication was malicious or not.</li>\n</ul>\n<p><strong>Searching for Associated IOCs</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">results <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>iocs_by_hash<span class=\"token punctuation\">(</span><span class=\"token string\">'sha256'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'aac08c6f7474c979acf2a3aef1f2727820ece755001530cdebf346b5d1ae2ccb'</span><span class=\"token punctuation\">,</span> hide_known_good<span class=\"token operator\">=</span><span class=\"token boolean\">True</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">for</span> result <span class=\"token keyword\">in</span> results<span class=\"token punctuation\">:</span>\n    iocs <span class=\"token operator\">=</span> result<span class=\"token punctuation\">.</span>json\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f\"ips: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>iocs<span class=\"token punctuation\">[</span><span class=\"token string\">'ips'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">}</span></span><span class=\"token string\">\"</span></span><span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f\"urls: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>iocs<span class=\"token punctuation\">[</span><span class=\"token string\">'urls'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">}</span></span><span class=\"token string\">\"</span></span><span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f\"ttps: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>iocs<span class=\"token punctuation\">[</span><span class=\"token string\">'ttps'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">}</span></span><span class=\"token string\">\"</span></span><span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f\"imphash: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>iocs<span class=\"token punctuation\">[</span><span class=\"token string\">'imphash'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">}</span></span><span class=\"token string\">\"</span></span><span class=\"token punctuation\">)</span></code></pre></div>\n<p><strong>Searching for Associated Hashes</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token comment\"># IOC Search by ip</span>\n<span class=\"token keyword\">for</span> result <span class=\"token keyword\">in</span> api<span class=\"token punctuation\">.</span>search_by_ioc<span class=\"token punctuation\">(</span>ip<span class=\"token operator\">=</span><span class=\"token string\">\"108.159.227.121\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f\"sha256: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>result<span class=\"token punctuation\">.</span>json<span class=\"token punctuation\">}</span></span><span class=\"token string\">\"</span></span><span class=\"token punctuation\">)</span>\n\n\n<span class=\"token comment\"># IOC Search by domain</span>\n<span class=\"token keyword\">for</span> result <span class=\"token keyword\">in</span> api<span class=\"token punctuation\">.</span>search_by_ioc<span class=\"token punctuation\">(</span>domain<span class=\"token operator\">=</span><span class=\"token string\">\"img-s-msn-com.akamaized.net\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f\"sha256: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>result<span class=\"token punctuation\">.</span>json<span class=\"token punctuation\">}</span></span><span class=\"token string\">\"</span></span><span class=\"token punctuation\">)</span>\n\n<span class=\"token comment\"># IOC Search by MITRE ttp</span>\n<span class=\"token keyword\">for</span> result <span class=\"token keyword\">in</span> api<span class=\"token punctuation\">.</span>search_by_ioc<span class=\"token punctuation\">(</span>ttp<span class=\"token operator\">=</span><span class=\"token string\">\"T1060\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f\"sha256: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>result<span class=\"token punctuation\">.</span>json<span class=\"token punctuation\">}</span></span><span class=\"token string\">\"</span></span><span class=\"token punctuation\">)</span></code></pre></div>\n<p>This endpoint returns a generator object, which means results are loaded 'lazily' each time you load the results, a new API call is made to retrieve the next page. If more control is required, use Pythons <code class=\"language-text\">next()</code> function.</p>\n<p><strong>Searching for Known Good Domains and IPs</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">results <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>check_known_hosts<span class=\"token punctuation\">(</span>domains<span class=\"token operator\">=</span><span class=\"token punctuation\">[</span><span class=\"token string\">\"polyswarm.network\"</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> ips<span class=\"token operator\">=</span><span class=\"token punctuation\">[</span><span class=\"token string\">\"0.0.0.0\"</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n<span class=\"token keyword\">for</span> result <span class=\"token keyword\">in</span> results<span class=\"token punctuation\">:</span>\n    ioc <span class=\"token operator\">=</span> result<span class=\"token punctuation\">.</span>json\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f\"type:</span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>ioc<span class=\"token punctuation\">.</span><span class=\"token builtin\">type</span><span class=\"token punctuation\">}</span></span><span class=\"token string\">, host:</span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>ioc<span class=\"token punctuation\">.</span>host<span class=\"token punctuation\">}</span></span><span class=\"token string\">, source:</span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>ioc<span class=\"token punctuation\">.</span>source<span class=\"token punctuation\">}</span></span><span class=\"token string\">, good:</span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>ioc<span class=\"token punctuation\">.</span>good<span class=\"token punctuation\">}</span></span><span class=\"token string\">\"</span></span><span class=\"token punctuation\">)</span></code></pre></div>\n<div class=\"danger\" markdown=\"1\">\n<blockquote>\n<p><strong>A word of caution with Known Good checking!</strong></p>\n<p>Our list of known good domains and IPs is not all-inclusive!\nOur goal for this feature is to provide an easy way to find the top most commonly known good domains and IPs, so they can be excluded from analysis.</p>\n</blockquote>\n</div>\n<h2 id=\"sandboxing\" style=\"position:relative;\"><a href=\"#sandboxing\" aria-label=\"sandboxing permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Sandboxing</h2>\n<p>Sandboxing in PolySwarm provides the ability to submit files directly to be sandboxed, submit Artifacts already in PolySwarm to be sandboxed, and review what has been submitted to be sandboxed. Sandbox Analysis will take around 2-5 minutes before the results can be accessed.</p>\n<p>To view some commonly asked questions and answers about Sandboxing , see <a href=\"/customers/polyswarm-customer-cli-v3/#sandboxing-qa\">here</a></p>\n<table>\n<thead>\n<tr>\n<th>Feature</th>\n<th>What is it for?</th>\n<th>Package</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><a href=\"#sandbox-file\">Submit File</a></td>\n<td>Submit a file to be sandboxed, define the sandbox name along with the sandbox VM.</td>\n<td><code class=\"language-text\">api.sandbox_file()</code></td>\n</tr>\n<tr>\n<td><a href=\"#sandbox-url\">Submit URL</a></td>\n<td>Submit a URL to be sandboxed, define the sandbox name along with the sandbox vm, and chosen browser.</td>\n<td><code class=\"language-text\">api.sandbox_url()</code></td>\n</tr>\n<tr>\n<td><a href=\"#sandbox-artifact\">Submit</a></td>\n<td>Submit an already-scanned artifact for processing, provide the instance id of the artifact,  the sandbox name along with the sandbox vm.</td>\n<td><code class=\"language-text\">api.sandbox()</code></td>\n</tr>\n<tr>\n<td><a href=\"#list-sandbox\">List</a></td>\n<td>List the available Sandbox providers, to obtain the sandbox name and sandbox vm.</td>\n<td><code class=\"language-text\">api.sandbox_providers()</code></td>\n</tr>\n<tr>\n<td><a href=\"#lookup-sandbox-task\">Lookup</a></td>\n<td>Get a sandbox task by id.</td>\n<td><code class=\"language-text\">api.sandbox_task_status()</code></td>\n</tr>\n<tr>\n<td><a href=\"#lookup-latest\">Lookup Latest</a></td>\n<td>Lookup the latest sandbox task by sha256 and sandbox provider name, providing the metadata from the sandbox</td>\n<td><code class=\"language-text\">api.sandbox_task_latest()</code></td>\n</tr>\n<tr>\n<td><a href=\"#list-sandbox-tasks\">List Tasks</a></td>\n<td>List sandbox tasks that were created by you or someone on your team.</td>\n<td><code class=\"language-text\">api.sandbox_my_tasks_list()</code></td>\n</tr>\n<tr>\n<td><a href=\"#search-sandbox\">Search</a></td>\n<td>Search sandbox tasks by sha256 and sandbox, status, start<em>date, and/or end</em>date.</td>\n<td><code class=\"language-text\">api.sandbox_task_list()</code></td>\n</tr>\n<tr>\n<td><a href=\"#sandbox-download\">Download</a></td>\n<td>Download Reports and other sandbox artifacts.</td>\n<td><code class=\"language-text\">api.download_id()</code></td>\n</tr>\n</tbody>\n</table>\n<h6 id=\"sandbox-file\" style=\"position:relative;\"><a href=\"#sandbox-file\" aria-label=\"sandbox file permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Sandboxing a File</h6>\n<blockquote>\n<p>Want to know what files types are supported? See <a href=\"sandbox#file-types\">here</a></p>\n</blockquote>\n<p><strong>network_enabled</strong> This boolean controls the network access for a sandbox execution. If this value is not passed or None, the default for a public community is True and a private community is False.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">result <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>sandbox_file<span class=\"token punctuation\">(</span><span class=\"token string\">'./malicious.exe'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'triage'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'windows11-21h2-x64'</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>result<span class=\"token punctuation\">.</span>status<span class=\"token punctuation\">)</span></code></pre></div>\n<p>Here is another example of sending a sample inside a zip file that is protected with a password <code class=\"language-text\">infected</code>:</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">result <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>sandbox_file<span class=\"token punctuation\">(</span><span class=\"token string\">'./malicious-enc.zip'</span><span class=\"token punctuation\">,</span>\n                          <span class=\"token string\">'triage'</span><span class=\"token punctuation\">,</span>\n                          <span class=\"token string\">'windows11-21h2-x64'</span><span class=\"token punctuation\">,</span>\n                          preprocessing<span class=\"token operator\">=</span><span class=\"token punctuation\">{</span><span class=\"token string\">'type'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'zip'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'password'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'infected'</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n                          network_enabled<span class=\"token operator\">=</span><span class=\"token boolean\">True</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>result<span class=\"token punctuation\">.</span>status<span class=\"token punctuation\">)</span></code></pre></div>\n<p>Sandboxes have multiple returned statuses, these are listed below.</p>\n<table>\n<thead>\n<tr>\n<th>Status</th>\n<th>What is it for?</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">Success</code></td>\n<td>Finished processing correctly.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">Started</code></td>\n<td>Sandbox session has started.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">Collecting Data</code></td>\n<td>Sandbox session has been successful and data is being collected.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">Failed</code></td>\n<td>Sandbox session has failed, this can be due to many reasons.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">Pending</code></td>\n<td>Sandbox session is queued up and ready to start.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">Delayed</code></td>\n<td>Sandbox session has been delayed and will start soon.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">Failed with Quota Reimbursement</code></td>\n<td>Finished processing but failed, quota will be reimbursed.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">Timed out with Quota Reimbursement</code></td>\n<td>Delayed in the queue for too long, got timed out and then reimbursement.</td>\n</tr>\n</tbody>\n</table>\n<h6 id=\"sandbox-url\" style=\"position:relative;\"><a href=\"#sandbox-url\" aria-label=\"sandbox url permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Sandboxing a URL</h6>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">result <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>sandbox_url<span class=\"token punctuation\">(</span><span class=\"token string\">'https://www.polyswarm.io'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'triage'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'windows11-21h2-x64'</span><span class=\"token punctuation\">,</span> browser<span class=\"token operator\">=</span><span class=\"token string\">'edge'</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>result<span class=\"token punctuation\">.</span>status<span class=\"token punctuation\">)</span></code></pre></div>\n<p>If the URL is stored in a QR Code image, here is how to send it:</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">result <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>sandbox_url<span class=\"token punctuation\">(</span><span class=\"token boolean\">None</span><span class=\"token punctuation\">,</span>\n                         <span class=\"token string\">'cape'</span><span class=\"token punctuation\">,</span>\n                         <span class=\"token string\">'win-10-build-19041'</span><span class=\"token punctuation\">,</span>\n                         artifact<span class=\"token operator\">=</span><span class=\"token string\">'/path/to/qrcode.png'</span><span class=\"token punctuation\">,</span>\n                         preprocessing<span class=\"token operator\">=</span><span class=\"token punctuation\">{</span><span class=\"token string\">'type'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'qrcode'</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n                         browser<span class=\"token operator\">=</span><span class=\"token string\">'firefox'</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>result<span class=\"token punctuation\">.</span>status<span class=\"token punctuation\">)</span></code></pre></div>\n<h6 id=\"sandbox-artifact\" style=\"position:relative;\"><a href=\"#sandbox-artifact\" aria-label=\"sandbox artifact permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Sandboxing an Existing Artifact</h6>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">result <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>sandbox<span class=\"token punctuation\">(</span><span class=\"token number\">42445563653708569</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'triage'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'windows11-21h2-x64'</span><span class=\"token punctuation\">,</span> <span class=\"token boolean\">True</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>result<span class=\"token punctuation\">.</span>status<span class=\"token punctuation\">)</span></code></pre></div>\n<h5 id=\"sandboxing-in-a-private-community\" style=\"position:relative;\"><a href=\"#sandboxing-in-a-private-community\" aria-label=\"sandboxing in a private community permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Sandboxing in a Private Community</h5>\n<p>When sandboxing in a private community,  if the <code class=\"language-text\">network_enabled</code> flag is not passed, it will by default be True for a public community and False for a private community.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">result <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>sandbox_file<span class=\"token punctuation\">(</span><span class=\"token string\">'./tests/eicar.yara'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'triage'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'windows11-21h2-x64'</span><span class=\"token punctuation\">)</span></code></pre></div>\n<h6 id=\"list-sandbox\" style=\"position:relative;\"><a href=\"#list-sandbox\" aria-label=\"list sandbox permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>List Sandbox Providers</h6>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">sandboxes <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>sandbox_providers<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>sandboxes<span class=\"token punctuation\">)</span></code></pre></div>\n<h6 id=\"lookup-sandbox-task\" style=\"position:relative;\"><a href=\"#lookup-sandbox-task\" aria-label=\"lookup sandbox task permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Lookup Sandbox Task</h6>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">task <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>sandbox_task_status<span class=\"token punctuation\">(</span><span class=\"token number\">53445563653708569</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>task<span class=\"token punctuation\">)</span></code></pre></div>\n<h6 id=\"sandbox-download\" style=\"position:relative;\"><a href=\"#sandbox-download\" aria-label=\"sandbox download permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Download Sandbox Artifacts</h6>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">task <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>download_id<span class=\"token punctuation\">(</span><span class=\"token string\">'./outdir'</span><span class=\"token punctuation\">,</span> <span class=\"token number\">53445563653708569</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>task<span class=\"token punctuation\">)</span></code></pre></div>\n<h6 id=\"lookup-latest\" style=\"position:relative;\"><a href=\"#lookup-latest\" aria-label=\"lookup latest permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Lookup Latest Sandbox Task</h6>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">latest <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>sandbox_task_latest<span class=\"token punctuation\">(</span><span class=\"token string\">'18e5b8fe65e8f73c3a4a637c258c02aeec8a6ab702b15b7ee73f5631a9879e40'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'triage'</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>latest<span class=\"token punctuation\">)</span></code></pre></div>\n<h6 id=\"list-sandbox-tasks\" style=\"position:relative;\"><a href=\"#list-sandbox-tasks\" aria-label=\"list sandbox tasks permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>List my Sandbox Tasks</h6>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">tasks <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>sandbox_my_tasks_list<span class=\"token punctuation\">(</span>sandbox<span class=\"token operator\">=</span><span class=\"token string\">'triage'</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>tasks<span class=\"token punctuation\">)</span></code></pre></div>\n<h6 id=\"search-sandbox\" style=\"position:relative;\"><a href=\"#search-sandbox\" aria-label=\"search sandbox permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Search Sandbox Tasks</h6>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">tasks <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>sandbox_task_list<span class=\"token punctuation\">(</span>sandbox<span class=\"token operator\">=</span><span class=\"token string\">'triage'</span><span class=\"token punctuation\">,</span> start_date<span class=\"token operator\">=</span><span class=\"token string\">'2023-10-31'</span><span class=\"token punctuation\">,</span> status<span class=\"token operator\">=</span><span class=\"token string\">\"SUCCEEDED\"</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>tasks<span class=\"token punctuation\">)</span></code></pre></div>\n<h2 id=\"hunting-yara\" style=\"position:relative;\"><a href=\"#hunting-yara\" aria-label=\"hunting yara permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Hunting with Yara</h2>\n<p>Hunting with Yara can be split into the below three sections:</p>\n<ul>\n<li><a href=\"/customers/polyswarm-customer-api-v3/#ruleset\">Managing Yara Rulesets</a></li>\n<li><a href=\"/customers/polyswarm-customer-api-v3/#live\">Live Hunts</a></li>\n<li><a href=\"/customers/polyswarm-customer-api-v3/#historical\">Historical Hunts</a></li>\n</ul>\n<h3 id=\"ruleset\" style=\"position:relative;\"><a href=\"#ruleset\" aria-label=\"ruleset permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Managing Yara Rulesets</h3>\n<table>\n<thead>\n<tr>\n<th>Feature</th>\n<th>What is it for?</th>\n<th>Package</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><a href=\"#create-ruleset\">Create</a></td>\n<td>Create a Ruleset to be used in Hunting.</td>\n<td><code class=\"language-text\">api.ruleset_create()</code></td>\n</tr>\n<tr>\n<td><a href=\"#list-ruleset\">List</a></td>\n<td>List the Rulesets that have been created.</td>\n<td><code class=\"language-text\">api.ruleset_list()</code></td>\n</tr>\n<tr>\n<td><a href=\"#update-ruleset\">Update</a></td>\n<td>Update the ruleset with new values.</td>\n<td><code class=\"language-text\">api.ruleset_update()</code></td>\n</tr>\n<tr>\n<td><a href=\"#delete-ruleset\">Delete</a></td>\n<td>Delete a Ruleset permanently.</td>\n<td><code class=\"language-text\">api.ruleset_delete()</code></td>\n</tr>\n</tbody>\n</table>\n<h6 id=\"create-ruleset\" style=\"position:relative;\"><a href=\"#create-ruleset\" aria-label=\"create ruleset permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Create Ruleset</h6>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">new_ruleset <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>ruleset_create<span class=\"token punctuation\">(</span>name<span class=\"token operator\">=</span><span class=\"token string\">'eicar'</span><span class=\"token punctuation\">,</span>\n                                 rules<span class=\"token operator\">=</span><span class=\"token builtin\">open</span><span class=\"token punctuation\">(</span><span class=\"token string\">'eicar.yara'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span>read<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n                                 description<span class=\"token operator\">=</span><span class=\"token string\">'eicar ruleset'</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'ID: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>new_ruleset<span class=\"token punctuation\">.</span><span class=\"token builtin\">id</span><span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span></code></pre></div>\n<h6 id=\"list-ruleset\" style=\"position:relative;\"><a href=\"#list-ruleset\" aria-label=\"list ruleset permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>List Rulesets</h6>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">rulesets <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>ruleset_list<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">for</span> ruleset <span class=\"token keyword\">in</span> rulesets<span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'ID: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>ruleset<span class=\"token punctuation\">.</span><span class=\"token builtin\">id</span><span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span></code></pre></div>\n<h6 id=\"update-ruleset\" style=\"position:relative;\"><a href=\"#update-ruleset\" aria-label=\"update ruleset permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Update Ruleset</h6>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token comment\"># updating the ruleset yara rules (can also update name and description)</span>\napi<span class=\"token punctuation\">.</span>ruleset_update<span class=\"token punctuation\">(</span>new_ruleset<span class=\"token punctuation\">.</span><span class=\"token builtin\">id</span><span class=\"token punctuation\">,</span> rules<span class=\"token operator\">=</span><span class=\"token builtin\">open</span><span class=\"token punctuation\">(</span><span class=\"token string\">'another.yara'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span>read<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span></code></pre></div>\n<h6 id=\"delete-ruleset\" style=\"position:relative;\"><a href=\"#delete-ruleset\" aria-label=\"delete ruleset permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Delete Ruleset</h6>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">api<span class=\"token punctuation\">.</span>ruleset_delete<span class=\"token punctuation\">(</span>new_ruleset<span class=\"token punctuation\">.</span><span class=\"token builtin\">id</span><span class=\"token punctuation\">)</span></code></pre></div>\n<h3 id=\"live\" style=\"position:relative;\"><a href=\"#live\" aria-label=\"live permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Live Hunts</h3>\n<table>\n<thead>\n<tr>\n<th>Feature</th>\n<th>What is it for?</th>\n<th>Package</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><a href=\"#get-rule\">Get Ruleset ID</a></td>\n<td>Get the ruleset id required to start a Live Hunt.</td>\n<td><code class=\"language-text\">api.ruleset_get()</code></td>\n</tr>\n<tr>\n<td><a href=\"#start-live\">Start</a></td>\n<td>Start a Live Hunt based on a ruleset.</td>\n<td><code class=\"language-text\">api.live_start()</code></td>\n</tr>\n<tr>\n<td><a href=\"#results-live\">View Live Results of a Live Hunt</a></td>\n<td>View all the live results generated from the live hunts.</td>\n<td><code class=\"language-text\">api.live_feed()</code></td>\n</tr>\n<tr>\n<td><a href=\"#results-single\">View a Singular Result</a></td>\n<td>Inspect a particular result and get a download link.</td>\n<td><code class=\"language-text\">api.live_result()</code></td>\n</tr>\n<tr>\n<td><a href=\"#delete-results\">Delete</a></td>\n<td>Delete a Live Hunt permanently.</td>\n<td><code class=\"language-text\">api.live_feed_delete()</code></td>\n</tr>\n<tr>\n<td><a href=\"#stop-results\">Stop</a></td>\n<td>Stop a Live Hunt.</td>\n<td><code class=\"language-text\">api.live_stop()</code></td>\n</tr>\n</tbody>\n</table>\n<h6 id=\"get-rule\" style=\"position:relative;\"><a href=\"#get-rule\" aria-label=\"get rule permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Get Ruleset ID</h6>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">ruleset <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>ruleset_get<span class=\"token punctuation\">(</span><span class=\"token number\">57989886451857569</span><span class=\"token punctuation\">)</span></code></pre></div>\n<h6 id=\"start-live\" style=\"position:relative;\"><a href=\"#start-live\" aria-label=\"start live permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Start Live Hunt</h6>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">ruleset <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>live_start<span class=\"token punctuation\">(</span>ruleset<span class=\"token punctuation\">.</span><span class=\"token builtin\">id</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'ID: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>ruleset<span class=\"token punctuation\">.</span>livescan_id<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span></code></pre></div>\n<h6 id=\"results-live\" style=\"position:relative;\"><a href=\"#results-live\" aria-label=\"results live permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>View Live Results of a Live Hunt</h6>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token comment\"># reverse chronologically ordered iterator</span>\nresults <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>live_feed<span class=\"token punctuation\">(</span>since<span class=\"token operator\">=</span><span class=\"token number\">999999</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">for</span> result <span class=\"token keyword\">in</span> results<span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'ID: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>result<span class=\"token punctuation\">.</span><span class=\"token builtin\">id</span><span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span></code></pre></div>\n<h6 id=\"results-single\" style=\"position:relative;\"><a href=\"#results-single\" aria-label=\"results single permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>View a Singular Result</h6>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token comment\"># you can inspect more details about a single result</span>\n<span class=\"token comment\"># based on its id, it also provides a download link</span>\n<span class=\"token comment\"># to the file and the origial yara rule used</span>\n<span class=\"token comment\"># these extra info does not come directly from the</span>\n<span class=\"token comment\"># feed listing method for performance reasons</span>\nresult <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>live_result<span class=\"token punctuation\">(</span><span class=\"token number\">91163237970748480</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'ID: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>result<span class=\"token punctuation\">.</span><span class=\"token builtin\">id</span><span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'URL: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>result<span class=\"token punctuation\">.</span>download_url<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span></code></pre></div>\n<h6 id=\"delete-results\" style=\"position:relative;\"><a href=\"#delete-results\" aria-label=\"delete results permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Delete a Result</h6>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">api<span class=\"token punctuation\">.</span>live_feed_delete<span class=\"token punctuation\">(</span><span class=\"token punctuation\">[</span><span class=\"token number\">91163237970748480</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span></code></pre></div>\n<h6 id=\"stop-results\" style=\"position:relative;\"><a href=\"#stop-results\" aria-label=\"stop results permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Stop a Live Hunt</h6>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">ruleset <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>ruleset_get<span class=\"token punctuation\">(</span><span class=\"token number\">57989886451857569</span><span class=\"token punctuation\">)</span>\nruleset <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>live_stop<span class=\"token punctuation\">(</span>ruleset<span class=\"token punctuation\">.</span><span class=\"token builtin\">id</span><span class=\"token punctuation\">)</span></code></pre></div>\n<h3 id=\"historical\" style=\"position:relative;\"><a href=\"#historical\" aria-label=\"historical permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Historical Hunts</h3>\n<table>\n<thead>\n<tr>\n<th>Feature</th>\n<th>What is it for?</th>\n<th>Package</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><a href=\"#create-historical\">Create</a></td>\n<td>Create a Historical Hunt by providing a Yara ruleset.</td>\n<td><code class=\"language-text\">api.historical_create</code></td>\n</tr>\n<tr>\n<td><a href=\"#update-historical\">Update</a></td>\n<td>Update the Historical Hunt.</td>\n<td><code class=\"language-text\">api.historical_update()</code></td>\n</tr>\n<tr>\n<td><a href=\"#list-historical\">List Hunts</a></td>\n<td>List the Historical Hunts.</td>\n<td><code class=\"language-text\">api.historical_list()</code></td>\n</tr>\n<tr>\n<td><a href=\"#view-historical\">View Details</a></td>\n<td>View Historical Hunt Details.</td>\n<td><code class=\"language-text\">api.historical_get()</code></td>\n</tr>\n<tr>\n<td><a href=\"#view-rseults-historical\">View Results</a></td>\n<td>View the results of a  Historical Hunt.</td>\n<td><code class=\"language-text\">api.historical_results()</code></td>\n</tr>\n<tr>\n<td><a href=\"#view-single--historical\">View Single Result</a></td>\n<td>View and Download a Single Result.</td>\n<td><code class=\"language-text\">api.historical_result()</code></td>\n</tr>\n<tr>\n<td><a href=\"#delete-result-historical\">Delete Result</a></td>\n<td>Delete an undesirable result.</td>\n<td><code class=\"language-text\">api.historical_results_delete()</code></td>\n</tr>\n<tr>\n<td><a href=\"#delete-historical\">Delete Hunt</a></td>\n<td>Delete an Historical Hunt.</td>\n<td><code class=\"language-text\">api.historical_delete()</code></td>\n</tr>\n</tbody>\n</table>\n<h6 id=\"create-historical\" style=\"position:relative;\"><a href=\"#create-historical\" aria-label=\"create historical permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Create a Historical Hunt</h6>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">historical <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>historical_create<span class=\"token punctuation\">(</span>rule<span class=\"token operator\">=</span><span class=\"token builtin\">open</span><span class=\"token punctuation\">(</span><span class=\"token string\">'eicar.yara'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span>read<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'ID: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>historical<span class=\"token punctuation\">.</span><span class=\"token builtin\">id</span><span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span></code></pre></div>\n<h6 id=\"update-historical\" style=\"position:relative;\"><a href=\"#update-historical\" aria-label=\"update historical permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Update a Historical Hunt</h6>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token comment\"># the only update you can perform on a historical hunt</span>\n<span class=\"token comment\"># is to cancel the hunt before it finishes</span>\napi<span class=\"token punctuation\">.</span>historical_update<span class=\"token punctuation\">(</span><span class=\"token number\">49988514210960880</span><span class=\"token punctuation\">)</span></code></pre></div>\n<h6 id=\"list-historical\" style=\"position:relative;\"><a href=\"#list-historical\" aria-label=\"list historical permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>List Historical Hunts</h6>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token comment\"># you can also list all historical hunts you have in your account</span>\nresults <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>historical_list<span class=\"token punctuation\">(</span>since<span class=\"token operator\">=</span><span class=\"token number\">9999999</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">for</span> result <span class=\"token keyword\">in</span> results<span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'ID: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>result<span class=\"token punctuation\">.</span><span class=\"token builtin\">id</span><span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span></code></pre></div>\n<h6 id=\"view-historical\" style=\"position:relative;\"><a href=\"#view-historical\" aria-label=\"view historical permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>View Historical Hunt Details</h6>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token comment\"># you can retrieve extra information about the hunt</span>\n<span class=\"token comment\"># this also includes a consolidated results csv</span>\nhistorical <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>historical_get<span class=\"token punctuation\">(</span><span class=\"token number\">48011760326110718</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'ID: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>historical<span class=\"token punctuation\">.</span><span class=\"token builtin\">id</span><span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Results CSV: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>historical<span class=\"token punctuation\">.</span>results_csv_uri<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span></code></pre></div>\n<h6 id=\"view-rseults-historical\" style=\"position:relative;\"><a href=\"#view-rseults-historical\" aria-label=\"view rseults historical permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>View Historical Hunt Results</h6>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token comment\"># you can check the results of a historical hunt</span>\nresults <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>historical_results<span class=\"token punctuation\">(</span><span class=\"token number\">48011760326110718</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">for</span> result <span class=\"token keyword\">in</span> results<span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'ID: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>result<span class=\"token punctuation\">.</span><span class=\"token builtin\">id</span><span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span></code></pre></div>\n<h6 id=\"view-single--historical\" style=\"position:relative;\"><a href=\"#view-single--historical\" aria-label=\"view single  historical permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>View a Singular Historical Hunt Result</h6>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token comment\"># retrieve a single result with extra information</span>\nresult <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>historical_result<span class=\"token punctuation\">(</span><span class=\"token number\">89734617019442134</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'ID: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>result<span class=\"token punctuation\">.</span><span class=\"token builtin\">id</span><span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'URL: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>result<span class=\"token punctuation\">.</span>download_url<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span></code></pre></div>\n<h6 id=\"delete-result-historical\" style=\"position:relative;\"><a href=\"#delete-result-historical\" aria-label=\"delete result historical permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Delete an Historical Hunt Result</h6>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token comment\"># delete an undesirable result</span>\napi<span class=\"token punctuation\">.</span>historical_results_delete<span class=\"token punctuation\">(</span><span class=\"token punctuation\">[</span><span class=\"token number\">89734617019442134</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span></code></pre></div>\n<h6 id=\"delete-historical\" style=\"position:relative;\"><a href=\"#delete-historical\" aria-label=\"delete historical permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Delete a Historical Hunt</h6>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token comment\"># you can delete a historical hunt</span>\n<span class=\"token comment\"># keep in mind that this is an async process and the</span>\n<span class=\"token comment\"># hunt will be scheduled for deletio..</span>\napi<span class=\"token punctuation\">.</span>historical_delete<span class=\"token punctuation\">(</span><span class=\"token number\">49988514210960880</span><span class=\"token punctuation\">)</span></code></pre></div>\n<h2 id=\"get-a-stream\" style=\"position:relative;\"><a href=\"#get-a-stream\" aria-label=\"get a stream permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Get a Stream</h2>\n<table>\n<thead>\n<tr>\n<th>Feature</th>\n<th>What is it for?</th>\n<th>Package</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Stream</td>\n<td>Fetch a Stream of data from PolySwarm.</td>\n<td><code class=\"language-text\">api.stream()</code></td>\n</tr>\n</tbody>\n</table>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">SINCE <span class=\"token operator\">=</span> <span class=\"token number\">60</span> <span class=\"token comment\"># Fetch stream from the last 60 minutes</span>\nstreams <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>stream<span class=\"token punctuation\">(</span>since<span class=\"token operator\">=</span>SINCE<span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">for</span> stream <span class=\"token keyword\">in</span> streams<span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'ID: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>stream<span class=\"token punctuation\">.</span><span class=\"token builtin\">id</span><span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'URI: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>stream<span class=\"token punctuation\">.</span>uri<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Created: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>stream<span class=\"token punctuation\">.</span>created<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Community: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>stream<span class=\"token punctuation\">.</span>community<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span></code></pre></div>\n<blockquote>\n<p>Stream is a paid feature that is added to an account on a case-by-case basis.\nIf you'd like to add this feature to your account, contact us at <a href=\"mailto:info@polyswarm.io\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">sales@polyswarm.io</a>.</p>\n</blockquote>\n<h2 id=\"notification-webhooks\" style=\"position:relative;\"><a href=\"#notification-webhooks\" aria-label=\"notification webhooks permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Notification Webhooks</h2>\n<p>Notification webhooks allow you to receive real-time notifications for events in PolySwarm, such as when sandbox analysis completes.</p>\n<table>\n<thead>\n<tr>\n<th>Feature</th>\n<th>What is it for?</th>\n<th>Package</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Create Notification Webhook</td>\n<td>Create a new notification webhook for receiving event notifications</td>\n<td><code class=\"language-text\">api.notification_webhook_create()</code></td>\n</tr>\n<tr>\n<td>Get Notification Webhook</td>\n<td>Retrieve a specific notification webhook configuration by ID</td>\n<td><code class=\"language-text\">api.notification_webhook_get()</code></td>\n</tr>\n<tr>\n<td>Update Notification Webhook</td>\n<td>Update an existing notification webhook's configuration</td>\n<td><code class=\"language-text\">api.notification_webhook_update()</code></td>\n</tr>\n<tr>\n<td>Delete Notification Webhook</td>\n<td>Remove a notification webhook permanently</td>\n<td><code class=\"language-text\">api.notification_webhook_delete()</code></td>\n</tr>\n<tr>\n<td>List Notification Webhooks</td>\n<td>List all notification webhooks configured for the current account</td>\n<td><code class=\"language-text\">api.notification_webhook_list()</code></td>\n</tr>\n<tr>\n<td>Test Notification Webhook</td>\n<td>Send a test payload to a notification webhook to verify it's working</td>\n<td><code class=\"language-text\">api.notification_webhook_test()</code></td>\n</tr>\n</tbody>\n</table>\n<h6 id=\"create-a-notification-webhook\" style=\"position:relative;\"><a href=\"#create-a-notification-webhook\" aria-label=\"create a notification webhook permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Create a Notification Webhook</h6>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">webhook <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>notification_webhook_create<span class=\"token punctuation\">(</span>\n    webhook_uri<span class=\"token operator\">=</span><span class=\"token string\">'https://example.com/webhook'</span><span class=\"token punctuation\">,</span>\n    secret<span class=\"token operator\">=</span><span class=\"token string\">'your-secret-key'</span><span class=\"token punctuation\">,</span>\n    status<span class=\"token operator\">=</span><span class=\"token string\">'enabled'</span><span class=\"token punctuation\">,</span>\n    events<span class=\"token operator\">=</span><span class=\"token punctuation\">{</span><span class=\"token string\">'sandbox_done'</span><span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Webhook ID: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>webhook<span class=\"token punctuation\">.</span><span class=\"token builtin\">id</span><span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span></code></pre></div>\n<h6 id=\"get-a-notification-webhook\" style=\"position:relative;\"><a href=\"#get-a-notification-webhook\" aria-label=\"get a notification webhook permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Get a Notification Webhook</h6>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">webhook <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>notification_webhook_get<span class=\"token punctuation\">(</span>webhook_id<span class=\"token operator\">=</span><span class=\"token string\">'12345'</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Webhook URI: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>webhook<span class=\"token punctuation\">.</span>webhook_uri<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Status: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>webhook<span class=\"token punctuation\">.</span>status<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span></code></pre></div>\n<h6 id=\"update-a-notification-webhook\" style=\"position:relative;\"><a href=\"#update-a-notification-webhook\" aria-label=\"update a notification webhook permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Update a Notification Webhook</h6>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">updated_webhook <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>notification_webhook_update<span class=\"token punctuation\">(</span>\n    webhook_id<span class=\"token operator\">=</span><span class=\"token string\">'12345'</span><span class=\"token punctuation\">,</span>\n    webhook_uri<span class=\"token operator\">=</span><span class=\"token string\">'https://example.com/new-webhook'</span><span class=\"token punctuation\">,</span>\n    status<span class=\"token operator\">=</span><span class=\"token string\">'disabled'</span>\n<span class=\"token punctuation\">)</span></code></pre></div>\n<h6 id=\"delete-a-notification-webhook\" style=\"position:relative;\"><a href=\"#delete-a-notification-webhook\" aria-label=\"delete a notification webhook permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Delete a Notification Webhook</h6>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">result <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>notification_webhook_delete<span class=\"token punctuation\">(</span>webhook_id<span class=\"token operator\">=</span><span class=\"token string\">'12345'</span><span class=\"token punctuation\">)</span></code></pre></div>\n<h6 id=\"list-all-notification-webhooks\" style=\"position:relative;\"><a href=\"#list-all-notification-webhooks\" aria-label=\"list all notification webhooks permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>List All Notification Webhooks</h6>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">webhooks <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>notification_webhook_list<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">for</span> webhook <span class=\"token keyword\">in</span> webhooks<span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'ID: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>webhook<span class=\"token punctuation\">.</span><span class=\"token builtin\">id</span><span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'URI: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>webhook<span class=\"token punctuation\">.</span>webhook_uri<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Status: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>webhook<span class=\"token punctuation\">.</span>status<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Events: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>webhook<span class=\"token punctuation\">.</span>events<span class=\"token punctuation\">}</span></span><span class=\"token string\">\\n'</span></span><span class=\"token punctuation\">)</span></code></pre></div>\n<h6 id=\"test-a-notification-webhook\" style=\"position:relative;\"><a href=\"#test-a-notification-webhook\" aria-label=\"test a notification webhook permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Test a Notification Webhook</h6>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token comment\"># Send a test payload to verify the notification webhook is working</span>\napi<span class=\"token punctuation\">.</span>notification_webhook_test<span class=\"token punctuation\">(</span>webhook_id<span class=\"token operator\">=</span><span class=\"token string\">'12345'</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">'Test payload sent successfully'</span><span class=\"token punctuation\">)</span></code></pre></div>\n<h2 id=\"changelog\" style=\"position:relative;\"><a href=\"#changelog\" aria-label=\"changelog permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Changelog</h2>\n<h4 id=\"version-3160\" style=\"position:relative;\"><a href=\"#version-3160\" aria-label=\"version 3160 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Version 3.16.0</h4>\n<p><strong>Release Date:</strong> 2026-01-28\n<strong>Breaking Changes:</strong> N/A</p>\n<table>\n<thead>\n<tr>\n<th>Item</th>\n<th>Topic</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1.0</td>\n<td>Notification Webhooks</td>\n<td>You can now <a href=\"polyswarm-customer-api-v3#notification-webhooks\">register notification webhooks</a> to receive automatic push notifications when sandbox tasks complete. <code class=\"language-text\">api.notification_webhook_create()</code> etc</td>\n</tr>\n<tr>\n<td>2.0</td>\n<td>llm reports</td>\n<td>New endpoints for creating llm reports: <code class=\"language-text\">llm_report</code>, AI-generated reports created from scan and/or sandbox analysis results.</td>\n</tr>\n</tbody>\n</table>\n<h4 id=\"version-3131\" style=\"position:relative;\"><a href=\"#version-3131\" aria-label=\"version 3131 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Version 3.13.1</h4>\n<p><strong>Release Date:</strong> 2025-06-10\n<strong>Breaking Changes:</strong> N/A</p>\n<table>\n<thead>\n<tr>\n<th>Item</th>\n<th>Topic</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1.0</td>\n<td>Bug fix for Community Param</td>\n<td>Community not being passed to reports endpoints, fixed in this release.</td>\n</tr>\n</tbody>\n</table>\n<h4 id=\"version-3130\" style=\"position:relative;\"><a href=\"#version-3130\" aria-label=\"version 3130 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Version 3.13.0</h4>\n<p><strong>Release Date:</strong> 2025-06-02\n<strong>Breaking Changes:</strong> N/A</p>\n<table>\n<thead>\n<tr>\n<th>Item</th>\n<th>Topic</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1.0</td>\n<td>New Param for Sandbox Download</td>\n<td>Allow to pass command arguments to a new sandbox task with the new param <code class=\"language-text\">arguments</code> in <code class=\"language-text\">download_sandbox_artifact()</code> method.</td>\n</tr>\n<tr>\n<td>2.0</td>\n<td>Bug fix for argument</td>\n<td>Fix a missing <code class=\"language-text\">community</code> argument to be passed to <code class=\"language-text\">download_id()</code> and <code class=\"language-text\">download_sandbox_artifact()</code></td>\n</tr>\n</tbody>\n</table>\n<h4 id=\"version-3120\" style=\"position:relative;\"><a href=\"#version-3120\" aria-label=\"version 3120 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Version 3.12.0</h4>\n<p><strong>Release Date:</strong> 2025-05-20\n<strong>Breaking Changes:</strong> N/A</p>\n<table>\n<thead>\n<tr>\n<th>Item</th>\n<th>Topic</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1.0</td>\n<td>New Feature, Download Sample Bundle Zips</td>\n<td>Ability to bundle files into a single zip to download, via methods: <code class=\"language-text\">sample_bundle_task_create()</code>, <code class=\"language-text\">sample_bundle_task_get()</code> and <code class=\"language-text\">sample_bundle_download()</code></td>\n</tr>\n<tr>\n<td>2.0</td>\n<td>New Feature, Download an artifact created by a Sandbox Task</td>\n<td>Ability to download files like a report from the Sandbox Task, via method <code class=\"language-text\">download_sandbox_artifact()</code></td>\n</tr>\n</tbody>\n</table>\n<h4 id=\"version-3110\" style=\"position:relative;\"><a href=\"#version-3110\" aria-label=\"version 3110 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Version 3.11.0</h4>\n<p><strong>Release Date:</strong> 2024-12-09\n<strong>Breaking Changes:</strong> N/A</p>\n<table>\n<thead>\n<tr>\n<th>Item</th>\n<th>Topic</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1.0</td>\n<td>New accounts field</td>\n<td>Added new field <code class=\"language-text\">features[].backing_feature</code> to the response of <code class=\"language-text\">account_features()</code>.</td>\n</tr>\n</tbody>\n</table>\n<h4 id=\"version-3100\" style=\"position:relative;\"><a href=\"#version-3100\" aria-label=\"version 3100 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Version 3.10.0</h4>\n<p><strong>Release Date:</strong> 2024-09-24\n<strong>Breaking Changes:</strong> N/A</p>\n<table>\n<thead>\n<tr>\n<th>Item</th>\n<th>Topic</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1.0</td>\n<td>New Artifact field</td>\n<td>Added new field <code class=\"language-text\">failed_reason</code> to the responses of <code class=\"language-text\">submit()</code>, <code class=\"language-text\">sandbox_file()</code> and <code class=\"language-text\">sandbox_url()</code> calls when there is a known error.</td>\n</tr>\n<tr>\n<td>2.0</td>\n<td>Bug fix</td>\n<td>Added check first whether a report can be downloaded to <code class=\"language-text\">report_download()</code>.</td>\n</tr>\n</tbody>\n</table>\n<h4 id=\"version-390\" style=\"position:relative;\"><a href=\"#version-390\" aria-label=\"version 390 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Version 3.9.0</h4>\n<p><strong>Release Date:</strong> 2024-08-07\n<strong>Breaking Changes:</strong> Item 4.0</p>\n<table>\n<thead>\n<tr>\n<th>Item</th>\n<th>Topic</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1.0</td>\n<td>Scan and Sandboxing of QR Code images with URL as payload</td>\n<td>Implemented in the <code class=\"language-text\">submit()</code> and <code class=\"language-text\">sandbox_url()</code> APIs.</td>\n</tr>\n<tr>\n<td>2.0</td>\n<td>Get account's basic information</td>\n<td>New API method <code class=\"language-text\">account_whois()</code>.</td>\n</tr>\n<tr>\n<td>3.0</td>\n<td>Get accounts' features and quota</td>\n<td>New API method <code class=\"language-text\">account_features()</code>.</td>\n</tr>\n<tr>\n<td>4.0</td>\n<td>Change zip file submissions</td>\n<td>Replace <code class=\"language-text\">is_zip</code> and <code class=\"language-text\">zip_password</code> with new <code class=\"language-text\">preprocessing</code> argument in the <code class=\"language-text\">submit()</code> and <code class=\"language-text\">sandbox_file()</code> APIs.</td>\n</tr>\n</tbody>\n</table>\n<h4 id=\"version-380\" style=\"position:relative;\"><a href=\"#version-380\" aria-label=\"version 380 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Version 3.8.0</h4>\n<p><strong>Release Date:</strong> 2024-06-27</p>\n<p><strong>Breaking Changes:</strong> N/A</p>\n<table>\n<thead>\n<tr>\n<th>Item</th>\n<th>Topic</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1.0</td>\n<td>Support zip file submissions</td>\n<td>New <code class=\"language-text\">is_zip</code> and <code class=\"language-text\">zip_password</code> argument in the <code class=\"language-text\">submit()</code> and <code class=\"language-text\">sandbox_file()</code> APIs.</td>\n</tr>\n</tbody>\n</table>\n<h4 id=\"version-370\" style=\"position:relative;\"><a href=\"#version-370\" aria-label=\"version 370 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Version 3.7.0</h4>\n<p><strong>Release Date:</strong> 2024-05-20</p>\n<p><strong>Breaking Changes:</strong> Item 3.0</p>\n<table>\n<thead>\n<tr>\n<th>Item</th>\n<th>Topic</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1.0</td>\n<td>Reports Generation</td>\n<td>Introduction of reports generation API: <code class=\"language-text\">report_create</code>, <code class=\"language-text\">report_get</code> and <code class=\"language-text\">report_download</code></td>\n</tr>\n<tr>\n<td>2.0</td>\n<td>Reports Templates</td>\n<td>Introduction of reports templates API: <code class=\"language-text\">report_template_**</code> methods.</td>\n</tr>\n<tr>\n<td>3.0</td>\n<td>Python versions supported</td>\n<td>Minimal Python version supported is 3.7.</td>\n</tr>\n</tbody>\n</table>\n<h4 id=\"version-360\" style=\"position:relative;\"><a href=\"#version-360\" aria-label=\"version 360 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Version 3.6.0</h4>\n<p><strong>Release Date:</strong> 2024-04-30</p>\n<p><strong>Breaking Changes:</strong> N/A</p>\n<table>\n<thead>\n<tr>\n<th>Item</th>\n<th>Topic</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1.0</td>\n<td>Communities</td>\n<td>Support EU communities.</td>\n</tr>\n<tr>\n<td>2.0</td>\n<td>Permalinks</td>\n<td>Fix permalink parsing.</td>\n</tr>\n<tr>\n<td>3.0</td>\n<td>IOC beta</td>\n<td>New method <code class=\"language-text\">add_known_bad_host</code>.</td>\n</tr>\n</tbody>\n</table>\n<h4 id=\"version-352\" style=\"position:relative;\"><a href=\"#version-352\" aria-label=\"version 352 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Version 3.5.2</h4>\n<p><strong>Release Date:</strong> 2024-02-22</p>\n<p><strong>Breaking Changes:</strong> N/A</p>\n<table>\n<thead>\n<tr>\n<th>Item</th>\n<th>Topic</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1.0</td>\n<td>URL Sandboxing</td>\n<td>Introduction of URL Sandboxing (<code class=\"language-text\">sandbox_url</code>) API.</td>\n</tr>\n</tbody>\n</table>\n<h4 id=\"version-343\" style=\"position:relative;\"><a href=\"#version-343\" aria-label=\"version 343 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Version 3.4.3</h4>\n<p><strong>Release Date:</strong> 2023-09-20</p>\n<p><strong>Breaking Changes:</strong> N/A</p>\n<table>\n<thead>\n<tr>\n<th>Item</th>\n<th>Topic</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1.0</td>\n<td>Added Community Parameter to Live Results</td>\n<td>Added parameter <code class=\"language-text\">community</code> to /v3/hunt/live/list to allow you to see results from a private community.</td>\n</tr>\n<tr>\n<td>2.0</td>\n<td>Added Community Parameter to Historical Results</td>\n<td>Added parameter <code class=\"language-text\">community</code> to /v3/hunt/historical/results/list to allow you to see results from a private community.</td>\n</tr>\n<tr>\n<td>3.0</td>\n<td>New Permalink Structure</td>\n<td>New Permalink Structure.</td>\n</tr>\n</tbody>\n</table>\n<h4 id=\"version-340\" style=\"position:relative;\"><a href=\"#version-340\" aria-label=\"version 340 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Version 3.4.0</h4>\n<p><strong>Release Date:</strong> 2023-07-12</p>\n<p><strong>Breaking Changes:</strong> N/A</p>\n<table>\n<thead>\n<tr>\n<th>Item</th>\n<th>Topic</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1.0</td>\n<td>Sandbox Task Config</td>\n<td>Added sandbox task config field on sandbox task model.</td>\n</tr>\n<tr>\n<td>2.0</td>\n<td><code class=\"language-text\">api.sandbox</code> and <code class=\"language-text\">api.sandbox_file</code></td>\n<td>Endpoint now accept provider and vm slugs.</td>\n</tr>\n<tr>\n<td>3.0</td>\n<td><code class=\"language-text\">api.sandbox_providers</code></td>\n<td>Now returns provider and vm config information.</td>\n</tr>\n</tbody>\n</table>\n<h4 id=\"version-332\" style=\"position:relative;\"><a href=\"#version-332\" aria-label=\"version 332 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Version 3.3.2</h4>\n<p><strong>Release Date:</strong> 2023-06-20</p>\n<p><strong>Breaking Changes:</strong> Item 3.0</p>\n<table>\n<thead>\n<tr>\n<th>Item</th>\n<th>Topic</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1.0</td>\n<td>Dropping python 2.7 support.</td>\n<td>-</td>\n</tr>\n<tr>\n<td>2.0</td>\n<td>Added New Polyswarm Lookup and Search Features.</td>\n<td>Added <code class=\"language-text\">api.sandbox_task_status</code>, <code class=\"language-text\">api.sandbox_task_latest</code>, <code class=\"language-text\">api.sandbox_my_tasks</code> and <code class=\"language-text\">api.sandbox_task_list</code>.</td>\n</tr>\n<tr>\n<td>3.0</td>\n<td>Changed the Sandbox Submit Interface.</td>\n<td>-</td>\n</tr>\n</tbody>\n</table>","rawMarkdownBody":"\n# PolySwarm Customer API v3\n\nA Python interface for interacting with version 3 of the PolySwarm Customer APIs.\n\nSupports Python 3.10 and greater.\n\n## Getting Started {#getting-started}\n### Installation {#installation}\n\nFrom PyPI:\n\n```bash\n$ pip install polyswarm_api\n```\n\n> If you get an error about a missing package named `wheel`, that means your version of pip is too old.\n> You need pip version 19 or newer.\n> To update pip, run `pip install -U pip`.\n\nFrom source:\n\n```bash\n$ python setup.py install\n```\n\n> If you get an error about a missing package named `wheel`, that means your version of setuptools is too old.\n> You need setuptools version 40.8.0 or newer.\n> To update setuptools, run `pip install -U setuptools`.\n\n### Creating an API Client {#creating-api-client}\n\n```python\nfrom polyswarm_api.api import PolyswarmAPI\n\napi_key = \"1234123412341234123412341234\"\ncommunity_name = \"default\"\napi = PolyswarmAPI(key=api_key, community=community_name)\n```\n\nLocate the `api_key` for the User/Team from [here](https://polyswarm.network/account/api-keys)\n\n> If the Subscription plan has **\"Private Communities\"** then Define the Private Community Name provided to you by PolySwarm in the `community_name` value above and the Team API key in the `api_key` field.\n\n### Retrieve account information\n\n| Feature | What is it for? | Package |\n| --------| ---------------| -------- |\n| Account Details | Retrieve account number and the teams you belong to. | `api.account_whois()` |\n| Account features and quotas | Retrieve enabled features, plan period, and daily API quota. | `api.account_features()` |\n\n###### Account Details\n\n```python\nwhois = api.account_whois()\nprint(f'Account number: {whois.account_number}')\n```\n\n###### Account Features and Quotas\n\n```python\nfeatures = api.account_features()\nprint(f'Plan: {features.account_plan_name}')\nprint(f'Plan window: {features.plan_period_start} → {features.plan_period_end}')\nprint(f'Daily API limit: {features.daily_api_limit}')\nprint(f'Daily API remaining: {features.daily_api_remaining}')\nprint(f'Stream access: {features.has_stream_access}')\nprint(f'Trial: {features.is_trial} (expired: {features.is_trial_expired})')\n```\n\n> Use `daily_api_remaining` to back off gracefully before hitting the daily quota.\n> If you need higher limits or stream access, contact sales@polyswarm.io.\n\n## Scanning an Artifact {#scanning-artifact}\n\n| Feature | What is it for? | Package |\n| --------| ---------------| -------- |\n| Scan File | Scan a File in the PolySwarm network to retrieve a verdict. | `api.submit()` |\n| Scan URL | Scan a URL in the PolySwarm network to retrieve a verdict. | `api.submit(URL, artifact_type='url')` |\n\n###### Scan a File\n```python\nFILE = '/home/user/malicious.bin'\n\npositives = 0\ntotal = 0\n\ninstance = api.submit(FILE)\nresult = api.wait_for(instance)\n\nif result.failed:\n    print(f'Failed to get results')\n    sys.exit()\n\nprint('Engine Assertions:')\nfor assertion in result.assertions:\n    if assertion.verdict:\n        positives += 1\n    total += 1\n    print('\\tEngine {} asserts {}'.\\\n            format(assertion.author_name,\n                   'Malicious' if assertion.verdict else 'Benign'))\n\nprint(f'Positives: {positives}')\nprint(f'Total: {total}')\nprint(f'PolyScore: {result.polyscore}\\n')\n\nprint(f'sha256: {result.sha256}')\nprint(f'sha1: {result.sha1}')\nprint(f'md5: {result.md5}')\nprint(f'Extended type: {result.extended_type}')\nprint(f'First Seen: {result.first_seen}')\nprint(f'Last Seen: {result.last_seen}\\n')\n\nprint(f'Permalink: {result.permalink}')\n```\n\nHere is another example of sending a sample inside a zip file that is protected with a password `infected`:\n\n```python\nresult = api.submit('./malicious-enc.zip',\n                    preprocessing={'type': 'zip', 'password': 'infected'})\nprint(result.status)\n```\n\n\n###### Scan a URL\n> When scanning a URL, you should always include the protocol (`http://` or `https://`).\n\n```python\nURL = 'https://polyswarm.io'\n\npositives = 0\ntotal = 0\n\ninstance = api.submit(URL, artifact_type='url')\nresult = api.wait_for(instance)\n\nif result.failed:\n    print(f'Failed to get results')\n    sys.exit()\n\nprint('Engine Assertions:')\nfor assertion in result.assertions:\n    if assertion.verdict:\n        positives += 1\n    total += 1\n    print('\\tEngine {} asserts {}'.\\\n            format(assertion.author_name,\n                   'Malicious' if assertion.verdict else 'Benign'))\n\nprint(f'Positives: {positives}')\nprint(f'Total: {total}\\n')\n\nprint(f'Permalink: {result.permalink}')\n```\n\nThe Scanning endpoint has options available to extend the scan time, for urls this should always be `most-time`.\n\n| Option | Value | Description |\n| --------| ---------------| -------- |\n| `scan_config` | `default` | 25 second scan window |\n| `scan_config` | `more-time` | 50 second scan window |\n| `scan_config` | `most-time` | 100 second scan window |\n\n```python\ninstance = api.submit(URL, artifact_type='url', scan_config='most-time')\nresult = api.wait_for(instance)\n```\n\n## Rescanning Artifacts {#rescanning-artifacts}\n| Feature | What is it for? | Package |\n| --------| ---------------| -------- |\n| Rescan| Rescan an Artifact to provide up to date verdict and analysis |  `api.rescan()`|\n\n```python\ninstance = api.rescan(\"275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f\")\nresult = api.wait_for(instance)\n\nif result.failed:\n    print(f'Failed to get results')\n    sys.exit()\n\npositives = 0\ntotal = 0\n\nprint('Engine Assertions:')\nfor assertion in result.assertions:\n    if assertion.verdict:\n        positives += 1\n    total += 1\n    print('\\tEngine {} asserts {}'.\\\n            format(assertion.author_name,\n                   'Malicious' if assertion.verdict else 'Benign'))\n\nprint(f'Positives: {positives}')\nprint(f'Total: {total}')\nprint(f'PolyScore: {result.polyscore}\\n')\n\nprint(f'sha256: {result.sha256}')\nprint(f'sha1: {result.sha1}')\nprint(f'md5: {result.md5}')\nprint(f'Extended type: {result.extended_type}')\nprint(f'First Seen: {result.first_seen}')\nprint(f'Last Seen: {result.last_seen}\\n')\n\nprint(f'Permalink: {result.permalink}')\n```\n\n## Downloading Artifacts {#downloading-artifacts}\n\n| Feature | What is it for? | Package |\n| --------| ---------------| -------- |\n| Download Artifact| Download the file locally by searching with a hash value | `api.download()`|\n\n```python\nOUTPUT_DIR = '/tmp/'\nEICAR_HASH = '275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f'\n\nartifact = api.download(OUTPUT_DIR, EICAR_HASH)\n```\n\n## Downloading Bundles\n\nThis provides the ability to 'bundle' selected items together into a single zip file for easy collection. This is a three step process.\n\n* Create the bundle\n* Get the bundle status, wait for it to be built\n* Download the bundle\n\n| Feature | What is it for? | Package |\n| --------| ---------------| -------- |\n| Create Bundle | Create the bundle based of the instance_id values of the items in the bundle. | `api.sample_bundle_task_create()`|\n| Get Bundle | Get the status of the bundle creation, wait for `State: SUCCEEDED` before continuing. | `api.sample_bundle_task_get()`|\n| Download Bundle | Download the bundle. | `api.sample_bundle_download()`|\n\n\n```python\ntask = api.sample_bundle_task_create(['51375268900310741'], preserve_filenames=False, filename='bundle-archive')\ntask_id = api.sample_bundle_task_get(task.id)\napi.sample_bundle_download(task_id, '/download/bundles/')\n```\n\n## Reporting {#report}\n\n| Feature | What is it for? | Package |\n| --------| ---------------| -------- |\n| Create report | Create a report in html or pdf for an artifact, this endpoint is also used to create a zip file of sandbox artifacts. | `api.report_create()`|\n| Get report status | Retrieve the report creation status | `api.report_get()`|\n| Download report| Download the finished report locally| `api.report_download()`|\n| List templates | List the templates| `api.report_template_list()`|\n| Create a template| Create a new template | `api.report_template_create()`|\n| Delete a template | Delete a template | `api.report_template_delete()`|\n| Get template details| View specific template | `api.report_template_get()`|\n| Update template | Update a current template | `api.report_template_update()`|\n| Update template logo | Upload a logo for template  | `api.report_template_logo_update()`|\n| Delete template logo | Delete a logo for a template | `api.report_template_logo_delete()`|\n| Download template logo | Download a logo from the template | `api.report_template_logo_download()`|\n\n###### Create report\n\n```python\nreport = api.report_create(type='scan', format='pdf', instance_id=instance_id)\nprint(f'Report ID: {report.id} (State: {report.state})')\n\n# `report_wait_for()` is a method to fetch the report progress over\n# and over until is not in PENDING state anymore\nreport = api.report_wait_for(report.id, timeout=timeout_seconds)\nif report.state == 'SUCCEEDED':\n    response = requests.get(report.url, stream=True)\n    response.raise_for_status()\n    with open(f'scan-{instance_id}.pdf', 'wb') as f:\n        response.raw.decode_content = True\n        shutil.copyfileobj(response.raw, f)\nelse:\n    print(f'Report failed (State: {report.state})')\n```\n\n###### Create a ZIP file of Sandbox Artifacts\n\nThe `template_metadata` value can contain one or many separated by commas of: `report` , `raw_report` , `screenshot` , `recording` , `dropped_file` , `memory_dump` , `pcap` or `jarm`.\n\nThe below example highlights how to download a zip file that contains the following sandbox files: pdf report, report, raw_report, screenshot and jarm.\n\nThe `sandbox_task_id` is the ID for the sandbox session that you wish to download the files from.\n\n```python\nreport = api.report_create(type='sandbox_zip', format='zip', sandbox_task_id=123456, template_metadata={'zip_report_ids': [123], 'sandbox_artifact_types': ['report', 'raw_report', 'screenshot', 'jarm'] })\n```\n\n###### Create LLM Report\n\nLLM reports are AI-generated reports created from scan and/or sandbox analysis results. You can provide an `instance_id` (from a scan), a `cape_sandbox_task_id` (from a Cape sandbox session), a `triage_sandbox_task_id` (from a Triage sandbox session), or any combination of these.\n\nFor this to work, the team plan must include access to `downloads`. This feature consumes one unit from the PolySwarm Intelligence quota per report generated, which covers both the create and download steps.\n\n```python\n# Create LLM report from a scan result\nllm_report = api.llm_report_create(instance_id=instance_id)\nprint(f'LLM Report ID: {llm_report.id} (State: {llm_report.state})')\n\n# Or create LLM report from a Cape sandbox result\nllm_report = api.llm_report_create(cape_sandbox_task_id=cape_sandbox_task_id)\nprint(f'LLM Report ID: {llm_report.id} (State: {llm_report.state})')\n\n# Or create LLM report from a Triage sandbox result\nllm_report = api.llm_report_create(triage_sandbox_task_id=triage_sandbox_task_id)\nprint(f'LLM Report ID: {llm_report.id} (State: {llm_report.state})')\n\n# Or create LLM report combining Cape and Triage sandbox results (optionally with a scan)\nllm_report = api.llm_report_create(cape_sandbox_task_id=cape_sandbox_task_id, triage_sandbox_task_id=triage_sandbox_task_id)\nprint(f'LLM Report ID: {llm_report.id} (State: {llm_report.state})')\n```\n\n###### Get LLM Report Status\n\n```python\nllm_report = api.llm_report_get(report_task_id)\nprint(f'LLM Report State: {llm_report.state}')\nprint(f'LLM Report ID: {llm_report.id}')\n```\n\n###### Download LLM Report\n\n```python\nresult = api.llm_report_download(report_task_id, '/download/reports/')\nprint(result)\n```\n\n###### List Templates\n\n```python\nresults = api.report_template_list()\nfor template in results:\n   print(f'ID: {template.id}')\n   print(f'Created: {template.created}')\n   print(f'Name: {template.template_name}')\n   print(f'Color: {template.primary_color}\\n')\n```\n\n###### Create a template\n\n```python\nresult = api.report_template_create(template_name='testreport1')\n```\n\n###### Delete a template\n\n```python\nresult = api.report_template_delete(98453877554394669)\n```\n\n###### Get template details\n\n```python\nresult = api.report_template_get(95389624286242180)\nprint(f'ID: {result.id}')\nprint(f'Created: {result.created}')\nprint(f'Name: {result.template_name}')\nprint(f'Color: {result.primary_color}\\n')\n```\n\n## Hash Searching {#hash-searching}\n\n| Feature | What is it for? | Package |\n| --------| ---------------| -------- |\n| Search | Search the polyswarm dataset with a hash (sha256,md5 or sha1) value | `api.search()` |\n\n```python\n# sha256, md5, and sha1 supported\nEICAR_HASH = '275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f'\n\npositives = 0\ntotal = 0\n\ntry:\n    results = api.search(EICAR_HASH)\n\n    for result in results:\n        if result.failed:\n            print(f'Failed to get result.')\n            break\n\n        if not result.assertions:\n            print('Artifact not scanned yet - Run rescan for Engine Assertions.')\n        else:\n            print('Engine Assertions:')\n\n            for assertion in result.assertions:\n                if assertion.verdict:\n                    positives += 1\n                total += 1\n                print('\\tEngine {} asserts {}'. \\\n                      format(assertion.author_name,\n                             'Malicious' if assertion.verdict else 'Benign'))\n\n        print(f'Positives: {positives}')\n        print(f'Total: {total}')\n        print(f'PolyScore: {result.polyscore}\\n')\n\n        print(f'sha256: {result.sha256}')\n        print(f'sha1: {result.sha1}')\n        print(f'md5: {result.md5}')\n        print(f'Extended type: {result.extended_type}')\n        print(f'First Seen: {result.first_seen}')\n        print(f'Last Seen: {result.last_seen}\\n')\n\n        print(f'Permalink: {result.permalink}')\nexcept exceptions.NoResultsException:\n    print(f'No results for the provided hash.')\n```\n\n## Metadata Searching {#metadata-searching}\nPolySwarm's Metadata Search is a powerful and flexible means to discover previously unknown malware. Metadata commands can be built and fed into the arguments for the below api endpoint.\nTo understand how to build out a Metadata query see the [How-To Guide](/customers/polyswarm-customer-meta-query/#meta-getting-started).\n\n| Feature | What is it for? | Package | Parameters |\n| --------| ---------------| -------- | -------- |\n| Search | Search the polyswarm dataset for metadata | `api.search_by_metadata()` | include, exclude |\n\nThe following sections will list specific examples with the scopes of the searches and real world use case examples.\n\n```python\nquery = 'artifact.sha256:\"275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f\"'\n\nresults = api.search_by_metadata(query)\n\n# Our query is by cryptographic hash; we expect at most 1 result.\n# Regardless, it's good practice to properly handle multiple results.\nfor result in results:\n    print(f\"Artifact Attributes: {result.artifact}\")\n```\nExclude Results in the Metadata query example:\n\n```python\nquery = 'artifact.sha256:\"275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f\"'\n\nresults = api.search_by_metadata(query, exclude=[\"exiftool\",\"lief\",\"polyunite.malware_family\"])\n\n# Process results\nfor result in results:\n    print(f\"Artifact Attributes: {result.json}\")  # Debugging: Print full response to verify fields\n```\n\nInclude Results in the Metadata query example:\n\n```python\nquery = 'artifact.sha256:\"275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f\"'\n\nresults = api.search_by_metadata(query, include=[\"pefile\",\"polyunite.malware_family\"])\n\n# Process results\nfor result in results:\n    print(f\"Artifact Attributes: {result.json}\")  # Debugging: Print full response to verify fields\n```\n\n\n## IOC Searching {#ioc-searching}\nIOC Searching can be split into three groups of functions, these are:\n\n| Feature | What is it for? | Package |\n| --------| ---------------| -------- |\n| Associated IOCs| Searching for Associated IOCs related to a Hash| `api.iocs_by_hash()`|\n| Associated Hashes| Searching for Associated Hashes to a IP, URL, imphash or MITRE TTP| `api.search_by_ioc()`|\n| Known Good Domains| Check for known good domains and IPs| `api.check_known_hosts()`|\n\n- Searching for Associated IOCs related to a Hash: This returns IOCs that were observed by our sandbox during analysis. These IP's and Domains are classified as C2 or malicious.\n- Searching for Associated Hashes related to an IP, URL, imphash or MITRE TTP: This returns file hashes that were seen communicating with the specified IPs or domains in our sandbox — regardless of whether the communication was malicious or not.\n\n**Searching for Associated IOCs**\n\n```python\nresults = api.iocs_by_hash('sha256', 'aac08c6f7474c979acf2a3aef1f2727820ece755001530cdebf346b5d1ae2ccb', hide_known_good=True)\nfor result in results:\n    iocs = result.json\n    print(f\"ips: {iocs['ips']}\")\n    print(f\"urls: {iocs['urls']}\")\n    print(f\"ttps: {iocs['ttps']}\")\n    print(f\"imphash: {iocs['imphash']}\")\n```\n\n**Searching for Associated Hashes**\n\n```python\n# IOC Search by ip\nfor result in api.search_by_ioc(ip=\"108.159.227.121\"):\n    print(f\"sha256: {result.json}\")\n\n\n# IOC Search by domain\nfor result in api.search_by_ioc(domain=\"img-s-msn-com.akamaized.net\"):\n    print(f\"sha256: {result.json}\")\n\n# IOC Search by MITRE ttp\nfor result in api.search_by_ioc(ttp=\"T1060\"):\n    print(f\"sha256: {result.json}\")\n```\n\nThis endpoint returns a generator object, which means results are loaded 'lazily' each time you load the results, a new API call is made to retrieve the next page. If more control is required, use Pythons `next()` function.\n\n**Searching for Known Good Domains and IPs**\n```python\nresults = api.check_known_hosts(domains=[\"polyswarm.network\"], ips=[\"0.0.0.0\"]):\nfor result in results:\n    ioc = result.json\n    print(f\"type:{ioc.type}, host:{ioc.host}, source:{ioc.source}, good:{ioc.good}\")\n```\n\n<div class=\"danger\" markdown=\"1\">\n\n> **A word of caution with Known Good checking!**\n>\n> Our list of known good domains and IPs is not all-inclusive!\n> Our goal for this feature is to provide an easy way to find the top most commonly known good domains and IPs, so they can be excluded from analysis.\n\n</div>\n\n## Sandboxing {#sandboxing}\nSandboxing in PolySwarm provides the ability to submit files directly to be sandboxed, submit Artifacts already in PolySwarm to be sandboxed, and review what has been submitted to be sandboxed. Sandbox Analysis will take around 2-5 minutes before the results can be accessed.\n\nTo view some commonly asked questions and answers about Sandboxing , see [here](/customers/polyswarm-customer-cli-v3/#sandboxing-qa)\n\n| Feature                           | What is it for?                                                                                                                          | Package                       |\n|-----------------------------------|------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------|\n| [Submit File](#sandbox-file)      | Submit a file to be sandboxed, define the sandbox name along with the sandbox VM.                                                        | `api.sandbox_file()`          |\n| [Submit URL](#sandbox-url)        | Submit a URL to be sandboxed, define the sandbox name along with the sandbox vm, and chosen browser.                                     | `api.sandbox_url()`           |\n| [Submit](#sandbox-artifact)       | Submit an already-scanned artifact for processing, provide the instance id of the artifact,  the sandbox name along with the sandbox vm. | `api.sandbox()`               |\n| [List](#list-sandbox)             | List the available Sandbox providers, to obtain the sandbox name and sandbox vm.                                                         | `api.sandbox_providers()`     |\n| [Lookup](#lookup-sandbox-task)    | Get a sandbox task by id.                                                                                                                | `api.sandbox_task_status()`   |\n| [Lookup Latest](#lookup-latest)   | Lookup the latest sandbox task by sha256 and sandbox provider name, providing the metadata from the sandbox                              | `api.sandbox_task_latest()`   |\n| [List Tasks](#list-sandbox-tasks) | List sandbox tasks that were created by you or someone on your team.                                                                     | `api.sandbox_my_tasks_list()` |\n| [Search](#search-sandbox)         | Search sandbox tasks by sha256 and sandbox, status, start_date, and/or end_date.                                                         | `api.sandbox_task_list()`     |\n| [Download](#sandbox-download)     | Download Reports and other sandbox artifacts.                                                                                            | `api.download_id()`           |\n\n###### Sandboxing a File {#sandbox-file}\n\n> Want to know what files types are supported? See [here](sandbox#file-types)\n\n**network_enabled** This boolean controls the network access for a sandbox execution. If this value is not passed or None, the default for a public community is True and a private community is False.\n\n```python\nresult = api.sandbox_file('./malicious.exe', 'triage', 'windows11-21h2-x64')\nprint(result.status)\n```\n\nHere is another example of sending a sample inside a zip file that is protected with a password `infected`:\n\n```python\nresult = api.sandbox_file('./malicious-enc.zip',\n                          'triage',\n                          'windows11-21h2-x64',\n                          preprocessing={'type': 'zip', 'password': 'infected'},\n                          network_enabled=True)\nprint(result.status)\n```\n\nSandboxes have multiple returned statuses, these are listed below.\n\n| Status                               | What is it for?                                                          |\n|--------------------------------------|--------------------------------------------------------------------------|\n| `Success`                            | Finished processing correctly.                                           |\n| `Started`                            | Sandbox session has started.                                             |\n| `Collecting Data`                    | Sandbox session has been successful and data is being collected.         |\n| `Failed`                             | Sandbox session has failed, this can be due to many reasons.             |\n| `Pending`                            | Sandbox session is queued up and ready to start.                         |\n| `Delayed`                            | Sandbox session has been delayed and will start soon.                    |\n| `Failed with Quota Reimbursement`    | Finished processing but failed, quota will be reimbursed.                |\n| `Timed out with Quota Reimbursement` | Delayed in the queue for too long, got timed out and then reimbursement. |\n\n###### Sandboxing a URL {#sandbox-url}\n\n```python\nresult = api.sandbox_url('https://www.polyswarm.io', 'triage', 'windows11-21h2-x64', browser='edge')\nprint(result.status)\n```\n\nIf the URL is stored in a QR Code image, here is how to send it:\n\n```python\nresult = api.sandbox_url(None,\n                         'cape',\n                         'win-10-build-19041',\n                         artifact='/path/to/qrcode.png',\n                         preprocessing={'type': 'qrcode'},\n                         browser='firefox')\nprint(result.status)\n```\n\n###### Sandboxing an Existing Artifact {#sandbox-artifact}\n```python\nresult = api.sandbox(42445563653708569, 'triage', 'windows11-21h2-x64', True)\nprint(result.status)\n```\n\n##### Sandboxing in a Private Community\nWhen sandboxing in a private community,  if the `network_enabled` flag is not passed, it will by default be True for a public community and False for a private community.\n```python\nresult = api.sandbox_file('./tests/eicar.yara', 'triage', 'windows11-21h2-x64')\n```\n\n###### List Sandbox Providers {#list-sandbox}\n```python\nsandboxes = api.sandbox_providers()\nprint(sandboxes)\n```\n\n###### Lookup Sandbox Task {#lookup-sandbox-task}\n```python\ntask = api.sandbox_task_status(53445563653708569)\nprint(task)\n```\n\n###### Download Sandbox Artifacts {#sandbox-download}\n```python\ntask = api.download_id('./outdir', 53445563653708569)\nprint(task)\n```\n\n###### Lookup Latest Sandbox Task {#lookup-latest}\n```python\nlatest = api.sandbox_task_latest('18e5b8fe65e8f73c3a4a637c258c02aeec8a6ab702b15b7ee73f5631a9879e40', 'triage')\nprint(latest)\n```\n\n###### List my Sandbox Tasks {#list-sandbox-tasks}\n```python\ntasks = api.sandbox_my_tasks_list(sandbox='triage')\nprint(tasks)\n```\n\n###### Search Sandbox Tasks {#search-sandbox}\n```python\ntasks = api.sandbox_task_list(sandbox='triage', start_date='2023-10-31', status=\"SUCCEEDED\")\nprint(tasks)\n```\n\n## Hunting with Yara {#hunting-yara}\n\nHunting with Yara can be split into the below three sections:\n* [Managing Yara Rulesets](/customers/polyswarm-customer-api-v3/#ruleset)\n* [Live Hunts](/customers/polyswarm-customer-api-v3/#live)\n* [Historical Hunts](/customers/polyswarm-customer-api-v3/#historical)\n\n### Managing Yara Rulesets {#ruleset}\n\n| Feature                   | What is it for?                           | Package                |\n|---------------------------|-------------------------------------------|------------------------|\n| [Create](#create-ruleset) | Create a Ruleset to be used in Hunting.   | `api.ruleset_create()` |\n| [List](#list-ruleset)     | List the Rulesets that have been created. | `api.ruleset_list()`   |\n| [Update](#update-ruleset) | Update the ruleset with new values.       | `api.ruleset_update()` |\n| [Delete](#delete-ruleset) | Delete a Ruleset permanently.             | `api.ruleset_delete()` |\n\n###### Create Ruleset {#create-ruleset}\n\n```python\nnew_ruleset = api.ruleset_create(name='eicar',\n                                 rules=open('eicar.yara').read(),\n                                 description='eicar ruleset')\nprint(f'ID: {new_ruleset.id}')\n```\n\n###### List Rulesets {#list-ruleset}\n\n```python\nrulesets = api.ruleset_list()\n\nfor ruleset in rulesets:\n    print(f'ID: {ruleset.id}')\n```\n\n###### Update Ruleset {#update-ruleset}\n\n```python\n# updating the ruleset yara rules (can also update name and description)\napi.ruleset_update(new_ruleset.id, rules=open('another.yara').read())\n```\n\n###### Delete Ruleset {#delete-ruleset}\n\n```python\napi.ruleset_delete(new_ruleset.id)\n```\n\n### Live Hunts {#live}\n\n| Feature                                            | What is it for?                                          | Package                  |\n|----------------------------------------------------|----------------------------------------------------------|--------------------------|\n| [Get Ruleset ID](#get-rule)                        | Get the ruleset id required to start a Live Hunt.        | `api.ruleset_get()`      |\n| [Start](#start-live)                               | Start a Live Hunt based on a ruleset.                    | `api.live_start()`       |\n| [View Live Results of a Live Hunt](#results-live)  | View all the live results generated from the live hunts. | `api.live_feed()`        |\n| [View a Singular Result](#results-single)          | Inspect a particular result and get a download link.     | `api.live_result()`      |\n| [Delete](#delete-results)                          | Delete a Live Hunt permanently.                          | `api.live_feed_delete()` |\n| [Stop](#stop-results)                              | Stop a Live Hunt.                                        | `api.live_stop()`        |\n\n###### Get Ruleset ID {#get-rule}\n```python\nruleset = api.ruleset_get(57989886451857569)\n```\n\n###### Start Live Hunt {#start-live}\n```python\nruleset = api.live_start(ruleset.id)\nprint(f'ID: {ruleset.livescan_id}')\n```\n\n###### View Live Results of a Live Hunt {#results-live}\n```python\n# reverse chronologically ordered iterator\nresults = api.live_feed(since=999999)\nfor result in results:\n    print(f'ID: {result.id}')\n```\n\n###### View a Singular Result {#results-single}\n```python\n# you can inspect more details about a single result\n# based on its id, it also provides a download link\n# to the file and the origial yara rule used\n# these extra info does not come directly from the\n# feed listing method for performance reasons\nresult = api.live_result(91163237970748480)\nprint(f'ID: {result.id}')\nprint(f'URL: {result.download_url}')\n```\n\n###### Delete a Result {#delete-results}\n```python\napi.live_feed_delete([91163237970748480])\n```\n\n###### Stop a Live Hunt {#stop-results}\n```python\nruleset = api.ruleset_get(57989886451857569)\nruleset = api.live_stop(ruleset.id)\n```\n\n### Historical Hunts {#historical}\n\n| Feature                                         | What is it for?                                       | Package                            |\n|-------------------------------------------------|-------------------------------------------------------|------------------------------------|\n| [Create](#create-historical)                    | Create a Historical Hunt by providing a Yara ruleset. | `api.historical_create`            |\n| [Update](#update-historical)                    | Update the Historical Hunt.                           | `api.historical_update()`          |\n| [List Hunts](#list-historical)                  | List the Historical Hunts.                            | `api.historical_list()`            |\n| [View Details](#view-historical)                | View Historical Hunt Details.                         | `api.historical_get()`             |\n| [View Results](#view-rseults-historical)        | View the results of a  Historical Hunt.               | `api.historical_results()`         |\n| [View Single Result](#view-single--historical)  | View and Download a Single Result.                    | `api.historical_result()`          |\n| [Delete Result](#delete-result-historical)      | Delete an undesirable result.                         | `api.historical_results_delete()`  |\n| [Delete Hunt](#delete-historical)               | Delete an Historical Hunt.                            | `api.historical_delete()`          |\n\n###### Create a Historical Hunt {#create-historical}\n```python\nhistorical = api.historical_create(rule=open('eicar.yara').read())\nprint(f'ID: {historical.id}')\n```\n###### Update a Historical Hunt {#update-historical}\n```python\n# the only update you can perform on a historical hunt\n# is to cancel the hunt before it finishes\napi.historical_update(49988514210960880)\n```\n\n###### List Historical Hunts {#list-historical}\n```python\n# you can also list all historical hunts you have in your account\nresults = api.historical_list(since=9999999)\nfor result in results:\n    print(f'ID: {result.id}')\n```\n\n###### View Historical Hunt Details {#view-historical}\n```python\n# you can retrieve extra information about the hunt\n# this also includes a consolidated results csv\nhistorical = api.historical_get(48011760326110718)\nprint(f'ID: {historical.id}')\nprint(f'Results CSV: {historical.results_csv_uri}')\n```\n\n###### View Historical Hunt Results {#view-rseults-historical}\n```python\n# you can check the results of a historical hunt\nresults = api.historical_results(48011760326110718)\nfor result in results:\n    print(f'ID: {result.id}')\n```\n\n###### View a Singular Historical Hunt Result {#view-single--historical}\n```python\n# retrieve a single result with extra information\nresult = api.historical_result(89734617019442134)\nprint(f'ID: {result.id}')\nprint(f'URL: {result.download_url}')\n```\n\n###### Delete an Historical Hunt Result {#delete-result-historical}\n```python\n# delete an undesirable result\napi.historical_results_delete([89734617019442134])\n```\n\n###### Delete a Historical Hunt {#delete-historical}\n```python\n# you can delete a historical hunt\n# keep in mind that this is an async process and the\n# hunt will be scheduled for deletio..\napi.historical_delete(49988514210960880)\n```\n\n## Get a Stream {#get-a-stream}\n| Feature | What is it for?                        | Package         |\n|---------|----------------------------------------|-----------------|\n| Stream  | Fetch a Stream of data from PolySwarm. | `api.stream()`  |\n\n```python\nSINCE = 60 # Fetch stream from the last 60 minutes\nstreams = api.stream(since=SINCE)\n\nfor stream in streams:\n    print(f'ID: {stream.id}')\n    print(f'URI: {stream.uri}')\n    print(f'Created: {stream.created}')\n    print(f'Community: {stream.community}')\n```\n> Stream is a paid feature that is added to an account on a case-by-case basis.\n> If you'd like to add this feature to your account, contact us at [sales@polyswarm.io](mailto:info@polyswarm.io).\n\n## Notification Webhooks {#notification-webhooks}\n\nNotification webhooks allow you to receive real-time notifications for events in PolySwarm, such as when sandbox analysis completes.\n\n| Feature | What is it for? | Package |\n| --------| ---------------| -------- |\n| Create Notification Webhook | Create a new notification webhook for receiving event notifications | `api.notification_webhook_create()` |\n| Get Notification Webhook | Retrieve a specific notification webhook configuration by ID | `api.notification_webhook_get()` |\n| Update Notification Webhook | Update an existing notification webhook's configuration | `api.notification_webhook_update()` |\n| Delete Notification Webhook | Remove a notification webhook permanently | `api.notification_webhook_delete()` |\n| List Notification Webhooks | List all notification webhooks configured for the current account | `api.notification_webhook_list()` |\n| Test Notification Webhook | Send a test payload to a notification webhook to verify it's working | `api.notification_webhook_test()` |\n\n###### Create a Notification Webhook\n\n```python\nwebhook = api.notification_webhook_create(\n    webhook_uri='https://example.com/webhook',\n    secret='your-secret-key',\n    status='enabled',\n    events={'sandbox_done'}\n)\nprint(f'Webhook ID: {webhook.id}')\n```\n\n###### Get a Notification Webhook\n\n```python\nwebhook = api.notification_webhook_get(webhook_id='12345')\nprint(f'Webhook URI: {webhook.webhook_uri}')\nprint(f'Status: {webhook.status}')\n```\n\n###### Update a Notification Webhook\n\n```python\nupdated_webhook = api.notification_webhook_update(\n    webhook_id='12345',\n    webhook_uri='https://example.com/new-webhook',\n    status='disabled'\n)\n```\n\n###### Delete a Notification Webhook\n\n```python\nresult = api.notification_webhook_delete(webhook_id='12345')\n```\n\n###### List All Notification Webhooks\n\n```python\nwebhooks = api.notification_webhook_list()\nfor webhook in webhooks:\n    print(f'ID: {webhook.id}')\n    print(f'URI: {webhook.webhook_uri}')\n    print(f'Status: {webhook.status}')\n    print(f'Events: {webhook.events}\\n')\n```\n\n###### Test a Notification Webhook\n\n```python\n# Send a test payload to verify the notification webhook is working\napi.notification_webhook_test(webhook_id='12345')\nprint('Test payload sent successfully')\n```\n\n## Changelog {#changelog}\n\n#### Version 3.16.0\n**Release Date:** 2026-01-28\n**Breaking Changes:** N/A\n\n| Item | Topic                   | Description                                                                                         |\n|------|-------------------------|-----------------------------------------------------------------------------------------------------|\n| 1.0  | Notification Webhooks | You can now [register notification webhooks](polyswarm-customer-api-v3#notification-webhooks) to receive automatic push notifications when sandbox tasks complete. `api.notification_webhook_create()` etc |\n| 2.0  | llm reports | New endpoints for creating llm reports: `llm_report`, AI-generated reports created from scan and/or sandbox analysis results. |\n\n#### Version 3.13.1\n**Release Date:** 2025-06-10\n**Breaking Changes:** N/A\n\n| Item | Topic                   | Description                                                                                         |\n|------|-------------------------|-----------------------------------------------------------------------------------------------------|\n| 1.0  | Bug fix for Community Param | Community not being passed to reports endpoints, fixed in this release. |\n\n#### Version 3.13.0\n**Release Date:** 2025-06-02\n**Breaking Changes:** N/A\n\n| Item | Topic                   | Description                                                                                         |\n|------|-------------------------|-----------------------------------------------------------------------------------------------------|\n| 1.0  | New Param for Sandbox Download | Allow to pass command arguments to a new sandbox task with the new param `arguments` in `download_sandbox_artifact()` method. |\n| 2.0  | Bug fix for argument | Fix a missing `community` argument to be passed to `download_id()` and `download_sandbox_artifact()` |\n\n#### Version 3.12.0\n**Release Date:** 2025-05-20\n**Breaking Changes:** N/A\n\n| Item | Topic                   | Description                                                                                         |\n|------|-------------------------|-----------------------------------------------------------------------------------------------------|\n| 1.0  | New Feature, Download Sample Bundle Zips | Ability to bundle files into a single zip to download, via methods: `sample_bundle_task_create()`, `sample_bundle_task_get()` and `sample_bundle_download()` |\n| 2.0  | New Feature, Download an artifact created by a Sandbox Task | Ability to download files like a report from the Sandbox Task, via method `download_sandbox_artifact()` |\n\n\n#### Version 3.11.0\n**Release Date:** 2024-12-09\n**Breaking Changes:** N/A\n\n| Item | Topic              | Description                                                                           |\n|------|--------------------|---------------------------------------------------------------------------------------|\n| 1.0  | New accounts field | Added new field `features[].backing_feature` to the response of `account_features()`. |\n\n\n#### Version 3.10.0\n**Release Date:** 2024-09-24\n**Breaking Changes:** N/A\n\n| Item | Topic              | Description                                                                                                                             |\n|------|--------------------|-----------------------------------------------------------------------------------------------------------------------------------------|\n| 1.0  | New Artifact field | Added new field `failed_reason` to the responses of `submit()`, `sandbox_file()` and `sandbox_url()` calls when there is a known error. |\n| 2.0  | Bug fix            | Added check first whether a report can be downloaded to `report_download()`.                                                            |\n\n\n#### Version 3.9.0\n**Release Date:** 2024-08-07\n**Breaking Changes:** Item 4.0\n\n| Item | Topic                                                     | Description                                                                                                        |\n|------|-----------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------|\n| 1.0  | Scan and Sandboxing of QR Code images with URL as payload | Implemented in the `submit()` and `sandbox_url()` APIs.                                                            |\n| 2.0  | Get account's basic information                           | New API method `account_whois()`.                                                                                  |\n| 3.0  | Get accounts' features and quota                          | New API method `account_features()`.                                                                               |\n| 4.0  | Change zip file submissions                               | Replace `is_zip` and `zip_password` with new `preprocessing` argument in the `submit()` and `sandbox_file()` APIs. |\n\n#### Version 3.8.0\n**Release Date:** 2024-06-27\n\n**Breaking Changes:** N/A\n\n| Item | Topic                        | Description                                                                           |\n|------|------------------------------|---------------------------------------------------------------------------------------|\n| 1.0  | Support zip file submissions | New `is_zip` and `zip_password` argument in the `submit()` and `sandbox_file()` APIs. |\n\n#### Version 3.7.0\n**Release Date:** 2024-05-20\n\n**Breaking Changes:** Item 3.0\n\n| Item | Topic                     | Description                                                                                 |\n|------|---------------------------|---------------------------------------------------------------------------------------------|\n| 1.0  | Reports Generation        | Introduction of reports generation API: `report_create`, `report_get` and `report_download` |\n| 2.0  | Reports Templates         | Introduction of reports templates API: `report_template_**` methods.                        |\n| 3.0  | Python versions supported | Minimal Python version supported is 3.7.                                                    |\n\n#### Version 3.6.0\n**Release Date:** 2024-04-30\n\n**Breaking Changes:** N/A\n\n| Item | Topic       | Description                      |\n|------|-------------|----------------------------------|\n| 1.0  | Communities | Support EU communities.          |\n| 2.0  | Permalinks  | Fix permalink parsing.           |\n| 3.0  | IOC beta    | New method `add_known_bad_host`. |\n\n#### Version 3.5.2\n**Release Date:** 2024-02-22\n\n**Breaking Changes:** N/A\n\n| Item | Topic           | Description                                          |\n|------|-----------------|------------------------------------------------------|\n| 1.0  | URL Sandboxing  | Introduction of URL Sandboxing (`sandbox_url`) API.  |\n\n#### Version 3.4.3\n**Release Date:** 2023-09-20\n\n**Breaking Changes:** N/A\n\n| Item | Topic                                           | Description                                                                                                           |\n|------|-------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------|\n| 1.0  | Added Community Parameter to Live Results       | Added parameter `community` to /v3/hunt/live/list to allow you to see results from a private community.               |\n| 2.0  | Added Community Parameter to Historical Results | Added parameter `community` to /v3/hunt/historical/results/list to allow you to see results from a private community. |\n| 3.0  | New Permalink Structure                         | New Permalink Structure.                                                                                              |\n\n#### Version 3.4.0\n**Release Date:** 2023-07-12\n\n**Breaking Changes:** N/A\n\n| Item | Topic                                | Description                                            |\n|------|--------------------------------------|--------------------------------------------------------|\n| 1.0  | Sandbox Task Config                  | Added sandbox task config field on sandbox task model. |\n| 2.0  | `api.sandbox` and `api.sandbox_file` | Endpoint now accept provider and vm slugs.             |\n| 3.0  | `api.sandbox_providers`              | Now returns provider and vm config information.        |\n\n#### Version 3.3.2\n**Release Date:** 2023-06-20\n\n**Breaking Changes:** Item 3.0\n\n| Item | Topic                                           | Description                                                                                                     |\n|------|-------------------------------------------------|-----------------------------------------------------------------------------------------------------------------|\n| 1.0  | Dropping python 2.7 support.                    | -                                                                                                               |\n| 2.0  | Added New Polyswarm Lookup and Search Features. | Added `api.sandbox_task_status`, `api.sandbox_task_latest`, `api.sandbox_my_tasks` and `api.sandbox_task_list`. |\n| 3.0  | Changed the Sandbox Submit Interface.           | -                                                                                                               |\n"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/customers/how-to/polyswarm-customer-meta-query.md","frontmatter":{"title":"Building Metadata Queries in PolySwarm","excerpt":"A page dedicated to helping customers build and understand metadata queries."},"html":"<h1 id=\"meta-getting-started\" style=\"position:relative;\"><a href=\"#meta-getting-started\" aria-label=\"meta getting started permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>How to build a Metadata query</h1>\n<p>PolySwarm's Metadata Search provides you with the functionality to search through PolySwarm’s dataset to find samples that relate to information you are interested in. </p>\n<p>Once PolySwarm Scans or Sandboxes a sample, it will produce a large amount of metadata, this metadata is mapped into attribute fields that can be searched using Metadata Search, making it easy to find samples that you are interested in.  </p>\n<p>The general structure of a metadata query is: </p>\n<p><code class=\"language-text\">field:matched_value [logic field:matched_value]</code></p>\n<p>For example: </p>\n<p><code class=\"language-text\">scan.detections.malicious:>1 AND artifact.type:exe</code></p>\n<p>PolySwarm's Metadata Search is backed by Elasticsearch and supports the <a href=\"https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">full range of Elasticsearch search criteria</a> to deliver flexible results quickly, this includes Boolean logic, grouping, ranges, wildcards and regex. </p>\n<h3 id=\"searchable-fields\" style=\"position:relative;\"><a href=\"#searchable-fields\" aria-label=\"searchable fields permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>How to find searchable fields</h3>\n<p>PolySwarm contains hundreds of searchable fields. The full list, with a description of each field, current example values, and analyst pivot recipes, lives in the <a href=\"/customers/metadata-fields-reference/\">Metadata Fields Reference</a>.</p>\n<p>You can also fetch the live list programmatically:</p>\n<ul>\n<li>CLI: <code class=\"language-text\">polyswarm search mapping</code> (see the <a href=\"/customers/polyswarm-customer-cli-v3/#mapping\">CLI documentation</a>).</li>\n<li>REST: <code class=\"language-text\">GET /v3/search/metadata/mappings</code>.</li>\n</ul>\n<p>Once a metadata query has been built, you can use the same query in the Metadata Search UI, API Endpoint or Command Line Queries.</p>\n<h4 id=\"mime-file-types\" style=\"position:relative;\"><a href=\"#mime-file-types\" aria-label=\"mime file types permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Mime file Types</h4>\n<p>The following is a list of common mimetypes useful for querying via <code class=\"language-text\">scan.mimetype.mime</code>.</p>\n<table>\n<thead>\n<tr>\n<th>MIME Types</th>\n<th align=\"center\">Kind of document</th>\n<th align=\"center\">Extension</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>application/gzip</td>\n<td align=\"center\">GZip Compressed Archive</td>\n<td align=\"center\">.gz</td>\n</tr>\n<tr>\n<td>application/octet-stream</td>\n<td align=\"center\">Any kind of binary data</td>\n<td align=\"center\">.bin</td>\n</tr>\n<tr>\n<td>application/pdf</td>\n<td align=\"center\">Adobe Portable Document Format</td>\n<td align=\"center\">.pdf</td>\n</tr>\n<tr>\n<td>application/vnd.openxmlformats-officedocument.spreadsheetml.sheet</td>\n<td align=\"center\">Microsoft Excel 2007+ (OpenXML)</td>\n<td align=\"center\">.xlsx</td>\n</tr>\n<tr>\n<td>application/vnd.openxmlformats-officedocument.wordprocessingml.document</td>\n<td align=\"center\">Microsoft Word 2007+ (OpenXML)</td>\n<td align=\"center\">.docx</td>\n</tr>\n<tr>\n<td>application/x-dosexec</td>\n<td align=\"center\">PE32 executable</td>\n<td align=\"center\">.exe</td>\n</tr>\n<tr>\n<td>application/x-java-applet</td>\n<td align=\"center\">Compiled Java class data</td>\n<td align=\"center\">.class</td>\n</tr>\n<tr>\n<td>application/x-rar</td>\n<td align=\"center\">RAR archive data</td>\n<td align=\"center\">.rar</td>\n</tr>\n<tr>\n<td>application/xml</td>\n<td align=\"center\">XML</td>\n<td align=\"center\">.xml</td>\n</tr>\n<tr>\n<td>application/zip</td>\n<td align=\"center\">ZIP archive</td>\n<td align=\"center\">.zip</td>\n</tr>\n<tr>\n<td>text/html</td>\n<td align=\"center\">HyperText Markup Language (HTML)</td>\n<td align=\"center\">.htm .html</td>\n</tr>\n<tr>\n<td>text/plain</td>\n<td align=\"center\">Text, (generally ASCII or ISO 8859-n)</td>\n<td align=\"center\">.txt</td>\n</tr>\n</tbody>\n</table>\n<p>A list of all official MIME media types provided by IANA can be found <a href=\"http://www.iana.org/assignments/media-types/media-types.xhtml\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">here.</a></p>\n<h3 id=\"considerations\" style=\"position:relative;\"><a href=\"#considerations\" aria-label=\"considerations permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Considerations</h3>\n<p>There are some items to consider when building out the query:</p>\n<ul>\n<li>Attribute fields are case-sensitive.</li>\n<li>If a query refers to a field that doesn't exist, Metadata Search will ignore this portion of the query. Use the <code class=\"language-text\">_exists_</code> logic to check if the field is available, e.g., <code class=\"language-text\">_exists_:scan.latest_scan.assertions.ClamAV</code></li>\n<li>Always enclose literals in double-quotations (<code class=\"language-text\">\"</code>), or alternatively, escape all Elasticsearch control characters in your query.</li>\n<li>RegEx: Queries using <code class=\"language-text\">^</code> (beginning of line) or <code class=\"language-text\">$</code> (end of line) are not supported.</li>\n<li>\n<p>Wildcards:  </p>\n<ul>\n<li>Do not escape <code class=\"language-text\">*</code> in values—only in Attribute names.  </li>\n<li>Recommend using no more than one wildcard in a metadata query.  </li>\n</ul>\n</li>\n<li>\n<p>Ranges:  </p>\n<ul>\n<li>Square brackets (<code class=\"language-text\">[</code> &#x26; <code class=\"language-text\">]</code>) <strong>include</strong> range boundaries.  </li>\n<li>Curly brackets (<code class=\"language-text\">{</code> &#x26; <code class=\"language-text\">}</code>) <strong>exclude</strong> range boundaries.  </li>\n</ul>\n</li>\n</ul>\n<h3 id=\"meta-example\" style=\"position:relative;\"><a href=\"#meta-example\" aria-label=\"meta example permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Examples</h3>\n<p>Below are real-world metadata query examples that can be used in the <strong>UI</strong>, <strong>CLI</strong>, and <strong>API</strong>.</p>\n<table>\n<thead>\n<tr>\n<th>Metadata Query</th>\n<th align=\"center\">Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">scan.latest_scan.assertions.\\*.metadata.malware_family:*Trojan*</code></td>\n<td align=\"center\">Return all artifacts identified as belonging to a malware family that contains \"Trojan\" (Wildcard search).</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">exiftool.createdate:[2019-01-01 TO 2019-12-31]</code></td>\n<td align=\"center\">Return all artifacts with an <code class=\"language-text\">exiftool.createdate</code> in the year 2019 (Range search).</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">scan.latest_scan.detections.benign:[0 TO 10]</code></td>\n<td align=\"center\">Return artifacts where <code class=\"language-text\">benign</code> detections range between 0 and 10, including 10.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">(scan.latest_scan.detections.malicious:>0 AND scan.latest_scan.detections.malicious:&lt;=3) OR scan.latest_scan.assertions.ClamAV.assertion:malicious</code></td>\n<td align=\"center\">Return artifacts detected as malicious by <strong>1, 2, or 3 engines</strong>, OR those detected as malicious by <strong>ClamAV</strong> (Grouping).</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">scan.latest_scan.detections.benign:>0</code></td>\n<td align=\"center\">Return artifacts with at least <strong>one benign assertion</strong> (Comparison Operators).</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">pefile.compile_date:[2022-11-10  TO 2022-11-20] AND scan.detections.malicious:>1 AND polyunite.malware_family:Emotet</code></td>\n<td align=\"center\">Return artifacts with a compile date between two values, AND has been detected by more than <strong>one malicious assertion</strong> AND is related to Emotet.</td>\n</tr>\n</tbody>\n</table>","rawMarkdownBody":"\n# How to build a Metadata query {#meta-getting-started}\n\nPolySwarm's Metadata Search provides you with the functionality to search through PolySwarm’s dataset to find samples that relate to information you are interested in. \n\nOnce PolySwarm Scans or Sandboxes a sample, it will produce a large amount of metadata, this metadata is mapped into attribute fields that can be searched using Metadata Search, making it easy to find samples that you are interested in.  \n\nThe general structure of a metadata query is: \n\n`field:matched_value [logic field:matched_value]`\n\nFor example: \n\n`scan.detections.malicious:>1 AND artifact.type:exe`\n\nPolySwarm's Metadata Search is backed by Elasticsearch and supports the [full range of Elasticsearch search criteria](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html) to deliver flexible results quickly, this includes Boolean logic, grouping, ranges, wildcards and regex. \n\n### How to find searchable fields {#searchable-fields}\n\nPolySwarm contains hundreds of searchable fields. The full list, with a description of each field, current example values, and analyst pivot recipes, lives in the [Metadata Fields Reference](/customers/metadata-fields-reference/).\n\nYou can also fetch the live list programmatically:\n\n- CLI: `polyswarm search mapping` (see the [CLI documentation](/customers/polyswarm-customer-cli-v3/#mapping)).\n- REST: `GET /v3/search/metadata/mappings`.\n\nOnce a metadata query has been built, you can use the same query in the Metadata Search UI, API Endpoint or Command Line Queries.\n\n#### Mime file Types\nThe following is a list of common mimetypes useful for querying via `scan.mimetype.mime`.\n\n| MIME Types                                                              |           Kind of document            | Extension  |\n|-------------------------------------------------------------------------|:-------------------------------------:|:----------:|\n| application/gzip                                                        |       GZip Compressed Archive         |    .gz     |\n| application/octet-stream                                                |        Any kind of binary data        |   .bin     |\n| application/pdf                                                         |    Adobe Portable Document Format     |    .pdf    |\n| application/vnd.openxmlformats-officedocument.spreadsheetml.sheet       |    Microsoft Excel 2007+ (OpenXML)    |   .xlsx    |\n| application/vnd.openxmlformats-officedocument.wordprocessingml.document |    Microsoft Word 2007+ (OpenXML)     |   .docx    |\n| application/x-dosexec                                                   |            PE32 executable            |    .exe    |\n| application/x-java-applet                                               |       Compiled Java class data        |   .class   |\n| application/x-rar                                                       |           RAR archive data            |    .rar    |\n| application/xml                                                         |                  XML                  |    .xml    |\n| application/zip                                                         |              ZIP archive              |    .zip    |\n| text/html                                                               |   HyperText Markup Language (HTML)    | .htm .html |\n| text/plain                                                              | Text, (generally ASCII or ISO 8859-n) |    .txt    |\n\nA list of all official MIME media types provided by IANA can be found [here.](http://www.iana.org/assignments/media-types/media-types.xhtml)\n\n### Considerations \n\nThere are some items to consider when building out the query:\n\n* Attribute fields are case-sensitive.\n* If a query refers to a field that doesn't exist, Metadata Search will ignore this portion of the query. Use the `_exists_` logic to check if the field is available, e.g., `_exists_:scan.latest_scan.assertions.ClamAV`\n* Always enclose literals in double-quotations (`\"`), or alternatively, escape all Elasticsearch control characters in your query.\n* RegEx: Queries using `^` (beginning of line) or `$` (end of line) are not supported.\n* Wildcards:  \n    * Do not escape `*` in values—only in Attribute names.  \n    * Recommend using no more than one wildcard in a metadata query.  \n* Ranges:  \n    * Square brackets (`[` & `]`) **include** range boundaries.  \n    * Curly brackets (`{` & `}`) **exclude** range boundaries.  \n\n### Examples {#meta-example}\n\nBelow are real-world metadata query examples that can be used in the **UI**, **CLI**, and **API**.\n\n| Metadata Query                                                             |           Description            |\n|-------------------------------------------------------------------------|:-------------------------------------:|\n|  `scan.latest_scan.assertions.\\*.metadata.malware_family:*Trojan*`        |  Return all artifacts identified as belonging to a malware family that contains \"Trojan\" (Wildcard search).     |\n| `exiftool.createdate:[2019-01-01 TO 2019-12-31]` | Return all artifacts with an `exiftool.createdate` in the year 2019 (Range search). |\n| `scan.latest_scan.detections.benign:[0 TO 10]`| Return artifacts where `benign` detections range between 0 and 10, including 10. |\n| `(scan.latest_scan.detections.malicious:>0 AND scan.latest_scan.detections.malicious:<=3) OR scan.latest_scan.assertions.ClamAV.assertion:malicious` | Return artifacts detected as malicious by **1, 2, or 3 engines**, OR those detected as malicious by **ClamAV** (Grouping). |\n| `scan.latest_scan.detections.benign:>0` | Return artifacts with at least **one benign assertion** (Comparison Operators). |\n| `pefile.compile_date:[2022-11-10  TO 2022-11-20] AND scan.detections.malicious:>1 AND polyunite.malware_family:Emotet` | Return artifacts with a compile date between two values, AND has been detected by more than **one malicious assertion** AND is related to Emotet.|\n"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/customers/how-to/metadata-fields-reference.md","frontmatter":{"title":"Metadata Fields Reference","excerpt":"Searchable metadata fields for PolySwarm metadata search, with current values and analyst pivot recipes."},"html":"<h1 id=\"metadata-fields-reference\" style=\"position:relative;\"><a href=\"#metadata-fields-reference\" aria-label=\"metadata fields reference permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Metadata Fields Reference</h1>\n<!-- Generated by specs/scripts/render_docs_fields.py — do not hand-edit. -->\n<!-- Source: specs/generated/{l1_field_extras.py, l1_audit_overrides.py, l2_*.json, l3_pivot_recipes.py} -->\n<h2 id=\"searchable-fields\" style=\"position:relative;\"><a href=\"#searchable-fields\" aria-label=\"searchable fields permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Searchable fields</h2>\n<p>This page is an analyst-curated walkthrough of the <strong>most useful</strong> searchable\nmetadata fields, with current example values and the pivot queries an analyst\ntypically runs once they have a value. It's not the full list.</p>\n<p><strong>For the complete, always-current list of every searchable field</strong>, run the <a href=\"/customers/polyswarm-customer-cli-v3/#mapping\"><code class=\"language-text\">mapping</code> CLI command</a>:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">polyswarm search mapping</code></pre></div>\n<p>or call the equivalent REST endpoint directly:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$POLYSWARM_API_KEY</span>\"</span> <span class=\"token punctuation\">\\</span>\n  https://api.polyswarm.network/v3/search/metadata/mappings</code></pre></div>\n<p>Both return every field in the live <code class=\"language-text\">metadata-*</code> index, with description and\ncategory metadata where available. This page is the curated narrative; that\nendpoint is the canonical reference.</p>\n<blockquote>\n<p>Example values shown below are real values pulled from production indices.\nURLs, IPs, and domains in sampled value lists are defanged for safe display.</p>\n</blockquote>\n<h3 id=\"polyunite\" style=\"position:relative;\"><a href=\"#polyunite\" aria-label=\"polyunite permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>polyunite</h3>\n<h4 id=\"polyunitemalware_family\" style=\"position:relative;\"><a href=\"#polyunitemalware_family\" aria-label=\"polyunitemalware_family permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><code class=\"language-text\">polyunite.malware_family</code></h4>\n<p>Malware family label derived by polyunite from per-engine verdicts. Field is <code class=\"language-text\">keyword</code> in the ES mapping, but the search endpoint's query parser lowercases terms before matching — so queries are effectively <strong>case-insensitive</strong> (<code class=\"language-text\">lockbit</code>, <code class=\"language-text\">LOCKBIT</code>, and <code class=\"language-text\">LockBit</code> all return the same results). polyunite normalizes well-known families to lowercase (<code class=\"language-text\">lockbit</code>, <code class=\"language-text\">emotet</code>, <code class=\"language-text\">rhadamanthys</code>), but any family it doesn't recognize is passed through with the AV vendor's casing — could be mixed-case (<code class=\"language-text\">ShiFu</code>, <code class=\"language-text\">Trojan.DownLoader1</code>, <code class=\"language-text\">Wapomi</code>). See the curated exemplars table below for current crime + offensive-tool names verified to be lowercase in the index.</p>\n<ul>\n<li><strong>Type:</strong> <code class=\"language-text\">keyword</code></li>\n<li><strong>Normalizer:</strong> none (stored values are lowercase for known families; queries are case-insensitive at the search endpoint)</li>\n<li><strong>Aggregatable:</strong> yes</li>\n<li><strong>Value casing:</strong> polyunite normalizes well-known families to lowercase; vendor casing passes through for unknowns — queries are case-insensitive regardless</li>\n</ul>\n<p><strong>Example:</strong> <code class=\"language-text\">polyunite.malware_family:lockbit</code></p>\n<p><strong>Example values (curated):</strong></p>\n<table>\n<thead>\n<tr>\n<th>Value</th>\n<th>Notes</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">lockbit</code></td>\n<td>ransomware</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">blackcat</code></td>\n<td>ransomware (ALPHV)</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">rhadamanthys</code></td>\n<td>infostealer</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">lummastealer</code></td>\n<td>infostealer</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">vidar</code></td>\n<td>infostealer</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">stealc</code></td>\n<td>infostealer</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">formbook</code></td>\n<td>infostealer</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">agenttesla</code></td>\n<td>infostealer / RAT</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">qakbot</code></td>\n<td>loader / banking trojan</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">emotet</code></td>\n<td>loader</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">njrat</code></td>\n<td>RAT</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">asyncrat</code></td>\n<td>RAT</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">remcos</code></td>\n<td>RAT</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">sliver</code></td>\n<td>C2 framework (offensive tooling)</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">cobaltstrikebeacon</code></td>\n<td>C2 framework (offensive tooling)</td>\n</tr>\n</tbody>\n</table>\n<p><sub>These 15 families have been verified to be stored lowercase in metadata-* (April 2026). polyunite normalizes its known families to lowercase but does not normalize names it doesn't recognize — vendor casing passes through (e.g. ShiFu, Trojan.DownLoader1). Refresh quarterly.</sub></p>\n<p><strong>Pivots:</strong></p>\n<p><strong>All samples in this family</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">polyunite.malware_family:{family}</code></pre></div>\n<p><em>Stored lowercase for known families. Queries are case-insensitive — <code class=\"language-text\">lockbit</code>, <code class=\"language-text\">LOCKBIT</code>, and <code class=\"language-text\">LockBit</code> all match.</em></p>\n<p><strong>Recent activity in this family</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">polyunite.malware_family:{family} AND artifact.created:[now-30d TO *]</code></pre></div>\n<p><strong>Family + high polyscore (high-confidence variants)</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">polyunite.malware_family:{family} AND scan.latest_scan.polyscore:[0.9 TO *]</code></pre></div>\n<p><strong>Family + sandbox C2 IPs — find live infrastructure</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">polyunite.malware_family:{family} AND _exists_:cape_sandbox_v2.extracted_c2_ips</code></pre></div>\n<hr>\n<h3 id=\"scan\" style=\"position:relative;\"><a href=\"#scan\" aria-label=\"scan permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>scan</h3>\n<h4 id=\"scanmimetypemime\" style=\"position:relative;\"><a href=\"#scanmimetypemime\" aria-label=\"scanmimetypemime permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><code class=\"language-text\">scan.mimetype.mime</code></h4>\n<p>MIME type of the artifact</p>\n<p><strong>Example:</strong> <code class=\"language-text\">scan.mimetype.mime:\"application/pdf\"</code></p>\n<p><strong>Pivots:</strong></p>\n<p><strong>Scope analysis to a file type before any other filter</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">scan.mimetype.mime:{value}</code></pre></div>\n<p><em>Field is text and tokenized on '/'. For exact MIME-type matches, quote the value: <code class=\"language-text\">scan.mimetype.mime:\"application/pdf\"</code>.</em></p>\n<p><strong>Type + recently-seen + malicious</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">scan.mimetype.mime:{value} AND scan.last_seen:[now-7d TO *] AND scan.detections.malicious:>1</code></pre></div>\n<hr>\n<h4 id=\"scanlatest_scanpolyscore\" style=\"position:relative;\"><a href=\"#scanlatest_scanpolyscore\" aria-label=\"scanlatest_scanpolyscore permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><code class=\"language-text\">scan.latest_scan.polyscore</code></h4>\n<p>PolyScore from latest scan (0-1, higher = more malicious)</p>\n<p><strong>Example:</strong> <code class=\"language-text\">scan.latest_scan.polyscore:[0.5 TO *]</code></p>\n<p><strong>Pivots:</strong></p>\n<p><strong>High-confidence malicious only</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">scan.latest_scan.polyscore:[0.9 TO *]</code></pre></div>\n<p><strong>PolyScore disagrees with engines (high score, few engine detections)</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">scan.latest_scan.polyscore:[0.8 TO *] AND scan.latest_scan.detections.malicious:[0 TO 2]</code></pre></div>\n<p><em>These are interesting research candidates — PolyScore caught something engines missed.</em></p>\n<hr>\n<h3 id=\"hash\" style=\"position:relative;\"><a href=\"#hash\" aria-label=\"hash permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>hash</h3>\n<h4 id=\"hashmd5\" style=\"position:relative;\"><a href=\"#hashmd5\" aria-label=\"hashmd5 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><code class=\"language-text\">hash.md5</code></h4>\n<p>A widely used hash function that produces a 128-bit value, typically represented as a 32-character hexadecimal number. Commonly used for file integrity checks, though considered less secure for cryptographic purposes due to known weaknesses.</p>\n<p><strong>Example:</strong> <code class=\"language-text\">hash.md5:d41d8cd98f00b204e9800998ecf8427e</code></p>\n<p><strong>Pivots:</strong></p>\n<p><strong>Look up everything by MD5</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">hash.md5:{value}</code></pre></div>\n<p><em>MD5 collisions are computationally feasible; for high-confidence identity prefer sha256.</em></p>\n<hr>\n<h4 id=\"hashsha1\" style=\"position:relative;\"><a href=\"#hashsha1\" aria-label=\"hashsha1 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><code class=\"language-text\">hash.sha1</code></h4>\n<p>A cryptographic hash function that generates a 160-bit value. Used in many security protocols, but largely replaced by more secure algorithms due to discovered weaknesses.</p>\n<p><strong>Example:</strong> <code class=\"language-text\">hash.sha1:da39a3ee5e6b4b0d3255bfef95601890afd80709</code></p>\n<p><strong>Pivots:</strong></p>\n<p><strong>Look up everything by SHA1</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">hash.sha1:{value}</code></pre></div>\n<p><em>SHA1 collisions are demonstrated but uncommon in malware corpora; sha256 is the safer identifier.</em></p>\n<hr>\n<h4 id=\"hashsha256\" style=\"position:relative;\"><a href=\"#hashsha256\" aria-label=\"hashsha256 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><code class=\"language-text\">hash.sha256</code></h4>\n<p>Part of the SHA-2 family, this hash function produces a 256-bit output. Commonly used for security and integrity checks; considered secure for most modern cryptographic applications.</p>\n<p><strong>Example:</strong> <code class=\"language-text\">hash.sha256:9838e53777041620de659421f8b50e87815ff738fcf64478b83d104c2a958f1f</code></p>\n<p><strong>Pivots:</strong></p>\n<p><strong>Look up everything by SHA256 (preferred identifier)</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">hash.sha256:{value}</code></pre></div>\n<p><em>SHA256 is the canonical artifact identifier across PolySwarm. Use this when you have a choice.</em></p>\n<p><strong>Find dropper / dropped relationships</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">cape_sandbox_v2.dropped.sha256:{value} OR cape_sandbox_v2.dropped.extracted_files.sha256:{value}</code></pre></div>\n<p><em>Find every sample that drops this exact payload at runtime, including sub-extracted layers.</em></p>\n<hr>\n<h4 id=\"hashssdeep\" style=\"position:relative;\"><a href=\"#hashssdeep\" aria-label=\"hashssdeep permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><code class=\"language-text\">hash.ssdeep</code></h4>\n<p>A fuzzy hash for similarity matching of files. Identifies files that are similar but not identical. Useful for finding malware variants and modified payloads.</p>\n<p><strong>Example:</strong> <code class=\"language-text\">hash.ssdeep:*</code></p>\n<p><strong>Pivots:</strong></p>\n<p><strong>Pull candidate ssdeeps for client-side fuzzy match</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">polyunite.malware_family:{family} AND _exists_:hash.ssdeep</code></pre></div>\n<p><em>ES does exact match only on hash.ssdeep. Substitute {family} with the family of your starting sample (or any other anchor — time window, mimetype, imphash). Include hash.ssdeep in the result fields, then use python <code class=\"language-text\">ssdeep.compare()</code> locally to cluster.</em></p>\n<p><strong>Recent ssdeeps in a mimetype bucket</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">scan.mimetype.mime:{mime} AND scan.last_seen:[now-7d TO *] AND _exists_:hash.ssdeep</code></pre></div>\n<p><em>Same client-side flow as above, scoped by file type and recency.</em></p>\n<hr>\n<h4 id=\"hashtlsh\" style=\"position:relative;\"><a href=\"#hashtlsh\" aria-label=\"hashtlsh permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><code class=\"language-text\">hash.tlsh</code></h4>\n<p>Trend Micro Locality Sensitive Hash — a similarity hash for detecting near-duplicate files. More stable than ssdeep on larger files; useful for repacked-variant hunting.</p>\n<p><strong>Example:</strong> <code class=\"language-text\">hash.tlsh:*</code></p>\n<p><strong>Pivots:</strong></p>\n<p><strong>Pull candidate TLSH digests for client-side similarity</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">polyunite.malware_family:{family} AND _exists_:hash.tlsh</code></pre></div>\n<p><em>ES does exact match only on hash.tlsh. Use this query to retrieve a candidate set with hash.tlsh included, then compute TLSH distance locally with <code class=\"language-text\">python-tlsh</code> (<code class=\"language-text\">tlsh.diff(a, b)</code> returns 0 for identical, &#x3C;70 is typically near-duplicate, &#x3C;100 is loosely related).</em></p>\n<p><strong>TLSH set scoped by recency / type</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">scan.mimetype.mime:{mime} AND scan.last_seen:[now-30d TO *] AND _exists_:hash.tlsh</code></pre></div>\n<p><em>Wider net for variant hunting in a corpus slice; same client-side distance step.</em></p>\n<hr>\n<h3 id=\"sandbox-cape\" style=\"position:relative;\"><a href=\"#sandbox-cape\" aria-label=\"sandbox cape permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Sandbox (CAPE)</h3>\n<h4 id=\"cape_sandbox_v2extracted_c2_ips\" style=\"position:relative;\"><a href=\"#cape_sandbox_v2extracted_c2_ips\" aria-label=\"cape_sandbox_v2extracted_c2_ips permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><code class=\"language-text\">cape_sandbox_v2.extracted_c2_ips</code></h4>\n<p>C2 / connection-target IPs that the CAPE sandbox extracted from the sample's runtime behavior. Typed <code class=\"language-text\">ip</code>, so CIDR queries work — quote the CIDR (e.g. <code class=\"language-text\">\"185.244.25.0/24\"</code>). This is the canonical sandbox C2 IP field — prefer it over network.hosts.ip (text) for analyst pivots.</p>\n<p><strong>Example:</strong> <code class=\"language-text\">cape_sandbox_v2.extracted_c2_ips:5.196.74.210</code></p>\n<p><strong>Pivots:</strong></p>\n<p><strong>Other samples that contacted this C2 IP</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">cape_sandbox_v2.extracted_c2_ips:{value}</code></pre></div>\n<p><strong>Same /24 — adjacent infra often shares operators</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">cape_sandbox_v2.extracted_c2_ips:\"{value/24}\"</code></pre></div>\n<p><em>Substitute the /24 of {value}, e.g. \"185.244.25.0/24\". Quote the CIDR — unquoted slashes cause a parse error.</em></p>\n<p><strong>C2 IP + family — count families using this infra</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">cape_sandbox_v2.extracted_c2_ips:{value} AND _exists_:polyunite.malware_family</code></pre></div>\n<p><em>Run as a metadata aggregation on polyunite.malware_family to identify shared infrastructure across families.</em></p>\n<hr>\n<h4 id=\"cape_sandbox_v2suricata_alertssignature\" style=\"position:relative;\"><a href=\"#cape_sandbox_v2suricata_alertssignature\" aria-label=\"cape_sandbox_v2suricata_alertssignature permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><code class=\"language-text\">cape_sandbox_v2.suricata_alerts.signature</code></h4>\n<p>Name of the signature that triggered the alert.</p>\n<p><strong>Example values (curated):</strong></p>\n<table>\n<thead>\n<tr>\n<th>Value</th>\n<th>Notes</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">ET MALWARE Common Stealer Behavior - Source IP Associated with Hosting Provider…</code></td>\n<td>infostealer behavior</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">ET MALWARE Terse alphanumeric executable downloader high likelihood of being ho…</code></td>\n<td>downloader</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">ET MALWARE Win32/Delf.TJJ CnC Domain in DNS Lookup (udo.jxwan.com)</code></td>\n<td>C2 / DNS lookup</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">ET MALWARE Win32/RustMiner Suspicious HTTP Accept Header Observed</code></td>\n<td>cryptominer</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">ET MALWARE Ransom.Win32.Birele.gsg Checkin</code></td>\n<td>ransomware checkin</td>\n</tr>\n</tbody>\n</table>\n<p><sub>Real signature names from the Emerging Threats (ET) ruleset that fired on samples in metadata-* (sampled April 2026). Field is text-typed; tokenized words match. Substring queries with <code class=\"language-text\">*</code> wrap each side find variants of a signature.</sub></p>\n<p><strong>Pivots:</strong></p>\n<p><strong>Group corpus by this Suricata signature</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">cape_sandbox_v2.suricata_alerts.signature:*{value}*</code></pre></div>\n<p><em>Use wildcards — single-token queries may return empty on this field. Wrap the keyword in `</em>` on both sides, or use a distinctive fragment of the signature name.*</p>\n<hr>\n<h4 id=\"cape_sandbox_v2droppedsha256\" style=\"position:relative;\"><a href=\"#cape_sandbox_v2droppedsha256\" aria-label=\"cape_sandbox_v2droppedsha256 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><code class=\"language-text\">cape_sandbox_v2.dropped.sha256</code></h4>\n<p>SHA256 of dropped files</p>\n<p><strong>Example:</strong> <code class=\"language-text\">cape_sandbox_v2.dropped.sha256:&lt;sha256></code></p>\n<p><strong>Pivots:</strong></p>\n<p><strong>Find every sample that dropped this exact payload</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">cape_sandbox_v2.dropped.sha256:{value}</code></pre></div>\n<p><em>Field is text but hex tokenizes as a single token; exact match works. Prefer this over dropped.md5 if available.</em></p>\n<p><strong>Pivot to the standalone artifact</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">artifact.sha256:{value}</code></pre></div>\n<hr>\n<h4 id=\"cape_sandbox_v2droppedmd5\" style=\"position:relative;\"><a href=\"#cape_sandbox_v2droppedmd5\" aria-label=\"cape_sandbox_v2droppedmd5 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><code class=\"language-text\">cape_sandbox_v2.dropped.md5</code></h4>\n<p>MD5 of a file written to disk by the sample during sandbox execution. Stored as <code class=\"language-text\">text</code>; aggregations don't work but exact-match queries do (hex strings tokenize as a single token). Pivot on this to find every sample that drops the same payload.</p>\n<p><strong>Example:</strong> <code class=\"language-text\">cape_sandbox_v2.dropped.md5:&lt;md5></code></p>\n<p><strong>Pivots:</strong></p>\n<p><strong>Find every sample that dropped this exact payload</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">cape_sandbox_v2.dropped.md5:{value}</code></pre></div>\n<p><em>Strong signal for shared dropper / multi-stage families; the dropped MD5 is the second-stage payload. Field is text; aggregations don't work but exact match does.</em></p>\n<p><strong>Pivot to the standalone artifact (if PolySwarm has scanned the dropped file)</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">artifact.md5:{value}</code></pre></div>\n<hr>\n<h4 id=\"cape_sandbox_v2droppedextracted_filessha256\" style=\"position:relative;\"><a href=\"#cape_sandbox_v2droppedextracted_filessha256\" aria-label=\"cape_sandbox_v2droppedextracted_filessha256 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><code class=\"language-text\">cape_sandbox_v2.dropped.extracted_files.sha256</code></h4>\n<p>SHA256 of a sub-payload that CAPE extracted from a dropped binary (unpacker output, embedded resources, etc.). One layer deeper than dropped.sha256 — useful when the dropper varies across samples but the unpacked payload is shared. Text-typed; exact match works.</p>\n<p><strong>Example:</strong> <code class=\"language-text\">cape_sandbox_v2.dropped.extracted_files.sha256:&lt;sha256></code></p>\n<p><strong>Pivots:</strong></p>\n<p><strong>Find samples sharing this sub-extracted payload</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">cape_sandbox_v2.dropped.extracted_files.sha256:{value}</code></pre></div>\n<p><em>One layer deeper than dropped.sha256 — useful when the dropper itself varies but the unpacked / embedded payload is shared across the cluster.</em></p>\n<p><strong>Pivot to the standalone artifact</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">artifact.sha256:{value}</code></pre></div>\n<p><strong>Cross-layer: same payload extracted AND dropped directly</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">cape_sandbox_v2.dropped.extracted_files.sha256:{value} OR cape_sandbox_v2.dropped.sha256:{value} OR artifact.sha256:{value}</code></pre></div>\n<p><em>Catches the payload regardless of which layer reported it.</em></p>\n<hr>\n<h4 id=\"cape_sandbox_v2droppedfilepath\" style=\"position:relative;\"><a href=\"#cape_sandbox_v2droppedfilepath\" aria-label=\"cape_sandbox_v2droppedfilepath permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><code class=\"language-text\">cape_sandbox_v2.dropped.filepath</code></h4>\n<p>Path on the guest VM where the sample wrote the dropped file. Combined with malware family, often reveals install-path templates (e.g. always %APPDATA%\\Microsoft\\Windows\\<random>.exe). Text-typed; quote the value for exact-path matches.</p>\n<p><strong>Example:</strong> <code class=\"language-text\">cape_sandbox_v2.dropped.filepath:*\\\\AppData\\\\Roaming\\\\*</code></p>\n<p><strong>Pivots:</strong></p>\n<p><strong>Search by path fragment (substring match)</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">cape_sandbox_v2.dropped.filepath:*\\\\AppData\\\\Roaming\\\\*</code></pre></div>\n<p><em>Most useful pattern — find samples writing anywhere under a known directory or matching a filename pattern. Wrap fragments in `</em>` on both sides; escape backslashes for Windows paths.*</p>\n<p><strong>Family + install-path patterns</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">polyunite.malware_family:{family} AND _exists_:cape_sandbox_v2.dropped.filepath</code></pre></div>\n<p><em>Pull every install path a given family uses; common to find a small set of templates per family.</em></p>\n<p><strong>Exact path match</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">cape_sandbox_v2.dropped.filepath:\"%APPDATA%\\\\Microsoft\\\\Windows\\\\update.exe\"</code></pre></div>\n<p><em>Quote when you've already identified a specific path you're hunting.</em></p>\n<hr>\n<h4 id=\"cape_sandbox_v2droppedguest_paths\" style=\"position:relative;\"><a href=\"#cape_sandbox_v2droppedguest_paths\" aria-label=\"cape_sandbox_v2droppedguest_paths permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><code class=\"language-text\">cape_sandbox_v2.dropped.guest_paths</code></h4>\n<p>Every observed file system location the dropped file appeared at during sandbox execution. Broader than dropped.filepath — useful when the sample copies itself to multiple locations. Text-typed.</p>\n<p><strong>Example:</strong> <code class=\"language-text\">cape_sandbox_v2.dropped.guest_paths:*\\\\AppData\\\\*</code></p>\n<p><strong>Pivots:</strong></p>\n<p><strong>Search by path fragment</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">cape_sandbox_v2.dropped.guest_paths:*\\\\AppData\\\\*</code></pre></div>\n<p><em>guest_paths records every observed location the dropped file appeared at — broader than filepath. Substring search is the typical pattern.</em></p>\n<hr>\n<h4 id=\"cape_sandbox_v2targetfileyaraname\" style=\"position:relative;\"><a href=\"#cape_sandbox_v2targetfileyaraname\" aria-label=\"cape_sandbox_v2targetfileyaraname permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><code class=\"language-text\">cape_sandbox_v2.target.file.yara.name</code></h4>\n<p>Name of any YARA rule that matched the sample's executable image inside the CAPE sandbox. Surfaces behavior-based detections — sandbox-evasion checks, packer signatures, embedded shellcode/PE patterns, LNK execution chains — that fire even when AV verdicts miss the sample. Powerful for hunting evasion techniques across families: pivot from a single rule name to every sample exhibiting that technique, regardless of malware family.</p>\n<ul>\n<li><strong>Type:</strong> <code class=\"language-text\">text</code></li>\n<li><strong>Normalizer:</strong> standard analyzer (lowercases tokens; underscores kept)</li>\n<li><strong>Aggregatable:</strong> no</li>\n</ul>\n<p><strong>Example:</strong> <code class=\"language-text\">cape_sandbox_v2.target.file.yara.name:\"INDICATOR_SUSPICIOUS_EXE_SandboxHookingDLL\"</code></p>\n<p><strong>Example values (curated):</strong></p>\n<table>\n<thead>\n<tr>\n<th>Value</th>\n<th>Notes</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">INDICATOR_SUSPICIOUS_EXE_SandboxHookingDLL</code></td>\n<td>sandbox evasion</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">vmdetect</code></td>\n<td>VM / sandbox detection</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">INDICATOR_EXE_Packed_ASPack</code></td>\n<td>packer (ASPack)</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">AutoIT_Compiled</code></td>\n<td>wrapper (AutoIT)</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">shellcode_get_eip</code></td>\n<td>shellcode pattern</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">shellcode_patterns</code></td>\n<td>shellcode pattern</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">shellcode_stack_strings</code></td>\n<td>shellcode pattern</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">embedded_pe</code></td>\n<td>embedded payload</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">embedded_win_api</code></td>\n<td>embedded API resolver</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">EXE_in_LNK</code></td>\n<td>LNK execution chain</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">Execution_in_LNK</code></td>\n<td>LNK execution chain</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">Script_in_LNK</code></td>\n<td>LNK execution chain</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">MSOffice_in_LNK</code></td>\n<td>LNK execution chain</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">Archive_in_LNK</code></td>\n<td>LNK execution chain</td>\n</tr>\n</tbody>\n</table>\n<p><sub>Verified to return current hits in metadata-* (April 2026). Common rule prefixes group related techniques: <code class=\"language-text\">INDICATOR_SUSPICIOUS_*</code> for suspicious-executable behaviors, <code class=\"language-text\">shellcode_*</code> for shellcode patterns, <code class=\"language-text\">*_in_LNK</code> for LNK-based execution chains. Prefix wildcards on the field name work — e.g. <code class=\"language-text\">cape_sandbox_v2.target.file.yara.name:INDICATOR_SUSPICIOUS_*</code>.</sub></p>\n<p><strong>Pivots:</strong></p>\n<p><strong>All samples that triggered this YARA rule</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">cape_sandbox_v2.target.file.yara.name:\"{value}\"</code></pre></div>\n<p><em>Field is text; quote the rule name for exact match. Behavior-based — fires even when AV misses the sample.</em></p>\n<p><strong>Find every rule in a behavior class — wildcard prefix</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">cape_sandbox_v2.target.file.yara.name:INDICATOR_SUSPICIOUS_*</code></pre></div>\n<p><em>Substitute the prefix you care about: `INDICATOR<em>SUSPICIOUS</em></em><code class=\"language-text\">(suspicious-EXE behaviors),</code>shellcode<em><em><code class=\"language-text\">(shellcode patterns),</code></em></em>in_LNK` (LNK execution chain). Useful for hunting a <em>technique</em>, not a single rule.*</p>\n<p><strong>YARA rule + family — what families use this technique</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">cape_sandbox_v2.target.file.yara.name:\"{value}\" AND _exists_:polyunite.malware_family</code></pre></div>\n<p><em>Run as a metadata aggregation on polyunite.malware_family to map a behavior to its top families — fast way to see who relies on a given evasion / packer / loader technique.</em></p>\n<hr>\n<h4 id=\"cape_sandbox_v2ttp\" style=\"position:relative;\"><a href=\"#cape_sandbox_v2ttp\" aria-label=\"cape_sandbox_v2ttp permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><code class=\"language-text\">cape_sandbox_v2.ttp</code></h4>\n<p>MITRE ATT&#x26;CK technique IDs that the CAPE sandbox attributed to the sample's runtime behavior. Stored as an array — a single sample typically carries several T-codes (encryption + C2 + persistence + evasion). Lets you pivot from a behavior (e.g. T1486 ransomware encryption, T1497 sandbox evasion, T1055 process injection) to every sample exhibiting it, regardless of family or AV verdict. Subtechniques use dotted IDs (e.g. T1027.002 = software packing) — quote them.</p>\n<ul>\n<li><strong>Type:</strong> <code class=\"language-text\">text</code></li>\n<li><strong>Normalizer:</strong> standard analyzer (lowercases tokens)</li>\n<li><strong>Aggregatable:</strong> no</li>\n</ul>\n<p><strong>Example:</strong> <code class=\"language-text\">cape_sandbox_v2.ttp:\"T1486\"</code></p>\n<p><strong>Example values (curated):</strong></p>\n<table>\n<thead>\n<tr>\n<th>Value</th>\n<th>Notes</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">T1071</code></td>\n<td>Application Layer Protocol (C2)</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">T1027</code></td>\n<td>Obfuscated Files or Information</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">T1027.002</code></td>\n<td>Software Packing</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">T1497</code></td>\n<td>Virtualization / Sandbox Evasion</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">T1003</code></td>\n<td>OS Credential Dumping</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">T1055</code></td>\n<td>Process Injection</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">T1057</code></td>\n<td>Process Discovery</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">T1082</code></td>\n<td>System Information Discovery</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">T1112</code></td>\n<td>Modify Registry</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">T1547.001</code></td>\n<td>Persistence — Registry Run Keys</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">T1486</code></td>\n<td>Data Encrypted for Impact (ransomware)</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">T1485</code></td>\n<td>Data Destruction</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">T1573</code></td>\n<td>Encrypted Channel</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">T1562</code></td>\n<td>Impair Defenses</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">T1564.001</code></td>\n<td>Hide Artifacts — Hidden Files</td>\n</tr>\n</tbody>\n</table>\n<p><sub>Verified live in metadata-* (April 2026). Subtechnique IDs (e.g. T1027.002) contain a dot — quote them so the query parser treats them as a single phrase. Refer to <a href=\"https://attack.mitre.org/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https://attack.mitre.org/</a> for current technique definitions.</sub></p>\n<p><strong>Pivots:</strong></p>\n<p><strong>All samples that exhibited this technique (CAPE)</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">cape_sandbox_v2.ttp:\"{value}\"</code></pre></div>\n<p><em>Quote the T-code — subtechniques (e.g. T1027.002) contain a dot and need phrase-quoting.</em></p>\n<p><strong>Multi-technique intersection — narrow to a behavior chain</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">cape_sandbox_v2.ttp:\"{value}\" AND cape_sandbox_v2.ttp:\"T1071\"</code></pre></div>\n<p><em>ttp is an array; AND across T-codes finds samples carrying both techniques. Common pairings: ransomware encryption + C2 (<code class=\"language-text\">T1486 AND T1071</code>), evasion + injection (<code class=\"language-text\">T1497 AND T1055</code>). Substitute the second T-code for the chain you care about.</em></p>\n<p><strong>Cross-sandbox corroboration — same technique seen by both</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">cape_sandbox_v2.ttp:\"{value}\" AND triage_sandbox_v0.ttp:\"{value}\"</code></pre></div>\n<p><em>Both sandboxes flagging the same technique is a stronger signal than one alone — useful when triaging whether a behavior is real vs. sandbox-specific noise.</em></p>\n<hr>\n<h3 id=\"sandbox-triage\" style=\"position:relative;\"><a href=\"#sandbox-triage\" aria-label=\"sandbox triage permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Sandbox (Triage)</h3>\n<h4 id=\"triage_sandbox_v0extracteddropperurlsurl\" style=\"position:relative;\"><a href=\"#triage_sandbox_v0extracteddropperurlsurl\" aria-label=\"triage_sandbox_v0extracteddropperurlsurl permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><code class=\"language-text\">triage_sandbox_v0.extracted.dropper.urls.url</code></h4>\n<p>URL used by the dropper.</p>\n<p><strong>Example:</strong> <code class=\"language-text\">triage_sandbox_v0.extracted.dropper.urls.url:*evilpath/evilbin.exe*</code></p>\n<p><strong>Pivots:</strong></p>\n<p><strong>Search by URL fragment (substring match)</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">triage_sandbox_v0.extracted.dropper.urls.url:*evilpath/evilbin.exe*</code></pre></div>\n<p><em>The most common analyst pattern. A path or filename fragment finds every sample whose dropper fetched from any URL containing it — regardless of host rotation. Wrap the fragment in `</em>` on both sides.*</p>\n<p><strong>Same host, any path — campaign sweep</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">triage_sandbox_v0.extracted.dropper.urls.url:*example.com*</code></pre></div>\n<p><em>Substitute the host you saw. Returns every sample whose dropper hit that host on any path. Pair with a recent <code class=\"language-text\">artifact.created</code> window to keep wildcards cheap.</em></p>\n<p><strong>Exact URL match</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">triage_sandbox_v0.extracted.dropper.urls.url:\"https://example.com/path/payload.exe\"</code></pre></div>\n<p><em>Quote the full URL. Use when you've already identified a specific staging URL and want only the samples that hit *exactly</em> that one.*</p>\n<p><strong>Dropper URLs grouped by family</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">polyunite.malware_family:{family} AND _exists_:triage_sandbox_v0.extracted.dropper.urls.url</code></pre></div>\n<p><em>Pull every staging URL a given family is using right now.</em></p>\n<hr>\n<h4 id=\"triage_sandbox_v0analysisfamily\" style=\"position:relative;\"><a href=\"#triage_sandbox_v0analysisfamily\" aria-label=\"triage_sandbox_v0analysisfamily permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><code class=\"language-text\">triage_sandbox_v0.analysis.family</code></h4>\n<p>Malware family Triage's sandbox attributed to the sample based on runtime behavior. Independent from <code class=\"language-text\">polyunite.malware_family</code> (which is derived from per-engine AV verdicts) — comparing the two surfaces both high-confidence corroboration (sandbox + AV agree) and research candidates (sandbox identifies a family AV missed). Stored as an array, lowercase. Field is <code class=\"language-text\">text</code> and the standard analyzer lowercases tokens, so queries are case-insensitive.</p>\n<ul>\n<li><strong>Type:</strong> <code class=\"language-text\">text</code></li>\n<li><strong>Normalizer:</strong> standard analyzer (lowercases tokens)</li>\n<li><strong>Aggregatable:</strong> no</li>\n<li><strong>Value casing:</strong> stored lowercase; case-insensitive at query time</li>\n</ul>\n<p><strong>Example:</strong> <code class=\"language-text\">triage_sandbox_v0.analysis.family:\"cobaltstrike\"</code></p>\n<p><strong>Example values (curated):</strong></p>\n<table>\n<thead>\n<tr>\n<th>Value</th>\n<th>Notes</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">cobaltstrike</code></td>\n<td>C2 framework (offensive tooling)</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">metasploit</code></td>\n<td>C2 framework (offensive tooling)</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">kawaiiunicorn</code></td>\n<td>ransomware</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">blihanstealer</code></td>\n<td>infostealer</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">cosmu</code></td>\n<td>infostealer / virus</td>\n</tr>\n</tbody>\n</table>\n<p><sub>Verified live in metadata-* (April 2026). Triage stores values lowercase; case-insensitive at query time. Cross-reference with polyunite.malware_family — agreement is a strong-confidence label, disagreement is a research signal.</sub></p>\n<p><strong>Pivots:</strong></p>\n<p><strong>All samples Triage attributes to this family</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">triage_sandbox_v0.analysis.family:\"{value}\"</code></pre></div>\n<p><em>Quote the family name. Field is text and the analyzer lowercases tokens, so case-insensitive at query time.</em></p>\n<p><strong>Sandbox + AV agree — high-confidence family label</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">triage_sandbox_v0.analysis.family:\"{value}\" AND polyunite.malware_family:{family}</code></pre></div>\n<p><em>Both Triage's runtime attribution and AV-derived polyunite labeling agree — strongest family-attribution signal in the corpus. Substitute the matching polyunite family value for {family} (typically the same string).</em></p>\n<p><strong>Triage caught a family AV missed — research candidates</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">triage_sandbox_v0.analysis.family:\"{value}\" AND NOT _exists_:polyunite.malware_family</code></pre></div>\n<p><em>Triage's sandbox attributed a family but no AV engine produced a polyunite label. These are interesting research candidates — sandbox-only family identifications often surface novel or undertested variants.</em></p>\n<hr>\n<h4 id=\"triage_sandbox_v0ttp\" style=\"position:relative;\"><a href=\"#triage_sandbox_v0ttp\" aria-label=\"triage_sandbox_v0ttp permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><code class=\"language-text\">triage_sandbox_v0.ttp</code></h4>\n<p>MITRE ATT&#x26;CK technique IDs that the Triage sandbox attributed to the sample's runtime behavior. Stored as an array. Independent from <code class=\"language-text\">cape_sandbox_v2.ttp</code> (the two sandboxes don't always agree) — having both gives an analyst a way to corroborate behavior or surface sandbox-specific blind spots. Triage's TTP coverage tends to skew toward persistence (T1547.*) and host-discovery (T1614.001, T1082) techniques.</p>\n<ul>\n<li><strong>Type:</strong> <code class=\"language-text\">text</code></li>\n<li><strong>Normalizer:</strong> standard analyzer (lowercases tokens)</li>\n<li><strong>Aggregatable:</strong> no</li>\n</ul>\n<p><strong>Example:</strong> <code class=\"language-text\">triage_sandbox_v0.ttp:\"T1547.001\"</code></p>\n<p><strong>Example values (curated):</strong></p>\n<table>\n<thead>\n<tr>\n<th>Value</th>\n<th>Notes</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">T1614.001</code></td>\n<td>System Location Discovery — System Language</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">T1547.001</code></td>\n<td>Persistence — Registry Run Keys</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">T1547.004</code></td>\n<td>Persistence — Winlogon Helper DLL</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">T1547.014</code></td>\n<td>Persistence — Active Setup</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">T1112</code></td>\n<td>Modify Registry</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">T1082</code></td>\n<td>System Information Discovery</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">T1564.001</code></td>\n<td>Hide Artifacts — Hidden Files</td>\n</tr>\n</tbody>\n</table>\n<p><sub>Verified live in metadata-* (April 2026). Triage's TTP coverage is narrower than CAPE's and skews toward persistence (T1547.*) and host-discovery (T1614.001, T1082). Cross-reference with <code class=\"language-text\">cape_sandbox_v2.ttp</code> to corroborate or spot sandbox-specific blind spots.</sub></p>\n<p><strong>Pivots:</strong></p>\n<p><strong>All samples that exhibited this technique (Triage)</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">triage_sandbox_v0.ttp:\"{value}\"</code></pre></div>\n<p><em>Quote the T-code — subtechniques (e.g. T1547.001) contain a dot and need phrase-quoting.</em></p>\n<p><strong>Persistence sweep — every Registry / Logon technique</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">triage_sandbox_v0.ttp:T1547.*</code></pre></div>\n<p><em>Triage's TTP coverage skews toward persistence; the T1547.</em> family covers Registry Run Keys, Winlogon Helper DLL, Active Setup, etc. Wildcard prefix on the T-code finds them all in one query.*</p>\n<p><strong>Technique + family — what families use this technique (Triage)</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">triage_sandbox_v0.ttp:\"{value}\" AND _exists_:polyunite.malware_family</code></pre></div>\n<p><em>Run as a metadata aggregation on polyunite.malware_family to map a technique to its top families.</em></p>\n<hr>\n<h3 id=\"static-tools\" style=\"position:relative;\"><a href=\"#static-tools\" aria-label=\"static tools permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Static Tools</h3>\n<h4 id=\"pefileimphash\" style=\"position:relative;\"><a href=\"#pefileimphash\" aria-label=\"pefileimphash permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><code class=\"language-text\">pefile.imphash</code></h4>\n<p>Hash of the PE import table. Identical imphashes across samples are a strong signal of shared compiler, packer, or family — useful for clustering unpacked PEs.</p>\n<p><strong>Example:</strong> <code class=\"language-text\">pefile.imphash:5d6cad172c5535e4b6b6bbd246571621</code></p>\n<p><strong>Pivots:</strong></p>\n<p><strong>Same import-table hash → likely same compiler / packer</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">pefile.imphash:{value}</code></pre></div>\n<p><em>imphash matches across samples are a stronger family signal than fuzzy hashes for unpacked PEs.</em></p>\n<p><strong>imphash + family — confirm the family is consistent across the cluster</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">pefile.imphash:{value} AND _exists_:polyunite.malware_family</code></pre></div>\n<hr>\n<h4 id=\"pefileresourcesmd5\" style=\"position:relative;\"><a href=\"#pefileresourcesmd5\" aria-label=\"pefileresourcesmd5 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><code class=\"language-text\">pefile.resources.md5</code></h4>\n<p>The MD5 hash of a resource, used for integrity verification.</p>\n<p><strong>Example:</strong> <code class=\"language-text\">pefile.resources.md5:e44e3eb91dbf2fde6d40b95f9f2a5f92</code></p>\n<p><strong>Pivots:</strong></p>\n<p><strong>Shared PE resource → shared codebase / dropper template</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">pefile.resources.md5:{value}</code></pre></div>\n<p><em>Common in malware families that bundle a payload as a resource (e.g. RATs, droppers).</em></p>\n<hr>\n<h4 id=\"exiftoolmimetype\" style=\"position:relative;\"><a href=\"#exiftoolmimetype\" aria-label=\"exiftoolmimetype permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><code class=\"language-text\">exiftool.mimetype</code></h4>\n<p>MIME type identified by ExifTool's parse of the file. Independent from <code class=\"language-text\">scan.mimetype.mime</code> (the scanner's bytes-based identification) — comparing the two surfaces samples where the container disagrees with the contents (a common file-masquerading signal). Field is <code class=\"language-text\">text</code> and tokenized on '/' — quote the value for exact-match queries.</p>\n<ul>\n<li><strong>Type:</strong> <code class=\"language-text\">text</code></li>\n<li><strong>Normalizer:</strong> none (tokenized on '/')</li>\n<li><strong>Aggregatable:</strong> no</li>\n</ul>\n<p><strong>Example:</strong> <code class=\"language-text\">exiftool.mimetype:\"application/pdf\"</code></p>\n<p><strong>Pivots:</strong></p>\n<p><strong>All samples with this MIME type (per ExifTool)</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">exiftool.mimetype:\"{value}\"</code></pre></div>\n<p><em>Field is text and tokenized on '/' — quote the value for exact MIME-type matches.</em></p>\n<p><strong>ExifTool / scanner mimetype mismatch — file-masquerading hunt</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">exiftool.mimetype:\"{value}\" AND NOT scan.mimetype.mime:\"{value}\"</code></pre></div>\n<p><em>Two independent mimetype views; mismatches surface samples where the container metadata disagrees with the bytes (e.g. a PDF wrapper hiding a non-PDF payload).</em></p>\n<p><strong>MIME type + family — what families ship as this filetype</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">exiftool.mimetype:\"{value}\" AND _exists_:polyunite.malware_family</code></pre></div>\n<p><em>Run as a metadata aggregation on polyunite.malware_family to see which families currently distribute this filetype.</em></p>\n<hr>\n<h3 id=\"analyst-tags\" style=\"position:relative;\"><a href=\"#analyst-tags\" aria-label=\"analyst tags permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Analyst Tags</h3>\n<h4 id=\"tags\" style=\"position:relative;\"><a href=\"#tags\" aria-label=\"tags permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><code class=\"language-text\">tags</code></h4>\n<p>Analyst-applied labels on the artifact. Stored as an array, so a single sample can carry multiple labels (e.g. <code class=\"language-text\">[\"Ransomware\", \"Dropper\", \"Trojan\", \"Windows\", \"PE32\"]</code>). Three rough kinds of values: behavior class (Ransomware, Infostealer, RAT, Loader, Backdoor, Dropper, Trojan, Stealer, Downloader, Exploit), platform / format (Windows, Linux, MacOSX, PE32, ELF64), and structured key:value labels for sector / feed routing (e.g. <code class=\"language-text\">sector:financial</code>, <code class=\"language-text\">feed:premium</code>). Stored values are typically TitleCase but the field is <code class=\"language-text\">text</code> and the standard analyzer lowercases tokens at index time — <code class=\"language-text\">tags:\"ransomware\"</code> and <code class=\"language-text\">tags:\"Ransomware\"</code> both match. For the full live list of tags, run <a href=\"/customers/polyswarm-customer-cli-v3/#using-tags\"><code class=\"language-text\">polyswarm tag list</code></a>.</p>\n<ul>\n<li><strong>Type:</strong> <code class=\"language-text\">text</code></li>\n<li><strong>Normalizer:</strong> standard analyzer (lowercases tokens)</li>\n<li><strong>Aggregatable:</strong> no</li>\n<li><strong>Value casing:</strong> stored TitleCase but case-insensitive at query time (analyzer lowercases)</li>\n</ul>\n<p><strong>Example:</strong> <code class=\"language-text\">tags:\"ransomware\"</code></p>\n<p><strong>Example values (curated):</strong></p>\n<table>\n<thead>\n<tr>\n<th>Value</th>\n<th>Notes</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">Ransomware</code></td>\n<td>behavior class</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">Infostealer</code></td>\n<td>behavior class</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">RAT</code></td>\n<td>behavior class</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">Dropper</code></td>\n<td>behavior class</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">Loader</code></td>\n<td>behavior class</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">Backdoor</code></td>\n<td>behavior class</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">Trojan</code></td>\n<td>behavior class</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">Exploit</code></td>\n<td>behavior class</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">Downloader</code></td>\n<td>behavior class</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">Stealer</code></td>\n<td>behavior class</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">Windows</code></td>\n<td>platform</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">Linux</code></td>\n<td>platform</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">MacOSX</code></td>\n<td>platform</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">PE32</code></td>\n<td>file format</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">ELF64</code></td>\n<td>file format</td>\n</tr>\n</tbody>\n</table>\n<p><sub>Verified to return current hits in metadata-* (April 2026). Stored TitleCase but case-insensitive at query time — both <code class=\"language-text\">tags:\"Ransomware\"</code> and <code class=\"language-text\">tags:\"ransomware\"</code> match. tags is an array, so a single sample commonly carries several labels (behavior + platform + format). Structured <code class=\"language-text\">key:value</code> labels (e.g. <code class=\"language-text\">sector:financial</code>, <code class=\"language-text\">feed:premium</code>) also exist for routing.</sub></p>\n<p><strong>Pivots:</strong></p>\n<p><strong>All samples carrying this tag</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">tags:\"{value}\"</code></pre></div>\n<p><em>Field is text and the standard analyzer lowercases tokens at index time — both <code class=\"language-text\">tags:\"Ransomware\"</code> and <code class=\"language-text\">tags:\"ransomware\"</code> match. Quote multi-word values.</em></p>\n<p><strong>Multi-tag intersection — narrow to a behavior pair</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">tags:\"{value}\" AND tags:\"backdoor\"</code></pre></div>\n<p><em>tags is an array, so AND across tags finds samples wearing both labels (e.g. <code class=\"language-text\">tags:\"loader\" AND tags:\"backdoor\"</code> for dual-purpose families). Substitute the second tag for the pair you care about.</em></p>\n<p><strong>Tag + family — what families wear this label</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">tags:\"{value}\" AND _exists_:polyunite.malware_family</code></pre></div>\n<p><em>Run as a metadata aggregation on polyunite.malware_family to see which families currently carry this tag — fast way to map a behavior class to its top families.</em></p>\n<hr>","rawMarkdownBody":"\n# Metadata Fields Reference\n\n<!-- Generated by specs/scripts/render_docs_fields.py — do not hand-edit. -->\n<!-- Source: specs/generated/{l1_field_extras.py, l1_audit_overrides.py, l2_*.json, l3_pivot_recipes.py} -->\n\n## Searchable fields {#searchable-fields}\n\nThis page is an analyst-curated walkthrough of the **most useful** searchable\nmetadata fields, with current example values and the pivot queries an analyst\ntypically runs once they have a value. It's not the full list.\n\n**For the complete, always-current list of every searchable field**, run the [`mapping` CLI command](/customers/polyswarm-customer-cli-v3/#mapping):\n\n```bash\npolyswarm search mapping\n```\n\nor call the equivalent REST endpoint directly:\n\n```bash\ncurl -H \"Authorization: $POLYSWARM_API_KEY\" \\\n  https://api.polyswarm.network/v3/search/metadata/mappings\n```\n\nBoth return every field in the live `metadata-*` index, with description and\ncategory metadata where available. This page is the curated narrative; that\nendpoint is the canonical reference.\n\n> Example values shown below are real values pulled from production indices.\n> URLs, IPs, and domains in sampled value lists are defanged for safe display.\n\n### polyunite\n\n#### `polyunite.malware_family`\n\nMalware family label derived by polyunite from per-engine verdicts. Field is `keyword` in the ES mapping, but the search endpoint's query parser lowercases terms before matching — so queries are effectively **case-insensitive** (`lockbit`, `LOCKBIT`, and `LockBit` all return the same results). polyunite normalizes well-known families to lowercase (`lockbit`, `emotet`, `rhadamanthys`), but any family it doesn't recognize is passed through with the AV vendor's casing — could be mixed-case (`ShiFu`, `Trojan.DownLoader1`, `Wapomi`). See the curated exemplars table below for current crime + offensive-tool names verified to be lowercase in the index.\n\n- **Type:** `keyword`\n- **Normalizer:** none (stored values are lowercase for known families; queries are case-insensitive at the search endpoint)\n- **Aggregatable:** yes\n- **Value casing:** polyunite normalizes well-known families to lowercase; vendor casing passes through for unknowns — queries are case-insensitive regardless\n\n**Example:** `polyunite.malware_family:lockbit`\n\n**Example values (curated):**\n\n| Value | Notes |\n|---|---|\n| `lockbit` | ransomware |\n| `blackcat` | ransomware (ALPHV) |\n| `rhadamanthys` | infostealer |\n| `lummastealer` | infostealer |\n| `vidar` | infostealer |\n| `stealc` | infostealer |\n| `formbook` | infostealer |\n| `agenttesla` | infostealer / RAT |\n| `qakbot` | loader / banking trojan |\n| `emotet` | loader |\n| `njrat` | RAT |\n| `asyncrat` | RAT |\n| `remcos` | RAT |\n| `sliver` | C2 framework (offensive tooling) |\n| `cobaltstrikebeacon` | C2 framework (offensive tooling) |\n\n<sub>These 15 families have been verified to be stored lowercase in metadata-* (April 2026). polyunite normalizes its known families to lowercase but does not normalize names it doesn't recognize — vendor casing passes through (e.g. ShiFu, Trojan.DownLoader1). Refresh quarterly.</sub>\n\n**Pivots:**\n\n**All samples in this family**\n\n```text\npolyunite.malware_family:{family}\n```\n\n*Stored lowercase for known families. Queries are case-insensitive — `lockbit`, `LOCKBIT`, and `LockBit` all match.*\n\n**Recent activity in this family**\n\n```text\npolyunite.malware_family:{family} AND artifact.created:[now-30d TO *]\n```\n\n**Family + high polyscore (high-confidence variants)**\n\n```text\npolyunite.malware_family:{family} AND scan.latest_scan.polyscore:[0.9 TO *]\n```\n\n**Family + sandbox C2 IPs — find live infrastructure**\n\n```text\npolyunite.malware_family:{family} AND _exists_:cape_sandbox_v2.extracted_c2_ips\n```\n\n---\n\n### scan\n\n#### `scan.mimetype.mime`\n\nMIME type of the artifact\n\n**Example:** `scan.mimetype.mime:\"application/pdf\"`\n\n**Pivots:**\n\n**Scope analysis to a file type before any other filter**\n\n```text\nscan.mimetype.mime:{value}\n```\n\n*Field is text and tokenized on '/'. For exact MIME-type matches, quote the value: `scan.mimetype.mime:\"application/pdf\"`.*\n\n**Type + recently-seen + malicious**\n\n```text\nscan.mimetype.mime:{value} AND scan.last_seen:[now-7d TO *] AND scan.detections.malicious:>1\n```\n\n---\n\n#### `scan.latest_scan.polyscore`\n\nPolyScore from latest scan (0-1, higher = more malicious)\n\n**Example:** `scan.latest_scan.polyscore:[0.5 TO *]`\n\n**Pivots:**\n\n**High-confidence malicious only**\n\n```text\nscan.latest_scan.polyscore:[0.9 TO *]\n```\n\n**PolyScore disagrees with engines (high score, few engine detections)**\n\n```text\nscan.latest_scan.polyscore:[0.8 TO *] AND scan.latest_scan.detections.malicious:[0 TO 2]\n```\n\n*These are interesting research candidates — PolyScore caught something engines missed.*\n\n---\n\n### hash\n\n#### `hash.md5`\n\nA widely used hash function that produces a 128-bit value, typically represented as a 32-character hexadecimal number. Commonly used for file integrity checks, though considered less secure for cryptographic purposes due to known weaknesses.\n\n**Example:** `hash.md5:d41d8cd98f00b204e9800998ecf8427e`\n\n**Pivots:**\n\n**Look up everything by MD5**\n\n```text\nhash.md5:{value}\n```\n\n*MD5 collisions are computationally feasible; for high-confidence identity prefer sha256.*\n\n---\n\n#### `hash.sha1`\n\nA cryptographic hash function that generates a 160-bit value. Used in many security protocols, but largely replaced by more secure algorithms due to discovered weaknesses.\n\n**Example:** `hash.sha1:da39a3ee5e6b4b0d3255bfef95601890afd80709`\n\n**Pivots:**\n\n**Look up everything by SHA1**\n\n```text\nhash.sha1:{value}\n```\n\n*SHA1 collisions are demonstrated but uncommon in malware corpora; sha256 is the safer identifier.*\n\n---\n\n#### `hash.sha256`\n\nPart of the SHA-2 family, this hash function produces a 256-bit output. Commonly used for security and integrity checks; considered secure for most modern cryptographic applications.\n\n**Example:** `hash.sha256:9838e53777041620de659421f8b50e87815ff738fcf64478b83d104c2a958f1f`\n\n**Pivots:**\n\n**Look up everything by SHA256 (preferred identifier)**\n\n```text\nhash.sha256:{value}\n```\n\n*SHA256 is the canonical artifact identifier across PolySwarm. Use this when you have a choice.*\n\n**Find dropper / dropped relationships**\n\n```text\ncape_sandbox_v2.dropped.sha256:{value} OR cape_sandbox_v2.dropped.extracted_files.sha256:{value}\n```\n\n*Find every sample that drops this exact payload at runtime, including sub-extracted layers.*\n\n---\n\n#### `hash.ssdeep`\n\nA fuzzy hash for similarity matching of files. Identifies files that are similar but not identical. Useful for finding malware variants and modified payloads.\n\n**Example:** `hash.ssdeep:*`\n\n**Pivots:**\n\n**Pull candidate ssdeeps for client-side fuzzy match**\n\n```text\npolyunite.malware_family:{family} AND _exists_:hash.ssdeep\n```\n\n*ES does exact match only on hash.ssdeep. Substitute {family} with the family of your starting sample (or any other anchor — time window, mimetype, imphash). Include hash.ssdeep in the result fields, then use python `ssdeep.compare()` locally to cluster.*\n\n**Recent ssdeeps in a mimetype bucket**\n\n```text\nscan.mimetype.mime:{mime} AND scan.last_seen:[now-7d TO *] AND _exists_:hash.ssdeep\n```\n\n*Same client-side flow as above, scoped by file type and recency.*\n\n---\n\n#### `hash.tlsh`\n\nTrend Micro Locality Sensitive Hash — a similarity hash for detecting near-duplicate files. More stable than ssdeep on larger files; useful for repacked-variant hunting.\n\n**Example:** `hash.tlsh:*`\n\n**Pivots:**\n\n**Pull candidate TLSH digests for client-side similarity**\n\n```text\npolyunite.malware_family:{family} AND _exists_:hash.tlsh\n```\n\n*ES does exact match only on hash.tlsh. Use this query to retrieve a candidate set with hash.tlsh included, then compute TLSH distance locally with `python-tlsh` (`tlsh.diff(a, b)` returns 0 for identical, <70 is typically near-duplicate, <100 is loosely related).*\n\n**TLSH set scoped by recency / type**\n\n```text\nscan.mimetype.mime:{mime} AND scan.last_seen:[now-30d TO *] AND _exists_:hash.tlsh\n```\n\n*Wider net for variant hunting in a corpus slice; same client-side distance step.*\n\n---\n\n### Sandbox (CAPE)\n\n#### `cape_sandbox_v2.extracted_c2_ips`\n\nC2 / connection-target IPs that the CAPE sandbox extracted from the sample's runtime behavior. Typed `ip`, so CIDR queries work — quote the CIDR (e.g. `\"185.244.25.0/24\"`). This is the canonical sandbox C2 IP field — prefer it over network.hosts.ip (text) for analyst pivots.\n\n**Example:** `cape_sandbox_v2.extracted_c2_ips:5.196.74.210`\n\n**Pivots:**\n\n**Other samples that contacted this C2 IP**\n\n```text\ncape_sandbox_v2.extracted_c2_ips:{value}\n```\n\n**Same /24 — adjacent infra often shares operators**\n\n```text\ncape_sandbox_v2.extracted_c2_ips:\"{value/24}\"\n```\n\n*Substitute the /24 of {value}, e.g. \"185.244.25.0/24\". Quote the CIDR — unquoted slashes cause a parse error.*\n\n**C2 IP + family — count families using this infra**\n\n```text\ncape_sandbox_v2.extracted_c2_ips:{value} AND _exists_:polyunite.malware_family\n```\n\n*Run as a metadata aggregation on polyunite.malware_family to identify shared infrastructure across families.*\n\n---\n\n#### `cape_sandbox_v2.suricata_alerts.signature`\n\nName of the signature that triggered the alert.\n\n**Example values (curated):**\n\n| Value | Notes |\n|---|---|\n| `ET MALWARE Common Stealer Behavior - Source IP Associated with Hosting Provider…` | infostealer behavior |\n| `ET MALWARE Terse alphanumeric executable downloader high likelihood of being ho…` | downloader |\n| `ET MALWARE Win32/Delf.TJJ CnC Domain in DNS Lookup (udo.jxwan.com)` | C2 / DNS lookup |\n| `ET MALWARE Win32/RustMiner Suspicious HTTP Accept Header Observed` | cryptominer |\n| `ET MALWARE Ransom.Win32.Birele.gsg Checkin` | ransomware checkin |\n\n<sub>Real signature names from the Emerging Threats (ET) ruleset that fired on samples in metadata-* (sampled April 2026). Field is text-typed; tokenized words match. Substring queries with `*` wrap each side find variants of a signature.</sub>\n\n**Pivots:**\n\n**Group corpus by this Suricata signature**\n\n```text\ncape_sandbox_v2.suricata_alerts.signature:*{value}*\n```\n\n*Use wildcards — single-token queries may return empty on this field. Wrap the keyword in `*` on both sides, or use a distinctive fragment of the signature name.*\n\n---\n\n#### `cape_sandbox_v2.dropped.sha256`\n\nSHA256 of dropped files\n\n**Example:** `cape_sandbox_v2.dropped.sha256:<sha256>`\n\n**Pivots:**\n\n**Find every sample that dropped this exact payload**\n\n```text\ncape_sandbox_v2.dropped.sha256:{value}\n```\n\n*Field is text but hex tokenizes as a single token; exact match works. Prefer this over dropped.md5 if available.*\n\n**Pivot to the standalone artifact**\n\n```text\nartifact.sha256:{value}\n```\n\n---\n\n#### `cape_sandbox_v2.dropped.md5`\n\nMD5 of a file written to disk by the sample during sandbox execution. Stored as `text`; aggregations don't work but exact-match queries do (hex strings tokenize as a single token). Pivot on this to find every sample that drops the same payload.\n\n**Example:** `cape_sandbox_v2.dropped.md5:<md5>`\n\n**Pivots:**\n\n**Find every sample that dropped this exact payload**\n\n```text\ncape_sandbox_v2.dropped.md5:{value}\n```\n\n*Strong signal for shared dropper / multi-stage families; the dropped MD5 is the second-stage payload. Field is text; aggregations don't work but exact match does.*\n\n**Pivot to the standalone artifact (if PolySwarm has scanned the dropped file)**\n\n```text\nartifact.md5:{value}\n```\n\n---\n\n#### `cape_sandbox_v2.dropped.extracted_files.sha256`\n\nSHA256 of a sub-payload that CAPE extracted from a dropped binary (unpacker output, embedded resources, etc.). One layer deeper than dropped.sha256 — useful when the dropper varies across samples but the unpacked payload is shared. Text-typed; exact match works.\n\n**Example:** `cape_sandbox_v2.dropped.extracted_files.sha256:<sha256>`\n\n**Pivots:**\n\n**Find samples sharing this sub-extracted payload**\n\n```text\ncape_sandbox_v2.dropped.extracted_files.sha256:{value}\n```\n\n*One layer deeper than dropped.sha256 — useful when the dropper itself varies but the unpacked / embedded payload is shared across the cluster.*\n\n**Pivot to the standalone artifact**\n\n```text\nartifact.sha256:{value}\n```\n\n**Cross-layer: same payload extracted AND dropped directly**\n\n```text\ncape_sandbox_v2.dropped.extracted_files.sha256:{value} OR cape_sandbox_v2.dropped.sha256:{value} OR artifact.sha256:{value}\n```\n\n*Catches the payload regardless of which layer reported it.*\n\n---\n\n#### `cape_sandbox_v2.dropped.filepath`\n\nPath on the guest VM where the sample wrote the dropped file. Combined with malware family, often reveals install-path templates (e.g. always %APPDATA%\\\\Microsoft\\\\Windows\\\\<random>.exe). Text-typed; quote the value for exact-path matches.\n\n**Example:** `cape_sandbox_v2.dropped.filepath:*\\\\AppData\\\\Roaming\\\\*`\n\n**Pivots:**\n\n**Search by path fragment (substring match)**\n\n```text\ncape_sandbox_v2.dropped.filepath:*\\\\AppData\\\\Roaming\\\\*\n```\n\n*Most useful pattern — find samples writing anywhere under a known directory or matching a filename pattern. Wrap fragments in `*` on both sides; escape backslashes for Windows paths.*\n\n**Family + install-path patterns**\n\n```text\npolyunite.malware_family:{family} AND _exists_:cape_sandbox_v2.dropped.filepath\n```\n\n*Pull every install path a given family uses; common to find a small set of templates per family.*\n\n**Exact path match**\n\n```text\ncape_sandbox_v2.dropped.filepath:\"%APPDATA%\\\\Microsoft\\\\Windows\\\\update.exe\"\n```\n\n*Quote when you've already identified a specific path you're hunting.*\n\n---\n\n#### `cape_sandbox_v2.dropped.guest_paths`\n\nEvery observed file system location the dropped file appeared at during sandbox execution. Broader than dropped.filepath — useful when the sample copies itself to multiple locations. Text-typed.\n\n**Example:** `cape_sandbox_v2.dropped.guest_paths:*\\\\AppData\\\\*`\n\n**Pivots:**\n\n**Search by path fragment**\n\n```text\ncape_sandbox_v2.dropped.guest_paths:*\\\\AppData\\\\*\n```\n\n*guest_paths records every observed location the dropped file appeared at — broader than filepath. Substring search is the typical pattern.*\n\n---\n\n#### `cape_sandbox_v2.target.file.yara.name`\n\nName of any YARA rule that matched the sample's executable image inside the CAPE sandbox. Surfaces behavior-based detections — sandbox-evasion checks, packer signatures, embedded shellcode/PE patterns, LNK execution chains — that fire even when AV verdicts miss the sample. Powerful for hunting evasion techniques across families: pivot from a single rule name to every sample exhibiting that technique, regardless of malware family.\n\n- **Type:** `text`\n- **Normalizer:** standard analyzer (lowercases tokens; underscores kept)\n- **Aggregatable:** no\n\n**Example:** `cape_sandbox_v2.target.file.yara.name:\"INDICATOR_SUSPICIOUS_EXE_SandboxHookingDLL\"`\n\n**Example values (curated):**\n\n| Value | Notes |\n|---|---|\n| `INDICATOR_SUSPICIOUS_EXE_SandboxHookingDLL` | sandbox evasion |\n| `vmdetect` | VM / sandbox detection |\n| `INDICATOR_EXE_Packed_ASPack` | packer (ASPack) |\n| `AutoIT_Compiled` | wrapper (AutoIT) |\n| `shellcode_get_eip` | shellcode pattern |\n| `shellcode_patterns` | shellcode pattern |\n| `shellcode_stack_strings` | shellcode pattern |\n| `embedded_pe` | embedded payload |\n| `embedded_win_api` | embedded API resolver |\n| `EXE_in_LNK` | LNK execution chain |\n| `Execution_in_LNK` | LNK execution chain |\n| `Script_in_LNK` | LNK execution chain |\n| `MSOffice_in_LNK` | LNK execution chain |\n| `Archive_in_LNK` | LNK execution chain |\n\n<sub>Verified to return current hits in metadata-* (April 2026). Common rule prefixes group related techniques: `INDICATOR_SUSPICIOUS_*` for suspicious-executable behaviors, `shellcode_*` for shellcode patterns, `*_in_LNK` for LNK-based execution chains. Prefix wildcards on the field name work — e.g. `cape_sandbox_v2.target.file.yara.name:INDICATOR_SUSPICIOUS_*`.</sub>\n\n**Pivots:**\n\n**All samples that triggered this YARA rule**\n\n```text\ncape_sandbox_v2.target.file.yara.name:\"{value}\"\n```\n\n*Field is text; quote the rule name for exact match. Behavior-based — fires even when AV misses the sample.*\n\n**Find every rule in a behavior class — wildcard prefix**\n\n```text\ncape_sandbox_v2.target.file.yara.name:INDICATOR_SUSPICIOUS_*\n```\n\n*Substitute the prefix you care about: `INDICATOR_SUSPICIOUS_*` (suspicious-EXE behaviors), `shellcode_*` (shellcode patterns), `*_in_LNK` (LNK execution chain). Useful for hunting a *technique*, not a single rule.*\n\n**YARA rule + family — what families use this technique**\n\n```text\ncape_sandbox_v2.target.file.yara.name:\"{value}\" AND _exists_:polyunite.malware_family\n```\n\n*Run as a metadata aggregation on polyunite.malware_family to map a behavior to its top families — fast way to see who relies on a given evasion / packer / loader technique.*\n\n---\n\n#### `cape_sandbox_v2.ttp`\n\nMITRE ATT&CK technique IDs that the CAPE sandbox attributed to the sample's runtime behavior. Stored as an array — a single sample typically carries several T-codes (encryption + C2 + persistence + evasion). Lets you pivot from a behavior (e.g. T1486 ransomware encryption, T1497 sandbox evasion, T1055 process injection) to every sample exhibiting it, regardless of family or AV verdict. Subtechniques use dotted IDs (e.g. T1027.002 = software packing) — quote them.\n\n- **Type:** `text`\n- **Normalizer:** standard analyzer (lowercases tokens)\n- **Aggregatable:** no\n\n**Example:** `cape_sandbox_v2.ttp:\"T1486\"`\n\n**Example values (curated):**\n\n| Value | Notes |\n|---|---|\n| `T1071` | Application Layer Protocol (C2) |\n| `T1027` | Obfuscated Files or Information |\n| `T1027.002` | Software Packing |\n| `T1497` | Virtualization / Sandbox Evasion |\n| `T1003` | OS Credential Dumping |\n| `T1055` | Process Injection |\n| `T1057` | Process Discovery |\n| `T1082` | System Information Discovery |\n| `T1112` | Modify Registry |\n| `T1547.001` | Persistence — Registry Run Keys |\n| `T1486` | Data Encrypted for Impact (ransomware) |\n| `T1485` | Data Destruction |\n| `T1573` | Encrypted Channel |\n| `T1562` | Impair Defenses |\n| `T1564.001` | Hide Artifacts — Hidden Files |\n\n<sub>Verified live in metadata-* (April 2026). Subtechnique IDs (e.g. T1027.002) contain a dot — quote them so the query parser treats them as a single phrase. Refer to https://attack.mitre.org/ for current technique definitions.</sub>\n\n**Pivots:**\n\n**All samples that exhibited this technique (CAPE)**\n\n```text\ncape_sandbox_v2.ttp:\"{value}\"\n```\n\n*Quote the T-code — subtechniques (e.g. T1027.002) contain a dot and need phrase-quoting.*\n\n**Multi-technique intersection — narrow to a behavior chain**\n\n```text\ncape_sandbox_v2.ttp:\"{value}\" AND cape_sandbox_v2.ttp:\"T1071\"\n```\n\n*ttp is an array; AND across T-codes finds samples carrying both techniques. Common pairings: ransomware encryption + C2 (`T1486 AND T1071`), evasion + injection (`T1497 AND T1055`). Substitute the second T-code for the chain you care about.*\n\n**Cross-sandbox corroboration — same technique seen by both**\n\n```text\ncape_sandbox_v2.ttp:\"{value}\" AND triage_sandbox_v0.ttp:\"{value}\"\n```\n\n*Both sandboxes flagging the same technique is a stronger signal than one alone — useful when triaging whether a behavior is real vs. sandbox-specific noise.*\n\n---\n\n### Sandbox (Triage)\n\n#### `triage_sandbox_v0.extracted.dropper.urls.url`\n\nURL used by the dropper.\n\n**Example:** `triage_sandbox_v0.extracted.dropper.urls.url:*evilpath/evilbin.exe*`\n\n**Pivots:**\n\n**Search by URL fragment (substring match)**\n\n```text\ntriage_sandbox_v0.extracted.dropper.urls.url:*evilpath/evilbin.exe*\n```\n\n*The most common analyst pattern. A path or filename fragment finds every sample whose dropper fetched from any URL containing it — regardless of host rotation. Wrap the fragment in `*` on both sides.*\n\n**Same host, any path — campaign sweep**\n\n```text\ntriage_sandbox_v0.extracted.dropper.urls.url:*example.com*\n```\n\n*Substitute the host you saw. Returns every sample whose dropper hit that host on any path. Pair with a recent `artifact.created` window to keep wildcards cheap.*\n\n**Exact URL match**\n\n```text\ntriage_sandbox_v0.extracted.dropper.urls.url:\"https://example.com/path/payload.exe\"\n```\n\n*Quote the full URL. Use when you've already identified a specific staging URL and want only the samples that hit *exactly* that one.*\n\n**Dropper URLs grouped by family**\n\n```text\npolyunite.malware_family:{family} AND _exists_:triage_sandbox_v0.extracted.dropper.urls.url\n```\n\n*Pull every staging URL a given family is using right now.*\n\n---\n\n#### `triage_sandbox_v0.analysis.family`\n\nMalware family Triage's sandbox attributed to the sample based on runtime behavior. Independent from `polyunite.malware_family` (which is derived from per-engine AV verdicts) — comparing the two surfaces both high-confidence corroboration (sandbox + AV agree) and research candidates (sandbox identifies a family AV missed). Stored as an array, lowercase. Field is `text` and the standard analyzer lowercases tokens, so queries are case-insensitive.\n\n- **Type:** `text`\n- **Normalizer:** standard analyzer (lowercases tokens)\n- **Aggregatable:** no\n- **Value casing:** stored lowercase; case-insensitive at query time\n\n**Example:** `triage_sandbox_v0.analysis.family:\"cobaltstrike\"`\n\n**Example values (curated):**\n\n| Value | Notes |\n|---|---|\n| `cobaltstrike` | C2 framework (offensive tooling) |\n| `metasploit` | C2 framework (offensive tooling) |\n| `kawaiiunicorn` | ransomware |\n| `blihanstealer` | infostealer |\n| `cosmu` | infostealer / virus |\n\n<sub>Verified live in metadata-* (April 2026). Triage stores values lowercase; case-insensitive at query time. Cross-reference with polyunite.malware_family — agreement is a strong-confidence label, disagreement is a research signal.</sub>\n\n**Pivots:**\n\n**All samples Triage attributes to this family**\n\n```text\ntriage_sandbox_v0.analysis.family:\"{value}\"\n```\n\n*Quote the family name. Field is text and the analyzer lowercases tokens, so case-insensitive at query time.*\n\n**Sandbox + AV agree — high-confidence family label**\n\n```text\ntriage_sandbox_v0.analysis.family:\"{value}\" AND polyunite.malware_family:{family}\n```\n\n*Both Triage's runtime attribution and AV-derived polyunite labeling agree — strongest family-attribution signal in the corpus. Substitute the matching polyunite family value for {family} (typically the same string).*\n\n**Triage caught a family AV missed — research candidates**\n\n```text\ntriage_sandbox_v0.analysis.family:\"{value}\" AND NOT _exists_:polyunite.malware_family\n```\n\n*Triage's sandbox attributed a family but no AV engine produced a polyunite label. These are interesting research candidates — sandbox-only family identifications often surface novel or undertested variants.*\n\n---\n\n#### `triage_sandbox_v0.ttp`\n\nMITRE ATT&CK technique IDs that the Triage sandbox attributed to the sample's runtime behavior. Stored as an array. Independent from `cape_sandbox_v2.ttp` (the two sandboxes don't always agree) — having both gives an analyst a way to corroborate behavior or surface sandbox-specific blind spots. Triage's TTP coverage tends to skew toward persistence (T1547.*) and host-discovery (T1614.001, T1082) techniques.\n\n- **Type:** `text`\n- **Normalizer:** standard analyzer (lowercases tokens)\n- **Aggregatable:** no\n\n**Example:** `triage_sandbox_v0.ttp:\"T1547.001\"`\n\n**Example values (curated):**\n\n| Value | Notes |\n|---|---|\n| `T1614.001` | System Location Discovery — System Language |\n| `T1547.001` | Persistence — Registry Run Keys |\n| `T1547.004` | Persistence — Winlogon Helper DLL |\n| `T1547.014` | Persistence — Active Setup |\n| `T1112` | Modify Registry |\n| `T1082` | System Information Discovery |\n| `T1564.001` | Hide Artifacts — Hidden Files |\n\n<sub>Verified live in metadata-* (April 2026). Triage's TTP coverage is narrower than CAPE's and skews toward persistence (T1547.*) and host-discovery (T1614.001, T1082). Cross-reference with `cape_sandbox_v2.ttp` to corroborate or spot sandbox-specific blind spots.</sub>\n\n**Pivots:**\n\n**All samples that exhibited this technique (Triage)**\n\n```text\ntriage_sandbox_v0.ttp:\"{value}\"\n```\n\n*Quote the T-code — subtechniques (e.g. T1547.001) contain a dot and need phrase-quoting.*\n\n**Persistence sweep — every Registry / Logon technique**\n\n```text\ntriage_sandbox_v0.ttp:T1547.*\n```\n\n*Triage's TTP coverage skews toward persistence; the T1547.* family covers Registry Run Keys, Winlogon Helper DLL, Active Setup, etc. Wildcard prefix on the T-code finds them all in one query.*\n\n**Technique + family — what families use this technique (Triage)**\n\n```text\ntriage_sandbox_v0.ttp:\"{value}\" AND _exists_:polyunite.malware_family\n```\n\n*Run as a metadata aggregation on polyunite.malware_family to map a technique to its top families.*\n\n---\n\n### Static Tools\n\n#### `pefile.imphash`\n\nHash of the PE import table. Identical imphashes across samples are a strong signal of shared compiler, packer, or family — useful for clustering unpacked PEs.\n\n**Example:** `pefile.imphash:5d6cad172c5535e4b6b6bbd246571621`\n\n**Pivots:**\n\n**Same import-table hash → likely same compiler / packer**\n\n```text\npefile.imphash:{value}\n```\n\n*imphash matches across samples are a stronger family signal than fuzzy hashes for unpacked PEs.*\n\n**imphash + family — confirm the family is consistent across the cluster**\n\n```text\npefile.imphash:{value} AND _exists_:polyunite.malware_family\n```\n\n---\n\n#### `pefile.resources.md5`\n\nThe MD5 hash of a resource, used for integrity verification.\n\n**Example:** `pefile.resources.md5:e44e3eb91dbf2fde6d40b95f9f2a5f92`\n\n**Pivots:**\n\n**Shared PE resource → shared codebase / dropper template**\n\n```text\npefile.resources.md5:{value}\n```\n\n*Common in malware families that bundle a payload as a resource (e.g. RATs, droppers).*\n\n---\n\n#### `exiftool.mimetype`\n\nMIME type identified by ExifTool's parse of the file. Independent from `scan.mimetype.mime` (the scanner's bytes-based identification) — comparing the two surfaces samples where the container disagrees with the contents (a common file-masquerading signal). Field is `text` and tokenized on '/' — quote the value for exact-match queries.\n\n- **Type:** `text`\n- **Normalizer:** none (tokenized on '/')\n- **Aggregatable:** no\n\n**Example:** `exiftool.mimetype:\"application/pdf\"`\n\n**Pivots:**\n\n**All samples with this MIME type (per ExifTool)**\n\n```text\nexiftool.mimetype:\"{value}\"\n```\n\n*Field is text and tokenized on '/' — quote the value for exact MIME-type matches.*\n\n**ExifTool / scanner mimetype mismatch — file-masquerading hunt**\n\n```text\nexiftool.mimetype:\"{value}\" AND NOT scan.mimetype.mime:\"{value}\"\n```\n\n*Two independent mimetype views; mismatches surface samples where the container metadata disagrees with the bytes (e.g. a PDF wrapper hiding a non-PDF payload).*\n\n**MIME type + family — what families ship as this filetype**\n\n```text\nexiftool.mimetype:\"{value}\" AND _exists_:polyunite.malware_family\n```\n\n*Run as a metadata aggregation on polyunite.malware_family to see which families currently distribute this filetype.*\n\n---\n\n### Analyst Tags\n\n#### `tags`\n\nAnalyst-applied labels on the artifact. Stored as an array, so a single sample can carry multiple labels (e.g. `[\"Ransomware\", \"Dropper\", \"Trojan\", \"Windows\", \"PE32\"]`). Three rough kinds of values: behavior class (Ransomware, Infostealer, RAT, Loader, Backdoor, Dropper, Trojan, Stealer, Downloader, Exploit), platform / format (Windows, Linux, MacOSX, PE32, ELF64), and structured key:value labels for sector / feed routing (e.g. `sector:financial`, `feed:premium`). Stored values are typically TitleCase but the field is `text` and the standard analyzer lowercases tokens at index time — `tags:\"ransomware\"` and `tags:\"Ransomware\"` both match. For the full live list of tags, run [`polyswarm tag list`](/customers/polyswarm-customer-cli-v3/#using-tags).\n\n- **Type:** `text`\n- **Normalizer:** standard analyzer (lowercases tokens)\n- **Aggregatable:** no\n- **Value casing:** stored TitleCase but case-insensitive at query time (analyzer lowercases)\n\n**Example:** `tags:\"ransomware\"`\n\n**Example values (curated):**\n\n| Value | Notes |\n|---|---|\n| `Ransomware` | behavior class |\n| `Infostealer` | behavior class |\n| `RAT` | behavior class |\n| `Dropper` | behavior class |\n| `Loader` | behavior class |\n| `Backdoor` | behavior class |\n| `Trojan` | behavior class |\n| `Exploit` | behavior class |\n| `Downloader` | behavior class |\n| `Stealer` | behavior class |\n| `Windows` | platform |\n| `Linux` | platform |\n| `MacOSX` | platform |\n| `PE32` | file format |\n| `ELF64` | file format |\n\n<sub>Verified to return current hits in metadata-* (April 2026). Stored TitleCase but case-insensitive at query time — both `tags:\"Ransomware\"` and `tags:\"ransomware\"` match. tags is an array, so a single sample commonly carries several labels (behavior + platform + format). Structured `key:value` labels (e.g. `sector:financial`, `feed:premium`) also exist for routing.</sub>\n\n**Pivots:**\n\n**All samples carrying this tag**\n\n```text\ntags:\"{value}\"\n```\n\n*Field is text and the standard analyzer lowercases tokens at index time — both `tags:\"Ransomware\"` and `tags:\"ransomware\"` match. Quote multi-word values.*\n\n**Multi-tag intersection — narrow to a behavior pair**\n\n```text\ntags:\"{value}\" AND tags:\"backdoor\"\n```\n\n*tags is an array, so AND across tags finds samples wearing both labels (e.g. `tags:\"loader\" AND tags:\"backdoor\"` for dual-purpose families). Substitute the second tag for the pair you care about.*\n\n**Tag + family — what families wear this label**\n\n```text\ntags:\"{value}\" AND _exists_:polyunite.malware_family\n```\n\n*Run as a metadata aggregation on polyunite.malware_family to see which families currently carry this tag — fast way to map a behavior class to its top families.*\n\n---\n\n"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/customers/new/polyswarm-customer-new-24.md","frontmatter":{"title":"PolySwarm Customer New Features","excerpt":"List of new features in polyswarm..."},"html":"<h1 id=\"whats-new\" style=\"position:relative;\"><a href=\"#whats-new\" aria-label=\"whats new permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What's new?</h1>\n<p>Discover the latest feature releases, improvements, and updates with PolySwarm in <strong>2024</strong>.</p>\n<h3 id=\"september-2024\" style=\"position:relative;\"><a href=\"#september-2024\" aria-label=\"september 2024 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>September 2024</h3>\n<ul>\n<li>ZIP Password File Support - Upload a password protected zip file with a password for scanning or sandboxing via our UI, CLI and API.</li>\n<li>Windows 11 Sandbox support - Sandbox in a Windows 11 image via Triage.</li>\n<li>HTML Sandboxing improvements - Added additional HTML signatures into Cape for better analysis and detection.</li>\n<li>Sandboxing Improvements - Bug fixes around pdf sandboxing in cape for better analysis.</li>\n</ul>\n<h3 id=\"july-2024\" style=\"position:relative;\"><a href=\"#july-2024\" aria-label=\"july 2024 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>July 2024</h3>\n<ul>\n<li>QR code Support - Ability to Sandbox and Scan QR Code images with a URL via UI/CLI and API, commonly used in phishing.</li>\n<li>Account Plan Information - Retrieve account plan quota and other details via API or CLI.</li>\n<li>UI Bug fixes and improvements.</li>\n</ul>\n<h3 id=\"june-2024\" style=\"position:relative;\"><a href=\"#june-2024\" aria-label=\"june 2024 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>June 2024</h3>\n<ul>\n<li>Linux Sandboxing - Sandbox files on a Ubuntu image in Triage.</li>\n<li>PDF and HTML reports - Create PDF/HTML reports for Scanning and Sandboxing in UI, CLI and API.</li>\n<li>Engine fixes and maintenance.</li>\n</ul>\n<h3 id=\"april-2024\" style=\"position:relative;\"><a href=\"#april-2024\" aria-label=\"april 2024 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>April 2024</h3>\n<ul>\n<li>HTM/HTML File support - Sandbox HTM/HTML files in Cape and Triage.</li>\n<li>URL Sandboxing Support - Cape now supports sandboxing URL's via the API and CLI.</li>\n<li>Introduction of new Sandboxing UI fields to improve functionality and clarity.</li>\n<li>Improvements of DOC/PDF file support in PolySwarm Sandboxing.</li>\n</ul>\n<h3 id=\"february-2024\" style=\"position:relative;\"><a href=\"#february-2024\" aria-label=\"february 2024 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>February 2024</h3>\n<ul>\n<li>Triage Sandbox introduction of URL Sandboxing for the PythonSDK,RestAPI and CLI.</li>\n<li>Provided ability to download behavioral and Static json reports for a Sandbox detonation.</li>\n</ul>","rawMarkdownBody":"\n# What's new?\n\nDiscover the latest feature releases, improvements, and updates with PolySwarm in **2024**.\n\n### September 2024\n* ZIP Password File Support - Upload a password protected zip file with a password for scanning or sandboxing via our UI, CLI and API.\n* Windows 11 Sandbox support - Sandbox in a Windows 11 image via Triage.\n* HTML Sandboxing improvements - Added additional HTML signatures into Cape for better analysis and detection.\n* Sandboxing Improvements - Bug fixes around pdf sandboxing in cape for better analysis.\n\n### July 2024\n* QR code Support - Ability to Sandbox and Scan QR Code images with a URL via UI/CLI and API, commonly used in phishing.\n* Account Plan Information - Retrieve account plan quota and other details via API or CLI.\n* UI Bug fixes and improvements.\n\n### June 2024\n* Linux Sandboxing - Sandbox files on a Ubuntu image in Triage.\n* PDF and HTML reports - Create PDF/HTML reports for Scanning and Sandboxing in UI, CLI and API.\n* Engine fixes and maintenance.\n\n### April 2024\n* HTM/HTML File support - Sandbox HTM/HTML files in Cape and Triage.\n* URL Sandboxing Support - Cape now supports sandboxing URL's via the API and CLI.\n* Introduction of new Sandboxing UI fields to improve functionality and clarity.\n* Improvements of DOC/PDF file support in PolySwarm Sandboxing.\n\n### February 2024\n* Triage Sandbox introduction of URL Sandboxing for the PythonSDK,RestAPI and CLI.\n* Provided ability to download behavioral and Static json reports for a Sandbox detonation.\n"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/customers/new/polyswarm-customer-new-25.md","frontmatter":{"title":"PolySwarm Customer New Features","excerpt":"List of new features in polyswarm..."},"html":"<h1 id=\"whats-new\" style=\"position:relative;\"><a href=\"#whats-new\" aria-label=\"whats new permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What's new?</h1>\n<p>Discover the latest feature releases, improvements, and updates with PolySwarm in <strong>2025</strong>.</p>\n<h3 id=\"september-2025\" style=\"position:relative;\"><a href=\"#september-2025\" aria-label=\"september 2025 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>September 2025</h3>\n<ul>\n<li>Additional PEID fields added to the UI for scanned artifacts.</li>\n<li>Extra fields introduced on the Scanning UI page for improved visibility.</li>\n</ul>\n<h3 id=\"august-2025\" style=\"position:relative;\"><a href=\"#august-2025\" aria-label=\"august 2025 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>August 2025</h3>\n<ul>\n<li>Sandbox support expanded to include <strong>.eml</strong> and <strong>.msg</strong> file types in CAPE.</li>\n<li>\n<p>Enhanced error reporting for sandboxing:</p>\n<ul>\n<li><code class=\"language-text\">config.errors</code> now highlights unsupported file types.</li>\n<li><code class=\"language-text\">artifact.failed_reason</code> provides direct sandbox error details (e.g., zero-byte file uploads).</li>\n</ul>\n</li>\n</ul>\n<h3 id=\"june-2025\" style=\"position:relative;\"><a href=\"#june-2025\" aria-label=\"june 2025 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>June 2025</h3>\n<ul>\n<li>Teams can now configure a default value for <strong>Sandbox Internet Access</strong> in the <strong>Advanced</strong> tab under Settings.</li>\n<li>Sandboxing now includes file type validation. Sandbox sessions will fail if an unsupported file type is uploaded. See <strong>UI > Sandboxing</strong> for the full list of supported formats.</li>\n</ul>\n<h3 id=\"may-2025\" style=\"position:relative;\"><a href=\"#may-2025\" aria-label=\"may 2025 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>May 2025</h3>\n<ul>\n<li>Sandboxing UI redesigned: “My Sandboxing” has been split into <strong>My Sandboxing</strong> and <strong>Team Sandboxing</strong> tabs.</li>\n<li>New <strong>Download Endpoint</strong> introduced, allowing users to download sandbox-specific artifacts. Artifacts can also be packaged into a ZIP file for easier handling.</li>\n<li>Added the ability to customize the password for downloaded ZIP files via the Settings page.</li>\n</ul>\n<h3 id=\"january-2025\" style=\"position:relative;\"><a href=\"#january-2025\" aria-label=\"january 2025 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>January 2025</h3>\n<ul>\n<li>Notification System, This feature provides the ability to receive email notifications when Sandbox sessions are completed. It can be configured through the UI under Settings > Advanced for each user. With this functionality, users can leave the Sandboxing page and focus on other tasks while staying informed. Stay tuned for updates and additional enhancements to this feature in the coming months.</li>\n</ul>","rawMarkdownBody":"\n# What's new?\n\nDiscover the latest feature releases, improvements, and updates with PolySwarm in **2025**.\n\n### September 2025\n* Additional PEID fields added to the UI for scanned artifacts.\n* Extra fields introduced on the Scanning UI page for improved visibility.\n\n### August 2025\n* Sandbox support expanded to include **.eml** and **.msg** file types in CAPE.\n* Enhanced error reporting for sandboxing:\n  * `config.errors` now highlights unsupported file types.\n  * `artifact.failed_reason` provides direct sandbox error details (e.g., zero-byte file uploads).\n\n### June 2025\n* Teams can now configure a default value for **Sandbox Internet Access** in the **Advanced** tab under Settings.\n* Sandboxing now includes file type validation. Sandbox sessions will fail if an unsupported file type is uploaded. See **UI > Sandboxing** for the full list of supported formats.\n\n### May 2025\n* Sandboxing UI redesigned: “My Sandboxing” has been split into **My Sandboxing** and **Team Sandboxing** tabs.\n* New **Download Endpoint** introduced, allowing users to download sandbox-specific artifacts. Artifacts can also be packaged into a ZIP file for easier handling.\n* Added the ability to customize the password for downloaded ZIP files via the Settings page.\n\n### January 2025\n* Notification System, This feature provides the ability to receive email notifications when Sandbox sessions are completed. It can be configured through the UI under Settings > Advanced for each user. With this functionality, users can leave the Sandboxing page and focus on other tasks while staying informed. Stay tuned for updates and additional enhancements to this feature in the coming months.\n"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/customers/new/polyswarm-customer-new-26.md","frontmatter":{"title":"PolySwarm Customer New Features","excerpt":"List of new features in polyswarm..."},"html":"<h1 id=\"whats-new\" style=\"position:relative;\"><a href=\"#whats-new\" aria-label=\"whats new permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What's new?</h1>\n<p>Discover the latest feature releases, improvements, and updates with PolySwarm in <strong>2026</strong>.</p>\n<h3 id=\"january-2026\" style=\"position:relative;\"><a href=\"#january-2026\" aria-label=\"january 2026 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>January 2026</h3>\n<ul>\n<li><strong>Notification Webhooks</strong> — You can now register notification webhooks to receive automatic push notifications when sandbox tasks complete. This enables automated workflows and real-time integrations with your security tools. Use the CLI command polyswarm notification webhook --help to get started. </li>\n<li><strong>LLM-Powered Sample Reports</strong> — New downloadable reports providing AI-generated summaries of malware sample analysis. These reports synthesize scan results, sandbox findings, and threat intelligence into actionable summaries for faster analyst triage.</li>\n<li><strong>Expire Files in Private Community</strong> - Applies to Private Communities only and affects new uploads via the Scan endpoint. After the configured number of days, the binary file is deleted, but the metadata remains available, so the hash can still be searched.</li>\n</ul>","rawMarkdownBody":"\n# What's new?\n\nDiscover the latest feature releases, improvements, and updates with PolySwarm in **2026**.\n\n\n### January 2026\n* **Notification Webhooks** — You can now register notification webhooks to receive automatic push notifications when sandbox tasks complete. This enables automated workflows and real-time integrations with your security tools. Use the CLI command polyswarm notification webhook --help to get started. \n* **LLM-Powered Sample Reports** — New downloadable reports providing AI-generated summaries of malware sample analysis. These reports synthesize scan results, sandbox findings, and threat intelligence into actionable summaries for faster analyst triage.\n* **Expire Files in Private Community** - Applies to Private Communities only and affects new uploads via the Scan endpoint. After the configured number of days, the binary file is deleted, but the metadata remains available, so the hash can still be searched.\n"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/customers/polyswarm-ui/communities.md","frontmatter":{"title":"Communities","excerpt":"A Public Community is one that everyone can join and participate in..."},"html":"<h1 id=\"communities\" style=\"position:relative;\"><a href=\"#communities\" aria-label=\"communities permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Communities</h1>\n<h3 id=\"public-community\" style=\"position:relative;\"><a href=\"#public-community\" aria-label=\"public community permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Public Community</h3>\n<p>A Public Community is one that everyone can join and participate in.\nPolySwarm has a default public community that is used by PolySwarm UI and PolySwarm API when a user does not specify the name of a community.</p>\n<h3 id=\"private-community\" style=\"position:relative;\"><a href=\"#private-community\" aria-label=\"private community permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Private Community</h3>\n<p>A Private Community is an invite-only Community to support specific use cases of our customers (e.g. mutual NDA among participants, GDPR compliance, etc).\nEach Private Community is owned by one Team Account.\nAnd only the Members of that Team Account can access the Private Community.</p>","rawMarkdownBody":"\n# Communities\n\n### Public Community\nA Public Community is one that everyone can join and participate in.\nPolySwarm has a default public community that is used by PolySwarm UI and PolySwarm API when a user does not specify the name of a community.\n\n### Private Community\nA Private Community is an invite-only Community to support specific use cases of our customers (e.g. mutual NDA among participants, GDPR compliance, etc).\nEach Private Community is owned by one Team Account.\nAnd only the Members of that Team Account can access the Private Community.\n\n"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/customers/polyswarm-ui/emerging-threats.md","frontmatter":{"title":"Emerging Threats","excerpt":"The Emerging Threats table provides customers with an actionable curated list of artifacts that PolySwarm has confirmed are emerging threats..."},"html":"<h1 id=\"emerging-threats\" style=\"position:relative;\"><a href=\"#emerging-threats\" aria-label=\"emerging threats permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Emerging Threats</h1>\n<p>The Emerging Threats table provides customers with an actionable curated list of artifacts that PolySwarm has confirmed are emerging threats.\nThis single table provides a summary of several groupings of malware; grouped by malware family or world events.</p>\n<ul>\n<li>Clicking the \"View scan results\" button, will show the latest scan results in PolySwarm for that artifact.</li>\n<li>\"First Seen in PolySwarm\" indicates that the artifact was submitted into PolySwarm before other platforms.</li>\n<li>The PolyScore is PolySwarm's threat scoring algorithm that provides the probability a given file contains malware, in a single authoritative number.\nOn this table, that number is represented by a bar to indicate low, medium, and high.</li>\n<li>Each artifact has one or more tags to help the user quickly discern its function.</li>\n<li>Users can click the copy icon to grab a copy of the SHA256 hash of the artifact.</li>\n</ul>\n<h4 id=\"why-do-we-sometimes-show-a-low-polyscore-on-an-artifact-that-we-say-is-malicious\" style=\"position:relative;\"><a href=\"#why-do-we-sometimes-show-a-low-polyscore-on-an-artifact-that-we-say-is-malicious\" aria-label=\"why do we sometimes show a low polyscore on an artifact that we say is malicious permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Why do we sometimes show a low PolyScore on an artifact that we say is malicious?</h4>\n<p>PolyScore weighs convictions from engines differently, based on factors such as malware family name and the engine's track record on similar files.\nFiles with high PolyScores are ready for automated action.\nBut sometimes, engines that detect important emerging threats do not increase the PolyScore very much, even though the file actually is malicious.\nThat is why the process behind PolyScore learns: so we can identify competent engines that see emerging malware first and give them a louder voice against future threats.\nIn the meantime, we still think it's important to show low PolyScores, because it means a file warrants review.\nAnd, if the file is included in the Emerging Threats table, yes, we believe it's malware.</p>","rawMarkdownBody":"\n# Emerging Threats\n\nThe Emerging Threats table provides customers with an actionable curated list of artifacts that PolySwarm has confirmed are emerging threats.\nThis single table provides a summary of several groupings of malware; grouped by malware family or world events.\n\n* Clicking the \"View scan results\" button, will show the latest scan results in PolySwarm for that artifact.\n* \"First Seen in PolySwarm\" indicates that the artifact was submitted into PolySwarm before other platforms.\n* The PolyScore is PolySwarm's threat scoring algorithm that provides the probability a given file contains malware, in a single authoritative number.\nOn this table, that number is represented by a bar to indicate low, medium, and high.\n* Each artifact has one or more tags to help the user quickly discern its function.\n* Users can click the copy icon to grab a copy of the SHA256 hash of the artifact.\n\n#### Why do we sometimes show a low PolyScore on an artifact that we say is malicious?\nPolyScore weighs convictions from engines differently, based on factors such as malware family name and the engine's track record on similar files.\nFiles with high PolyScores are ready for automated action.\nBut sometimes, engines that detect important emerging threats do not increase the PolyScore very much, even though the file actually is malicious.\nThat is why the process behind PolyScore learns: so we can identify competent engines that see emerging malware first and give them a louder voice against future threats.\nIn the meantime, we still think it's important to show low PolyScores, because it means a file warrants review.\nAnd, if the file is included in the Emerging Threats table, yes, we believe it's malware.\n\n\n"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/customers/new/polyswarm-customer-new-23.md","frontmatter":{"title":"PolySwarm Customer New Features","excerpt":"List of new features in polyswarm..."},"html":"<h1 id=\"whats-new\" style=\"position:relative;\"><a href=\"#whats-new\" aria-label=\"whats new permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What's new?</h1>\n<p>Discover the latest feature releases, improvements, and updates with PolySwarm in <strong>2023</strong>.</p>\n<h3 id=\"november-2023\" style=\"position:relative;\"><a href=\"#november-2023\" aria-label=\"november 2023 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>November 2023</h3>\n<ul>\n<li>Activity Page in Settings, allows teams to view who has uploaded files to Scan or Sandbox, see <a href=\"settings#activity\">here</a>.</li>\n<li>Scan History allows accounts to see previous Scans of the same Artifact, allowing you to understand how the sample has changed over time.</li>\n</ul>\n<h3 id=\"september-2023\" style=\"position:relative;\"><a href=\"#september-2023\" aria-label=\"september 2023 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>September 2023</h3>\n<ul>\n<li>Private Communities UI introduction, the UI now supports all Private Community features like Scanning, Sandboxing and Hunting.</li>\n</ul>\n<h3 id=\"july-2023\" style=\"position:relative;\"><a href=\"#july-2023\" aria-label=\"july 2023 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>July 2023</h3>\n<ul>\n<li>Direct Sandboxing support splits the Sandboxing from the Scan Summary Page, allowing for easy viewing of more metadata and downloading single files. Added ability to Sandbox directly and choose the desired detonation image.</li>\n</ul>\n<h3 id=\"may-2023\" style=\"position:relative;\"><a href=\"#may-2023\" aria-label=\"may 2023 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>May 2023</h3>\n<ul>\n<li>Further Sandbox Files available to download, provides the ability to download PCAP &#x26; JARM Files from Sandboxing Samples directly.</li>\n</ul>\n<h3 id=\"april-2023\" style=\"position:relative;\"><a href=\"#april-2023\" aria-label=\"april 2023 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>April 2023</h3>\n<ul>\n<li>Private Communities, Introduction of Private Communities functionality in the CLI and API, Private Communities allows accounts to upload files in a private space for scanning verdict and sandboxing, and keep the metadata in the teams repository for future reference.</li>\n</ul>\n<h3 id=\"march-2023\" style=\"position:relative;\"><a href=\"#march-2023\" aria-label=\"march 2023 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>March 2023</h3>\n<ul>\n<li>Introduction of IOC Search in the UI/CLI and API, This feature provides the ability to search on a hash and review the IP, URL, imphash or MITRE TTP that are related in a single output. Search on a IP, URL, imphash or MITRE TTP to find related hashes. See here for more information. See <a href=\"searching#ioc-searching\">here</a>.</li>\n</ul>","rawMarkdownBody":"\n# What's new?\n\nDiscover the latest feature releases, improvements, and updates with PolySwarm in **2023**.\n\n### November 2023\n\n* Activity Page in Settings, allows teams to view who has uploaded files to Scan or Sandbox, see [here](settings#activity).\n* Scan History allows accounts to see previous Scans of the same Artifact, allowing you to understand how the sample has changed over time.\n\n### September 2023\n* Private Communities UI introduction, the UI now supports all Private Community features like Scanning, Sandboxing and Hunting.\n\n### July 2023\n* Direct Sandboxing support splits the Sandboxing from the Scan Summary Page, allowing for easy viewing of more metadata and downloading single files. Added ability to Sandbox directly and choose the desired detonation image.\n\n### May 2023\n* Further Sandbox Files available to download, provides the ability to download PCAP & JARM Files from Sandboxing Samples directly.\n\n### April 2023\n* Private Communities, Introduction of Private Communities functionality in the CLI and API, Private Communities allows accounts to upload files in a private space for scanning verdict and sandboxing, and keep the metadata in the teams repository for future reference.\n\n### March 2023\n* Introduction of IOC Search in the UI/CLI and API, This feature provides the ability to search on a hash and review the IP, URL, imphash or MITRE TTP that are related in a single output. Search on a IP, URL, imphash or MITRE TTP to find related hashes. See here for more information. See [here](searching#ioc-searching).\n"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/customers/polyswarm-ui/engines.md","frontmatter":{"title":"Engines","excerpt":"The Engines page of PolySwarm UI displays the list of engines that have operated on the PolySwarm marketplace..."},"html":"<h1 id=\"engines\" style=\"position:relative;\"><a href=\"#engines\" aria-label=\"engines permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Engines</h1>\n<button>\n  <a href=\"https://polyswarm.network/engines\" target=\"_blank\" rel=\"noopener noreferrer\">\n    Explore My PolySwarm Engines\n  </a>\n</button>\n<h2 id=\"general\" style=\"position:relative;\"><a href=\"#general\" aria-label=\"general permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>General</h2>\n<p>The <a href=\"https://polyswarm.network/engines\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Engines</a> page of PolySwarm UI allows you to view the list of Engines that have been created in a PolySwarm UI Account and have been Verified. For the users who have developed an Engine, this page allows them to add it to the PolySwarm Marketplace.</p>\n<h2 id=\"all-engines\" style=\"position:relative;\"><a href=\"#all-engines\" aria-label=\"all engines permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>All Engines</h2>\n<p>The All Engines tab provides a listing of all verified Engines. For each Engine, it shows the Name and the Tags. The Tags are clickable to filter the content of the page. In the upper right corner, there is a button to edit the Tags filters.</p>\n<h3 id=\"details\" style=\"position:relative;\"><a href=\"#details\" aria-label=\"details permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Details</h3>\n<p>Clicking on the name of an Engine in the All Engines list will update the left area of the page to display the Engine's details. The Engine details view displays the name, description, date it was created, participant type, type(s) of artifacts it can process, and the author’s website.</p>\n<h2 id=\"my-engines\" style=\"position:relative;\"><a href=\"#my-engines\" aria-label=\"my engines permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>My Engines</h2>\n<p>The <a href=\"https://polyswarm.network/engines/my-engines\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">My Engines</a> tab is only available to logged in users. This is where a user can Create an Engine. Once a user has Created an Engine, their Engines will be listed on this page and can be edited or deleted. Clicking on an Engine's name will display the details in the left area, just like the All Engines page does, but this view also includes the Development Community details.</p>\n<p>The Engine Status will be one of the following states:</p>\n<table>\n<thead>\n<tr>\n<th>Status</th>\n<th>What does it mean?</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">Disabled</code></td>\n<td>When your Engine is not in operation.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">Development</code></td>\n<td>When your Engine is in Development Mode.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">Verification</code></td>\n<td>When your Engine is being Verified by the PolySwarm Support team.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">Verified</code></td>\n<td>When PolySwarm has completed the Verification process for your Engine.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">Failed</code></td>\n<td>When an Engine was previously Verified and is no longer responding to bounties, it will be marked as “Failed”.</td>\n</tr>\n</tbody>\n</table>\n<h3 id=\"creating-an-engine\" style=\"position:relative;\"><a href=\"#creating-an-engine\" aria-label=\"creating an engine permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Creating an Engine</h3>\n<p>Creating an Engine is how the owner of a PolySwarm UI Account begins the process to connect their Engine to the PolySwarm Marketplace. Click the “Add engine” button to create your first engine. If you have one or more existing Engines, you can click the “+” button to create another one.</p>\n<p>The Creation process allows the owner to define the operating parameters of their Engine. The PolySwarm Marketplace uses these parameters to determine which Engines can participate in each bounty.</p>\n<blockquote>\n<p>Note: It is possible to create your engine in your User Account or in one of your Team Accounts. We recommend creating your Engines in a Team Account, because it is easier to manage when you have more than one person in your organization who needs to manage the Engine.</p>\n</blockquote>\n<p>In the Add Engine window, complete the form and click the Save button to create the Engine.\nThe <a href=\"/customers/engines-configuration\">Engine Configuration Options</a> page provides guidance for all fields in the Engine creation/editing form.</p>\n<blockquote>\n<p>Note: Most fields in the Add Engine window are disabled until an engine webhook is selected.</p>\n</blockquote>\n<h3 id=\"deleting-an-engine\" style=\"position:relative;\"><a href=\"#deleting-an-engine\" aria-label=\"deleting an engine permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Deleting an Engine</h3>\n<p>To delete an Engine, you must first move it to the Disabled state. When an Engine is Deleted, the PolySwarm Marketplace retains the Engine’s name associated with any bounty assertions or votes that the Engine provided while operating in a production community. Because of this, Engine Names can never be reused.</p>\n<h3 id=\"development-community\" style=\"position:relative;\"><a href=\"#development-community\" aria-label=\"development community permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Development Community</h3>\n<p>Each Engine has its own Private Development Community to use for testing an Engine in the PolySwarm Marketplace. On the My Engines tab, when you click on the Name of an Engine, the left view will show your Development Community Details.</p>\n<ul>\n<li>Name - The name of your Development Community is randomly generated and is unique to your engine.</li>\n<li>API Key - The API Key used in the PolySwarm CLI when sending artifacts to your Development Community.</li>\n<li>Accepting Bounties - When “Enabled”, your Development Community is active and will accept bounties for your Engine. When “Disabled”, it will not accept bounties. The Development Community will be “Disabled” when the Engine Status is “Disabled” or “Failed” or “Verified”. It will be “Enabled” when the Engine Status is “Development” or “Verification”.</li>\n</ul>\n<p>Use the PolySwarm CLI to submit artifacts into your Development Community. You can also perform a hash search on your Development Community to see the full Scan result data for the bounties in your Development Community.</p>\n<p>At the bottom of the Development Results table for each Engine are instructions for how to submit artifacts into your Development Community. The instructions are the same for each Engine, but the API key and Development Community Name will differ.</p>\n<h3 id=\"development-mode\" style=\"position:relative;\"><a href=\"#development-mode\" aria-label=\"development mode permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Development Mode</h3>\n<p>To move an Engine into the “Development” state, select “Enable Development Mode” from the Actions menu. Enabling Development Mode for an Engine allows you to test your Engine in the PolySwarm Marketplace using a Development Community only accessible by your Engine.</p>\n<h3 id=\"development-results\" style=\"position:relative;\"><a href=\"#development-results\" aria-label=\"development results permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Development Results</h3>\n<p>When you submit bounties into your Development Community, those results are not accessible or searchable by other PolySwarm users. On the My Engines tab, when you click the “Down Arrow” icon in the Actions column for an Engine, it will expand the Development Results table for that Engine.</p>\n<p>The Development Results table allows you to track each artifact you submit into your Development Community.</p>\n<ul>\n<li>sha256 - The sha256 hash of the artifact you submitted.</li>\n<li>Verdict - The Verdict returned by your Engine</li>\n<li>Expected Verdict - For each artifact, you should set the value that you expected the verdict to be. This allows you to track which artifacts were evaluated incorrectly by your Engine during testing. In the Actions column, select “Set Expected Verdict” to set this value.</li>\n<li>Status - The Status of the Bounty for your artifact. When you submit your artifact, this table will update automatically while the bounty is being processed.</li>\n<li>Timestamp - The timestamp for when the Bounty was created.</li>\n</ul>\n<h3 id=\"disabling\" style=\"position:relative;\"><a href=\"#disabling\" aria-label=\"disabling permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Disabling</h3>\n<p>To Disable your Engine, select “Disable” from the Action menu of your Engine. You must Disable your Engine before you can Edit or Delete it.</p>\n<h3 id=\"editing\" style=\"position:relative;\"><a href=\"#editing\" aria-label=\"editing permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Editing</h3>\n<p>To edit your Engine, you must first Disable it. Then select “Edit” from the Actions menu of your Engine. You can update any of the Engine’s configuration settings, except the Engine Name.</p>\n<h3 id=\"failing\" style=\"position:relative;\"><a href=\"#failing\" aria-label=\"failing permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Failing</h3>\n<p>When an Engine is Verified and operating on the production PolySwarm Marketplace, and later stops responding to bounties, it will be marked as “Failed” status. To return the Engine to Production operation, the Engine owner must set the Engine to Disabled, re-test the engine webhook, and then progress through the Development and Verification process again.</p>\n<h3 id=\"verification\" style=\"position:relative;\"><a href=\"#verification\" aria-label=\"verification permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Verification</h3>\n<p>When your Engine is ready for Production operation in the PolySwarm Marketplace, you must Request Verification. On the My Engines tab, select “Request Verification” in the Actions menu for that Engine. This will set your Engine to the “Verification” status and submit a request to the PolySwarm Support team to process your request.</p>\n<p>Before you request Verification you must submit at least 2 bounties to your Engine’s Development Community, one should be for a malicious detection and the other for a benign detection. And you should have set an Expected Verdict that matches the Verdict for those bounties.</p>\n<p>When Requesting Verification, make sure that your Engine is operating as if it is ready for production use, so the PolySwarm Support team can submit additional test bounties to verify your Engine’s operation.</p>\n<h3 id=\"verified\" style=\"position:relative;\"><a href=\"#verified\" aria-label=\"verified permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Verified</h3>\n<p>When the PolySwarm Support team completes Verification, your Engine Status will be “Verified”. And your Engine will be joined to all Public Communities. You cannot edit or delete an Engine while it is operating in a production community, so if you need to edit or delete your Engine, you must first move it to the Disabled state. If your Engine stops operating or Fails to respond to a large number of bounties, it will be marked as Failed.</p>","rawMarkdownBody":"\n# Engines\n\n<button>\n  <a href=\"https://polyswarm.network/engines\" target=\"_blank\" rel=\"noopener noreferrer\">\n    Explore My PolySwarm Engines\n  </a>\n</button>\n\n## General {#general}\nThe [Engines](https://polyswarm.network/engines) page of PolySwarm UI allows you to view the list of Engines that have been created in a PolySwarm UI Account and have been Verified. For the users who have developed an Engine, this page allows them to add it to the PolySwarm Marketplace.\n\n## All Engines {#all-engines}\nThe All Engines tab provides a listing of all verified Engines. For each Engine, it shows the Name and the Tags. The Tags are clickable to filter the content of the page. In the upper right corner, there is a button to edit the Tags filters.\n\n### Details\nClicking on the name of an Engine in the All Engines list will update the left area of the page to display the Engine's details. The Engine details view displays the name, description, date it was created, participant type, type(s) of artifacts it can process, and the author’s website.\n\n\n## My Engines {#my-engines}\nThe [My Engines](https://polyswarm.network/engines/my-engines) tab is only available to logged in users. This is where a user can Create an Engine. Once a user has Created an Engine, their Engines will be listed on this page and can be edited or deleted. Clicking on an Engine's name will display the details in the left area, just like the All Engines page does, but this view also includes the Development Community details.\n\nThe Engine Status will be one of the following states:\n\n| Status| What does it mean?\n| --------| ---------------\n| `Disabled`| When your Engine is not in operation. |\n| `Development`| When your Engine is in Development Mode.|\n| `Verification`| When your Engine is being Verified by the PolySwarm Support team.|\n| `Verified`| When PolySwarm has completed the Verification process for your Engine. |\n| `Failed`| When an Engine was previously Verified and is no longer responding to bounties, it will be marked as “Failed”. |\n\n### Creating an Engine\nCreating an Engine is how the owner of a PolySwarm UI Account begins the process to connect their Engine to the PolySwarm Marketplace. Click the “Add engine” button to create your first engine. If you have one or more existing Engines, you can click the “+” button to create another one.\n\nThe Creation process allows the owner to define the operating parameters of their Engine. The PolySwarm Marketplace uses these parameters to determine which Engines can participate in each bounty.\n\n> Note: It is possible to create your engine in your User Account or in one of your Team Accounts. We recommend creating your Engines in a Team Account, because it is easier to manage when you have more than one person in your organization who needs to manage the Engine.\n\nIn the Add Engine window, complete the form and click the Save button to create the Engine.\nThe [Engine Configuration Options](/customers/engines-configuration) page provides guidance for all fields in the Engine creation/editing form.\n\n> Note: Most fields in the Add Engine window are disabled until an engine webhook is selected.\n\n### Deleting an Engine\nTo delete an Engine, you must first move it to the Disabled state. When an Engine is Deleted, the PolySwarm Marketplace retains the Engine’s name associated with any bounty assertions or votes that the Engine provided while operating in a production community. Because of this, Engine Names can never be reused.\n\n### Development Community {#development-community}\nEach Engine has its own Private Development Community to use for testing an Engine in the PolySwarm Marketplace. On the My Engines tab, when you click on the Name of an Engine, the left view will show your Development Community Details.\n\n* Name - The name of your Development Community is randomly generated and is unique to your engine.\n* API Key - The API Key used in the PolySwarm CLI when sending artifacts to your Development Community.\n* Accepting Bounties - When “Enabled”, your Development Community is active and will accept bounties for your Engine. When “Disabled”, it will not accept bounties. The Development Community will be “Disabled” when the Engine Status is “Disabled” or “Failed” or “Verified”. It will be “Enabled” when the Engine Status is “Development” or “Verification”.\n\nUse the PolySwarm CLI to submit artifacts into your Development Community. You can also perform a hash search on your Development Community to see the full Scan result data for the bounties in your Development Community.\n\nAt the bottom of the Development Results table for each Engine are instructions for how to submit artifacts into your Development Community. The instructions are the same for each Engine, but the API key and Development Community Name will differ.\n\n### Development Mode {#development-mode}\nTo move an Engine into the “Development” state, select “Enable Development Mode” from the Actions menu. Enabling Development Mode for an Engine allows you to test your Engine in the PolySwarm Marketplace using a Development Community only accessible by your Engine.\n\n### Development Results {#development-results}\nWhen you submit bounties into your Development Community, those results are not accessible or searchable by other PolySwarm users. On the My Engines tab, when you click the “Down Arrow” icon in the Actions column for an Engine, it will expand the Development Results table for that Engine.\n\nThe Development Results table allows you to track each artifact you submit into your Development Community.\n\n* sha256 - The sha256 hash of the artifact you submitted.\n* Verdict - The Verdict returned by your Engine\n* Expected Verdict - For each artifact, you should set the value that you expected the verdict to be. This allows you to track which artifacts were evaluated incorrectly by your Engine during testing. In the Actions column, select “Set Expected Verdict” to set this value.\n* Status - The Status of the Bounty for your artifact. When you submit your artifact, this table will update automatically while the bounty is being processed.\n* Timestamp - The timestamp for when the Bounty was created.\n\n### Disabling\nTo Disable your Engine, select “Disable” from the Action menu of your Engine. You must Disable your Engine before you can Edit or Delete it.\n\n### Editing\nTo edit your Engine, you must first Disable it. Then select “Edit” from the Actions menu of your Engine. You can update any of the Engine’s configuration settings, except the Engine Name.\n\n### Failing\nWhen an Engine is Verified and operating on the production PolySwarm Marketplace, and later stops responding to bounties, it will be marked as “Failed” status. To return the Engine to Production operation, the Engine owner must set the Engine to Disabled, re-test the engine webhook, and then progress through the Development and Verification process again.\n\n### Verification {#verification}\nWhen your Engine is ready for Production operation in the PolySwarm Marketplace, you must Request Verification. On the My Engines tab, select “Request Verification” in the Actions menu for that Engine. This will set your Engine to the “Verification” status and submit a request to the PolySwarm Support team to process your request.\n\nBefore you request Verification you must submit at least 2 bounties to your Engine’s Development Community, one should be for a malicious detection and the other for a benign detection. And you should have set an Expected Verdict that matches the Verdict for those bounties.\n\nWhen Requesting Verification, make sure that your Engine is operating as if it is ready for production use, so the PolySwarm Support team can submit additional test bounties to verify your Engine’s operation.\n\n### Verified\nWhen the PolySwarm Support team completes Verification, your Engine Status will be “Verified”. And your Engine will be joined to all Public Communities. You cannot edit or delete an Engine while it is operating in a production community, so if you need to edit or delete your Engine, you must first move it to the Disabled state. If your Engine stops operating or Fails to respond to a large number of bounties, it will be marked as Failed.\n\n"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/customers/polyswarm-ui/rewards.md","frontmatter":{"title":"Rewards","excerpt":"The Rewards tab in the Account Settings is used to view and manage Rewards"},"html":"<h1 id=\"nectarnet-rewards\" style=\"position:relative;\"><a href=\"#nectarnet-rewards\" aria-label=\"nectarnet rewards permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>NectarNet Rewards</h1>\n<h2 id=\"general\" style=\"position:relative;\"><a href=\"#general\" aria-label=\"general permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>General</h2>\n<p>The Rewards tab, available in a <a href=\"https://polyswarm.network/account/wallets\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">User Account</a>, is where rewards are viewed and redeemed. Users must <a href=\"/customers/accounts#advanced\">enable 2-factor authentication (2FA)</a> to access the Rewards tab content.</p>\n<h2 id=\"join-the-nectarnet-rewards-program\" style=\"position:relative;\"><a href=\"#join-the-nectarnet-rewards-program\" aria-label=\"join the nectarnet rewards program permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Join the NectarNet Rewards Program</h2>\n<h3 id=\"step-1-get-the-nectarnet-browser-extension\" style=\"position:relative;\"><a href=\"#step-1-get-the-nectarnet-browser-extension\" aria-label=\"step 1 get the nectarnet browser extension permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>STEP 1: Get the NectarNet browser extension</h3>\n<h4 id=\"chrome-or-brave\" style=\"position:relative;\"><a href=\"#chrome-or-brave\" aria-label=\"chrome or brave permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Chrome or Brave</h4>\n<ol>\n<li>Navigate to <a href=\"https://chrome.google.com/webstore/detail/polyswarm-in-browser/kkpdgahlbagpciagghmefjdbgnjdahih\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">PolySwarm NectarNet</a> in the Chrome Web Store.</li>\n<li>Click Add to Chrome</li>\n</ol>\n<p><a href=\"/images/chromestore.png\" target=\"_blank\"><img src=\"/images/chromestore.png\" alt=\"Screenshot of Chrome store plugin\" width=\"75%\"/></a></p>\n<h4 id=\"firefox\" style=\"position:relative;\"><a href=\"#firefox\" aria-label=\"firefox permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Firefox</h4>\n<ol>\n<li>Navigate to <a href=\"https://addons.mozilla.org/en-US/firefox/addon/polyswarm-nectarnet/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">PolySwarm NectarNet</a> in the Firefox Add On store.</li>\n<li>Click Add to Firefox</li>\n</ol>\n<p><a href=\"/images/firefoxstore.png\" target=\"_blank\"><img src=\"/images/firefoxstore.png\" alt=\"Screenshot of Firefox store plugin\" width=\"75%\"/></a></p>\n<h3 id=\"step-2-setup-nectarnet-rewards\" style=\"position:relative;\"><a href=\"#step-2-setup-nectarnet-rewards\" aria-label=\"step 2 setup nectarnet rewards permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>STEP 2: Setup NectarNet Rewards</h3>\n<ol>\n<li>Go to <a href=\"https://polyswarm.network/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https://polyswarm.network/</a></li>\n<li>Log in or Sign up</li>\n<li>Navigate to Settings -> Rewards<br><br>\n<a href=\"/images/usersettings.png\" target=\"_blank\"><img src=\"/images/usersettings.png\" alt=\"Screenshot of PolySwarm User dropdown menu\" width=\"75%\"/></a>\n<a href=\"/images/rewardstab.png\" target=\"_blank\"><img src=\"/images/rewardstab.png\" alt=\"Screenshot of User settings Rewards tab\" width=\"75%\"/></a></li>\n<li>Review and accept the Terms and Privacy Policy</li>\n<li>Click the \"Join\" button.</li>\n<li>Navigate to <a href=\"https://docs.polyswarm.io/customers/accounts#api-keys\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Settings -> API Keys</a><br><br>\n<a href=\"/images/apikeys.png\" target=\"_blank\"><img src=\"/images/apikeys.png\" alt=\"Screenshot of User settings API keys tab\" width=\"75%\"/></a></li>\n<li>Copy your API key to the clipboard.</li>\n<li>Open the Extensions dropdown and click the PolySwarm NectarNet extension. <br><br>\n<a href=\"/images/extensions.png\" target=\"_blank\"><img src=\"/images/extensions.png\" alt=\"Screenshot of Google Chrome extensions\" width=\"75%\"/></a></li>\n<li>Paste the API key into the field.</li>\n</ol>\n<h2 id=\"span-stylecolor6d3aec-youre-all-set-reward-amounts-are-updated-daily-span\" style=\"position:relative;\"><a href=\"#span-stylecolor6d3aec-youre-all-set-reward-amounts-are-updated-daily-span\" aria-label=\"span stylecolor6d3aec youre all set reward amounts are updated daily span permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><span style=\"color:#6d3aec\"> You’re all set! Reward amounts are updated daily! </span></h2>\n<p>Note: Your “community plan” will automatically reset every 30 days, there’s no action you need to take.</p>\n<h2 id=\"reward-distribution\" style=\"position:relative;\"><a href=\"#reward-distribution\" aria-label=\"reward distribution permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Reward Distribution</h2>\n<p>The following is an overview of how Rewards Distribution works:</p>\n<p>We are giving away $1,337 worth of NCT per day. So, each day PolySwarm builds a pot of NCT to give away. Then, we run an algorithm that analyzes two factors:</p>\n<ol>\n<li>the data provided by all Users during the previous day</li>\n<li>how the data provided by Users relates to threat intelligence that our customers want</li>\n</ol>\n<p>Based on those factors, the algorithm determines which Users will get a portion of that days' Rewards. Finally, it distributes the portions of Rewards to those Users' Rewards Wallet.</p>\n<h2 id=\"current-balance\" style=\"position:relative;\"><a href=\"#current-balance\" aria-label=\"current balance permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Current Balance</h2>\n<p>This is the total amount of NCT in the Rewards Wallet.</p>\n<h2 id=\"redeeming\" style=\"position:relative;\"><a href=\"#redeeming\" aria-label=\"redeeming permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Redeeming</h2>\n<p>Once a User has some NCT in their Rewards Wallet, they can Redeem those tokens.\nRedeeming is the action to withdraw tokens from your Rewards Wallet and transfer them to your personal ETH/NCT wallet.\nBefore you can Redeem tokens, you must Configure Withdrawals on your <a href=\"/customers/wallets#engine-wallets\">Rewards Wallet</a>.\nAlso keep in mind that Redeeming tokens incurs a Transaction Fee, which is displayed when you are doing a redemption.</p>\n<h2 id=\"rewards-summary\" style=\"position:relative;\"><a href=\"#rewards-summary\" aria-label=\"rewards summary permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Rewards Summary</h2>\n<p>A Rewards program has a collection of categories where Users can earn NCT.\nThe Rewards Summary lists the Categories in which a User has earned NCT and how much NCT a User has earned in each category.\nBy default, the date range is the past 30 days.\nUsers can select a different date range to view the Categories and NCT amounts during specific ranges of time.\nAt the bottom of the page, the Rewards Breakdown tab is a table that shows each Rewards that your account earned during the selected date range.</p>","rawMarkdownBody":"\n# NectarNet Rewards\n\n## General {#general}\n\nThe Rewards tab, available in a [User Account](https://polyswarm.network/account/wallets), is where rewards are viewed and redeemed. Users must [enable 2-factor authentication (2FA)](/customers/accounts#advanced) to access the Rewards tab content.\n\n## Join the NectarNet Rewards Program\n\n### STEP 1: Get the NectarNet browser extension\n\n#### Chrome or Brave\n\n1. Navigate to [PolySwarm NectarNet](https://chrome.google.com/webstore/detail/polyswarm-in-browser/kkpdgahlbagpciagghmefjdbgnjdahih) in the Chrome Web Store.\n2. Click Add to Chrome\n\n<a href=\"/images/chromestore.png\" target=\"_blank\"><img src=\"/images/chromestore.png\" alt=\"Screenshot of Chrome store plugin\" width=\"75%\"/></a>\n\n#### Firefox\n\n1. Navigate to [PolySwarm NectarNet](https://addons.mozilla.org/en-US/firefox/addon/polyswarm-nectarnet/) in the Firefox Add On store.\n2. Click Add to Firefox\n\n<a href=\"/images/firefoxstore.png\" target=\"_blank\"><img src=\"/images/firefoxstore.png\" alt=\"Screenshot of Firefox store plugin\" width=\"75%\"/></a>\n\n### STEP 2: Setup NectarNet Rewards\n\n1. Go to https://polyswarm.network/\n2. Log in or Sign up\n3. Navigate to Settings -> Rewards<br><br>\n   <a href=\"/images/usersettings.png\" target=\"_blank\"><img src=\"/images/usersettings.png\" alt=\"Screenshot of PolySwarm User dropdown menu\" width=\"75%\"/></a>\n   <a href=\"/images/rewardstab.png\" target=\"_blank\"><img src=\"/images/rewardstab.png\" alt=\"Screenshot of User settings Rewards tab\" width=\"75%\"/></a>\n4. Review and accept the Terms and Privacy Policy\n5. Click the \"Join\" button.\n6. Navigate to [Settings -> API Keys](https://docs.polyswarm.io/customers/accounts#api-keys)<br><br>\n   <a href=\"/images/apikeys.png\" target=\"_blank\"><img src=\"/images/apikeys.png\" alt=\"Screenshot of User settings API keys tab\" width=\"75%\"/></a>\n7. Copy your API key to the clipboard.\n8. Open the Extensions dropdown and click the PolySwarm NectarNet extension. <br><br>\n   <a href=\"/images/extensions.png\" target=\"_blank\"><img src=\"/images/extensions.png\" alt=\"Screenshot of Google Chrome extensions\" width=\"75%\"/></a>\n9. Paste the API key into the field.\n\n## <span style=\"color:#6d3aec\"> You’re all set! Reward amounts are updated daily! </span>\n\nNote: Your “community plan” will automatically reset every 30 days, there’s no action you need to take.\n\n## Reward Distribution\n\nThe following is an overview of how Rewards Distribution works:\n\nWe are giving away $1,337 worth of NCT per day. So, each day PolySwarm builds a pot of NCT to give away. Then, we run an algorithm that analyzes two factors:\n\n1. the data provided by all Users during the previous day\n2. how the data provided by Users relates to threat intelligence that our customers want\n\nBased on those factors, the algorithm determines which Users will get a portion of that days' Rewards. Finally, it distributes the portions of Rewards to those Users' Rewards Wallet.\n\n## Current Balance\n\nThis is the total amount of NCT in the Rewards Wallet.\n\n## Redeeming\n\nOnce a User has some NCT in their Rewards Wallet, they can Redeem those tokens.\nRedeeming is the action to withdraw tokens from your Rewards Wallet and transfer them to your personal ETH/NCT wallet.\nBefore you can Redeem tokens, you must Configure Withdrawals on your [Rewards Wallet](/customers/wallets#engine-wallets).\nAlso keep in mind that Redeeming tokens incurs a Transaction Fee, which is displayed when you are doing a redemption.\n\n## Rewards Summary\n\nA Rewards program has a collection of categories where Users can earn NCT.\nThe Rewards Summary lists the Categories in which a User has earned NCT and how much NCT a User has earned in each category.\nBy default, the date range is the past 30 days.\nUsers can select a different date range to view the Categories and NCT amounts during specific ranges of time.\nAt the bottom of the page, the Rewards Breakdown tab is a table that shows each Rewards that your account earned during the selected date range.\n"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/customers/polyswarm-ui/engines-configuration.md","frontmatter":{"title":"Engine Configuration Options","excerpt":"When adding or editing an engine, there are many configuration options..."},"html":"<h1 id=\"engine-configuration-options\" style=\"position:relative;\"><a href=\"#engine-configuration-options\" aria-label=\"engine configuration options permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Engine Configuration Options</h1>\n<p>When adding or editing an engine, there are many configuration options and this page will review these.</p>\n<h2 id=\"name\" style=\"position:relative;\"><a href=\"#name\" aria-label=\"name permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Name</h2>\n<p>Give your Engine a unique name.\nRemember that this name you choose will be visible on the <a href=\"https://polyswarm.network/engines\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Engines</a> page.</p>\n<blockquote>\n<p><strong>Note:</strong> If you use the copyrighted name of a publicly available product, during the Verification process PolySwarm will require you to provide proof that you have rights to use that name.</p>\n</blockquote>\n<h2 id=\"engine-webhook\" style=\"position:relative;\"><a href=\"#engine-webhook\" aria-label=\"engine webhook permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Engine Webhook</h2>\n<p>If you haven’t already created an engine webhook in your Account Settings, you can create one here.\nHowever, it is best practice to create the engine webhook in your Account Settings first, so that you can test and verify it before associating it with an Engine.\nThe Rate Limit on the engine webhook determines the maximum number of artifacts your Engine will accept per day.</p>\n<h2 id=\"website\" style=\"position:relative;\"><a href=\"#website\" aria-label=\"website permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Website</h2>\n<p>Provide the URL of a website that has additional details about your Engine or your company.</p>\n<h2 id=\"description\" style=\"position:relative;\"><a href=\"#description\" aria-label=\"description permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Description</h2>\n<p>PolySwarm recommends that you provide a description for your Engine.\nThink of it like a brief marketing description of your Engine and its capabilities.\n1-2 sentences using 200 words or less is usually sufficient.</p>\n<h2 id=\"max-file-size\" style=\"position:relative;\"><a href=\"#max-file-size\" aria-label=\"max file size permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Max file size</h2>\n<p>Define the max size of artifacts that your engine can process.\nThe PolySwarm Marketplace has an internal max file size, but this allows you to define your upper limit below the Marketplace limit.</p>\n<h2 id=\"tags\" style=\"position:relative;\"><a href=\"#tags\" aria-label=\"tags permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Tags</h2>\n<ul>\n<li>All Microengines have the “microengine” tag.</li>\n<li>All Arbiters have the \"arbiter\" tag.</li>\n<li>All Engines that support “file” artifacts will have the “file” tag, and for “url” artifacts will have the “url” tag.</li>\n</ul>\n<p>Other than those required Tags, you are free to associate other Tags with your Engine.</p>\n<p>Most Engine owners select tags that are related to the types of files the Engine processes or types of technologies implemented in the Engine.</p>\n<p>Click the “Down Arrow” to see the list of available Tags.</p>\n<h2 id=\"supported-mimetypes\" style=\"position:relative;\"><a href=\"#supported-mimetypes\" aria-label=\"supported mimetypes permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Supported mimetypes</h2>\n<p>This is where you can define which types of files your Engine can process.\nIf you leave this blank, the Marketplace will assume your Engine can process all files.\nClick the “Down Arrow” to see a list of available Mimetypes.</p>\n<h3 id=\"table-of-mimetypes-by-category\" style=\"position:relative;\"><a href=\"#table-of-mimetypes-by-category\" aria-label=\"table of mimetypes by category permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Table of Mimetypes by Category</h3>\n<p>This table should help you select which Mimetypes are appropriate for your Engine.\nWe've grouped the available mimetypes into commonly referenced Categories.</p>\n<table>\n<thead>\n<tr>\n<th>Category</th>\n<th>Mimetype</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>android</td>\n<td><code class=\"language-text\">application/vnd.android.package-archive</code> <code class=\"language-text\">application/java-archive</code> <code class=\"language-text\">application/zip</code> <code class=\"language-text\">application/octet-stream</code></td>\n</tr>\n<tr>\n<td>archives</td>\n<td><code class=\"language-text\">application/java-archive</code> <code class=\"language-text\">application/x-tar</code> <code class=\"language-text\">application/zip</code> <code class=\"language-text\">application/x-compressed-zip</code> <code class=\"language-text\">application/gzip</code> <code class=\"language-text\">application/vnd.rar</code> <code class=\"language-text\">application/x-bzip2</code> <code class=\"language-text\">application/x-xz</code> <code class=\"language-text\">application/octet-stream</code> <code class=\"language-text\">application/x-7z-compressed</code> <code class=\"language-text\">application/x-rar-compressed</code> <code class=\"language-text\">application/x-lha</code> <code class=\"language-text\">application/x-ace-compressed</code></td>\n</tr>\n<tr>\n<td>disk image</td>\n<td><code class=\"language-text\">application/x-cd-image</code> <code class=\"language-text\">application/x-iso9660-image</code> <code class=\"language-text\">application/x-daa</code></td>\n</tr>\n<tr>\n<td>elf</td>\n<td><code class=\"language-text\">application/x-executable</code> <code class=\"language-text\">application/x-elf</code></td>\n</tr>\n<tr>\n<td>flash</td>\n<td><code class=\"language-text\">application/x-shockwave-flash</code></td>\n</tr>\n<tr>\n<td>font</td>\n<td><code class=\"language-text\">application/vnd.ms-fontobject</code> <code class=\"language-text\">application/vnd.oasis.opendocument.text</code> <code class=\"language-text\">font/otf</code> <code class=\"language-text\">font/ttf</code> <code class=\"language-text\">font/woff</code> <code class=\"language-text\">font/woff2</code> <code class=\"language-text\">font/collection</code> <code class=\"language-text\">font/sfnt</code></td>\n</tr>\n<tr>\n<td>image/video</td>\n<td><code class=\"language-text\">image/tiff</code> <code class=\"language-text\">video/mp4</code> <code class=\"language-text\">image/png</code> <code class=\"language-text\">image/bmp</code> <code class=\"language-text\">image/svg+xml</code> <code class=\"language-text\">image/jpeg</code> <code class=\"language-text\">image/webp</code> <code class=\"language-text\">image/gif</code></td>\n</tr>\n<tr>\n<td>java</td>\n<td><code class=\"language-text\">application/x-java-applet</code></td>\n</tr>\n<tr>\n<td>linux</td>\n<td>elf + <code class=\"language-text\">application/x-cpio</code> <code class=\"language-text\">application/x-rpm</code> <code class=\"language-text\">application/x-dpkg</code> <code class=\"language-text\">application/octet-stream</code> <code class=\"language-text\">application/x-sharedlib</code></td>\n</tr>\n<tr>\n<td>mach-o</td>\n<td><code class=\"language-text\">application/x-mach-binary</code> <code class=\"language-text\">application/octet-stream</code></td>\n</tr>\n<tr>\n<td>office (abiword)</td>\n<td><code class=\"language-text\">application/x-abiword</code></td>\n</tr>\n<tr>\n<td>office (etc)</td>\n<td><code class=\"language-text\">text/calendar</code></td>\n</tr>\n<tr>\n<td>office (ms)</td>\n<td><code class=\"language-text\">application/msword</code> <code class=\"language-text\">application/vnd.ms-excel</code> <code class=\"language-text\">application/vnd.ms-excel.addin.macroEnabled.12</code> <code class=\"language-text\">application/vnd.ms-excel.sheet.binary.macroEnabled.12</code> <code class=\"language-text\">application/vnd.ms-excel.sheet.macroEnabled.12</code> <code class=\"language-text\">application/vnd.ms-excel.template.macroEnabled.12</code> <code class=\"language-text\">application/vnd.ms-powerpoint</code> <code class=\"language-text\">application/vnd.ms-powerpoint.addin.macroEnabled.12</code> <code class=\"language-text\">application/vnd.ms-powerpoint.presentation.macroEnabled.12</code> <code class=\"language-text\">application/vnd.ms-powerpoint.slideshow.macroEnabled.12</code> <code class=\"language-text\">application/vnd.ms-word.document.macroEnabled.12</code> <code class=\"language-text\">application/vnd.ms-word.template.macroEnabled.12</code> <code class=\"language-text\">application/vnd.openxmlformats-officedocument.spreadsheetml.sheet</code> <code class=\"language-text\">application/vnd.openxmlformats-officedocument.spreadsheetml.template</code> <code class=\"language-text\">application/vnd.openxmlformats-officedocument.wordprocessingml.document</code> <code class=\"language-text\">application/vnd.openxmlformats-officedocument.wordprocessingml.template</code> <code class=\"language-text\">application/vnd.ms-office</code> <code class=\"language-text\">application/x-ms-shortcut</code> <code class=\"language-text\">application/vnd.ms-powerpoint.template.macroEnabled.12</code> <code class=\"language-text\">application/x-mspublisher</code> <code class=\"language-text\">application/CDFV2-corrupt</code> <code class=\"language-text\">application/CDFV2-encrypted</code></td>\n</tr>\n<tr>\n<td>office (open)</td>\n<td><code class=\"language-text\">application/vnd.oasis.opendocument.chart-template</code> <code class=\"language-text\">application/vnd.oasis.opendocument.chart</code> <code class=\"language-text\">application/vnd.oasis.opendocument.database</code> <code class=\"language-text\">application/vnd.oasis.opendocument.formula</code> <code class=\"language-text\">application/vnd.oasis.opendocument.graphics-template</code> <code class=\"language-text\">application/vnd.oasis.opendocument.graphics</code> <code class=\"language-text\">application/vnd.oasis.opendocument.image-template</code> <code class=\"language-text\">application/vnd.oasis.opendocument.image</code> <code class=\"language-text\">application/vnd.oasis.opendocument.presentation-template</code> <code class=\"language-text\">application/vnd.oasis.opendocument.presentation</code> <code class=\"language-text\">application/vnd.oasis.opendocument.spreadsheet-template</code> <code class=\"language-text\">application/vnd.oasis.opendocument.spreadsheet</code> <code class=\"language-text\">application/vnd.oasis.opendocument.text-master</code> <code class=\"language-text\">application/vnd.oasis.opendocument.text-template</code> <code class=\"language-text\">application/vnd.oasis.opendocument.text-web</code> <code class=\"language-text\">application/vnd.oasis.opendocument.text</code> <code class=\"language-text\">application/vnd.openofficeorg.extension</code> <code class=\"language-text\">application/vnd.openxmlformats-officedocument.presentationml.presentation</code> <code class=\"language-text\">application/vnd.openxmlformats-officedocument.presentationml.slideshow</code> <code class=\"language-text\">application/vnd.openxmlformats-officedocument.presentationml.template</code></td>\n</tr>\n<tr>\n<td>osx</td>\n<td>mach-o + <code class=\"language-text\">application/octet-stream</code></td>\n</tr>\n<tr>\n<td>pdf</td>\n<td><code class=\"language-text\">application/pdf</code> <code class=\"language-text\">text/plain</code> <code class=\"language-text\">application/octet-stream</code></td>\n</tr>\n<tr>\n<td>pe</td>\n<td><code class=\"language-text\">application/x-dosexec</code> <code class=\"language-text\">application/x-msdownload</code> <code class=\"language-text\">application/x-msi</code> <code class=\"language-text\">application/vnd.ms-msi</code> <code class=\"language-text\">application/vnd.microsoft.portable-executable</code> <code class=\"language-text\">application/vnd.ms-cab-compressed</code> <code class=\"language-text\">application/vnd.ms-access</code> <code class=\"language-text\">application/x-msinstaller</code></td>\n</tr>\n<tr>\n<td>rtf</td>\n<td><code class=\"language-text\">application/rtf</code> <code class=\"language-text\">text/plain</code> <code class=\"language-text\">text/rtf</code></td>\n</tr>\n<tr>\n<td>text &#x26; script</td>\n<td><code class=\"language-text\">application/x-httpd-php</code> <code class=\"language-text\">application/javascript</code> <code class=\"language-text\">application/json</code> <code class=\"language-text\">application/x-sh</code> <code class=\"language-text\">application/x-csh</code> <code class=\"language-text\">text/html</code> <code class=\"language-text\">text/plain</code> <code class=\"language-text\">text/x-python</code> <code class=\"language-text\">text/xml</code> <code class=\"language-text\">text/plain</code> <code class=\"language-text\">application/vnd.coffeescript</code> <code class=\"language-text\">application/x-vbe</code> <code class=\"language-text\">application/hta</code> <code class=\"language-text\">application/PowerShell</code> <code class=\"language-text\">application/xml</code> <code class=\"language-text\">text/javascript</code> <code class=\"language-text\">application/x-perl</code> <code class=\"language-text\">message/rfc822</code> <code class=\"language-text\">text/scriptlet</code> <code class=\"language-text\">application/vnd.ms-htmlhelp</code> <code class=\"language-text\">text/vbscript</code></td>\n</tr>\n<tr>\n<td>windows</td>\n<td>pe + <code class=\"language-text\">application/octet-stream</code> <code class=\"language-text\">image/vnd.microsoft.icon</code> <code class=\"language-text\">text/plain</code></td>\n</tr>\n</tbody>\n</table>\n<blockquote>\n<p>Note: The mimetype <code class=\"language-text\">application/octet-stream</code> is a generic mimetype for a file that has binary content.\nSometimes the mimetype detection cannot correctly select the exact mimetype of a file and will default to <code class=\"language-text\">application/octet-stream</code>.\nSo, it is generally a good practice to select it if your Engine processes binary files.</p>\n</blockquote>\n<h2 id=\"engine-type\" style=\"position:relative;\"><a href=\"#engine-type\" aria-label=\"engine type permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Engine type</h2>\n<p>The only option right now is “Engine”.\nFor Arbiters, PolySwarm will manually convert an Engine to an Arbiter during the on-boarding process.</p>\n<h2 id=\"supported-artifact-types\" style=\"position:relative;\"><a href=\"#supported-artifact-types\" aria-label=\"supported artifact types permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Supported Artifact Types</h2>\n<p>Select “file” if your Engine can process files. Select “url” if your Engine processes URLs, domains, and IP addresses.</p>","rawMarkdownBody":"\n# Engine Configuration Options\n\nWhen adding or editing an engine, there are many configuration options and this page will review these.\n\n## Name\nGive your Engine a unique name.\nRemember that this name you choose will be visible on the [Engines](https://polyswarm.network/engines) page.\n\n> **Note:** If you use the copyrighted name of a publicly available product, during the Verification process PolySwarm will require you to provide proof that you have rights to use that name.\n\n## Engine Webhook\nIf you haven’t already created an engine webhook in your Account Settings, you can create one here.\nHowever, it is best practice to create the engine webhook in your Account Settings first, so that you can test and verify it before associating it with an Engine.\nThe Rate Limit on the engine webhook determines the maximum number of artifacts your Engine will accept per day.\n\n## Website\nProvide the URL of a website that has additional details about your Engine or your company.\n\n\n## Description\nPolySwarm recommends that you provide a description for your Engine.\nThink of it like a brief marketing description of your Engine and its capabilities.\n1-2 sentences using 200 words or less is usually sufficient.\n\n\n## Max file size\nDefine the max size of artifacts that your engine can process.\nThe PolySwarm Marketplace has an internal max file size, but this allows you to define your upper limit below the Marketplace limit.\n\n## Tags\n\n* All Microengines have the “microengine” tag.\n* All Arbiters have the \"arbiter\" tag.\n* All Engines that support “file” artifacts will have the “file” tag, and for “url” artifacts will have the “url” tag.\n\nOther than those required Tags, you are free to associate other Tags with your Engine.\n\nMost Engine owners select tags that are related to the types of files the Engine processes or types of technologies implemented in the Engine.\n\nClick the “Down Arrow” to see the list of available Tags.\n\n## Supported mimetypes\nThis is where you can define which types of files your Engine can process.\nIf you leave this blank, the Marketplace will assume your Engine can process all files.\nClick the “Down Arrow” to see a list of available Mimetypes.\n\n### Table of Mimetypes by Category\nThis table should help you select which Mimetypes are appropriate for your Engine.\nWe've grouped the available mimetypes into commonly referenced Categories.\n\n| Category         | Mimetype                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |\n|------------------| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| android          | `application/vnd.android.package-archive` `application/java-archive` `application/zip` `application/octet-stream`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |\n| archives         | `application/java-archive` `application/x-tar` `application/zip` `application/x-compressed-zip` `application/gzip` `application/vnd.rar` `application/x-bzip2` `application/x-xz` `application/octet-stream` `application/x-7z-compressed` `application/x-rar-compressed` `application/x-lha` `application/x-ace-compressed`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |\n| disk image       | `application/x-cd-image` `application/x-iso9660-image` `application/x-daa`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |\n| elf              | `application/x-executable` `application/x-elf`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |\n| flash            | `application/x-shockwave-flash`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |\n| font             | `application/vnd.ms-fontobject` `application/vnd.oasis.opendocument.text` `font/otf` `font/ttf` `font/woff` `font/woff2` `font/collection` `font/sfnt`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |\n| image/video      | `image/tiff` `video/mp4` `image/png` `image/bmp` `image/svg+xml` `image/jpeg` `image/webp` `image/gif`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |\n| java             | `application/x-java-applet`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |\n| linux            | elf + `application/x-cpio` `application/x-rpm` `application/x-dpkg` `application/octet-stream` `application/x-sharedlib`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |\n| mach-o           | `application/x-mach-binary` `application/octet-stream`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |\n| office (abiword) | `application/x-abiword`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |\n| office (etc)     | `text/calendar`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |\n| office (ms)      | `application/msword` `application/vnd.ms-excel` `application/vnd.ms-excel.addin.macroEnabled.12` `application/vnd.ms-excel.sheet.binary.macroEnabled.12` `application/vnd.ms-excel.sheet.macroEnabled.12` `application/vnd.ms-excel.template.macroEnabled.12` `application/vnd.ms-powerpoint` `application/vnd.ms-powerpoint.addin.macroEnabled.12` `application/vnd.ms-powerpoint.presentation.macroEnabled.12` `application/vnd.ms-powerpoint.slideshow.macroEnabled.12` `application/vnd.ms-word.document.macroEnabled.12` `application/vnd.ms-word.template.macroEnabled.12` `application/vnd.openxmlformats-officedocument.spreadsheetml.sheet` `application/vnd.openxmlformats-officedocument.spreadsheetml.template` `application/vnd.openxmlformats-officedocument.wordprocessingml.document` `application/vnd.openxmlformats-officedocument.wordprocessingml.template` `application/vnd.ms-office` `application/x-ms-shortcut` `application/vnd.ms-powerpoint.template.macroEnabled.12` `application/x-mspublisher` `application/CDFV2-corrupt` `application/CDFV2-encrypted`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |\n| office (open)    | `application/vnd.oasis.opendocument.chart-template` `application/vnd.oasis.opendocument.chart` `application/vnd.oasis.opendocument.database` `application/vnd.oasis.opendocument.formula` `application/vnd.oasis.opendocument.graphics-template` `application/vnd.oasis.opendocument.graphics` `application/vnd.oasis.opendocument.image-template` `application/vnd.oasis.opendocument.image` `application/vnd.oasis.opendocument.presentation-template` `application/vnd.oasis.opendocument.presentation` `application/vnd.oasis.opendocument.spreadsheet-template` `application/vnd.oasis.opendocument.spreadsheet` `application/vnd.oasis.opendocument.text-master` `application/vnd.oasis.opendocument.text-template` `application/vnd.oasis.opendocument.text-web` `application/vnd.oasis.opendocument.text` `application/vnd.openofficeorg.extension` `application/vnd.openxmlformats-officedocument.presentationml.presentation` `application/vnd.openxmlformats-officedocument.presentationml.slideshow` `application/vnd.openxmlformats-officedocument.presentationml.template`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |\n| osx              | mach-o + `application/octet-stream`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |\n| pdf              | `application/pdf` `text/plain` `application/octet-stream`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |\n| pe               | `application/x-dosexec` `application/x-msdownload` `application/x-msi  ` `application/vnd.ms-msi` `application/vnd.microsoft.portable-executable` `application/vnd.ms-cab-compressed` `application/vnd.ms-access` `application/x-msinstaller`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |\n| rtf              | `application/rtf` `text/plain` `text/rtf`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |\n| text & script    | `application/x-httpd-php` `application/javascript` `application/json` `application/x-sh` `application/x-csh` `text/html` `text/plain` `text/x-python` `text/xml` `text/plain` `application/vnd.coffeescript` `application/x-vbe` `application/hta` `application/PowerShell` `application/xml` `text/javascript` `application/x-perl` `message/rfc822` `text/scriptlet` `application/vnd.ms-htmlhelp` `text/vbscript`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |\n| windows          | pe + `application/octet-stream` `image/vnd.microsoft.icon` `text/plain`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |\n\n> Note: The mimetype `application/octet-stream` is a generic mimetype for a file that has binary content.\n> Sometimes the mimetype detection cannot correctly select the exact mimetype of a file and will default to `application/octet-stream`.\n> So, it is generally a good practice to select it if your Engine processes binary files.\n\n\n## Engine type\nThe only option right now is “Engine”.\nFor Arbiters, PolySwarm will manually convert an Engine to an Arbiter during the on-boarding process.\n\n## Supported Artifact Types\nSelect “file” if your Engine can process files. Select “url” if your Engine processes URLs, domains, and IP addresses.\n\n"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/customers/polyswarm-ui/home.md","frontmatter":{"title":"PolySwarm UI","excerpt":"All actions in the PolySwarm UI operate in the Account Context of the active User Account or Team Account..."},"html":"<h1 id=\"polyswarm-ui\" style=\"position:relative;\"><a href=\"#polyswarm-ui\" aria-label=\"polyswarm ui permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>PolySwarm UI</h1>\n<p>PolySwarm offers a User Interface (UI) to interact with PolySwarm features.</p>\n<p>Some functionality of the PolySwarm UI is available without being logged in, but that functionality is limited.\nTo unlock additional functionality create a free account and sign in, then if you require additional quota upgrade your plan.</p>\n<button>\n  <a href=\"https://polyswarm.network/\" target=\"_blank\" rel=\"noopener noreferrer\">\n    Explore PolySwarm\n  </a>\n</button>\n<h2 id=\"getting-started\" style=\"position:relative;\"><a href=\"#getting-started\" aria-label=\"getting started permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Getting Started</h2>\n<h3 id=\"log-in-sign-up\" style=\"position:relative;\"><a href=\"#log-in-sign-up\" aria-label=\"log in sign up permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Login/Sign Up</h3>\n<blockquote>\n<p><strong>Note:</strong> If you have purchased a Premium plan, you will receive an email with a link to sign up.</p>\n</blockquote>\n<h5 id=\"started-signup-account\" style=\"position:relative;\"><a href=\"#started-signup-account\" aria-label=\"started signup account permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Sign Up</h5>\n<ol>\n<li>Navigate to the PolySwarm UI via <a href=\"https://polyswarm.network/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">here</a></li>\n<li>Click on the “<em>Log In/Sign up</em>” button</li>\n<li>The authentication window will appear with <strong>two tabs</strong>, Click the “<em>Sign Up</em>” tab to Sign Up for a new User Account</li>\n<li>You will be provided three means of Signing Up:</li>\n</ol>\n<blockquote>\n<ul>\n<li><strong>Sign Up with GitHub</strong> - Use your GitHub account to log into PolySwarm UI.</li>\n<li><strong>Sign Up with Google</strong> - Use your Google account to log into PolySwarm UI.</li>\n<li><strong>Sign Up with Email</strong> address and password - Use an email address and password to log into PolySwarm UI. When using this method for sign up, you also need to provide your name.</li>\n</ul>\n</blockquote>\n<p>Once you complete the Sign Up, we will send you a verification email.\nYou need to click on the link in that verification email to complete your User Account creation.</p>\n<h5 id=\"started-login\" style=\"position:relative;\"><a href=\"#started-login\" aria-label=\"started login permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Log In</h5>\n<p>Clicking on the \"Login\" tab in the authentication Page provides a means of logging in.</p>\n<ol>\n<li>Navigate to the PolySwarm UI via <a href=\"https://polyswarm.network/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">here</a></li>\n<li>Click on the “<em>Log In/Sign up</em>” button</li>\n<li>The authentication window will appear with <strong>two tabs</strong>, Click the “<em>Log In</em>” tab to Log In using the same method used to create the accounts.</li>\n</ol>\n<h3 id=\"started-accounts\" style=\"position:relative;\"><a href=\"#started-accounts\" aria-label=\"started accounts permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Accounts (Team/User)</h3>\n<p>PolySwarm offers two types of accounts:</p>\n<ul>\n<li><strong>User Account</strong> - <em>Individual User Accounts</em></li>\n<li><strong>Team Account</strong> - <em>User Accounts can be part of a Team Account</em></li>\n</ul>\n<p>All new User Accounts will have the free \"Community\" subscription plan assigned, this allows access to the basic functionality of PolySwarm. Users will have the option of purchasing a Paid Premium Subscription, if a Paid Premium Subscription has already been purchased it will have been applied to the Team Account the User Account is part of.</p>\n<p>Once you have created a <em>\"User Account\"</em> (which all Users must do) you can be added to a <em>\"Team Account\"</em>.</p>\n<p><em>\"Team Accounts\"</em> will allow individual <em>\"User Accounts\"</em> shared access to the Premium Subscription if purchased and shared Quotas of this Subscription. There are additional Settings options like Member Account Management and Integrations that standard <em>\"User Accounts\"</em> cannot access. We will cover how to access these in the \"Settings\" Pages <a href=\"/customers/settings/\">here</a>.</p>\n<h3 id=\"context-menu\" style=\"position:relative;\"><a href=\"#context-menu\" aria-label=\"context menu permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Context Menu</h3>\n<p>Once logged in, the upper right corner changes from displaying a “Log In/Sign Up” button to displaying the username with an avatar icon, or if you have switched teams to the Name of the Team. Beside this is the Settings Icon.</p>\n<p><a href=\"/images/ui/ui_started_context.gif\" target=\"_blank\"><img src=\"/images/ui/ui_started_context.gif\" alt=\"Sandbox Submission Pop Up\" width=\"75%\"/></a></p>\n<p>All actions in the PolySwarm UI operate in the Account Context of the active User Account or Team Account.</p>\n<p>To enable users to select which account should be used for their actions, users can Switch Accounts to change the active Context between their User Account and one or more Team Accounts. The Context that is currently being used is referred to as the Active Context.</p>\n<p>The Active Context determines several things:</p>\n<ul>\n<li>The features available in PolySwarm UI will vary depending on the Subscription Plan associated with the Active Context.</li>\n<li>All PolySwarm UI usage will subtract from the usage allotment in the Subscription Plan associated with the Active Context.</li>\n<li>The Account Settings page displays the Settings for the User Account or Team Account associated with the Active Context.</li>\n</ul>\n<p>Clicking on the <strong>Avatar icon</strong> will open the Context Menu.\nIn the Context Menu are the following options:</p>\n<table>\n<thead>\n<tr>\n<th>Menu Option</th>\n<th>What is it for?</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Switch Accounts</td>\n<td>Switch the currently active Context to that of the user’s User Account or one of the user’s Team Accounts.</td>\n</tr>\n<tr>\n<td>Create Team</td>\n<td>Create a new Team Account. All users can create teams, but Premium plans are assigned to Teams by PolySwarm.</td>\n</tr>\n<tr>\n<td>Logout</td>\n<td>Log out of PolySwarm UI.</td>\n</tr>\n</tbody>\n</table>\n<p>Clicking on the <strong>Settings icon</strong> will open the Context Menu.\nIn the Context Menu are the following options:</p>\n<table>\n<thead>\n<tr>\n<th>Menu Option</th>\n<th>What is it for?</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Settings</td>\n<td>Click the Settings option to go to the Account Settings page for the account associated with the currently Active Context</td>\n</tr>\n<tr>\n<td>Dark Theme Off/On</td>\n<td>Disable or enable the dark theme. It is disabled by default.</td>\n</tr>\n<tr>\n<td>Help</td>\n<td>Go to the PolySwarm documentation website.</td>\n</tr>\n</tbody>\n</table>\n<blockquote>\n<p>The Context Menu that shows the Team Name can be used to switch to a Private Community. If your organization is part of a Private Community, the Team name will be appended with a <code class=\"language-text\">public</code> and <code class=\"language-text\">private</code> name to highlight the two Communities.</p>\n</blockquote>\n<blockquote>\n<p>When in Private mode for the Team a <em>Black Hat</em> Icon is shown in the Context Menu area to highlight the mode you are in, this is explained further in the Private Community section <a href=\"#private-community\">here</a>.</p>\n</blockquote>\n<h3 id=\"emerging-threats\" style=\"position:relative;\"><a href=\"#emerging-threats\" aria-label=\"emerging threats permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Emerging Threats</h3>\n<p>The Emerging Threats table on the <strong>Home page</strong> provides customers with an actionable curated list of artifacts that PolySwarm has confirmed are emerging threats.\nThis single table provides a summary of several groupings of malware; grouped by malware family or world events.</p>\n<p><a href=\"/images/ui/ui_emerg.png\" target=\"_blank\"><img src=\"/images/ui/ui_emerg.png\" alt=\"Emerging Threats\" width=\"75%\"/></a></p>\n<div class=\"warning\" markdown=\"1\">\n<blockquote>\n<ul>\n<li>Clicking the <strong>\"View scan results\"</strong> button, will show the latest scan results in PolySwarm for that artifact.</li>\n<li><strong>\"First Seen in PolySwarm\"</strong> indicates that the artifact was submitted into PolySwarm before other platforms.</li>\n<li>\n<p>The <strong>PolyScore</strong> is PolySwarm's threat scoring algorithm that provides the probability a given file contains malware, in a single authoritative number.</p>\n<ul>\n<li>On this table, that number is represented by a bar to indicate low, medium, and high.</li>\n</ul>\n</li>\n<li>Each artifact has one or more <strong>tags</strong> to help the user quickly discern its function.</li>\n<li>Users can click the <strong>copy</strong> icon to grab a copy of the SHA256 hash of the artifact.</li>\n</ul>\n</blockquote>\n</div>\n<h5 id=\"why-do-we-sometimes-show-a-low-polyscore-on-an-artifact-that-we-say-is-malicious\" style=\"position:relative;\"><a href=\"#why-do-we-sometimes-show-a-low-polyscore-on-an-artifact-that-we-say-is-malicious\" aria-label=\"why do we sometimes show a low polyscore on an artifact that we say is malicious permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Why do we sometimes show a low PolyScore on an artifact that we say is malicious?</h5>\n<p>PolyScore weighs convictions from engines differently, based on factors such as malware family name and the engine's track record on similar files.\nFiles with high PolyScores are ready for automated action.\nBut sometimes, engines that detect important emerging threats do not increase the PolyScore very much, even though the file actually is malicious.\nThat is why the process behind PolyScore learns: so we can identify competent engines that see emerging malware first and give them a louder voice against future threats.\nIn the meantime, we still think it's important to show low PolyScores, because it means a file warrants review.\nAnd, if the file is included in the Emerging Threats table, yes, we believe it's malware.</p>\n<h3 id=\"private-community\" style=\"position:relative;\"><a href=\"#private-community\" aria-label=\"private community permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Private Communities</h3>\n<p>PolySwarm offers an additional service called “Private Communities” that restricts artifacts submitted into a Private Community and any metadata from the artifact to be accessible only by members of the Private Community and not to the wider public PolySwarm Community.</p>\n<p>Private Communities is a feature that covers all functionality in the UI, the context depends on what Team you are currently using. To access and move between the Public and Private Modes of a Team use the Context Menu, where you'll see your Team name with <code class=\"language-text\">Public</code> and <code class=\"language-text\">Private</code> appended, like this: <code class=\"language-text\">Team Name - Private</code>.</p>\n<p><a href=\"/images/ui/ui_private_team_name.png\" target=\"_blank\"><img src=\"/images/ui/ui_private_team_name.png\" alt=\"Private Team Name\" width=\"75%\"/></a></p>\n<p>Once using the Private mode of a Team it is clear that you are in this mode by a number of visual cues onscreen like:</p>\n<ul>\n<li>Background of the UI Changes to once of the Private Themes.</li>\n<li>Private Icon appears beside the Settings Icon to indicate you are in Private Mode.</li>\n</ul>\n<p><a href=\"/images/ui/ui_private_icon.png\" target=\"_blank\"><img src=\"/images/ui/ui_private_icon.png\" alt=\"Private Team Icon\" width=\"75%\"/></a></p>\n<p>When in the Private Community the account features act in the following ways:</p>\n<table>\n<thead>\n<tr>\n<th>Feature</th>\n<th>Functionality</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>File Upload Scan</td>\n<td>File uploaded will be kept private, scanned by chosen engines for that private community, metadata private.</td>\n</tr>\n<tr>\n<td>URL Scan</td>\n<td>URL will be kept private, scanned by chosen engines for that private community, metadata private.</td>\n</tr>\n<tr>\n<td>Hash Search</td>\n<td>Search for a Hash in your Private Community only.</td>\n</tr>\n<tr>\n<td>Metadata Search</td>\n<td>Search for a Metadata in your Private Community only.</td>\n</tr>\n<tr>\n<td>IOC Search</td>\n<td>Search for a IOC's in your Private Community only.</td>\n</tr>\n<tr>\n<td>Sandboxing</td>\n<td>Submit a file for Sandboxing in your Private Community, kept private with metadata.</td>\n</tr>\n<tr>\n<td>Hunt - Rules</td>\n<td>The same Rulesets are visible in both Public and Private modes for a team.</td>\n</tr>\n<tr>\n<td>Live Hunt</td>\n<td>Live Hunt matches on samples in your Private and the Public community.</td>\n</tr>\n<tr>\n<td>Historical Hunt</td>\n<td>Historical Hunt matches on samples in your Private and the Public community.</td>\n</tr>\n</tbody>\n</table>\n<blockquote>\n<p>Want to change your Private Community Theme? Navigate <a href=\"/customers/settings#advanced-theme\">here</a> to see how to do this.</p>\n</blockquote>","rawMarkdownBody":"\n# PolySwarm UI\n\nPolySwarm offers a User Interface (UI) to interact with PolySwarm features.\n\nSome functionality of the PolySwarm UI is available without being logged in, but that functionality is limited.\nTo unlock additional functionality create a free account and sign in, then if you require additional quota upgrade your plan.\n\n<button>\n  <a href=\"https://polyswarm.network/\" target=\"_blank\" rel=\"noopener noreferrer\">\n    Explore PolySwarm\n  </a>\n</button>\n\n## Getting Started\n\n### Login/Sign Up {#log-in-sign-up}\n\n> **Note:** If you have purchased a Premium plan, you will receive an email with a link to sign up.\n\n##### Sign Up {#started-signup-account}\n\n1. Navigate to the PolySwarm UI via [here](https://polyswarm.network/)\n2. Click on the “_Log In/Sign up_” button\n3. The authentication window will appear with **two tabs**, Click the “_Sign Up_” tab to Sign Up for a new User Account\n4. You will be provided three means of Signing Up:\n\n> - **Sign Up with GitHub** - Use your GitHub account to log into PolySwarm UI.\n> - **Sign Up with Google** - Use your Google account to log into PolySwarm UI.\n> - **Sign Up with Email** address and password - Use an email address and password to log into PolySwarm UI. When using this method for sign up, you also need to provide your name.\n\nOnce you complete the Sign Up, we will send you a verification email.\nYou need to click on the link in that verification email to complete your User Account creation.\n\n##### Log In {#started-login}\n\nClicking on the \"Login\" tab in the authentication Page provides a means of logging in.\n\n1. Navigate to the PolySwarm UI via [here](https://polyswarm.network/)\n2. Click on the “_Log In/Sign up_” button\n3. The authentication window will appear with **two tabs**, Click the “_Log In_” tab to Log In using the same method used to create the accounts.\n\n### Accounts (Team/User) {#started-accounts}\n\nPolySwarm offers two types of accounts:\n\n- **User Account** - _Individual User Accounts_\n- **Team Account** - _User Accounts can be part of a Team Account_\n\nAll new User Accounts will have the free \"Community\" subscription plan assigned, this allows access to the basic functionality of PolySwarm. Users will have the option of purchasing a Paid Premium Subscription, if a Paid Premium Subscription has already been purchased it will have been applied to the Team Account the User Account is part of.\n\nOnce you have created a _\"User Account\"_ (which all Users must do) you can be added to a _\"Team Account\"_.\n\n_\"Team Accounts\"_ will allow individual _\"User Accounts\"_ shared access to the Premium Subscription if purchased and shared Quotas of this Subscription. There are additional Settings options like Member Account Management and Integrations that standard _\"User Accounts\"_ cannot access. We will cover how to access these in the \"Settings\" Pages [here](/customers/settings/).\n\n### Context Menu {#context-menu}\n\nOnce logged in, the upper right corner changes from displaying a “Log In/Sign Up” button to displaying the username with an avatar icon, or if you have switched teams to the Name of the Team. Beside this is the Settings Icon.\n\n<a href=\"/images/ui/ui_started_context.gif\" target=\"_blank\"><img src=\"/images/ui/ui_started_context.gif\" alt=\"Sandbox Submission Pop Up\" width=\"75%\"/></a>\n\nAll actions in the PolySwarm UI operate in the Account Context of the active User Account or Team Account.\n\nTo enable users to select which account should be used for their actions, users can Switch Accounts to change the active Context between their User Account and one or more Team Accounts. The Context that is currently being used is referred to as the Active Context.\n\nThe Active Context determines several things:\n\n- The features available in PolySwarm UI will vary depending on the Subscription Plan associated with the Active Context.\n- All PolySwarm UI usage will subtract from the usage allotment in the Subscription Plan associated with the Active Context.\n- The Account Settings page displays the Settings for the User Account or Team Account associated with the Active Context.\n\nClicking on the **Avatar icon** will open the Context Menu.\nIn the Context Menu are the following options:\n\n| Menu Option       | What is it for?                                                                                                           |\n| ----------------- | ------------------------------------------------------------------------------------------------------------------------- |\n| Switch Accounts   | Switch the currently active Context to that of the user’s User Account or one of the user’s Team Accounts.                |\n| Create Team       | Create a new Team Account. All users can create teams, but Premium plans are assigned to Teams by PolySwarm.              |\n| Logout            | Log out of PolySwarm UI.                                                                                                  |\n\nClicking on the **Settings icon** will open the Context Menu.\nIn the Context Menu are the following options:\n\n| Menu Option       | What is it for?                                                                                                           |\n| ----------------- | ------------------------------------------------------------------------------------------------------------------------- |\n| Settings          | Click the Settings option to go to the Account Settings page for the account associated with the currently Active Context |            |\n| Dark Theme Off/On | Disable or enable the dark theme. It is disabled by default.                                                              |\n| Help              | Go to the PolySwarm documentation website.                                                                                |\n\n> The Context Menu that shows the Team Name can be used to switch to a Private Community. If your organization is part of a Private Community, the Team name will be appended with a `public` and `private` name to highlight the two Communities.\n\n> When in Private mode for the Team a *Black Hat* Icon is shown in the Context Menu area to highlight the mode you are in, this is explained further in the Private Community section [here](#private-community).\n\n### Emerging Threats {#emerging-threats}\n\nThe Emerging Threats table on the **Home page** provides customers with an actionable curated list of artifacts that PolySwarm has confirmed are emerging threats.\nThis single table provides a summary of several groupings of malware; grouped by malware family or world events.\n\n<a href=\"/images/ui/ui_emerg.png\" target=\"_blank\"><img src=\"/images/ui/ui_emerg.png\" alt=\"Emerging Threats\" width=\"75%\"/></a>\n\n<div class=\"warning\" markdown=\"1\">\n\n> - Clicking the **\"View scan results\"** button, will show the latest scan results in PolySwarm for that artifact.\n> - **\"First Seen in PolySwarm\"** indicates that the artifact was submitted into PolySwarm before other platforms.\n> - The **PolyScore** is PolySwarm's threat scoring algorithm that provides the probability a given file contains malware, in a single authoritative number.\n>   - On this table, that number is represented by a bar to indicate low, medium, and high.\n> - Each artifact has one or more **tags** to help the user quickly discern its function.\n> - Users can click the **copy** icon to grab a copy of the SHA256 hash of the artifact.\n\n</div>\n\n##### Why do we sometimes show a low PolyScore on an artifact that we say is malicious?\n\nPolyScore weighs convictions from engines differently, based on factors such as malware family name and the engine's track record on similar files.\nFiles with high PolyScores are ready for automated action.\nBut sometimes, engines that detect important emerging threats do not increase the PolyScore very much, even though the file actually is malicious.\nThat is why the process behind PolyScore learns: so we can identify competent engines that see emerging malware first and give them a louder voice against future threats.\nIn the meantime, we still think it's important to show low PolyScores, because it means a file warrants review.\nAnd, if the file is included in the Emerging Threats table, yes, we believe it's malware.\n\n### Private Communities {#private-community}\n\nPolySwarm offers an additional service called “Private Communities” that restricts artifacts submitted into a Private Community and any metadata from the artifact to be accessible only by members of the Private Community and not to the wider public PolySwarm Community.\n\nPrivate Communities is a feature that covers all functionality in the UI, the context depends on what Team you are currently using. To access and move between the Public and Private Modes of a Team use the Context Menu, where you'll see your Team name with `Public` and `Private` appended, like this: `Team Name - Private`.\n\n<a href=\"/images/ui/ui_private_team_name.png\" target=\"_blank\"><img src=\"/images/ui/ui_private_team_name.png\" alt=\"Private Team Name\" width=\"75%\"/></a>\n\nOnce using the Private mode of a Team it is clear that you are in this mode by a number of visual cues onscreen like:\n- Background of the UI Changes to once of the Private Themes.\n- Private Icon appears beside the Settings Icon to indicate you are in Private Mode.\n\n<a href=\"/images/ui/ui_private_icon.png\" target=\"_blank\"><img src=\"/images/ui/ui_private_icon.png\" alt=\"Private Team Icon\" width=\"75%\"/></a>\n\nWhen in the Private Community the account features act in the following ways:\n\n| Feature      | Functionality |\n| ----------------- | ----------- |\n| File Upload Scan | File uploaded will be kept private, scanned by chosen engines for that private community, metadata private. |\n| URL Scan | URL will be kept private, scanned by chosen engines for that private community, metadata private. |\n| Hash Search| Search for a Hash in your Private Community only. |\n| Metadata Search |Search for a Metadata in your Private Community only. |\n| IOC Search|Search for a IOC's in your Private Community only. |\n| Sandboxing| Submit a file for Sandboxing in your Private Community, kept private with metadata. |\n| Hunt - Rules | The same Rulesets are visible in both Public and Private modes for a team. |\n| Live Hunt | Live Hunt matches on samples in your Private and the Public community. |\n| Historical Hunt| Historical Hunt matches on samples in your Private and the Public community.|\n\n> Want to change your Private Community Theme? Navigate [here](/customers/settings#advanced-theme) to see how to do this.\n"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/customers/polyswarm-ui/sandbox.md","frontmatter":{"title":"Sandbox","excerpt":"On the Sandbox page in the PolySwarm UI, we support submitting artifacts directly to our Sandboxes..."},"html":"<h1 id=\"sandbox\" style=\"position:relative;\"><a href=\"#sandbox\" aria-label=\"sandbox permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Sandbox</h1>\n<p>On the <a href=\"https://polyswarm.network/sandbox\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Sandbox</a> page in the PolySwarm UI, we support Sandboxing Files directly, and managing current submissions.</p>\n<button>\n  <a href=\"https://polyswarm.network/sandbox\" target=\"_blank\" rel=\"noopener noreferrer\">\n    Explore PolySwarm Sandboxing\n  </a>\n</button>\n<blockquote>\n<p>To use Sandboxing functionality, you must have this paid feature enabled on your Plan, you can check your Usage page to see if you have this.</p>\n</blockquote>\n<h2 id=\"submit-sandbox\" style=\"position:relative;\"><a href=\"#submit-sandbox\" aria-label=\"submit sandbox permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Submit to Sandbox</h2>\n<p>The <em>Submit to Sandbox</em> button offers the ability to submit new Artifacts or Artifacts already in PolySwarm to be detonated on the Sandboxes by a chosen Sandbox provider. Sandbox Analysis will take around 2-5 minutes before the results can be accessed.</p>\n<blockquote>\n<p>This is a direct Sandbox submission, meaning the artifact will go directly to the sandbox and <strong>not</strong> for Scanning by the AV Engines, if you want to Scan a file then you need to upload the file via the Scanning upload. Alternatively, once the file has been Sandboxed you will have the ability to \"Rescan\" the artifact by the AV Engines.</p>\n</blockquote>\n<blockquote>\n<p>If you are using the <strong>Public</strong> Community, the default is that Sandboxed Artifacts will be detonated on the Sandbox <em>with</em> Internet Outreach.  If you are using the <strong>Private</strong> Community, the default is that Sandboxed Artifacts will be detonated on the Sandbox <em>without</em> Internet Outreach.</p>\n</blockquote>\n<p><a href=\"/images/ui/ui_sandbox_submit.gif\" target=\"_blank\"><img src=\"/images/ui/ui_sandbox_submit.gif\" alt=\"Sandbox Submission Pop Up\" width=\"75%\"/></a></p>\n<p>The <code class=\"language-text\">Submit to Sandbox</code> button presents a popup with the following options:</p>\n<ul>\n<li>File, Select a local artifact to be uploaded to PolySwarm for Sandboxing</li>\n<li>Hash, Search for a artifact already in PolySwarm by hash value</li>\n<li>\n<p>URL, Paste in the URL that you wish to Sandbox</p>\n<ul>\n<li>Choose which <strong>Sandbox Provider and detonation VM image</strong> to use, currently PolySwarm offers <code class=\"language-text\">Cape</code> and <code class=\"language-text\">Triage</code> providers with different detonation images for each.</li>\n</ul>\n</li>\n<li>QR Code, Select a local qr code image to be uploaded to PolySwarm for Sandboxing</li>\n</ul>\n<p>Provide the artifact or hash, select the Sandbox provider, and select the detonation VM, then click the <code class=\"language-text\">Submit</code> button to schedule the Sandboxing detonation task. Once submitted, you will return to the <code class=\"language-text\">My Sandbox</code> page where you can monitor the status of the task.</p>\n<p>Sandboxes have multiple returned statuses, these are listed below.</p>\n<table>\n<thead>\n<tr>\n<th>Status</th>\n<th>What is it for?</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">Success</code></td>\n<td>Finished processing correctly</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">Started</code></td>\n<td>Sandbox session has started.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">Collecting Data</code></td>\n<td>Sandbox session has been successful and data is being collected.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">Failed</code></td>\n<td>Sandbox session has failed, this can be due to many reasons.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">Pending</code></td>\n<td>Sandbox session is queued up and ready to start.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">Delayed</code></td>\n<td>Sandbox session has been delayed and will start soon.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">Failed with Quota Reimbursement</code></td>\n<td>Finished processing but failed, quota will be reimbursed.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">Timed out with Quota Reimbursement</code></td>\n<td>Delayed in the queue for too long, got timed out and then reimbursement.</td>\n</tr>\n</tbody>\n</table>\n<h3 id=\"file-types\" style=\"position:relative;\"><a href=\"#file-types\" aria-label=\"file types permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Supported File Types</h3>\n<p>The PolySwarm Sandboxes support many file types, these are listed below.</p>\n<table>\n<thead>\n<tr>\n<th>Type</th>\n<th>Extensions</th>\n<th>Sandbox Provider</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Executable</td>\n<td><code class=\"language-text\">.dll</code></td>\n<td>Triage, Cape</td>\n</tr>\n<tr>\n<td>Executable</td>\n<td><code class=\"language-text\">.upx</code></td>\n<td>Cape</td>\n</tr>\n<tr>\n<td>Executable</td>\n<td><code class=\"language-text\">.exe</code></td>\n<td>Triage, Cape</td>\n</tr>\n<tr>\n<td>Executable</td>\n<td><code class=\"language-text\">.msi</code></td>\n<td>Triage</td>\n</tr>\n<tr>\n<td>Document</td>\n<td><code class=\"language-text\">.chm</code></td>\n<td>Triage, Cape</td>\n</tr>\n<tr>\n<td>Document</td>\n<td><code class=\"language-text\">.hta</code></td>\n<td>Triage, Cape</td>\n</tr>\n<tr>\n<td>Document</td>\n<td><code class=\"language-text\">.iqy</code></td>\n<td>Triage</td>\n</tr>\n<tr>\n<td>Document</td>\n<td><code class=\"language-text\">.doc</code></td>\n<td>Cape</td>\n</tr>\n<tr>\n<td>Document</td>\n<td><code class=\"language-text\">.docx</code></td>\n<td>Cape</td>\n</tr>\n<tr>\n<td>Document</td>\n<td><code class=\"language-text\">.xls</code></td>\n<td>Cape</td>\n</tr>\n<tr>\n<td>Document</td>\n<td><code class=\"language-text\">.xlsx</code></td>\n<td>Cape</td>\n</tr>\n<tr>\n<td>Document</td>\n<td><code class=\"language-text\">.ppt</code></td>\n<td>Cape</td>\n</tr>\n<tr>\n<td>Document</td>\n<td><code class=\"language-text\">.pptx</code></td>\n<td>Cape</td>\n</tr>\n<tr>\n<td>Document</td>\n<td><code class=\"language-text\">.pub</code></td>\n<td>Cape</td>\n</tr>\n<tr>\n<td>Document</td>\n<td><code class=\"language-text\">.pub2016</code></td>\n<td>Cape</td>\n</tr>\n<tr>\n<td>Document</td>\n<td><code class=\"language-text\">.one</code></td>\n<td>Cape</td>\n</tr>\n<tr>\n<td>Document</td>\n<td><code class=\"language-text\">.mht</code></td>\n<td>Cape</td>\n</tr>\n<tr>\n<td>Document</td>\n<td><code class=\"language-text\">.hwp</code></td>\n<td>Cape</td>\n</tr>\n<tr>\n<td>Document</td>\n<td><code class=\"language-text\">.ich</code></td>\n<td>Cape</td>\n</tr>\n<tr>\n<td>Document</td>\n<td><code class=\"language-text\">.inp</code></td>\n<td>Cape</td>\n</tr>\n<tr>\n<td>Document</td>\n<td><code class=\"language-text\">.pdf</code></td>\n<td>Triage</td>\n</tr>\n<tr>\n<td>Document</td>\n<td><code class=\"language-text\">.rtf</code></td>\n<td>Triage</td>\n</tr>\n<tr>\n<td>Document</td>\n<td><code class=\"language-text\">.slk</code></td>\n<td>Triage</td>\n</tr>\n<tr>\n<td>Document</td>\n<td><code class=\"language-text\">.swf</code></td>\n<td>Triage</td>\n</tr>\n<tr>\n<td>Document</td>\n<td><code class=\"language-text\">.html</code></td>\n<td>Triage, Cape</td>\n</tr>\n<tr>\n<td>Scripting</td>\n<td><code class=\"language-text\">.bat</code></td>\n<td>Triage, Cape</td>\n</tr>\n<tr>\n<td>Scripting</td>\n<td><code class=\"language-text\">.ps1</code></td>\n<td>Triage, Cape</td>\n</tr>\n<tr>\n<td>Scripting</td>\n<td><code class=\"language-text\">.js</code></td>\n<td>Triage, Cape</td>\n</tr>\n<tr>\n<td>Scripting</td>\n<td><code class=\"language-text\">.jse</code></td>\n<td>Triage, Cape</td>\n</tr>\n<tr>\n<td>Scripting</td>\n<td><code class=\"language-text\">.vbe</code></td>\n<td>Triage, Cape</td>\n</tr>\n<tr>\n<td>Scripting</td>\n<td><code class=\"language-text\">.pl</code></td>\n<td>Triage</td>\n</tr>\n<tr>\n<td>Scripting</td>\n<td><code class=\"language-text\">.py</code></td>\n<td>Cape</td>\n</tr>\n<tr>\n<td>Scripting</td>\n<td><code class=\"language-text\">.vbs</code></td>\n<td>Triage, Cape</td>\n</tr>\n<tr>\n<td>Scripting</td>\n<td><code class=\"language-text\">.wsf</code></td>\n<td>Triage, Cape</td>\n</tr>\n<tr>\n<td>Android</td>\n<td><code class=\"language-text\">.apk</code></td>\n<td>Triage</td>\n</tr>\n<tr>\n<td>Android</td>\n<td><code class=\"language-text\">.dex</code></td>\n<td>Triage</td>\n</tr>\n<tr>\n<td>Other</td>\n<td><code class=\"language-text\">.jar</code></td>\n<td>Triage</td>\n</tr>\n<tr>\n<td>Other</td>\n<td><code class=\"language-text\">.lnk</code></td>\n<td>Triage, Cape</td>\n</tr>\n<tr>\n<td>Other</td>\n<td><code class=\"language-text\">.url</code></td>\n<td>Triage</td>\n</tr>\n<tr>\n<td>Other</td>\n<td><code class=\"language-text\">.jnlp</code></td>\n<td>Triage</td>\n</tr>\n<tr>\n<td>Other</td>\n<td><code class=\"language-text\">.reg</code></td>\n<td>Cape</td>\n</tr>\n<tr>\n<td>Other</td>\n<td><code class=\"language-text\">.xslt</code></td>\n<td>Cape</td>\n</tr>\n<tr>\n<td>Other</td>\n<td><code class=\"language-text\">.xps</code></td>\n<td>Cape</td>\n</tr>\n</tbody>\n</table>\n<p>32MB is the default \"max\" file submission size, this is a per-account setting, so it is possible for some users/teams to have a higher limit, if you wish to increase this limit please contact <em>customersuccess@polyswarm.io</em></p>\n<h2 id=\"my-sandboxing\" style=\"position:relative;\"><a href=\"#my-sandboxing\" aria-label=\"my sandboxing permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>My Sandboxing</h2>\n<p>The My Sandbox tab shows you Artifacts that only you have Sandboxed, and the status of these submissions.</p>\n<p><a href=\"/images/ui/ui_sandbox_my.png\" target=\"_blank\"><img src=\"/images/ui/ui_sandbox_my.png\" alt=\"My Sandboxing\" width=\"75%\"/></a></p>\n<p>The table of submissions displays the following information:</p>\n<table>\n<thead>\n<tr>\n<th>Column</th>\n<th>What is it for?</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Sandboxed On</td>\n<td>Date and Time that the Artifact was Sandboxed on.</td>\n</tr>\n<tr>\n<td>Target</td>\n<td>File name of file uploaded, or hash of the file is resandboxed.</td>\n</tr>\n<tr>\n<td>Type</td>\n<td>Type of item sandboxed, i.e. <code class=\"language-text\">file</code>, <code class=\"language-text\">url</code>.</td>\n</tr>\n<tr>\n<td>SHA-256</td>\n<td>The <code class=\"language-text\">sha256</code> of the Artifact that has been Sandboxed.</td>\n</tr>\n<tr>\n<td>Sandbox Provider</td>\n<td>Name of the sandbox provider used.</td>\n</tr>\n<tr>\n<td>Mal Score</td>\n<td>Independent Score provided by the Sandbox, between 0-10.</td>\n</tr>\n<tr>\n<td>Status</td>\n<td>The status of the Sandbox submission is color coded. The statuses can be: <code class=\"language-text\">Success</code>, <code class=\"language-text\">Pending</code>, <code class=\"language-text\">Collecting Data</code>, <code class=\"language-text\">Started</code>, <code class=\"language-text\">Delayed</code>, <code class=\"language-text\">Failed Reimbursed</code>, <code class=\"language-text\">Timeout Reimbursed</code> or <code class=\"language-text\">Failed</code></td>\n</tr>\n<tr>\n<td>Actions</td>\n<td>Single Action button will open the <a href=\"#summary-sandbox\">Sandbox Results Summary</a> page for that Artifact once the Status has changed to <code class=\"language-text\">Success</code>.</td>\n</tr>\n</tbody>\n</table>\n<h3 id=\"filtering\" style=\"position:relative;\"><a href=\"#filtering\" aria-label=\"filtering permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Filtering</h3>\n<p>The <code class=\"language-text\">Filter</code> button at the top right of My Sandbox page provides the ability to Filter the results being seen. The following filter options are available:</p>\n<p><a href=\"/images/ui/ui_my_sandbox_filter.gif\" target=\"_blank\"><img src=\"/images/ui/ui_my_sandbox_filter.gif\" alt=\"My Sandbox Filtering gif\" width=\"75%\"/></a></p>\n<ul>\n<li><strong>Status</strong> - Status of the Sandbox submission and can be: <code class=\"language-text\">Success</code>, <code class=\"language-text\">Pending</code>, <code class=\"language-text\">Collecting Data</code>, <code class=\"language-text\">Started</code>,<code class=\"language-text\">Delayed</code>, <code class=\"language-text\">Failed Reimbursed</code>, <code class=\"language-text\">Timeout Reimbursed</code> or <code class=\"language-text\">Failed</code></li>\n<li><strong>Sandbox Provider</strong> -  Name of the Sandbox provider.</li>\n<li><strong>SHA256</strong> - Specific sha256 value of the Sandboxing submission.</li>\n<li><strong>Date Range</strong> - Start and End Date for the Sandboxing submission.</li>\n</ul>\n<blockquote>\n<p>At the bottom of the My Sandbox page you can navigate to the next page if further results exist.</p>\n</blockquote>\n<h2 id=\"team-sandboxing\" style=\"position:relative;\"><a href=\"#team-sandboxing\" aria-label=\"team sandboxing permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Team Sandboxing</h2>\n<p>The Team Sandbox tab shows you Artifacts that you and your team members you have Sandboxed, and the status of these submissions.</p>\n<p><a href=\"/images/ui/ui_sandbox_team.png\" target=\"_blank\"><img src=\"/images/ui/ui_sandbox_team.png\" alt=\"Team Sandboxing\" width=\"75%\"/></a></p>\n<p>The table of submissions displays the following information:</p>\n<table>\n<thead>\n<tr>\n<th>Column</th>\n<th>What is it for?</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Sandboxed On</td>\n<td>Date and Time that the Artifact was Sandboxed on.</td>\n</tr>\n<tr>\n<td>Target</td>\n<td>File name of file uploaded, or hash of the file is resandboxed.</td>\n</tr>\n<tr>\n<td>Type</td>\n<td>Type of item sandboxed, i.e. <code class=\"language-text\">file</code>, <code class=\"language-text\">url</code>.</td>\n</tr>\n<tr>\n<td>SHA-256</td>\n<td>The <code class=\"language-text\">sha256</code> of the Artifact that has been Sandboxed.</td>\n</tr>\n<tr>\n<td>Sandbox Provider</td>\n<td>Name of the sandbox provider used.</td>\n</tr>\n<tr>\n<td>Mal Score</td>\n<td>Independent Score provided by the Sandbox, between 0-10.</td>\n</tr>\n<tr>\n<td>Status</td>\n<td>The status of the Sandbox submission is color coded. The statuses can be: <code class=\"language-text\">Success</code>, <code class=\"language-text\">Pending</code>, <code class=\"language-text\">Collecting Data</code>, <code class=\"language-text\">Started</code>, <code class=\"language-text\">Delayed</code>, <code class=\"language-text\">Failed Reimbursed</code>, <code class=\"language-text\">Timeout Reimbursed</code> or <code class=\"language-text\">Failed</code></td>\n</tr>\n<tr>\n<td>Actions</td>\n<td>Single Action button will open the <a href=\"#summary-sandbox\">Sandbox Results Summary</a> page for that Artifact once the Status has changed to <code class=\"language-text\">Success</code>.</td>\n</tr>\n</tbody>\n</table>\n<h3 id=\"filtering-1\" style=\"position:relative;\"><a href=\"#filtering-1\" aria-label=\"filtering 1 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Filtering</h3>\n<p>The <code class=\"language-text\">Filter</code> button at the top right of Team Sandbox page provides the ability to Filter the results being seen. The following filter options are available:</p>\n<p><a href=\"/images/ui/ui_my_sandbox_filter.gif\" target=\"_blank\"><img src=\"/images/ui/ui_my_sandbox_filter.gif\" alt=\"My Sandbox Filtering gif\" width=\"75%\"/></a></p>\n<ul>\n<li><strong>Status</strong> - Status of the Sandbox submission and can be: <code class=\"language-text\">Success</code>, <code class=\"language-text\">Pending</code>, <code class=\"language-text\">Collecting Data</code>, <code class=\"language-text\">Started</code>,<code class=\"language-text\">Delayed</code>, <code class=\"language-text\">Failed Reimbursed</code>, <code class=\"language-text\">Timeout Reimbursed</code> or <code class=\"language-text\">Failed</code></li>\n<li><strong>Sandbox Provider</strong> -  Name of the Sandbox provider.</li>\n<li><strong>SHA256</strong> - Specific sha256 value of the Sandboxing submission.</li>\n<li><strong>Date Range</strong> - Start and End Date for the Sandboxing submission.</li>\n</ul>\n<blockquote>\n<p>At the bottom of the Team Sandbox page you can navigate to the next page if further results exist.</p>\n</blockquote>\n<h2 id=\"sandbox-history\" style=\"position:relative;\"><a href=\"#sandbox-history\" aria-label=\"sandbox history permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Sandbox History</h2>\n<p>The Sandbox History tab allows you to search by sha256 hash to get a list of every time that artifact was Sandboxed, by any user.</p>\n<p><a href=\"/images/ui/ui_sandbox_all.png\" target=\"_blank\"><img src=\"/images/ui/ui_sandbox_all.png\" alt=\"All Sandboxing\" width=\"75%\"/></a></p>\n<p>Once you have searched for a Hash value, the table of submissions provides the following information:</p>\n<table>\n<thead>\n<tr>\n<th>Column</th>\n<th>What is it for?</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Sandboxed On</td>\n<td>Date and Time that the Artifact was Sandboxed on.</td>\n</tr>\n<tr>\n<td>Target</td>\n<td>File name of file uploaded, or hash of the file is resandboxed.</td>\n</tr>\n<tr>\n<td>Type</td>\n<td>Type of item sandboxed, i.e. <code class=\"language-text\">file</code>, <code class=\"language-text\">url</code>.</td>\n</tr>\n<tr>\n<td>Sandbox Provider</td>\n<td>Name of the sandbox provider used.</td>\n</tr>\n<tr>\n<td>Status</td>\n<td>The status of the Sandbox submission is color coded. The statuses can be: <code class=\"language-text\">Success</code>, <code class=\"language-text\">Pending</code>, <code class=\"language-text\">Collecting Data</code>, <code class=\"language-text\">Started</code>, <code class=\"language-text\">Delayed</code>, <code class=\"language-text\">Failed Reimbursed</code>, <code class=\"language-text\">Timeout Reimbursed</code> or <code class=\"language-text\">Failed</code></td>\n</tr>\n<tr>\n<td>Actions</td>\n<td>Single Action button will open the <a href=\"#summary-sandbox\">Sandbox Results Summary</a> page for that Artifact once the Status has changed to <code class=\"language-text\">Success</code>.</td>\n</tr>\n</tbody>\n</table>\n<h3 id=\"filtering-2\" style=\"position:relative;\"><a href=\"#filtering-2\" aria-label=\"filtering 2 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Filtering</h3>\n<p>The <code class=\"language-text\">Filter</code> button at the top right of All Sandboxing page provides the ability to Filter the results being seen. The following filter options are available:</p>\n<ul>\n<li><strong>Status</strong> - Status of the Sandbox submission and can be: <code class=\"language-text\">Success</code>, <code class=\"language-text\">Pending</code>, <code class=\"language-text\">Collecting Data</code>, <code class=\"language-text\">Started</code>, <code class=\"language-text\">Delayed</code>, <code class=\"language-text\">Failed Reimbursed</code>, <code class=\"language-text\">Timeout Reimbursed</code> or <code class=\"language-text\">Failed</code></li>\n<li><strong>Sandbox Provider</strong> -  Name of the Sandbox provider.</li>\n<li><strong>Date Range</strong> - Start and End Date for the Sandboxing submission.</li>\n</ul>\n<blockquote>\n<p>At the bottom of the My Sandbox page you can navigate to the next page if further results exist.</p>\n</blockquote>\n<h2 id=\"summary-sandbox\" style=\"position:relative;\"><a href=\"#summary-sandbox\" aria-label=\"summary sandbox permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Sandbox Results Summary</h2>\n<p>This Sandbox Results Summary page provides the view of the latest Sandboxing Results for the Artifact for Cape and Triage.</p>\n<p>The page can be accessed from the Action button on the My Sandbox and All Sandboxing pages as well as the <code class=\"language-text\">Latest Sandbox Results</code> button on the Scan Summary Page for the Artifact.</p>\n<p>To view the latest <strong>Scan results</strong> page for this Artifact you can use the <code class=\"language-text\">Latest Scan Results</code> button in the top right, then use the <code class=\"language-text\">Latest Sandbox Results</code> button to navigate back to the Sandboxing detonation results.</p>\n<p><a href=\"/images/ui/ui_sandbox_summary_action.gif\" target=\"_blank\"><img src=\"/images/ui/ui_sandbox_summary_action.gif\" alt=\"Sandbox Results Summary Page\" width=\"75%\"/></a></p>\n<h3 id=\"summary-pane\" style=\"position:relative;\"><a href=\"#summary-pane\" aria-label=\"summary pane permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Summary Pane</h3>\n<p>The left <strong>Summary pane</strong> provides access to either the latest Cape or Triage Sandbox detonation, clicking on either will change the data in the main page body. This section lists the Sandbox ID, sha256, file or url, sandbox score and verdict and the Malware Family.</p>\n<p><a href=\"/images/ui/ui_sandbox_summary_pane.png\" target=\"_blank\"><img src=\"/images/ui/ui_sandbox_summary_pane.png\" alt=\"Sandbox Summary Pane\" width=\"75%\"/></a></p>\n<p>Below the Summary Pane is the <strong>Action Pane</strong> with Several buttons:</p>\n<p><a href=\"/images/ui/ui_sandbox_action_pane.png\" target=\"_blank\"><img src=\"/images/ui/ui_sandbox_action_pane.png\" alt=\"Sandbox Action Pane\" width=\"75%\"/></a></p>\n<table>\n<thead>\n<tr>\n<th>Button</th>\n<th>What is it for?</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Re-Sandbox</td>\n<td>Re-Submit the Artifact to be Sandboxed.</td>\n</tr>\n<tr>\n<td>Share</td>\n<td>Share a link to these sandbox results page on social media.</td>\n</tr>\n<tr>\n<td>Pivot</td>\n<td>Enable/Disable the pivoting feature.</td>\n</tr>\n<tr>\n<td>History</td>\n<td>See all Sandboxing history, brings you to the <code class=\"language-text\">All Sandboxing</code> page.</td>\n</tr>\n<tr>\n<td>Generate Report</td>\n<td>Generates either a PDF or HTML report on demand, you will be able to choose sections to include.</td>\n</tr>\n</tbody>\n</table>\n<h3 id=\"sandbox-tabs\" style=\"position:relative;\"><a href=\"#sandbox-tabs\" aria-label=\"sandbox tabs permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Sandbox Tabs</h3>\n<p>The Sandbox Results Summary page has tabs that contain the information from the Sandboxing. This is only a small sample of the data available, to see the fill content download the Full (RAW) JSON for the Sandbox Detonation.</p>\n<p><a href=\"/images/ui/ui_sandbox_tabs.png\" target=\"_blank\"><img src=\"/images/ui/ui_sandbox_tabs.png\" alt=\"Sandbox Tabs\" width=\"75%\"/></a></p>\n<p>Each Tab has shortcut boxes present, these will be greyed out if the metadata does not exist, click on these to quickly jump to the subsection in the relevant tab.</p>\n<p><a href=\"/images/ui/ui_sandbox_shortcut_icon.png\" target=\"_blank\"><img src=\"/images/ui/ui_sandbox_shortcut_icon.png\" alt=\"Sandbox Shortcut Icons\" width=\"25%\"/></a></p>\n<h5 id=\"extracted-config\" style=\"position:relative;\"><a href=\"#extracted-config\" aria-label=\"extracted config permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Extracted Config</h5>\n<p>This tab contains fields relating to <code class=\"language-text\">Malware config</code>, <code class=\"language-text\">Processes</code> and <code class=\"language-text\">Encryption Keys</code>. Items like Campaign information, Install paths, Access Types and Encryption Key values may be present if the Sandbox has this information. This section can include details from parsers on the sandbox like the CobaltStrike parser.</p>\n<p><a href=\"/images/ui/ui_sandbox_extracted_config.png\" target=\"_blank\"><img src=\"/images/ui/ui_sandbox_extracted_config.png\" alt=\"Sandbox Extracted Config Tab\" width=\"75%\"/></a></p>\n<h5 id=\"dropped-files\" style=\"position:relative;\"><a href=\"#dropped-files\" aria-label=\"dropped files permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Dropped Files</h5>\n<p>This tab contains information related to the Dropped Files from the Malware detonation. This tab will display information like File Name, Size, Type and multiple hash values of each dropped file.</p>\n<p><a href=\"/images/ui/ui_sandbox_dropped.png\" target=\"_blank\"><img src=\"/images/ui/ui_sandbox_dropped.png\" alt=\"Settings Members Tab\" width=\"75%\"/></a></p>\n<blockquote>\n<p>Note if you want the dropped file to be detonated in the Sandboxes, perform a Hash Search to lookup that file. On the Hash Search listing, view the Scan results for that file. On that page, you can select the \"Sandbox\" icon in the Actions Pane to submit it for Sandboxing.</p>\n</blockquote>\n<h3 id=\"network-tab\" style=\"position:relative;\"><a href=\"#network-tab\" aria-label=\"network tab permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Network Tab</h3>\n<p>This tab contains information on IPs, SMTP, Domains and JARM details relating to the Sandboxed Artifact. If no data is present then there is no network information available from the Sandbox for this detonation.</p>\n<p><a href=\"/images/ui/ui_sandbox_network_tab.png\" target=\"_blank\"><img src=\"/images/ui/ui_sandbox_network_tab.png\" alt=\"Settings Members Tab\" width=\"75%\"/></a></p>\n<h3 id=\"http-transaction-tab\" style=\"position:relative;\"><a href=\"#http-transaction-tab\" aria-label=\"http transaction tab permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>HTTP Transaction Tab</h3>\n<p>This tab contains information HTTP Transactions, this view is only available for Triage Sandboxing sessions.</p>\n<p><a href=\"/images/ui/ui_sandbox_http.png\" target=\"_blank\"><img src=\"/images/ui/ui_sandbox_network_tab.png\" alt=\"Settings Members Tab\" width=\"75%\"/></a></p>\n<h3 id=\"analysis-tab\" style=\"position:relative;\"><a href=\"#analysis-tab\" aria-label=\"analysis tab permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Analysis Tab</h3>\n<p>This tab contains information on MITRE TTPs used, OS Autorun, Signatures that have been triggered on the Sandbox and Processes. If no data is present then there is no information available for Analysis from the Sandbox for this detonation.</p>\n<p><a href=\"/images/ui/ui_sandbox_analysis.png\" target=\"_blank\"><img src=\"/images/ui/ui_sandbox_analysis.png\" alt=\"Settings Members Tab\" width=\"75%\"/></a></p>\n<h3 id=\"json-tab\" style=\"position:relative;\"><a href=\"#json-tab\" aria-label=\"json tab permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>JSON Tab</h3>\n<p>This tab provides access to the JSON object in relation to the Sandbox detonation, the search field can be used to find specific values and keys. The JSON can be downloaded from this page to be stored locally.</p>\n<blockquote>\n<p>This JSON is the Summary JSON file for the Sandboxing, to download the Full JSON see the <code class=\"language-text\">raw</code> report in the download tab.</p>\n</blockquote>\n<h3 id=\"download-results-tab\" style=\"position:relative;\"><a href=\"#download-results-tab\" aria-label=\"download results tab permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Download Results Tab</h3>\n<p>This tab allows you to download the Sandbox artifacts. These files can be the JARM file, PCAP Files, full JSON Reports and all dropped artifacts. The dropped files will always be downloaded as an encrypted zip file to prevent trigger your local AV engine.</p>\n<p>Each of these files can be downloaded as a single zip by using the <code class=\"language-text\">zip</code> tick box at the bottom of the page.</p>\n<blockquote>\n<p>The <code class=\"language-text\">raw</code> json is the full report created by the Sandbox, while the regular report is the summarized version used to populate the JSON tab.</p>\n</blockquote>\n<p><a href=\"/images/ui/ui_sandbox_download.png\" target=\"_blank\"><img src=\"/images/ui/ui_sandbox_download.png\" alt=\"Settings Members Tab\" width=\"75%\"/></a></p>\n<h3 id=\"video--screenshot-tab\" style=\"position:relative;\"><a href=\"#video--screenshot-tab\" aria-label=\"video  screenshot tab permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Video &#x26; Screenshot Tab</h3>\n<p>This tab allows you to view the Triage Video OR Cape Screenshots that have been captured from the detonation. </p>","rawMarkdownBody":"\n# Sandbox\n\nOn the [Sandbox](https://polyswarm.network/sandbox) page in the PolySwarm UI, we support Sandboxing Files directly, and managing current submissions.\n\n<button>\n  <a href=\"https://polyswarm.network/sandbox\" target=\"_blank\" rel=\"noopener noreferrer\">\n    Explore PolySwarm Sandboxing\n  </a>\n</button>\n\n> To use Sandboxing functionality, you must have this paid feature enabled on your Plan, you can check your Usage page to see if you have this.\n\n## Submit to Sandbox {#submit-sandbox}\n\nThe *Submit to Sandbox* button offers the ability to submit new Artifacts or Artifacts already in PolySwarm to be detonated on the Sandboxes by a chosen Sandbox provider. Sandbox Analysis will take around 2-5 minutes before the results can be accessed.\n\n> This is a direct Sandbox submission, meaning the artifact will go directly to the sandbox and **not** for Scanning by the AV Engines, if you want to Scan a file then you need to upload the file via the Scanning upload. Alternatively, once the file has been Sandboxed you will have the ability to \"Rescan\" the artifact by the AV Engines.\n\n> If you are using the **Public** Community, the default is that Sandboxed Artifacts will be detonated on the Sandbox *with* Internet Outreach.  If you are using the **Private** Community, the default is that Sandboxed Artifacts will be detonated on the Sandbox *without* Internet Outreach.\n\n<a href=\"/images/ui/ui_sandbox_submit.gif\" target=\"_blank\"><img src=\"/images/ui/ui_sandbox_submit.gif\" alt=\"Sandbox Submission Pop Up\" width=\"75%\"/></a>\n\nThe `Submit to Sandbox` button presents a popup with the following options:\n\n* File, Select a local artifact to be uploaded to PolySwarm for Sandboxing\n* Hash, Search for a artifact already in PolySwarm by hash value\n* URL, Paste in the URL that you wish to Sandbox\n    * Choose which **Sandbox Provider and detonation VM image** to use, currently PolySwarm offers `Cape` and `Triage` providers with different detonation images for each.\n* QR Code, Select a local qr code image to be uploaded to PolySwarm for Sandboxing\n\nProvide the artifact or hash, select the Sandbox provider, and select the detonation VM, then click the `Submit` button to schedule the Sandboxing detonation task. Once submitted, you will return to the `My Sandbox` page where you can monitor the status of the task.\n\nSandboxes have multiple returned statuses, these are listed below.\n\n| Status              | What is it for? |\n| ------------------- | -------------------------- |\n| `Success`  | Finished processing correctly |\n| `Started`  | Sandbox session has started. |\n| `Collecting Data`  | Sandbox session has been successful and data is being collected. |\n| `Failed`  | Sandbox session has failed, this can be due to many reasons. |\n| `Pending`  | Sandbox session is queued up and ready to start.  |\n| `Delayed`  | Sandbox session has been delayed and will start soon. |\n| `Failed with Quota Reimbursement`  | Finished processing but failed, quota will be reimbursed. |\n| `Timed out with Quota Reimbursement`  | Delayed in the queue for too long, got timed out and then reimbursement. |\n\n### Supported File Types {#file-types}\n\nThe PolySwarm Sandboxes support many file types, these are listed below.\n\n| Type               | Extensions | Sandbox Provider |\n| ---------------- | ------------------- | ------|\n| Executable         | `.dll` | Triage, Cape |\n| Executable         | `.upx` | Cape |\n| Executable         | `.exe` | Triage, Cape |\n| Executable         | `.msi` | Triage |\n| Document         | `.chm` | Triage, Cape |\n| Document         | `.hta` | Triage, Cape |\n| Document         | `.iqy` | Triage |\n| Document         | `.doc`| Cape |\n| Document         | `.docx`| Cape |\n| Document         | `.xls`| Cape |\n| Document         | `.xlsx`| Cape |\n| Document         | `.ppt`| Cape |\n| Document         | `.pptx`| Cape |\n| Document         | `.pub`| Cape |\n| Document         | `.pub2016`| Cape |\n| Document         | `.one`| Cape |\n| Document         | `.mht`| Cape |\n| Document         | `.hwp`| Cape |\n| Document         | `.ich`| Cape |\n| Document         | `.inp`| Cape |\n| Document         | `.pdf` | Triage |\n| Document         | `.rtf` | Triage |\n| Document         | `.slk` | Triage |\n| Document         | `.swf` | Triage |\n| Document         | `.html` | Triage, Cape|\n| Scripting         | `.bat` | Triage, Cape |\n| Scripting         | `.ps1` | Triage, Cape |\n| Scripting         | `.js` | Triage, Cape |\n| Scripting         | `.jse` | Triage, Cape |\n| Scripting         | `.vbe` | Triage, Cape |\n| Scripting         | `.pl` | Triage |\n| Scripting         | `.py` | Cape |\n| Scripting         | `.vbs` | Triage, Cape |\n| Scripting         | `.wsf` | Triage, Cape|\n| Android         | `.apk` | Triage |\n| Android         | `.dex` | Triage |\n| Other         | `.jar` | Triage |\n| Other         | `.lnk` | Triage, Cape |\n| Other         | `.url` | Triage |\n| Other         | `.jnlp` | Triage |\n| Other         | `.reg` | Cape |\n| Other         | `.xslt` | Cape |\n| Other         | `.xps` | Cape |\n\n32MB is the default \"max\" file submission size, this is a per-account setting, so it is possible for some users/teams to have a higher limit, if you wish to increase this limit please contact *customersuccess@polyswarm.io*\n\n## My Sandboxing {#my-sandboxing}\n\nThe My Sandbox tab shows you Artifacts that only you have Sandboxed, and the status of these submissions.\n\n<a href=\"/images/ui/ui_sandbox_my.png\" target=\"_blank\"><img src=\"/images/ui/ui_sandbox_my.png\" alt=\"My Sandboxing\" width=\"75%\"/></a>\n\nThe table of submissions displays the following information:\n\n| Column              | What is it for? |\n| ------------------- | -------------------------- |\n| Sandboxed On          | Date and Time that the Artifact was Sandboxed on. |\n| Target         | File name of file uploaded, or hash of the file is resandboxed. |\n| Type          | Type of item sandboxed, i.e. `file`, `url`.  |\n| SHA-256          | The `sha256` of the Artifact that has been Sandboxed.  |\n| Sandbox Provider          | Name of the sandbox provider used.  |\n| Mal Score         | Independent Score provided by the Sandbox, between 0-10.  |\n| Status          | The status of the Sandbox submission is color coded. The statuses can be: `Success`, `Pending`, `Collecting Data`, `Started`, `Delayed`, `Failed Reimbursed`, `Timeout Reimbursed` or `Failed` |\n| Actions          | Single Action button will open the [Sandbox Results Summary](#summary-sandbox) page for that Artifact once the Status has changed to `Success`. |\n\n### Filtering\n\nThe `Filter` button at the top right of My Sandbox page provides the ability to Filter the results being seen. The following filter options are available:\n\n<a href=\"/images/ui/ui_my_sandbox_filter.gif\" target=\"_blank\"><img src=\"/images/ui/ui_my_sandbox_filter.gif\" alt=\"My Sandbox Filtering gif\" width=\"75%\"/></a>\n\n* **Status** - Status of the Sandbox submission and can be: `Success`, `Pending`, `Collecting Data`, `Started`,`Delayed`, `Failed Reimbursed`, `Timeout Reimbursed` or `Failed`\n* **Sandbox Provider** -  Name of the Sandbox provider.\n* **SHA256** - Specific sha256 value of the Sandboxing submission.\n* **Date Range** - Start and End Date for the Sandboxing submission.\n\n> At the bottom of the My Sandbox page you can navigate to the next page if further results exist.\n\n## Team Sandboxing {#team-sandboxing}\n\nThe Team Sandbox tab shows you Artifacts that you and your team members you have Sandboxed, and the status of these submissions.\n\n<a href=\"/images/ui/ui_sandbox_team.png\" target=\"_blank\"><img src=\"/images/ui/ui_sandbox_team.png\" alt=\"Team Sandboxing\" width=\"75%\"/></a>\n\nThe table of submissions displays the following information:\n\n| Column              | What is it for? |\n| ------------------- | -------------------------- |\n| Sandboxed On          | Date and Time that the Artifact was Sandboxed on. |\n| Target         | File name of file uploaded, or hash of the file is resandboxed. |\n| Type          | Type of item sandboxed, i.e. `file`, `url`.  |\n| SHA-256          | The `sha256` of the Artifact that has been Sandboxed.  |\n| Sandbox Provider          | Name of the sandbox provider used.  |\n| Mal Score         | Independent Score provided by the Sandbox, between 0-10.  |\n| Status          | The status of the Sandbox submission is color coded. The statuses can be: `Success`, `Pending`, `Collecting Data`, `Started`, `Delayed`, `Failed Reimbursed`, `Timeout Reimbursed` or `Failed` |\n| Actions          | Single Action button will open the [Sandbox Results Summary](#summary-sandbox) page for that Artifact once the Status has changed to `Success`. |\n\n### Filtering\n\nThe `Filter` button at the top right of Team Sandbox page provides the ability to Filter the results being seen. The following filter options are available:\n\n<a href=\"/images/ui/ui_my_sandbox_filter.gif\" target=\"_blank\"><img src=\"/images/ui/ui_my_sandbox_filter.gif\" alt=\"My Sandbox Filtering gif\" width=\"75%\"/></a>\n\n* **Status** - Status of the Sandbox submission and can be: `Success`, `Pending`, `Collecting Data`, `Started`,`Delayed`, `Failed Reimbursed`, `Timeout Reimbursed` or `Failed`\n* **Sandbox Provider** -  Name of the Sandbox provider.\n* **SHA256** - Specific sha256 value of the Sandboxing submission.\n* **Date Range** - Start and End Date for the Sandboxing submission.\n\n> At the bottom of the Team Sandbox page you can navigate to the next page if further results exist.\n\n## Sandbox History {#sandbox-history}\n\nThe Sandbox History tab allows you to search by sha256 hash to get a list of every time that artifact was Sandboxed, by any user.\n\n<a href=\"/images/ui/ui_sandbox_all.png\" target=\"_blank\"><img src=\"/images/ui/ui_sandbox_all.png\" alt=\"All Sandboxing\" width=\"75%\"/></a>\n\nOnce you have searched for a Hash value, the table of submissions provides the following information:\n\n| Column              | What is it for? |\n| ------------------- | -------------------------- |\n| Sandboxed On          | Date and Time that the Artifact was Sandboxed on. |\n| Target         | File name of file uploaded, or hash of the file is resandboxed. |\n| Type          | Type of item sandboxed, i.e. `file`, `url`.  |\n| Sandbox Provider          | Name of the sandbox provider used.  |\n| Status          | The status of the Sandbox submission is color coded. The statuses can be: `Success`, `Pending`, `Collecting Data`, `Started`, `Delayed`, `Failed Reimbursed`, `Timeout Reimbursed` or `Failed` |\n| Actions          | Single Action button will open the [Sandbox Results Summary](#summary-sandbox) page for that Artifact once the Status has changed to `Success`. |\n\n### Filtering\n\nThe `Filter` button at the top right of All Sandboxing page provides the ability to Filter the results being seen. The following filter options are available:\n\n* **Status** - Status of the Sandbox submission and can be: `Success`, `Pending`, `Collecting Data`, `Started`, `Delayed`, `Failed Reimbursed`, `Timeout Reimbursed` or `Failed`\n* **Sandbox Provider** -  Name of the Sandbox provider.\n* **Date Range** - Start and End Date for the Sandboxing submission.\n\n> At the bottom of the My Sandbox page you can navigate to the next page if further results exist.\n\n## Sandbox Results Summary {#summary-sandbox}\n\nThis Sandbox Results Summary page provides the view of the latest Sandboxing Results for the Artifact for Cape and Triage.\n\nThe page can be accessed from the Action button on the My Sandbox and All Sandboxing pages as well as the `Latest Sandbox Results` button on the Scan Summary Page for the Artifact.\n\nTo view the latest **Scan results** page for this Artifact you can use the `Latest Scan Results` button in the top right, then use the `Latest Sandbox Results` button to navigate back to the Sandboxing detonation results.\n\n<a href=\"/images/ui/ui_sandbox_summary_action.gif\" target=\"_blank\"><img src=\"/images/ui/ui_sandbox_summary_action.gif\" alt=\"Sandbox Results Summary Page\" width=\"75%\"/></a>\n\n### Summary Pane\n\nThe left **Summary pane** provides access to either the latest Cape or Triage Sandbox detonation, clicking on either will change the data in the main page body. This section lists the Sandbox ID, sha256, file or url, sandbox score and verdict and the Malware Family.\n\n<a href=\"/images/ui/ui_sandbox_summary_pane.png\" target=\"_blank\"><img src=\"/images/ui/ui_sandbox_summary_pane.png\" alt=\"Sandbox Summary Pane\" width=\"75%\"/></a>\n\nBelow the Summary Pane is the **Action Pane** with Several buttons:\n\n<a href=\"/images/ui/ui_sandbox_action_pane.png\" target=\"_blank\"><img src=\"/images/ui/ui_sandbox_action_pane.png\" alt=\"Sandbox Action Pane\" width=\"75%\"/></a>\n\n| Button              | What is it for? |\n| ------------------- | -------------------------- |\n| Re-Sandbox         | Re-Submit the Artifact to be Sandboxed. |\n| Share        | Share a link to these sandbox results page on social media. |\n| Pivot        | Enable/Disable the pivoting feature. |\n| History        | See all Sandboxing history, brings you to the `All Sandboxing` page. |\n| Generate Report | Generates either a PDF or HTML report on demand, you will be able to choose sections to include. |\n\n### Sandbox Tabs\n\nThe Sandbox Results Summary page has tabs that contain the information from the Sandboxing. This is only a small sample of the data available, to see the fill content download the Full (RAW) JSON for the Sandbox Detonation.\n\n<a href=\"/images/ui/ui_sandbox_tabs.png\" target=\"_blank\"><img src=\"/images/ui/ui_sandbox_tabs.png\" alt=\"Sandbox Tabs\" width=\"75%\"/></a>\n\nEach Tab has shortcut boxes present, these will be greyed out if the metadata does not exist, click on these to quickly jump to the subsection in the relevant tab.\n\n<a href=\"/images/ui/ui_sandbox_shortcut_icon.png\" target=\"_blank\"><img src=\"/images/ui/ui_sandbox_shortcut_icon.png\" alt=\"Sandbox Shortcut Icons\" width=\"25%\"/></a>\n\n##### Extracted Config\n\nThis tab contains fields relating to `Malware config`, `Processes` and `Encryption Keys`. Items like Campaign information, Install paths, Access Types and Encryption Key values may be present if the Sandbox has this information. This section can include details from parsers on the sandbox like the CobaltStrike parser.\n\n<a href=\"/images/ui/ui_sandbox_extracted_config.png\" target=\"_blank\"><img src=\"/images/ui/ui_sandbox_extracted_config.png\" alt=\"Sandbox Extracted Config Tab\" width=\"75%\"/></a>\n\n##### Dropped Files\n\nThis tab contains information related to the Dropped Files from the Malware detonation. This tab will display information like File Name, Size, Type and multiple hash values of each dropped file.\n\n<a href=\"/images/ui/ui_sandbox_dropped.png\" target=\"_blank\"><img src=\"/images/ui/ui_sandbox_dropped.png\" alt=\"Settings Members Tab\" width=\"75%\"/></a>\n\n> Note if you want the dropped file to be detonated in the Sandboxes, perform a Hash Search to lookup that file. On the Hash Search listing, view the Scan results for that file. On that page, you can select the \"Sandbox\" icon in the Actions Pane to submit it for Sandboxing.\n\n### Network Tab\n\nThis tab contains information on IPs, SMTP, Domains and JARM details relating to the Sandboxed Artifact. If no data is present then there is no network information available from the Sandbox for this detonation.\n\n<a href=\"/images/ui/ui_sandbox_network_tab.png\" target=\"_blank\"><img src=\"/images/ui/ui_sandbox_network_tab.png\" alt=\"Settings Members Tab\" width=\"75%\"/></a>\n\n### HTTP Transaction Tab\n\nThis tab contains information HTTP Transactions, this view is only available for Triage Sandboxing sessions.\n\n<a href=\"/images/ui/ui_sandbox_http.png\" target=\"_blank\"><img src=\"/images/ui/ui_sandbox_network_tab.png\" alt=\"Settings Members Tab\" width=\"75%\"/></a>\n\n### Analysis Tab\n\nThis tab contains information on MITRE TTPs used, OS Autorun, Signatures that have been triggered on the Sandbox and Processes. If no data is present then there is no information available for Analysis from the Sandbox for this detonation.\n\n<a href=\"/images/ui/ui_sandbox_analysis.png\" target=\"_blank\"><img src=\"/images/ui/ui_sandbox_analysis.png\" alt=\"Settings Members Tab\" width=\"75%\"/></a>\n\n### JSON Tab\n\nThis tab provides access to the JSON object in relation to the Sandbox detonation, the search field can be used to find specific values and keys. The JSON can be downloaded from this page to be stored locally.\n\n> This JSON is the Summary JSON file for the Sandboxing, to download the Full JSON see the `raw` report in the download tab.\n\n### Download Results Tab\n\nThis tab allows you to download the Sandbox artifacts. These files can be the JARM file, PCAP Files, full JSON Reports and all dropped artifacts. The dropped files will always be downloaded as an encrypted zip file to prevent trigger your local AV engine.\n\nEach of these files can be downloaded as a single zip by using the `zip` tick box at the bottom of the page.\n\n> The `raw` json is the full report created by the Sandbox, while the regular report is the summarized version used to populate the JSON tab.\n\n<a href=\"/images/ui/ui_sandbox_download.png\" target=\"_blank\"><img src=\"/images/ui/ui_sandbox_download.png\" alt=\"Settings Members Tab\" width=\"75%\"/></a>\n\n### Video & Screenshot Tab\n\nThis tab allows you to view the Triage Video OR Cape Screenshots that have been captured from the detonation. \n\n\n\n\n\n\n"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/customers/polyswarm-ui/searching.md","frontmatter":{"title":"Searching","excerpt":"PolySwarm supports both Hash Searching and Metadata Searching..."},"html":"<h1 id=\"searching-with-the-ui\" style=\"position:relative;\"><a href=\"#searching-with-the-ui\" aria-label=\"searching with the ui permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Searching with the UI</h1>\n<p>PolySwarm supports Hash Searching, Metadata Searching and IOC Searching. This section will cover how to use these functions in the UI.</p>\n<button>\n  <a href=\"https://polyswarm.network/search\" target=\"_blank\" rel=\"noopener noreferrer\">\n    Explore PolySwarm Searching\n  </a>\n</button>\n<h2 id=\"hash-searching\" style=\"position:relative;\"><a href=\"#hash-searching\" aria-label=\"hash searching permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Hash Searching</h2>\n<p>Searching by Hash allows you to find Artifacts that match a given hash. We support searching by MD5, SHA1, and SHA256.</p>\n<p>Hashes can be entered into the multi-use text box below the “Select file” button on the <a href=\"https://polyswarm.network/scan\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Scan</a> page.\nThey can also be entered into the text box on the Search page’s <a href=\"https://polyswarm.network/search/hash\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Hash Searching</a> tab.</p>\n<p>On the Hash Searching tab, clicking the \"Search Multiple\" toggle above the search box will allow the user to enter a list of hashes to be searched.\nWhen multiple hashes are searched, the hash results will display in the same order as the list of hashes provided.</p>\n<h3 id=\"hash-search-results\" style=\"position:relative;\"><a href=\"#hash-search-results\" aria-label=\"hash search results permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Hash Search Results</h3>\n<p>Hash search results are listed on the <a href=\"https://polyswarm.network/search/hash\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Search -> Hash Searching</a> tab. The below covers what is displayed in the table once you search a hash.</p>\n<p><a href=\"/images/ui/ui_search_hash.png\" target=\"_blank\"><img src=\"/images/ui/ui_search_hash.png\" alt=\"Searching Hash\" width=\"75%\"/></a></p>\n<table>\n<thead>\n<tr>\n<th>Button</th>\n<th>What is it for?</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Hash</td>\n<td>SHA256 hash of the Artifact with the file MIME type.</td>\n</tr>\n<tr>\n<td>PolyScore</td>\n<td>Threat scoring algorithm that provides the probability that a given file contains Malware. One being the highest number and will contain Malware, Zero being the least chance.</td>\n</tr>\n<tr>\n<td>Scan Date</td>\n<td>Date that the Artifact was last scanned by the Engines.</td>\n</tr>\n<tr>\n<td>Detections</td>\n<td>Detections column shows the engine detection results, which can be one of Four items: <ul><li><strong>M/T (Malicious/Total)</strong> - Where Malicious is the number of engines that found the artifact to be malicious and Total is the total number of engines that analyzed the artifact.</li> <li><strong>Scan Now</strong> - This means we have an artifact matching the hash, but it has not been scanned. Click on \"Scan Now\" to trigger a scan of that artifact.</li> <li><strong>Not Found</strong> - No artifact matching the hash was found.</li> <li><strong>Invalid Hash</strong> - The hash string was not a SHA256, SHA1, or MD5 hash.</li></ul></td>\n</tr>\n<tr>\n<td>Network</td>\n<td>Icons to highlight the available network data via the metadata, if the icon is colored, that type of network data is available: <ul><li><strong>Link Icon</strong> - URL Network Data.</li> <li><strong>Globe Icon</strong> - Domain Network Data.</li> <li><strong>Water Drop</strong> - IP Network Data.</li></ul></td>\n</tr>\n<tr>\n<td>Actions</td>\n<td>The Actions column has an icon that allows you to get more information about the artifact: <ul><li><strong>Down Arrow</strong> - Show Artifact data and data extracted from Static Tools only.</li> <li><strong>Open in New Tab</strong> - Opens the <a href=\"customers/scanning#scan-results-page\">Scan Results Page</a> for that artifact in a new tab, so you can view the metadata related to that artifact.</li> <li><strong>Download</strong> - Download the artifact encapsulated in an encrypted .zip file, which is password protected.</li></ul></td>\n</tr>\n</tbody>\n</table>\n<h2 id=\"metadata-searching\" style=\"position:relative;\"><a href=\"#metadata-searching\" aria-label=\"metadata searching permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Metadata Searching</h2>\n<p>Searching by Metadata allows you to find Artifacts that have a variety of attributes or content.\nWe support queries using the ElasticSearch Query String syntax.</p>\n<p>Metadata searches can be entered into the search bubble on the <a href=\"https://polyswarm.network\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">landing page</a>.\nThey can also be entered into the Search Metadata box on the <a href=\"https://polyswarm.network/search/metadata\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Search -> Metadata Searching</a> tab.\nTo understand how to build out a Metadata query see the <a href=\"/customers/polyswarm-customer-meta-query/#meta-getting-started\">How-To Guide</a>. </p>\n<p>The Search Metadata box records your most recent queries and will suggest them as you type future queries.\nYou can remove queries from the list of recent queries by clicking the \"X\" icon at the far right side of the query entry.</p>\n<h3 id=\"metadata-search-results\" style=\"position:relative;\"><a href=\"#metadata-search-results\" aria-label=\"metadata search results permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Metadata Search Results</h3>\n<p>When a Metadata Search Query is run, the search results will be listed in a table below the Search Metadata box. The below covers what is displayed in the table once you search a hash.</p>\n<p><a href=\"/images/ui/ui_search_meta.png\" target=\"_blank\"><img src=\"/images/ui/ui_search_meta.png\" alt=\"Searching Metadata\" width=\"75%\"/></a></p>\n<table>\n<thead>\n<tr>\n<th>Button</th>\n<th>What is it for?</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Hash</td>\n<td>SHA256 hash of the Artifact with the file MIME type.</td>\n</tr>\n<tr>\n<td>Malware Family</td>\n<td>The Malware Family shows the PolyUnite malware family.</td>\n</tr>\n<tr>\n<td>First Seen</td>\n<td>Date the Artifact was first seen in PolySwarm.</td>\n</tr>\n<tr>\n<td>Last Seen</td>\n<td>Date the Artifact was last seen in PolySwarm.</td>\n</tr>\n<tr>\n<td>PolyScore</td>\n<td>Threat scoring algorithm that provides the probability that a given file contains Malware. One being the highest number and will contain Malware, Zero being the least chance.</td>\n</tr>\n<tr>\n<td>Detections</td>\n<td>Detections column shows M/T (Malicious/Total) where Malicious is the number of engines that found the artifact to be malicious and Total is the total number of engines that analyzed the artifact.</td>\n</tr>\n<tr>\n<td>File Size</td>\n<td>Size of the Artifact File.</td>\n</tr>\n<tr>\n<td>File Type</td>\n<td>File Extension Type of the Artifact.</td>\n</tr>\n<tr>\n<td>Actions</td>\n<td>The Actions column has icon that allow you to get more information about the artifact: <ul><li><strong>Open in New Tab</strong> -  Opens the <a href=\"customers/scanning#scan-results-page\">Scan Results Page</a> for that artifact in a new tab, so you can view the metadata related that artifact.</li> <li><strong>Download</strong> - Download the artifact encapsulated in an encrypted .zip file, which is password protected.</li></ul></td>\n</tr>\n</tbody>\n</table>\n<p>At the top right of the table are buttons that allow you to change how the results are displayed as well as to save the results.</p>\n<ul>\n<li><strong>Gear:</strong> Drop down that allows you to check/un-check column names to hide/unhide them. Plus, you can drag/drop column names in the drop down to re-order them.</li>\n<li><strong>Floppy Disk:</strong> Allows you to save the currently displayed results as a CSV file. Only the data in the visible columns of the current page of results are saved.</li>\n</ul>\n<blockquote>\n<p><strong>Notes:</strong></p>\n<ul>\n<li>The results in the table are sorted with the most recently submitted file first.</li>\n<li>The results are paginated, defaulting to 25 per page.</li>\n<li>You can edit the page size using the dropdown menu in the lower left of the table.</li>\n<li>Next to that are buttons to go to first, previous, and next page of the results.</li>\n</ul>\n</blockquote>\n<div class=\"warning\" markdown=\"1\">\n<blockquote>\n<p>Be aware that each page of metadata search results that is viewed is counted as <strong>one use of your Metadata Search quota</strong>.\nChanging the \"Rows per page\" will reload the page, and also uses one use of your Metadata Search quota.</p>\n</blockquote>\n</div>\n<h2 id=\"ioc-searching\" style=\"position:relative;\"><a href=\"#ioc-searching\" aria-label=\"ioc searching permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>IOC Searching</h2>\n<p>IOC Searching can be split into two types of Searches, these are:</p>\n<ul>\n<li>Searching for Associated IOCs related to a Hash: This returns IOCs that were observed by our sandbox during analysis. These IP's and Domains are classified as C2 or malicious.</li>\n<li>Searching for Associated Hashes related to an IP, URL, imphash or MITRE TTP: This returns file hashes that were seen communicating with the specified IPs or domains in our sandbox — regardless of whether the communication was malicious or not.</li>\n</ul>\n<p>Access the IOC Search Functionality by Navigating to <a href=\"https://polyswarm.network/search/ioc\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Search > IOC Searching</a>.</p>\n<h3 id=\"searching-for-associated-iocs\" style=\"position:relative;\"><a href=\"#searching-for-associated-iocs\" aria-label=\"searching for associated iocs permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Searching for Associated IOCs</h3>\n<p>The Default option for this page is the <code class=\"language-text\">Switch</code> button will be on <code class=\"language-text\">By Hash</code> meaning searching on a Hash will provide a list of associated IOCs.</p>\n<p>Once a hash has been searched, the results page will list the <code class=\"language-text\">imphash</code>, <code class=\"language-text\">urls</code>, <code class=\"language-text\">ips</code> and <code class=\"language-text\">MITRE TTPs</code></p>\n<p><a href=\"/images/ui/ui_search_ioc_hash.png\" target=\"_blank\"><img src=\"/images/ui/ui_search_ioc_hash.png\" alt=\"Searching Associated IOCs\" width=\"75%\"/></a></p>\n<p>These associated items have been extracted from the Metadata for the Artifact and have been discovered by Static Tools and Sandboxing.</p>\n<h3 id=\"searching-for-associated-hashes\" style=\"position:relative;\"><a href=\"#searching-for-associated-hashes\" aria-label=\"searching for associated hashes permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Searching for Associated Hashes</h3>\n<p>Moving the <code class=\"language-text\">Switch</code> to the <code class=\"language-text\">By IOC</code> option will provide the ability to search on a IOC (<code class=\"language-text\">imphash</code>, <code class=\"language-text\">urls</code>, <code class=\"language-text\">ips</code> and <code class=\"language-text\">MITRE TTPs</code>) and find related hashes.</p>\n<p>This page provides the ability to select a <code class=\"language-text\">start</code> and <code class=\"language-text\">end</code> date criteria for the hash results to meet, and choose the IOC type.</p>\n<p>Once an IOC has been searched on, the results table will show a list of sha256 hashes that are associated to the IOC along with the ability to Download the results as a <code class=\"language-text\">csv</code> and view each result in a new tab.</p>\n<p><a href=\"/images/ui/ui_search_ioc_ip.png\" target=\"_blank\"><img src=\"/images/ui/ui_search_ioc_ip.png\" alt=\"Searching Associated Hashes\" width=\"75%\"/></a></p>","rawMarkdownBody":"\n# Searching with the UI\n\nPolySwarm supports Hash Searching, Metadata Searching and IOC Searching. This section will cover how to use these functions in the UI.\n\n<button>\n  <a href=\"https://polyswarm.network/search\" target=\"_blank\" rel=\"noopener noreferrer\">\n    Explore PolySwarm Searching\n  </a>\n</button>\n\n## Hash Searching {#hash-searching}\n\nSearching by Hash allows you to find Artifacts that match a given hash. We support searching by MD5, SHA1, and SHA256.\n\nHashes can be entered into the multi-use text box below the “Select file” button on the [Scan](https://polyswarm.network/scan) page.\nThey can also be entered into the text box on the Search page’s [Hash Searching](https://polyswarm.network/search/hash) tab.\n\nOn the Hash Searching tab, clicking the \"Search Multiple\" toggle above the search box will allow the user to enter a list of hashes to be searched.\nWhen multiple hashes are searched, the hash results will display in the same order as the list of hashes provided.\n\n### Hash Search Results\n\nHash search results are listed on the [Search -> Hash Searching](https://polyswarm.network/search/hash) tab. The below covers what is displayed in the table once you search a hash.\n\n<a href=\"/images/ui/ui_search_hash.png\" target=\"_blank\"><img src=\"/images/ui/ui_search_hash.png\" alt=\"Searching Hash\" width=\"75%\"/></a>\n\n| Button              | What is it for? |\n| ------------------- | -------------------------- |\n| Hash         | SHA256 hash of the Artifact with the file MIME type. |\n| PolyScore        | Threat scoring algorithm that provides the probability that a given file contains Malware. One being the highest number and will contain Malware, Zero being the least chance. |\n| Scan Date        | Date that the Artifact was last scanned by the Engines. |\n| Detections        | Detections column shows the engine detection results, which can be one of Four items: <ul><li>**M/T (Malicious/Total)** - Where Malicious is the number of engines that found the artifact to be malicious and Total is the total number of engines that analyzed the artifact.</li> <li>**Scan Now** - This means we have an artifact matching the hash, but it has not been scanned. Click on \"Scan Now\" to trigger a scan of that artifact.</li> <li>**Not Found** - No artifact matching the hash was found.</li> <li>**Invalid Hash** - The hash string was not a SHA256, SHA1, or MD5 hash.</li></ul> |\n| Network        | Icons to highlight the available network data via the metadata, if the icon is colored, that type of network data is available: <ul><li>**Link Icon** - URL Network Data.</li> <li>**Globe Icon** - Domain Network Data.</li> <li>**Water Drop** - IP Network Data.</li></ul> |\n| Actions        | The Actions column has an icon that allows you to get more information about the artifact: <ul><li>**Down Arrow** - Show Artifact data and data extracted from Static Tools only.</li> <li>**Open in New Tab** - Opens the [Scan Results Page](customers/scanning#scan-results-page) for that artifact in a new tab, so you can view the metadata related to that artifact.</li> <li>**Download** - Download the artifact encapsulated in an encrypted .zip file, which is password protected.</li></ul> |\n\n## Metadata Searching {#metadata-searching}\n\nSearching by Metadata allows you to find Artifacts that have a variety of attributes or content.\nWe support queries using the ElasticSearch Query String syntax.\n\nMetadata searches can be entered into the search bubble on the [landing page](https://polyswarm.network).\nThey can also be entered into the Search Metadata box on the [Search -> Metadata Searching](https://polyswarm.network/search/metadata) tab.\nTo understand how to build out a Metadata query see the [How-To Guide](/customers/polyswarm-customer-meta-query/#meta-getting-started). \n\nThe Search Metadata box records your most recent queries and will suggest them as you type future queries.\nYou can remove queries from the list of recent queries by clicking the \"X\" icon at the far right side of the query entry.\n\n### Metadata Search Results\n\nWhen a Metadata Search Query is run, the search results will be listed in a table below the Search Metadata box. The below covers what is displayed in the table once you search a hash.\n\n<a href=\"/images/ui/ui_search_meta.png\" target=\"_blank\"><img src=\"/images/ui/ui_search_meta.png\" alt=\"Searching Metadata\" width=\"75%\"/></a>\n\n\n| Button              | What is it for? |\n| ------------------- | -------------------------- |\n| Hash         | SHA256 hash of the Artifact with the file MIME type. |\n| Malware Family | The Malware Family shows the PolyUnite malware family. |\n| First Seen | Date the Artifact was first seen in PolySwarm. |\n| Last Seen | Date the Artifact was last seen in PolySwarm. |\n| PolyScore        | Threat scoring algorithm that provides the probability that a given file contains Malware. One being the highest number and will contain Malware, Zero being the least chance. |\n| Detections        | Detections column shows M/T (Malicious/Total) where Malicious is the number of engines that found the artifact to be malicious and Total is the total number of engines that analyzed the artifact.|\n| File Size| Size of the Artifact File. |\n| File Type | File Extension Type of the Artifact. |\n| Actions        | The Actions column has icon that allow you to get more information about the artifact: <ul><li>**Open in New Tab** -  Opens the [Scan Results Page](customers/scanning#scan-results-page) for that artifact in a new tab, so you can view the metadata related that artifact.</li> <li>**Download** - Download the artifact encapsulated in an encrypted .zip file, which is password protected.</li></ul> |\n\nAt the top right of the table are buttons that allow you to change how the results are displayed as well as to save the results.\n\n- **Gear:** Drop down that allows you to check/un-check column names to hide/unhide them. Plus, you can drag/drop column names in the drop down to re-order them.\n- **Floppy Disk:** Allows you to save the currently displayed results as a CSV file. Only the data in the visible columns of the current page of results are saved.\n\n> **Notes:**\n>\n> - The results in the table are sorted with the most recently submitted file first.\n> - The results are paginated, defaulting to 25 per page.\n> - You can edit the page size using the dropdown menu in the lower left of the table.\n> - Next to that are buttons to go to first, previous, and next page of the results.\n\n<div class=\"warning\" markdown=\"1\">\n\n> Be aware that each page of metadata search results that is viewed is counted as **one use of your Metadata Search quota**.\n> Changing the \"Rows per page\" will reload the page, and also uses one use of your Metadata Search quota.\n\n</div>\n\n## IOC Searching {#ioc-searching}\n\nIOC Searching can be split into two types of Searches, these are:\n\n- Searching for Associated IOCs related to a Hash: This returns IOCs that were observed by our sandbox during analysis. These IP's and Domains are classified as C2 or malicious.\n- Searching for Associated Hashes related to an IP, URL, imphash or MITRE TTP: This returns file hashes that were seen communicating with the specified IPs or domains in our sandbox — regardless of whether the communication was malicious or not.\n\nAccess the IOC Search Functionality by Navigating to [Search > IOC Searching](https://polyswarm.network/search/ioc).\n\n### Searching for Associated IOCs\n\nThe Default option for this page is the `Switch` button will be on `By Hash` meaning searching on a Hash will provide a list of associated IOCs.\n\nOnce a hash has been searched, the results page will list the `imphash`, `urls`, `ips` and `MITRE TTPs`\n\n<a href=\"/images/ui/ui_search_ioc_hash.png\" target=\"_blank\"><img src=\"/images/ui/ui_search_ioc_hash.png\" alt=\"Searching Associated IOCs\" width=\"75%\"/></a>\n\nThese associated items have been extracted from the Metadata for the Artifact and have been discovered by Static Tools and Sandboxing.\n\n### Searching for Associated Hashes\n\nMoving the `Switch` to the `By IOC` option will provide the ability to search on a IOC (`imphash`, `urls`, `ips` and `MITRE TTPs`) and find related hashes.\n\nThis page provides the ability to select a `start` and `end` date criteria for the hash results to meet, and choose the IOC type.\n\nOnce an IOC has been searched on, the results table will show a list of sha256 hashes that are associated to the IOC along with the ability to Download the results as a `csv` and view each result in a new tab.\n\n<a href=\"/images/ui/ui_search_ioc_ip.png\" target=\"_blank\"><img src=\"/images/ui/ui_search_ioc_ip.png\" alt=\"Searching Associated Hashes\" width=\"75%\"/></a>\n"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/customers/polyswarm-ui/hunting.md","frontmatter":{"title":"Hunting","excerpt":"On the Hunt page in the PolySwarm UI, we support Live and Historical hunting using YARA Rulesets..."},"html":"<h1 id=\"hunting\" style=\"position:relative;\"><a href=\"#hunting\" aria-label=\"hunting permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Hunting</h1>\n<p>On the <a href=\"https://polyswarm.network/hunt/rulesets\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Hunt</a> page in the PolySwarm UI, we support Live and Historical Hunting using YARA Rulesets. A YARA Ruleset is a text file, traditionally having the .yar extension, that contains one or more YARA rules. Some people refer to the file as a YARA Rules file.</p>\n<button>\n  <a href=\"https://polyswarm.network/hunt/live\" target=\"_blank\" rel=\"noopener noreferrer\">\n    Explore PolySwarm Hunting\n  </a>\n</button>\n<h2 id=\"yara-rules\" style=\"position:relative;\"><a href=\"#yara-rules\" aria-label=\"yara rules permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Yara Rules</h2>\n<p>When performing Live or Historical Hunting, Artifacts are processed by the <a href=\"https://github.com/VirusTotal/yara\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">YARA tool</a> according to the YARA rules contained in the active YARA Ruleset. Writing YARA rules is explained in-depth in the <a href=\"https://yara.readthedocs.io/en/latest/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">YARA documentation</a>. And there are example YARA Rules in the <a href=\"https://github.com/Yara-Rules/rules\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Yara-Rules GitHub repository</a>.</p>\n<p>Yara Rulesets are managed on the Hunt page’s Ruleset and Hunt Management tab.</p>\n<h3 id=\"adding-rulesets\" style=\"position:relative;\"><a href=\"#adding-rulesets\" aria-label=\"adding rulesets permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Adding Rulesets</h3>\n<p>If you have not added any Rulesets, there is a large “Add Rulesets” button on the <a href=\"https://polyswarm.network/hunt/rulesets\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Rulesets and Hunt Management</a> tab to add your first Ruleset. If you’ve already added one or more rulesets, there is a “+” button in the upper right to add additional Rulesets.</p>\n<p>All Rulesets need a Name. The Description field is optional, but can be helpful to remember details about your rules. And finally there is the large text box to enter the YARA Rules.</p>\n<p>You have 2 options to enter the Rules:</p>\n<ol>\n<li>You can paste your Rules into the large text box.</li>\n<li>You can click the small “+” button in the lower right corner of the large text box to select a YARA Ruleset file from your computer to upload as your Ruleset.</li>\n</ol>\n<p>Click the Save button to save the Ruleset.</p>\n<h3 id=\"validating-rulesets\" style=\"position:relative;\"><a href=\"#validating-rulesets\" aria-label=\"validating rulesets permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Validating Rulesets</h3>\n<p>When one or more Rules have been entered into the large Rules text box, the button in the bottom right changes from a “+” button to a “Validate” button. Click the Validate button to validate the syntax of your Ruleset. If you click outside of the Rules area after entering rules, the validation will automatically run for you. Once you have a valid Ruleset, click the Save button to save it.</p>\n<h3 id=\"actions\" style=\"position:relative;\"><a href=\"#actions\" aria-label=\"actions permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Actions</h3>\n<p>Actions exist for each Ruleset, the following highlight the functionality of these options.</p>\n<p><a href=\"/images/ui/ui_hunting_actions.png\" target=\"_blank\"><img src=\"/images/ui/ui_hunting_actions.png\" alt=\"Hunting Ruleset Actions\" width=\"75%\"/></a></p>\n<h4 id=\"viewing--editing-rulesets\" style=\"position:relative;\"><a href=\"#viewing--editing-rulesets\" aria-label=\"viewing  editing rulesets permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Viewing / Editing Rulesets</h4>\n<p>You can view and edit an existing Ruleset by clicking on the <strong>pencil</strong> icon in the Actions column.\nIf you have a Live Hunt running, the pencil icon is disabled.\nYou must stop the Live Hunt before you can edit the Ruleset.</p>\n<h4 id=\"duplicating-rulesets\" style=\"position:relative;\"><a href=\"#duplicating-rulesets\" aria-label=\"duplicating rulesets permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Duplicating Rulesets</h4>\n<p>You can copy and duplicate an existing Ruleset by clicking on the <strong>copy</strong> icon in the Actions column.\nClicking that icon will open the Create Ruleset window enabling you to create a new ruleset where the initial data is pre-filled using the data from this existing Ruleset.\nMake your changes, then click the Save button.</p>\n<h4 id=\"deleting-rulesets\" style=\"position:relative;\"><a href=\"#deleting-rulesets\" aria-label=\"deleting rulesets permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Deleting Rulesets</h4>\n<p>You can delete an existing Ruleset by clicking on the <strong>trash</strong> can icon in the Actions column, if the trash icon is disabled there is a Live Hunt running.\nIf there is a running Live Hunt using this Ruleset, you must stop the Live Hunt before you can delete the Ruleset.</p>\n<h4 id=\"running-a-hunt-using-a-ruleset\" style=\"position:relative;\"><a href=\"#running-a-hunt-using-a-ruleset\" aria-label=\"running a hunt using a ruleset permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Running a Hunt using a Ruleset</h4>\n<p>You can start a Live Hunt using a Ruleset by simply clicking the toggle button to the \"on\" position.\nYou can start a Historical Hunt using a Ruleset by clicking on the <strong>running man</strong> icon in the Actions column.</p>\n<p>It is important to note that you cannot edit or delete a Ruleset while a Live Hunt is running.\nWe store the contents of the Ruleset used at the time the Live or Historical Hunt is started.\nSo when you view Hunt results, you are always able to reference the exact Ruleset that was used to run the Hunt.</p>\n<h2 id=\"live-hunting\" style=\"position:relative;\"><a href=\"#live-hunting\" aria-label=\"live hunting permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Live Hunting</h2>\n<p>Live Hunting is a technique to use YARA Rules to examine new artifacts as they are submitted.\nWhen an artifact matches the Ruleset used in a Live Hunt, a new row is added to the Live Hunting Feed.</p>\n<h3 id=\"viewing-live-hunting-matches\" style=\"position:relative;\"><a href=\"#viewing-live-hunting-matches\" aria-label=\"viewing live hunting matches permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Viewing Live Hunting Matches</h3>\n<p>The <a href=\"https://polyswarm.network/hunt/live\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Live Hunting Feed</a> tab shows all Live Hunting matches as a continuous feed.\nThe Live Hunt matches for all your active Live Hunts are displayed in the feed as a single listing in reverse chronological ordering.</p>\n<h5 id=\"table-of-matches\" style=\"position:relative;\"><a href=\"#table-of-matches\" aria-label=\"table of matches permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Table of Matches</h5>\n<p>Each row in the table is a match for a Live Hunt.\nThe row contains several key pieces of data and some Action buttons.</p>\n<p><a href=\"/images/ui/ui_live_hunt.png\" target=\"_blank\"><img src=\"/images/ui/ui_live_hunt.png\" alt=\"Hunting Live Hunts\" width=\"75%\"/></a></p>\n<table>\n<thead>\n<tr>\n<th>Column</th>\n<th>What is it for?</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Checkboxes</td>\n<td>Checking one or more of these boxes activates 2 buttons in the upper right.<ul><li><strong>Save:</strong> It allows you to download a .CSV file containing the matches that you have checked.</li><li><strong>Delete:</strong> It allows you to delete the matches that you have checked.</li></ul></td>\n</tr>\n<tr>\n<td>Rule Name</td>\n<td>Column contains the name of the Rule that triggered the match.</td>\n</tr>\n<tr>\n<td>SHA256</td>\n<td>Column is the SHA256 of the matching artifact. There is a copy icon that will copy the hash to your clipboard.</td>\n</tr>\n<tr>\n<td>Malware Family Name</td>\n<td>Column is the name of Malware Family associated with the artifact that matched the Rule. If the artifact was determined to be Benign, it is possible that the Malware Family name is blank.</td>\n</tr>\n<tr>\n<td>PolyScore</td>\n<td>Column shows the PolyScore for each match.</td>\n</tr>\n<tr>\n<td>Detections</td>\n<td>Column shows the number of malicious assertions / total assertions for the matched artifact.</td>\n</tr>\n<tr>\n<td>Matched On</td>\n<td>Is the date or relative time when the match happened.</td>\n</tr>\n<tr>\n<td>Actions</td>\n<td>Along the right side is the <strong>Actions</strong> column with several buttons. <ul><li><code class=\"language-text\">Open in New Tab Icon</code> - Opens the <a href=\"customers/scanning#scan-results-page\">Scan Results Page</a> for that artifact in a new tab, so you can view the metadata related that artifact. </li><li><code class=\"language-text\">Download Icon</code> - Download the artifact encapsulated in an encrypted .zip file, which is password protected..</li><li><code class=\"language-text\">View Ruleset Icon</code> - View the Ruleset used by the associated Live Hunt. </li><li><code class=\"language-text\">Info Icon</code> - Show Live Hunt Info. </li><li><code class=\"language-text\">Delete Icon</code> - Delete the match.</li></ul></td>\n</tr>\n</tbody>\n</table>\n<h5 id=\"filter\" style=\"position:relative;\"><a href=\"#filter\" aria-label=\"filter permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Filter</h5>\n<p>In the upper right above the table is the <strong>Filter</strong>.\nYou can define a Filter to limit the set of matches displayed in the table of matches.\nThe Filter currently supports filtering by:</p>\n<ul>\n<li>Rule Name</li>\n<li>Malware Family Name</li>\n<li>PolyScore</li>\n</ul>\n<h3 id=\"starting-and-stopping-a-live-hunt\" style=\"position:relative;\"><a href=\"#starting-and-stopping-a-live-hunt\" aria-label=\"starting and stopping a live hunt permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Starting and Stopping a Live Hunt</h3>\n<p>You can start a Live Hunt using a Ruleset by simply clicking the toggle button to the \"on\" position.\nAnd stop it by toggling to the \"off\" position.\nStopping a Live Hunt does NOT delete any of the matches from that Hunt.\nLive Hunt matches are always available in the Live Hunting Feed until you delete them.</p>\n<h2 id=\"historical-hunting\" style=\"position:relative;\"><a href=\"#historical-hunting\" aria-label=\"historical hunting permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Historical Hunting</h2>\n<p>Historical Hunting is a technique to use YARA Rules to examine artifacts that were submitted in the past.\nCurrently, Historical Hunts evaluate all artifacts submitted over the past 6 months.</p>\n<h3 id=\"viewing-historical-hunts\" style=\"position:relative;\"><a href=\"#viewing-historical-hunts\" aria-label=\"viewing historical hunts permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Viewing Historical Hunts</h3>\n<p>The <a href=\"https://polyswarm.network/hunt/historical\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Historical Hunts</a> tab allows you to view/manage Historical Hunts and their Matches.</p>\n<p>Each row in the table is a Historical Hunt.\nThe row contains several key pieces of data about the Historical Hunt and some Action buttons.</p>\n<p><a href=\"/images/ui/ui_hist_hunt.png\" target=\"_blank\"><img src=\"/images/ui/ui_hist_hunt.png\" alt=\"Hunting Historical Hunts\" width=\"75%\"/></a></p>\n<table>\n<thead>\n<tr>\n<th>Column</th>\n<th>What is it for?</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Checkboxes</td>\n<td>Checking one or more of these boxes activates the delete button in the upper right. This allows you to delete the Historical Hunt(s) that you have checked, along with all matches for the selected Historical Hunt(s).</td>\n</tr>\n<tr>\n<td>Status</td>\n<td>Status column indicates the completion percentage and status of the Hunt: <ul><li><strong>Pending</strong> - Historical Hunt is queued to run at the next launch interval. Percentage complete will be 0%.</li><li><strong>Running</strong> - Historical Hunt is currently running. Percentage complete will indicate the percentage of artifacts that have been processed.</li><li><strong>Completed</strong> - Historical Hunt completed successfully. Percentage complete will be 100%.</li><li><strong>Cancelled</strong> - Historical Hunt was cancelled by user clicking the hand icon. Percentage complete will indicate the percentage of artifacts that were processed before the Hunt was stopped.</li><li><strong>Stopped</strong> - Historical Hunt was stopped due to exceeding match limit (current limit is 10,000 matches) and is pending shutdown.</li><li><strong>Limited</strong> - Historical Hunt was stopped due to the match limit and has completed shutdown. The percentage displayed is the percentage of artifacts that were processed before the Hunt was stopped.</li><li><strong>Failed</strong> - Historical Hunt ended with a failure condition. This should be rare since we will retry the Hunt under most failure conditions.</li><li><strong>Deleting</strong> - Historical Hunt is in the process of being deleted. User clicked the Delete button on this Historical Hunt. Due to the fact that Historical Hunts might have a large number of results, deletions are done asynchronously.</li></ul></td>\n</tr>\n<tr>\n<td>Historical Hunt Name</td>\n<td>Contains the name of the Historical Hunt.</td>\n</tr>\n<tr>\n<td>Matches</td>\n<td>Column indicates the number of matches for this Hunt. This value is computed when the Hunt has finished.</td>\n</tr>\n<tr>\n<td>Created</td>\n<td>Column indicates the date or relative time when the Hunt was started.</td>\n</tr>\n<tr>\n<td>Actions</td>\n<td>Along the right side is the <strong>Actions</strong> column with several buttons. <ul><li><code class=\"language-text\">Floppy Disk Icon</code> - Download the matches for this Hunt as a CSV file. This is available once the Hunt has finished.</li><li><code class=\"language-text\">Hand Icon</code> - Cancel a Hunt. If it has started it will stop. If it is pending it will not run.</li><li><code class=\"language-text\">List Icon</code> - View the Ruleset that is used by the Historical Hunt.</li><li><code class=\"language-text\">Info Icon</code> - Show Historical Hunt Info. Once the Hunt has finished, this will include a table showing the number of matches for each Rule Name in the Ruleset for the Hunt.</li><li><code class=\"language-text\">Delete Icon</code> - Delete the Historical Hunt and all matches. You can only delete a Hunt that is not running.</li></ul></td>\n</tr>\n</tbody>\n</table>\n<h5 id=\"deleting-a-historical-hunt\" style=\"position:relative;\"><a href=\"#deleting-a-historical-hunt\" aria-label=\"deleting a historical hunt permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Deleting a Historical Hunt</h5>\n<p>To delete a Historical Hunt, click on the “trash can” button in the Action column on the right side of the row. This will delete the Hunt and all of the results in that hunt.\nYou can only delete a Hunt that is not running.</p>\n<h4 id=\"viewing-historical-hunting-matches\" style=\"position:relative;\"><a href=\"#viewing-historical-hunting-matches\" aria-label=\"viewing historical hunting matches permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Viewing Historical Hunting Matches</h4>\n<p>Clicking on the row for a Hunt will display a new table that contains Historical Hunt matches.\nThese Results are paginated, so you can choose the quantity to view and move between pages of matches.</p>\n<h5 id=\"table-of-matches-1\" style=\"position:relative;\"><a href=\"#table-of-matches-1\" aria-label=\"table of matches 1 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Table of Matches</h5>\n<p>Each row in the table is a match for the chosen Historical Hunt.\nThe row contains several key pieces of data and some Action buttons.</p>\n<p><a href=\"/images/ui/ui_hist_hunt_result.png\" target=\"_blank\"><img src=\"/images/ui/ui_hist_hunt_result.png\" alt=\"Hunting Historical Hunts - Results\" width=\"75%\"/></a></p>\n<table>\n<thead>\n<tr>\n<th>Column</th>\n<th>What is it for?</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Checkboxes</td>\n<td>Checking one or more of these boxes activates 2 buttons in the upper right.<ul><li><strong>Save:</strong>It allows you to download a .CSV file containing the matches that you have checked.</li><li><strong>Delete:</strong> It allows you to delete the matches that you have checked.</li></ul></td>\n</tr>\n<tr>\n<td>Rule Name</td>\n<td>Column contains the name of the Rule that triggered the match.</td>\n</tr>\n<tr>\n<td>SHA256</td>\n<td>Column is the SHA256 of the matching artifact. There is a copy icon that will copy the hash to your clipboard.</td>\n</tr>\n<tr>\n<td>Malware Family Name</td>\n<td>Column is the name of Malware Family associated with the artifact that matched the Rule. If the artifact was determined to be Benign, it is possible that the Malware Family name is blank.</td>\n</tr>\n<tr>\n<td>PolyScore</td>\n<td>Column shows the PolyScore for each match.</td>\n</tr>\n<tr>\n<td>Detections</td>\n<td>Column shows the number of malicious assertions / total assertions for the matched artifact.</td>\n</tr>\n<tr>\n<td>Matched On</td>\n<td>Is the date or relative time when the match happened.</td>\n</tr>\n<tr>\n<td>Actions</td>\n<td>Along the right side is the <strong>Actions</strong> column with several buttons. <ul><li><code class=\"language-text\">Open in New Window Icon</code> - Open Scan Results page for the matching artifact in New Tab/Window. </li><li><code class=\"language-text\">Download Icon</code> - Download the matching artifact binary</li><li><code class=\"language-text\">View Ruleset Icon</code> - View the Ruleset used by the associated Live Hunt. </li><li><code class=\"language-text\">Info Icon</code> - Show Historical Hunt Info. </li><li><code class=\"language-text\">Delete Icon</code> - Delete the match.</li></ul></td>\n</tr>\n</tbody>\n</table>\n<h5 id=\"filter-1\" style=\"position:relative;\"><a href=\"#filter-1\" aria-label=\"filter 1 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Filter</h5>\n<p>In the upper right above the table is the Filter.\nYou can define a Filter to limit the set of matches displayed in the table of matches.\nThe Filter currently supports filtering by:</p>\n<ul>\n<li>Rule Name</li>\n<li>Malware Family Name</li>\n<li>PolyScore</li>\n</ul>\n<h5 id=\"deleting-historical-hunt-matches\" style=\"position:relative;\"><a href=\"#deleting-historical-hunt-matches\" aria-label=\"deleting historical hunt matches permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Deleting Historical Hunt Matches</h5>\n<p>Using the Historical Hunt matches table, you can delete matches one at a time, or in bulk.\nTo delete one at a time, click on the delete icon in the Actions column on the right side of the row.\nTo delete in bulk, check one or more of the checkboxes in the first column and then click on the delete icon in the upper right.</p>","rawMarkdownBody":"\n# Hunting\n\nOn the [Hunt](https://polyswarm.network/hunt/rulesets) page in the PolySwarm UI, we support Live and Historical Hunting using YARA Rulesets. A YARA Ruleset is a text file, traditionally having the .yar extension, that contains one or more YARA rules. Some people refer to the file as a YARA Rules file.\n\n<button>\n  <a href=\"https://polyswarm.network/hunt/live\" target=\"_blank\" rel=\"noopener noreferrer\">\n    Explore PolySwarm Hunting\n  </a>\n</button>\n\n## Yara Rules {#yara-rules}\n\nWhen performing Live or Historical Hunting, Artifacts are processed by the [YARA tool](https://github.com/VirusTotal/yara) according to the YARA rules contained in the active YARA Ruleset. Writing YARA rules is explained in-depth in the [YARA documentation](https://yara.readthedocs.io/en/latest/). And there are example YARA Rules in the [Yara-Rules GitHub repository](https://github.com/Yara-Rules/rules).\n\nYara Rulesets are managed on the Hunt page’s Ruleset and Hunt Management tab.\n\n### Adding Rulesets\n\nIf you have not added any Rulesets, there is a large “Add Rulesets” button on the [Rulesets and Hunt Management](https://polyswarm.network/hunt/rulesets) tab to add your first Ruleset. If you’ve already added one or more rulesets, there is a “+” button in the upper right to add additional Rulesets.\n\nAll Rulesets need a Name. The Description field is optional, but can be helpful to remember details about your rules. And finally there is the large text box to enter the YARA Rules.\n\nYou have 2 options to enter the Rules:\n\n1. You can paste your Rules into the large text box.\n2. You can click the small “+” button in the lower right corner of the large text box to select a YARA Ruleset file from your computer to upload as your Ruleset.\n\nClick the Save button to save the Ruleset.\n\n### Validating Rulesets\n\nWhen one or more Rules have been entered into the large Rules text box, the button in the bottom right changes from a “+” button to a “Validate” button. Click the Validate button to validate the syntax of your Ruleset. If you click outside of the Rules area after entering rules, the validation will automatically run for you. Once you have a valid Ruleset, click the Save button to save it.\n\n### Actions\n\nActions exist for each Ruleset, the following highlight the functionality of these options.\n\n<a href=\"/images/ui/ui_hunting_actions.png\" target=\"_blank\"><img src=\"/images/ui/ui_hunting_actions.png\" alt=\"Hunting Ruleset Actions\" width=\"75%\"/></a>\n\n#### Viewing / Editing Rulesets\n\nYou can view and edit an existing Ruleset by clicking on the **pencil** icon in the Actions column.\nIf you have a Live Hunt running, the pencil icon is disabled.\nYou must stop the Live Hunt before you can edit the Ruleset.\n\n#### Duplicating Rulesets\n\nYou can copy and duplicate an existing Ruleset by clicking on the **copy** icon in the Actions column.\nClicking that icon will open the Create Ruleset window enabling you to create a new ruleset where the initial data is pre-filled using the data from this existing Ruleset.\nMake your changes, then click the Save button.\n\n#### Deleting Rulesets\n\nYou can delete an existing Ruleset by clicking on the **trash** can icon in the Actions column, if the trash icon is disabled there is a Live Hunt running.\nIf there is a running Live Hunt using this Ruleset, you must stop the Live Hunt before you can delete the Ruleset.\n\n#### Running a Hunt using a Ruleset\n\nYou can start a Live Hunt using a Ruleset by simply clicking the toggle button to the \"on\" position.\nYou can start a Historical Hunt using a Ruleset by clicking on the **running man** icon in the Actions column.\n\nIt is important to note that you cannot edit or delete a Ruleset while a Live Hunt is running.\nWe store the contents of the Ruleset used at the time the Live or Historical Hunt is started.\nSo when you view Hunt results, you are always able to reference the exact Ruleset that was used to run the Hunt.\n\n## Live Hunting {#live-hunting}\n\nLive Hunting is a technique to use YARA Rules to examine new artifacts as they are submitted.\nWhen an artifact matches the Ruleset used in a Live Hunt, a new row is added to the Live Hunting Feed.\n\n### Viewing Live Hunting Matches\n\nThe [Live Hunting Feed](https://polyswarm.network/hunt/live) tab shows all Live Hunting matches as a continuous feed.\nThe Live Hunt matches for all your active Live Hunts are displayed in the feed as a single listing in reverse chronological ordering.\n\n##### Table of Matches\n\nEach row in the table is a match for a Live Hunt.\nThe row contains several key pieces of data and some Action buttons.\n\n<a href=\"/images/ui/ui_live_hunt.png\" target=\"_blank\"><img src=\"/images/ui/ui_live_hunt.png\" alt=\"Hunting Live Hunts\" width=\"75%\"/></a>\n\n| Column              | What is it for? |\n| ------------------- | -------------------------- |\n| Checkboxes          | Checking one or more of these boxes activates 2 buttons in the upper right.<ul><li>**Save:** It allows you to download a .CSV file containing the matches that you have checked.</li><li>**Delete:** It allows you to delete the matches that you have checked.</li></ul> |\n| Rule Name           | Column contains the name of the Rule that triggered the match.  |\n| SHA256              | Column is the SHA256 of the matching artifact. There is a copy icon that will copy the hash to your clipboard.  |\n| Malware Family Name | Column is the name of Malware Family associated with the artifact that matched the Rule. If the artifact was determined to be Benign, it is possible that the Malware Family name is blank. |\n| PolyScore           | Column shows the PolyScore for each match. |\n| Detections          | Column shows the number of malicious assertions / total assertions for the matched artifact. |\n| Matched On          | Is the date or relative time when the match happened.|\n| Actions              | Along the right side is the **Actions** column with several buttons. <ul><li>`Open in New Tab Icon` - Opens the [Scan Results Page](customers/scanning#scan-results-page) for that artifact in a new tab, so you can view the metadata related that artifact. </li><li>`Download Icon` - Download the artifact encapsulated in an encrypted .zip file, which is password protected..</li><li>`View Ruleset Icon` - View the Ruleset used by the associated Live Hunt. </li><li>`Info Icon` - Show Live Hunt Info. </li><li>`Delete Icon` - Delete the match.</li></ul>                     |\n\n##### Filter\n\nIn the upper right above the table is the **Filter**.\nYou can define a Filter to limit the set of matches displayed in the table of matches.\nThe Filter currently supports filtering by:\n\n- Rule Name\n- Malware Family Name\n- PolyScore\n\n### Starting and Stopping a Live Hunt\n\nYou can start a Live Hunt using a Ruleset by simply clicking the toggle button to the \"on\" position.\nAnd stop it by toggling to the \"off\" position.\nStopping a Live Hunt does NOT delete any of the matches from that Hunt.\nLive Hunt matches are always available in the Live Hunting Feed until you delete them.\n\n## Historical Hunting {#historical-hunting}\n\nHistorical Hunting is a technique to use YARA Rules to examine artifacts that were submitted in the past.\nCurrently, Historical Hunts evaluate all artifacts submitted over the past 6 months.\n\n### Viewing Historical Hunts\n\nThe [Historical Hunts](https://polyswarm.network/hunt/historical) tab allows you to view/manage Historical Hunts and their Matches.\n\nEach row in the table is a Historical Hunt.\nThe row contains several key pieces of data about the Historical Hunt and some Action buttons.\n\n<a href=\"/images/ui/ui_hist_hunt.png\" target=\"_blank\"><img src=\"/images/ui/ui_hist_hunt.png\" alt=\"Hunting Historical Hunts\" width=\"75%\"/></a>\n\n| Column               | What is it for?                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |\n| -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Checkboxes           | Checking one or more of these boxes activates the delete button in the upper right. This allows you to delete the Historical Hunt(s) that you have checked, along with all matches for the selected Historical Hunt(s).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |\n| Status               | Status column indicates the completion percentage and status of the Hunt: <ul><li>**Pending** - Historical Hunt is queued to run at the next launch interval. Percentage complete will be 0%.</li><li>**Running** - Historical Hunt is currently running. Percentage complete will indicate the percentage of artifacts that have been processed.</li><li>**Completed** - Historical Hunt completed successfully. Percentage complete will be 100%.</li><li>**Cancelled** - Historical Hunt was cancelled by user clicking the hand icon. Percentage complete will indicate the percentage of artifacts that were processed before the Hunt was stopped.</li><li>**Stopped** - Historical Hunt was stopped due to exceeding match limit (current limit is 10,000 matches) and is pending shutdown.</li><li>**Limited** - Historical Hunt was stopped due to the match limit and has completed shutdown. The percentage displayed is the percentage of artifacts that were processed before the Hunt was stopped.</li><li>**Failed** - Historical Hunt ended with a failure condition. This should be rare since we will retry the Hunt under most failure conditions.</li><li>**Deleting** - Historical Hunt is in the process of being deleted. User clicked the Delete button on this Historical Hunt. Due to the fact that Historical Hunts might have a large number of results, deletions are done asynchronously.</li></ul> |\n| Historical Hunt Name | Contains the name of the Historical Hunt.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |\n| Matches              | Column indicates the number of matches for this Hunt. This value is computed when the Hunt has finished.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |\n| Created              | Column indicates the date or relative time when the Hunt was started.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |\n| Actions              | Along the right side is the **Actions** column with several buttons. <ul><li>`Floppy Disk Icon` - Download the matches for this Hunt as a CSV file. This is available once the Hunt has finished.</li><li>`Hand Icon` - Cancel a Hunt. If it has started it will stop. If it is pending it will not run.</li><li>`List Icon` - View the Ruleset that is used by the Historical Hunt.</li><li>`Info Icon` - Show Historical Hunt Info. Once the Hunt has finished, this will include a table showing the number of matches for each Rule Name in the Ruleset for the Hunt.</li><li>`Delete Icon` - Delete the Historical Hunt and all matches. You can only delete a Hunt that is not running.</li></ul>                    |\n\n##### Deleting a Historical Hunt\n\nTo delete a Historical Hunt, click on the “trash can” button in the Action column on the right side of the row. This will delete the Hunt and all of the results in that hunt.\nYou can only delete a Hunt that is not running.\n\n#### Viewing Historical Hunting Matches\n\nClicking on the row for a Hunt will display a new table that contains Historical Hunt matches.\nThese Results are paginated, so you can choose the quantity to view and move between pages of matches.\n\n##### Table of Matches\n\nEach row in the table is a match for the chosen Historical Hunt.\nThe row contains several key pieces of data and some Action buttons.\n\n<a href=\"/images/ui/ui_hist_hunt_result.png\" target=\"_blank\"><img src=\"/images/ui/ui_hist_hunt_result.png\" alt=\"Hunting Historical Hunts - Results\" width=\"75%\"/></a>\n\n| Column              | What is it for?                                                                                                                                                                                                                                                                                                                                                                                                                        |\n| ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Checkboxes          | Checking one or more of these boxes activates 2 buttons in the upper right.<ul><li>**Save:**It allows you to download a .CSV file containing the matches that you have checked.</li><li>**Delete:** It allows you to delete the matches that you have checked.</li></ul>                                                                                                                                                               |\n| Rule Name           | Column contains the name of the Rule that triggered the match.                                                                                                                                                                                                                                                                                                                                                                         |\n| SHA256              | Column is the SHA256 of the matching artifact. There is a copy icon that will copy the hash to your clipboard.                                                                                                                                                                                                                                                                                                                         |\n| Malware Family Name | Column is the name of Malware Family associated with the artifact that matched the Rule. If the artifact was determined to be Benign, it is possible that the Malware Family name is blank.                                                                                                                                                                                                                                            |\n| PolyScore           | Column shows the PolyScore for each match.                                                                                                                                                                                                                                                                                                                                                                                             |\n| Detections          | Column shows the number of malicious assertions / total assertions for the matched artifact.                                                                                                                                                                                                                                                                                                                                           |\n| Matched On          | Is the date or relative time when the match happened.                                                                                                                                                                                                                                                                                                                                                                                  |\n| Actions             | Along the right side is the **Actions** column with several buttons. <ul><li>`Open in New Window Icon` - Open Scan Results page for the matching artifact in New Tab/Window. </li><li>`Download Icon` - Download the matching artifact binary</li><li>`View Ruleset Icon ` - View the Ruleset used by the associated Live Hunt. </li><li>`Info Icon` - Show Historical Hunt Info. </li><li>`Delete Icon` - Delete the match.</li></ul> |\n\n##### Filter\n\nIn the upper right above the table is the Filter.\nYou can define a Filter to limit the set of matches displayed in the table of matches.\nThe Filter currently supports filtering by:\n\n- Rule Name\n- Malware Family Name\n- PolyScore\n\n##### Deleting Historical Hunt Matches\n\nUsing the Historical Hunt matches table, you can delete matches one at a time, or in bulk.\nTo delete one at a time, click on the delete icon in the Actions column on the right side of the row.\nTo delete in bulk, check one or more of the checkboxes in the first column and then click on the delete icon in the upper right.\n"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/customers/polyswarm-ui/subscription-plans.md","frontmatter":{"title":"PolySwarm Plans","excerpt":"In PolySwarm UI, the Pricing page lists PolySwarm's plans."},"html":"<h1 id=\"polyswarm-plans\" style=\"position:relative;\"><a href=\"#polyswarm-plans\" aria-label=\"polyswarm plans permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>PolySwarm Plans</h1>\n<p>In PolySwarm UI, the <a href=\"https://polyswarm.network/pricing\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Pricing</a> page lists PolySwarm's plans.</p>\n<h2 id=\"available-plans\" style=\"position:relative;\"><a href=\"#available-plans\" aria-label=\"available plans permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Available Plans</h2>\n<p>PolySwarm provides multiple plans.</p>\n<ul>\n<li>Individual Plans - These are paid plans available for User Accounts.</li>\n<li>Enterprise Plans - These are paid plans available for User and Team Accounts.</li>\n</ul>\n<p>The \"Community\" Plan  is the default plan for both User and Team Accounts.\nThis plan is free, but the user must be logged into their User Account when using PolySwarm UI.\nUsage limits are higher than for anonymous usage, but less than all paid plans.</p>\n<h3 id=\"components-of-a-plan\" style=\"position:relative;\"><a href=\"#components-of-a-plan\" aria-label=\"components of a plan permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Components of a Plan</h3>\n<ul>\n<li>Quota Usage Period</li>\n<li>Billing Cycle</li>\n<li>Daily API usage limit</li>\n<li>One or more features</li>\n<li>Usage limit for each feature</li>\n</ul>\n<h4 id=\"quota-usage-period\" style=\"position:relative;\"><a href=\"#quota-usage-period\" aria-label=\"quota usage period permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Quota Usage Period</h4>\n<p>The Quota Usage Period is the period of time until the Monthly Quota is reset.\nThe Monthly Quota used resets every 30 days, regardless of the Subscription Plan.\nA Quota Usage Period starts on the date and time the Plan Subscription is activated and ends on every subsequent 30th day at the same time.</p>\n<h4 id=\"billing-cycle\" style=\"position:relative;\"><a href=\"#billing-cycle\" aria-label=\"billing cycle permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Billing Cycle</h4>\n<p>Plan subscription durations can be either month-to-month or annual.\nMonth-to-Month has a 30-day cycle, while Annual has a 360-day cycle.</p>\n<h5 id=\"month-to-month-subscription\" style=\"position:relative;\"><a href=\"#month-to-month-subscription\" aria-label=\"month to month subscription permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Month-To-Month Subscription</h5>\n<p><em>Term</em></p>\n<p>This subscription has a term of 30 consecutive days, which is one Usage Period.\nThe term starts on the date and time the subscription is activated and ends on the 30th day at the same time.</p>\n<p><em>Renewal</em></p>\n<p>At the end of each term, the subscription automatically renews at the same rate for one more term.\nAnytime during the term, the user can cancel the automatic renewal of the subscription, such that at the end of that term it will not automatically renew.</p>\n<p><em>Invoicing</em></p>\n<p>The cost of the subscription is charged at the start of each term.</p>\n<h5 id=\"annual-subscription\" style=\"position:relative;\"><a href=\"#annual-subscription\" aria-label=\"annual subscription permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Annual Subscription</h5>\n<p><em>Term</em></p>\n<p>This subscription has a term of 360 days, which is 12 Usage Periods.\nThe term starts on the date and time the subscription is activated and ends on the 360th day at the same time.</p>\n<p><em>Renewal</em></p>\n<p>At the end of each term, the subscription automatically renews at the same rate for one more term.\nAnytime during the term, the user can cancel the automatic renewal of the subscription, such that at the end of that term it will not automatically renew.</p>\n<p><em>Invoicing</em></p>\n<p>The cost of the subscription is charged at the start of each term.</p>\n<h4 id=\"daily-api-usage-limit\" style=\"position:relative;\"><a href=\"#daily-api-usage-limit\" aria-label=\"daily api usage limit permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Daily API Usage Limit</h4>\n<p>Each plan has a fixed Daily API usage limit.\nThis limit is the maximum number of total feature usages per 24-hour period.\nThis limit overrides all feature usage limits and is cumulative for all features.\nThe only method to increase the Daily API Usage limit is to purchase a plan with a higher limit.</p>\n<h4 id=\"quota-usage-limits\" style=\"position:relative;\"><a href=\"#quota-usage-limits\" aria-label=\"quota usage limits permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Quota Usage Limits</h4>\n<p>Each Feature has a Quota Usage Limit that defines the quantity of usage available during each Quota Usage Period.\nEach subsequent Quota Usage Period will cause the Quota Usage to reset to the limits according to the active plan.\nThe quota usage limit of each feature is independent of the quota usage limit of all other features.</p>\n<h2 id=\"comparing\" style=\"position:relative;\"><a href=\"#comparing\" aria-label=\"comparing permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Comparing</h2>\n<p>The left column of the Compare Plans table lists each feature that PolySwarm offers.\nSelecting the small info icon will display the description of that feature.\nPolySwarm occasionally offers a free trial, contact us to ask for more information.</p>\n<h2 id=\"selecting\" style=\"position:relative;\"><a href=\"#selecting\" aria-label=\"selecting permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Selecting</h2>\n<p>All new User Accounts and Team Accounts have the “Community” plan.\nThis allows all users to enjoy the base functionality of the platform for free.\nOnce the account is created, the plan can be upgraded to a paid plan.</p>\n<p>If you'd like to do a Free Trial, PolySwarm will work with you to set up a trial.</p>\n<h3 id=\"free-trial\" style=\"position:relative;\"><a href=\"#free-trial\" aria-label=\"free trial permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Free Trial</h3>\n<p>During the free trial, your account will have the Daily API Limit and all Quota Usage Limits based on the trial plan.\nWhen the trial is over, your account will revert to the free Community plan, so the Daily API Limit and all Quota Usage Limits will be replaced by those from the Community plan.\nAny features not included in the Community plan will become unavailable.\nIf you want access to other features or higher usage limits, you will need to purchase a paid plan.</p>\n<h2 id=\"using\" style=\"position:relative;\"><a href=\"#using\" aria-label=\"using permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Using</h2>\n<p>It is important to understand that each Account has a separate Subscription Plan with access based on your API Keys.\nSince PolySwarm UI allows a User Account to create one or more Team Accounts, this means that the User Account would have one subscription, while each Team Account would have separate subscriptions.\nThere is no usage sharing or inheritance between accounts.\nWe do this to allow larger organizations to purchase separate plans for separate teams.</p>\n<p>The User Account and Team Account documentation describes how to Switch Context to make use of each subscription.</p>","rawMarkdownBody":"\n# PolySwarm Plans\n\nIn PolySwarm UI, the [Pricing](https://polyswarm.network/pricing) page lists PolySwarm's plans.\n\n## Available Plans\n\nPolySwarm provides multiple plans.\n\n* Individual Plans - These are paid plans available for User Accounts.\n* Enterprise Plans - These are paid plans available for User and Team Accounts.\n\nThe \"Community\" Plan  is the default plan for both User and Team Accounts.\nThis plan is free, but the user must be logged into their User Account when using PolySwarm UI.\nUsage limits are higher than for anonymous usage, but less than all paid plans.\n\n### Components of a Plan\n\n* Quota Usage Period\n* Billing Cycle\n* Daily API usage limit\n* One or more features\n* Usage limit for each feature\n\n#### Quota Usage Period\nThe Quota Usage Period is the period of time until the Monthly Quota is reset.\nThe Monthly Quota used resets every 30 days, regardless of the Subscription Plan.\nA Quota Usage Period starts on the date and time the Plan Subscription is activated and ends on every subsequent 30th day at the same time.\n\n#### Billing Cycle\nPlan subscription durations can be either month-to-month or annual.\nMonth-to-Month has a 30-day cycle, while Annual has a 360-day cycle.\n\n##### Month-To-Month Subscription\n*Term*\n\nThis subscription has a term of 30 consecutive days, which is one Usage Period.\nThe term starts on the date and time the subscription is activated and ends on the 30th day at the same time.\n\n*Renewal*\n\nAt the end of each term, the subscription automatically renews at the same rate for one more term.\nAnytime during the term, the user can cancel the automatic renewal of the subscription, such that at the end of that term it will not automatically renew.\n\n*Invoicing*\n\nThe cost of the subscription is charged at the start of each term.\n\n##### Annual Subscription\n*Term*\n\nThis subscription has a term of 360 days, which is 12 Usage Periods.\nThe term starts on the date and time the subscription is activated and ends on the 360th day at the same time.\n\n*Renewal*\n\nAt the end of each term, the subscription automatically renews at the same rate for one more term.\nAnytime during the term, the user can cancel the automatic renewal of the subscription, such that at the end of that term it will not automatically renew.\n\n*Invoicing*\n\nThe cost of the subscription is charged at the start of each term.\n\n#### Daily API Usage Limit\nEach plan has a fixed Daily API usage limit.\nThis limit is the maximum number of total feature usages per 24-hour period.\nThis limit overrides all feature usage limits and is cumulative for all features.\nThe only method to increase the Daily API Usage limit is to purchase a plan with a higher limit.\n\n#### Quota Usage Limits\nEach Feature has a Quota Usage Limit that defines the quantity of usage available during each Quota Usage Period.\nEach subsequent Quota Usage Period will cause the Quota Usage to reset to the limits according to the active plan.\nThe quota usage limit of each feature is independent of the quota usage limit of all other features.\n\n## Comparing\nThe left column of the Compare Plans table lists each feature that PolySwarm offers.\nSelecting the small info icon will display the description of that feature.\nPolySwarm occasionally offers a free trial, contact us to ask for more information.\n\n## Selecting\nAll new User Accounts and Team Accounts have the “Community” plan.\nThis allows all users to enjoy the base functionality of the platform for free.\nOnce the account is created, the plan can be upgraded to a paid plan.\n\nIf you'd like to do a Free Trial, PolySwarm will work with you to set up a trial.\n\n### Free Trial\nDuring the free trial, your account will have the Daily API Limit and all Quota Usage Limits based on the trial plan.\nWhen the trial is over, your account will revert to the free Community plan, so the Daily API Limit and all Quota Usage Limits will be replaced by those from the Community plan.\nAny features not included in the Community plan will become unavailable.\nIf you want access to other features or higher usage limits, you will need to purchase a paid plan.\n\n## Using\nIt is important to understand that each Account has a separate Subscription Plan with access based on your API Keys.\nSince PolySwarm UI allows a User Account to create one or more Team Accounts, this means that the User Account would have one subscription, while each Team Account would have separate subscriptions.\nThere is no usage sharing or inheritance between accounts.\nWe do this to allow larger organizations to purchase separate plans for separate teams.\n\nThe User Account and Team Account documentation describes how to Switch Context to make use of each subscription.\n"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/customers/polyswarm-ui/webhooks.md","frontmatter":{"title":"Engine Webhooks","excerpt":"The Engine Webhooks tab in the Account Settings is used to manage engine webhooks"},"html":"<h1 id=\"engine-webhooks\" style=\"position:relative;\"><a href=\"#engine-webhooks\" aria-label=\"engine webhooks permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Engine Webhooks</h1>\n<h2 id=\"general\" style=\"position:relative;\"><a href=\"#general\" aria-label=\"general permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>General</h2>\n<p>The Engine Webhooks tab in the <a href=\"https://polyswarm.network/account/webhooks\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">User Account</a> or <a href=\"https://polyswarm.network/settings/team/webhooks\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Team Account</a> Settings of a PolySwarm UI Account allows you to manage engine webhooks used by your Account. In a Team Account, a User must have the Team Admin or Microengine Admin role to view and use the Engine Webhooks tab.</p>\n<h3 id=\"hmac-secret\" style=\"position:relative;\"><a href=\"#hmac-secret\" aria-label=\"hmac secret permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>HMAC Secret</h3>\n<p>The engine webhook's HMAC Secret is used to allow the remote web service to verify that the engine webhook call was made by the PolySwarm Marketplace. All engine webhook calls are signed using the HMAC Secret, and can thus be verified by the recipient. In the Engine Webhooks tab, the HMAC Secret is hidden by default. You can click the \"Eye\" icon to view it or click the \"Copy\" icon to copy it to your clipboard.</p>\n<h3 id=\"rate-limit\" style=\"position:relative;\"><a href=\"#rate-limit\" aria-label=\"rate limit permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Rate Limit</h3>\n<p>The rate limit is the number of engine webhook messages your engine webhook URL can process in one day (24hr period). This is the mechanism that you can use to control how many bounties your Engine receives in a day.</p>\n<h3 id=\"status\" style=\"position:relative;\"><a href=\"#status\" aria-label=\"status permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Status</h3>\n<p>An engine webhook's Status will be in one of the following states:</p>\n<ul>\n<li>Pending - The engine webhook has been created, but has not been tested.</li>\n<li>Verified - The engine webhook has been tested and the remote service responded correctly.</li>\n<li>Failed - The engine webhook was Verified, but the remote service is no longer responding. If an engine webhook is in the Failed state, it needs to be Tested again to become Verified.</li>\n</ul>\n<h3 id=\"url\" style=\"position:relative;\"><a href=\"#url\" aria-label=\"url permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>URL</h3>\n<p>The engine webhook URL must be the full URI that your web server is listening on to receive an engine webhook.\nIt must use HTTPS.\nOften it will be something like: \"<a href=\"https://example.com:1234/my/api/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https://example.com:1234/my/api/</a>\"</p>\n<h2 id=\"creating\" style=\"position:relative;\"><a href=\"#creating\" aria-label=\"creating permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Creating</h2>\n<p>To create your first engine webhook, click the \"Create webhook\" button to open the engine webhook creation window. If you have one or more existing engine webhooks, you can click the \"+\" button to create another one.</p>\n<p>In the Create Engine Webhook window, enter the engine webhook URL and its Rate Limit. Then click Save.</p>\n<h2 id=\"deleting\" style=\"position:relative;\"><a href=\"#deleting\" aria-label=\"deleting permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Deleting</h2>\n<p>To delete an engine webhook, click the \"Trash\" icon in the Actions column.</p>\n<p>An engine webhook cannot be deleted if it is associated with an Engine. You need to remove the engine webhook association from the Engine, and then you can delete the engine webhook.</p>\n<h2 id=\"testing\" style=\"position:relative;\"><a href=\"#testing\" aria-label=\"testing permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Testing</h2>\n<p>In the Actions column, you can click on the \"Gear\" icon to open the Engine Webhook Test window. Click the \"Test\" button to send a \"Ping\" action to the remote engine webhook server. Give it about one minute to send the engine webhook. If the engine webhook server responds to the Ping action, the Status will update to be \"verified\".</p>","rawMarkdownBody":"\n# Engine Webhooks\n\n## General {#general}\n\nThe Engine Webhooks tab in the [User Account](https://polyswarm.network/account/webhooks) or [Team Account](https://polyswarm.network/settings/team/webhooks) Settings of a PolySwarm UI Account allows you to manage engine webhooks used by your Account. In a Team Account, a User must have the Team Admin or Microengine Admin role to view and use the Engine Webhooks tab.\n\n### HMAC Secret\nThe engine webhook's HMAC Secret is used to allow the remote web service to verify that the engine webhook call was made by the PolySwarm Marketplace. All engine webhook calls are signed using the HMAC Secret, and can thus be verified by the recipient. In the Engine Webhooks tab, the HMAC Secret is hidden by default. You can click the \"Eye\" icon to view it or click the \"Copy\" icon to copy it to your clipboard.\n\n### Rate Limit\nThe rate limit is the number of engine webhook messages your engine webhook URL can process in one day (24hr period). This is the mechanism that you can use to control how many bounties your Engine receives in a day.\n\n### Status\nAn engine webhook's Status will be in one of the following states:\n\n* Pending - The engine webhook has been created, but has not been tested.\n* Verified - The engine webhook has been tested and the remote service responded correctly.\n* Failed - The engine webhook was Verified, but the remote service is no longer responding. If an engine webhook is in the Failed state, it needs to be Tested again to become Verified.\n\n### URL\nThe engine webhook URL must be the full URI that your web server is listening on to receive an engine webhook.\nIt must use HTTPS.\nOften it will be something like: \"https://example.com:1234/my/api/\"\n\n## Creating {#creating}\nTo create your first engine webhook, click the \"Create webhook\" button to open the engine webhook creation window. If you have one or more existing engine webhooks, you can click the \"+\" button to create another one.\n\nIn the Create Engine Webhook window, enter the engine webhook URL and its Rate Limit. Then click Save.\n\n## Deleting {#deleting}\nTo delete an engine webhook, click the \"Trash\" icon in the Actions column.\n\nAn engine webhook cannot be deleted if it is associated with an Engine. You need to remove the engine webhook association from the Engine, and then you can delete the engine webhook.\n\n## Testing {#testing}\nIn the Actions column, you can click on the \"Gear\" icon to open the Engine Webhook Test window. Click the \"Test\" button to send a \"Ping\" action to the remote engine webhook server. Give it about one minute to send the engine webhook. If the engine webhook server responds to the Ping action, the Status will update to be \"verified\".\n\n\n"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/engines/getting-started/getting-started.md","frontmatter":{"title":"Overview","excerpt":"A simple end-to-end view of how to go from idea to a verified Engine in production."},"html":"<h1 id=\"polyswarm-engine-overview\" style=\"position:relative;\"><a href=\"#polyswarm-engine-overview\" aria-label=\"polyswarm engine overview permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>PolySwarm Engine Overview</h1>\n<p>Thank you for your interest in creating an Engine for PolySwarm!</p>\n<p>PolySwarm Engines let you plug your detection capability into a live threat intelligence marketplace where real users submit suspicious artifacts (files, URLs, IPs, domains) and receive verdicts to support investigations and strengthen their cyber posture. </p>\n<p>As an <strong>Engine partner</strong>, you contribute verdict signals by analyzing artifacts and returning assertions, then you are incentivised through rewards when your results align with confirmed ground truth. </p>\n<p>This section is your starting point, it explains the Engine journey end to end, what you need to build, and how to participate safely and reliably in the marketplace.</p>\n<h2 id=\"high-level-flow-proposal-to-verified-engine\" style=\"position:relative;\"><a href=\"#high-level-flow-proposal-to-verified-engine\" aria-label=\"high level flow proposal to verified engine permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>High-level flow, proposal to verified Engine</h2>\n<p>This is the end-to-end path for getting an Engine live on the PolySwarm Marketplace. </p>\n<ol>\n<li><strong>Submit an Engine proposal</strong></li>\n<li><strong>PolySwarm review</strong></li>\n<li><strong>Onboarding</strong></li>\n<li><strong>Provisioning</strong></li>\n<li><strong>Integration and development testing</strong></li>\n<li><strong>Test in the Development Community</strong></li>\n<li><strong>Request verification</strong></li>\n<li><strong>Go live in production</strong></li>\n<li><strong>Operate and optimise</strong></li>\n</ol>","rawMarkdownBody":"\n# PolySwarm Engine Overview\n\nThank you for your interest in creating an Engine for PolySwarm!\n\nPolySwarm Engines let you plug your detection capability into a live threat intelligence marketplace where real users submit suspicious artifacts (files, URLs, IPs, domains) and receive verdicts to support investigations and strengthen their cyber posture. \n\nAs an **Engine partner**, you contribute verdict signals by analyzing artifacts and returning assertions, then you are incentivised through rewards when your results align with confirmed ground truth. \n\nThis section is your starting point, it explains the Engine journey end to end, what you need to build, and how to participate safely and reliably in the marketplace.\n\n## High-level flow, proposal to verified Engine\n\nThis is the end-to-end path for getting an Engine live on the PolySwarm Marketplace. \n\n1. **Submit an Engine proposal**\n2. **PolySwarm review**\n3. **Onboarding**\n4. **Provisioning**\n5. **Integration and development testing**\n6. **Test in the Development Community**\n7. **Request verification**\n8. **Go live in production**\n9. **Operate and optimise**"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/customers/polyswarm-ui/scanning.md","frontmatter":{"title":"Scanning","excerpt":"When an Artifact is submitted, our network of engines will analyze that artifact for maliciousness and provide threat intelligence based on that analysis..."},"html":"<h1 id=\"scanning-an-artifact\" style=\"position:relative;\"><a href=\"#scanning-an-artifact\" aria-label=\"scanning an artifact permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Scanning an Artifact</h1>\n<p>Scanning is one of the primary functions of PolySwarm.\nWhen an Artifact is submitted, our network of engines will analyze that artifact for maliciousness and provide threat intelligence based on that analysis.</p>\n<p>On the <a href=\"https://polyswarm.network/scan\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Scan</a> page on PolySwarm UI, we support scanning of multiple types of Artifacts, currently including: Files, URLs, domains, and IP addresses.</p>\n<button>\n  <a href=\"https://polyswarm.network/scan\" target=\"_blank\" rel=\"noopener noreferrer\">\n    Explore PolySwarm Scanning\n  </a>\n</button>\n<h2 id=\"scan-a-file\" style=\"position:relative;\"><a href=\"#scan-a-file\" aria-label=\"scan a file permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Scan a File</h2>\n<p>To scan a file, either drag and drop the file onto the Drag-and-Drop image, or click the \"Select File\" button to open a file chooser window that enables you to select a file from your local drive.</p>\n<p><a href=\"/images/ui/ui_scan.png\" target=\"_blank\"><img src=\"/images/ui/ui_scan.png\" alt=\"Scan Page\" width=\"75%\"/></a></p>\n<p>Once the file is submitted, the Scan Results page will show the processing status, scan results, and metadata information.</p>\n<h2 id=\"scan-url-domain-or-ip\" style=\"position:relative;\"><a href=\"#scan-url-domain-or-ip\" aria-label=\"scan url domain or ip permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Scan a URL, Domain, QR Code, or IP Address</h2>\n<p>To scan a URL, domain, or IP address, enter it into the text box below the “Select File” button. Press the “Enter” key to submit that Artifact.</p>\n<p>To scan a QR Code and have PolySwarm extract and scan the url from that image, use the 'qr code' button beside the magnify glass icon.\nPolySwarm supports any bitmap file type (not a vector image like SVG), complete list is below. </p>\n<ul>\n<li>\n<p>Supported Bitmap Image File Types:</p>\n<ul>\n<li>JPEG / JPG (.jpeg, .jpg)</li>\n<li>PNG (.png)</li>\n<li>BMP (.bmp)</li>\n<li>GIF (.gif)</li>\n<li>TIFF (.tif, .tiff)</li>\n<li>WEBP (.webp)</li>\n<li>\n<ul>\n<li>PPM / PGM / PBM / PNM (.ppm, .pgm, .pbm, .pnm) – Netpbm formats</li>\n</ul>\n</li>\n<li>TGA (.tga) – Truevision TGA</li>\n<li>ICO (.ico) – Icon files</li>\n<li>PCX (.pcx)</li>\n<li>DDS (.dds) – DirectDraw Surface</li>\n<li>IM – Format used by PIL</li>\n<li>SGI (.sgi, .rgb) – Silicon Graphics</li>\n</ul>\n</li>\n<li>\n<p>Not Supported (Vector or Non-Bitmap):</p>\n<ul>\n<li>SVG (.svg) – vector-based, not supported by Pillow</li>\n<li>PDF (unless converted to bitmap)</li>\n<li>EPS (requires Ghostscript and not always reliable)</li>\n</ul>\n</li>\n</ul>\n<p>Once the Artifact is submitted, the Scan Results page will show the processing status, scan results, and metadata information.</p>\n<p><a href=\"/images/ui/ui_scan_url_domain_qr.png\" target=\"_blank\"><img src=\"/images/ui/ui_scan_url_domain_qr.png\" alt=\"Scan Page\" width=\"75%\"/></a></p>\n<h2 id=\"scan-results-page\" style=\"position:relative;\"><a href=\"#scan-results-page\" aria-label=\"scan results page permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Scan Results Page</h2>\n<p>This Scan Results Summary page displays the latest scan result data for an artifact, along with the metadata from our static analysis tools.</p>\n<p>The page can be accessed from Searching and Scanning functions in the UI as well as the <code class=\"language-text\">Latest Scan Results</code> button on the Sandbox Summary Page for the Artifact.</p>\n<p>To view the latest <strong>Sandbox results</strong> page for this Artifact you can use the <code class=\"language-text\">Latest Sandbox Results</code> button in the top right, and you can use the <code class=\"language-text\">Latest Scan Results</code> button to navigate back to the Scan result page.</p>\n<h3 id=\"summary-pane\" style=\"position:relative;\"><a href=\"#summary-pane\" aria-label=\"summary pane permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Summary pane</h3>\n<p>The summary pane on the left provides a quick overview of the analysis.</p>\n<p><a href=\"/images/ui/ui_scan_summar.png\" target=\"_blank\"><img src=\"/images/ui/ui_scan_summary.png\" alt=\"Scan Page\" width=\"75%\"/></a></p>\n<p>This sections provides access to some key information:</p>\n<ul>\n<li><strong>PolyScore</strong>, which provides the probability that an artifact is malicious. Red is most likely malicious. Yellow is potentially malicious. Green is likely not malicious.</li>\n<li><strong>Detections</strong> by all engines, which tells you how many engines chose to process the artifact and of those, how many found the artifact to be malicious.</li>\n<li><strong>Detection summary</strong> is the name of the Artifact if the Artifact is a file. If the Artifact is a URL, domain, or IP address it will show that and in some cases the file name will be the SHA-256 hash.</li>\n<li>Below the Artifact name is the number of bytes in the Artifact.</li>\n<li><strong>PolyUnite family name</strong> A common family name from all engines, Sandboxing and Analyst tags will be displayed.</li>\n<li><strong>SHA-256 hash</strong> of the Artifact. In the case of a URL, domain, or IP address, the SHA-256 is a hash of the bytes of that string.</li>\n<li><strong>Scan ID</strong> is the ID Number for the Specific scan being viewed.</li>\n</ul>\n<p>Below the Summary Pane is the Action pane with several buttons:</p>\n<p><a href=\"/images/ui/ui_scan_summary_buttons.png\" target=\"_blank\"><img src=\"/images/ui/ui_scan_summary_buttons.png\" alt=\"Scan Summary Section\" width=\"75%\"/></a></p>\n<table>\n<thead>\n<tr>\n<th>Button</th>\n<th>What is it for?</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Rescan</td>\n<td>Re-submit the Artifact to the marketplace for analysis. This can be useful if the last time it was analyzed was a long time in the past.</td>\n</tr>\n<tr>\n<td>Download</td>\n<td>Download the Artifact to your local host as an encrypted .zip file. In the case of a URL, domain, or IP address, this will download a text file with that string as the only content.</td>\n</tr>\n<tr>\n<td>Share</td>\n<td>Share a link to these scan results on social media.</td>\n</tr>\n<tr>\n<td>Sandboxing</td>\n<td>Submit a task to process the artifact in the sandboxes. This can take up to 1 hour. You'll see the results in the Sandbox tab when it is finished.</td>\n</tr>\n<tr>\n<td>Pivot</td>\n<td>Enable/disable the Pivoting feature.</td>\n</tr>\n<tr>\n<td>Generate Report</td>\n<td>Generates either a PDF or HTML report on demand, you will be able to choose sections to include.</td>\n</tr>\n</tbody>\n</table>\n<h3 id=\"detections-tab\" style=\"position:relative;\"><a href=\"#detections-tab\" aria-label=\"detections tab permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Detections tab</h3>\n<p>A list of all Engines in the PolySwarm marketplace and their detection results.\nThis list is sorted alphabetically in two groups.</p>\n<p><a href=\"/images/ui/ui_scan_engines.png\" target=\"_blank\"><img src=\"/images/ui/ui_scan_engines.png\" alt=\"Scan Engine Section\" width=\"75%\"/></a></p>\n<p>The first set are the engines that chose to process the Artifact and their detection results.\nBelow the engine name is the Bid value.\nThis is the amount of NCT that they Bid with their assertion.\nTo the right of the name is either a Green icon with a check mark or a Red icon with an “!” exclamation mark.\nGreen indicates non-malicious and Red indicates malicious.</p>\n<p>The second set are the engines that chose NOT to process the Artifact.\nNext to those engines we display a grey “?” questionmark to indicate they did not provide any information on this Artifact.</p>\n<p><a href=\"/images/ui/ui_scan_engines_not.png\" target=\"_blank\"><img src=\"/images/ui/ui_scan_engines_not.png\" alt=\"Scan Engine Section Not Asserting\" width=\"75%\"/></a></p>\n<p>Clicking on the name of an engine will display additional metadata about the engine to include things like: Engine Name, Engine ID, architecture, operating system, and version information.</p>\n<h3 id=\"file-details-tab\" style=\"position:relative;\"><a href=\"#file-details-tab\" aria-label=\"file details tab permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>File Details tab</h3>\n<p>This tab is only available when scanning a file.\nThis tab displays output from the collection of metadata analysis tools that PolySwarm uses to process each Artifact.\nThe page is separated into sections, one section per tool.\nSome tools only have results for specific file types, so different file types will have more or less tool sections displayed.</p>\n<h3 id=\"url-details-tab\" style=\"position:relative;\"><a href=\"#url-details-tab\" aria-label=\"url details tab permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>URL Details tab</h3>\n<p>This tab is only available when scanning a URL, domain, or IP address.\nThis tab displays output from the collection of metadata analysis tools that PolySwarm uses to process each Artifact.\nCurrently, for URLs, domains, and IP addresses we only use the “Artifact Attributes” tool.</p>\n<h3 id=\"json-tab\" style=\"position:relative;\"><a href=\"#json-tab\" aria-label=\"json tab permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>JSON Tab</h3>\n<p>This tab gives you the entire scan result JSON object in a browsable and searchable display.\nYou can use the search fields at the top to find specific keys and values in the JSON object.\nOr, you can expand/collapse parts of the JSON object to do your own manual searching.</p>\n<h3 id=\"shortcut-boxes\" style=\"position:relative;\"><a href=\"#shortcut-boxes\" aria-label=\"shortcut boxes permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Shortcut Boxes</h3>\n<p>On the File Details, Network, and Sandbox tabs, at the top, you'll see several boxes with letters in them.\nThese are shortcut boxes, where the letter is the first letter of the name of a metadata tool.\nIf the box is highlighted, there is metadata available from that tool.\nClicking on the box will jump you to the results for that tool.</p>\n<h3 id=\"pivoting\" style=\"position:relative;\"><a href=\"#pivoting\" aria-label=\"pivoting permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Pivoting</h3>\n<p>Pivoting is available on the Scan Results page.\nPivoting allows you use attributes of on Artifact to find other Artifacts with the same attributes.\nTo use Pivoting, first you click the Pivot button to enable Pivoting.\nWhen you enable Pivoting, several things on the page will change:</p>\n<ul>\n<li>A subset of the field names will become highlighted. The fields that are highlighted are the only ones that support pivoting.</li>\n<li>a Pivot Search box will appear at the top of the right side.</li>\n</ul>\n<h4 id=\"pivot-search\" style=\"position:relative;\"><a href=\"#pivot-search\" aria-label=\"pivot search permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Pivot Search</h4>\n<p>To create a Pivot Search, find the highlighted fields of interest. Hover your mouse over the value in a field and click the \"+\" sign to add that value to the Pivot Search.</p>\n<p><a href=\"/images/ui/ui_scan_pivot_select.png\" target=\"_blank\"><img src=\"/images/ui/ui_scan_pivot_select.png\" alt=\"Scan Pivoting\" width=\"75%\"/></a></p>\n<p>Once the value in a field has been added to the Pivot Search, hovering over the value will display a \"-\" sign.\nYou can click the \"-\" to remove that value from the Pivot Search.\nSome fields have a list of values, and each value will have a separate \"+\" or \"-\" sign.</p>\n<p>Once you've selected the values you want in your search, review and update the <strong>Start and End days</strong> for the Pivot Search.\nThe Start day has to be on or before the End day.\nThe values you select for the Start and End day are cached in your browser.</p>\n<p><a href=\"/images/ui/ui_scan_pivot_search.png\" target=\"_blank\"><img src=\"/images/ui/ui_scan_pivot_search.png\" alt=\"Scan Pivoting Searching\" width=\"75%\"/></a></p>\n<p>Finally, click the <strong>Arrow icon</strong> to generate the Metadata Search query.\nThis will open a new tab and take you to the Metadata Search page with the query prepared for you.\nYou can manually tweak the query, or click the search button to run the Metadata Search query.</p>\n<p>For each artifact where you view the Scan Result page, you can do a Pivot Search.\nAnd from the results of each Search, you can view the Scan Result page of an artifact and continue to Pivot Search.</p>\n<div class=\"info\" markdown=\"1\">\n<blockquote>\n<p>It is best to keep the Pivot Search to 5 terms or fewer.\nRunning a Metadata Search query with too many terms can cause it to timeout. If that happens, remove some terms and try again.</p>\n</blockquote>\n</div>","rawMarkdownBody":"\n# Scanning an Artifact\n\nScanning is one of the primary functions of PolySwarm.\nWhen an Artifact is submitted, our network of engines will analyze that artifact for maliciousness and provide threat intelligence based on that analysis.\n\nOn the [Scan](https://polyswarm.network/scan) page on PolySwarm UI, we support scanning of multiple types of Artifacts, currently including: Files, URLs, domains, and IP addresses.\n\n<button>\n  <a href=\"https://polyswarm.network/scan\" target=\"_blank\" rel=\"noopener noreferrer\">\n    Explore PolySwarm Scanning\n  </a>\n</button>\n\n## Scan a File {#scan-a-file}\n\nTo scan a file, either drag and drop the file onto the Drag-and-Drop image, or click the \"Select File\" button to open a file chooser window that enables you to select a file from your local drive.\n\n<a href=\"/images/ui/ui_scan.png\" target=\"_blank\"><img src=\"/images/ui/ui_scan.png\" alt=\"Scan Page\" width=\"75%\"/></a>\n\nOnce the file is submitted, the Scan Results page will show the processing status, scan results, and metadata information.\n\n## Scan a URL, Domain, QR Code, or IP Address {#scan-url-domain-or-ip}\n\nTo scan a URL, domain, or IP address, enter it into the text box below the “Select File” button. Press the “Enter” key to submit that Artifact.\n\nTo scan a QR Code and have PolySwarm extract and scan the url from that image, use the 'qr code' button beside the magnify glass icon. \nPolySwarm supports any bitmap file type (not a vector image like SVG), complete list is below. \n\n* Supported Bitmap Image File Types:\n  * JPEG / JPG (.jpeg, .jpg)\n  * PNG (.png)\n  * BMP (.bmp)\n  * GIF (.gif)\n  * TIFF (.tif, .tiff)\n  * WEBP (.webp)\n  *   * PPM / PGM / PBM / PNM (.ppm, .pgm, .pbm, .pnm) – Netpbm formats\n  * TGA (.tga) – Truevision TGA\n  * ICO (.ico) – Icon files\n  * PCX (.pcx)\n  * DDS (.dds) – DirectDraw Surface\n  * IM – Format used by PIL\n  * SGI (.sgi, .rgb) – Silicon Graphics\n* Not Supported (Vector or Non-Bitmap):\n  * SVG (.svg) – vector-based, not supported by Pillow\n  * PDF (unless converted to bitmap)\n  * EPS (requires Ghostscript and not always reliable)\n\nOnce the Artifact is submitted, the Scan Results page will show the processing status, scan results, and metadata information.\n\n<a href=\"/images/ui/ui_scan_url_domain_qr.png\" target=\"_blank\"><img src=\"/images/ui/ui_scan_url_domain_qr.png\" alt=\"Scan Page\" width=\"75%\"/></a>\n\n## Scan Results Page\n\nThis Scan Results Summary page displays the latest scan result data for an artifact, along with the metadata from our static analysis tools.\n\nThe page can be accessed from Searching and Scanning functions in the UI as well as the `Latest Scan Results` button on the Sandbox Summary Page for the Artifact.\n\nTo view the latest **Sandbox results** page for this Artifact you can use the `Latest Sandbox Results` button in the top right, and you can use the `Latest Scan Results` button to navigate back to the Scan result page.\n\n### Summary pane\n\nThe summary pane on the left provides a quick overview of the analysis.\n\n<a href=\"/images/ui/ui_scan_summar.png\" target=\"_blank\"><img src=\"/images/ui/ui_scan_summary.png\" alt=\"Scan Page\" width=\"75%\"/></a>\n\nThis sections provides access to some key information:\n\n- **PolyScore**, which provides the probability that an artifact is malicious. Red is most likely malicious. Yellow is potentially malicious. Green is likely not malicious.\n- **Detections** by all engines, which tells you how many engines chose to process the artifact and of those, how many found the artifact to be malicious.\n- **Detection summary** is the name of the Artifact if the Artifact is a file. If the Artifact is a URL, domain, or IP address it will show that and in some cases the file name will be the SHA-256 hash.\n- Below the Artifact name is the number of bytes in the Artifact.\n- **PolyUnite family name** A common family name from all engines, Sandboxing and Analyst tags will be displayed.\n- **SHA-256 hash** of the Artifact. In the case of a URL, domain, or IP address, the SHA-256 is a hash of the bytes of that string.\n- **Scan ID** is the ID Number for the Specific scan being viewed.\n\nBelow the Summary Pane is the Action pane with several buttons:\n\n<a href=\"/images/ui/ui_scan_summary_buttons.png\" target=\"_blank\"><img src=\"/images/ui/ui_scan_summary_buttons.png\" alt=\"Scan Summary Section\" width=\"75%\"/></a>\n\n| Button          | What is it for?                                                                                                                                                                       |\n| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Rescan          | Re-submit the Artifact to the marketplace for analysis. This can be useful if the last time it was analyzed was a long time in the past.                                              |\n| Download        | Download the Artifact to your local host as an encrypted .zip file. In the case of a URL, domain, or IP address, this will download a text file with that string as the only content. |\n| Share           | Share a link to these scan results on social media.                                                                                                                                   |\n| Sandboxing      | Submit a task to process the artifact in the sandboxes. This can take up to 1 hour. You'll see the results in the Sandbox tab when it is finished.                                    |\n| Pivot           | Enable/disable the Pivoting feature.                                                                                                                                                  |\n| Generate Report | Generates either a PDF or HTML report on demand, you will be able to choose sections to include.                                                                                      |\n\n### Detections tab\n\nA list of all Engines in the PolySwarm marketplace and their detection results.\nThis list is sorted alphabetically in two groups.\n\n<a href=\"/images/ui/ui_scan_engines.png\" target=\"_blank\"><img src=\"/images/ui/ui_scan_engines.png\" alt=\"Scan Engine Section\" width=\"75%\"/></a>\n\nThe first set are the engines that chose to process the Artifact and their detection results.\nBelow the engine name is the Bid value.\nThis is the amount of NCT that they Bid with their assertion.\nTo the right of the name is either a Green icon with a check mark or a Red icon with an “!” exclamation mark.\nGreen indicates non-malicious and Red indicates malicious.\n\nThe second set are the engines that chose NOT to process the Artifact.\nNext to those engines we display a grey “?” questionmark to indicate they did not provide any information on this Artifact.\n\n<a href=\"/images/ui/ui_scan_engines_not.png\" target=\"_blank\"><img src=\"/images/ui/ui_scan_engines_not.png\" alt=\"Scan Engine Section Not Asserting\" width=\"75%\"/></a>\n\nClicking on the name of an engine will display additional metadata about the engine to include things like: Engine Name, Engine ID, architecture, operating system, and version information.\n\n### File Details tab\n\nThis tab is only available when scanning a file.\nThis tab displays output from the collection of metadata analysis tools that PolySwarm uses to process each Artifact.\nThe page is separated into sections, one section per tool.\nSome tools only have results for specific file types, so different file types will have more or less tool sections displayed.\n\n### URL Details tab\n\nThis tab is only available when scanning a URL, domain, or IP address.\nThis tab displays output from the collection of metadata analysis tools that PolySwarm uses to process each Artifact.\nCurrently, for URLs, domains, and IP addresses we only use the “Artifact Attributes” tool.\n\n### JSON Tab\n\nThis tab gives you the entire scan result JSON object in a browsable and searchable display.\nYou can use the search fields at the top to find specific keys and values in the JSON object.\nOr, you can expand/collapse parts of the JSON object to do your own manual searching.\n\n### Shortcut Boxes\n\nOn the File Details, Network, and Sandbox tabs, at the top, you'll see several boxes with letters in them.\nThese are shortcut boxes, where the letter is the first letter of the name of a metadata tool.\nIf the box is highlighted, there is metadata available from that tool.\nClicking on the box will jump you to the results for that tool.\n\n### Pivoting\n\nPivoting is available on the Scan Results page.\nPivoting allows you use attributes of on Artifact to find other Artifacts with the same attributes.\nTo use Pivoting, first you click the Pivot button to enable Pivoting.\nWhen you enable Pivoting, several things on the page will change:\n\n- A subset of the field names will become highlighted. The fields that are highlighted are the only ones that support pivoting.\n- a Pivot Search box will appear at the top of the right side.\n\n#### Pivot Search\n\nTo create a Pivot Search, find the highlighted fields of interest. Hover your mouse over the value in a field and click the \"+\" sign to add that value to the Pivot Search.\n\n<a href=\"/images/ui/ui_scan_pivot_select.png\" target=\"_blank\"><img src=\"/images/ui/ui_scan_pivot_select.png\" alt=\"Scan Pivoting\" width=\"75%\"/></a>\n\nOnce the value in a field has been added to the Pivot Search, hovering over the value will display a \"-\" sign.\nYou can click the \"-\" to remove that value from the Pivot Search.\nSome fields have a list of values, and each value will have a separate \"+\" or \"-\" sign.\n\nOnce you've selected the values you want in your search, review and update the **Start and End days** for the Pivot Search.\nThe Start day has to be on or before the End day.\nThe values you select for the Start and End day are cached in your browser.\n\n<a href=\"/images/ui/ui_scan_pivot_search.png\" target=\"_blank\"><img src=\"/images/ui/ui_scan_pivot_search.png\" alt=\"Scan Pivoting Searching\" width=\"75%\"/></a>\n\nFinally, click the **Arrow icon** to generate the Metadata Search query.\nThis will open a new tab and take you to the Metadata Search page with the query prepared for you.\nYou can manually tweak the query, or click the search button to run the Metadata Search query.\n\nFor each artifact where you view the Scan Result page, you can do a Pivot Search.\nAnd from the results of each Search, you can view the Scan Result page of an artifact and continue to Pivot Search.\n\n<div class=\"info\" markdown=\"1\">\n\n> It is best to keep the Pivot Search to 5 terms or fewer.\n> Running a Metadata Search query with too many terms can cause it to timeout. If that happens, remove some terms and try again.\n\n</div>\n"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/customers/polyswarm-ui/settings.md","frontmatter":{"title":"Settings","excerpt":"PolySwarm offers access to Settings..."},"html":"<h1 id=\"settings-ui\" style=\"position:relative;\"><a href=\"#settings-ui\" aria-label=\"settings ui permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Settings UI</h1>\n<p>This section will review the Settings Page contents and what items are available for each type of account, each section is available for both types of accounts unless highlighted.</p>\n<p>In the Context Menu in the upper right corner, choose the Settings option to access the Account Settings for the active Account Context.</p>\n<p>When viewing the Account Settings, the left area has your username, name, email address, and account number readily displayed in the first box.\nThe second box indicates your current subscription plan, and the number of days remaining in your monthly usage period.</p>\n<button>\n  <a href=\"https://polyswarm.network/account/usage\" target=\"_blank\" rel=\"noopener noreferrer\">\n    Explore PolySwarm Settings\n  </a>\n</button>\n<h2 id=\"profile\" style=\"position:relative;\"><a href=\"#profile\" aria-label=\"profile permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Profile</h2>\n<div class=\"warning\" markdown=\"1\">\n<blockquote>\n<p>This feature is only available for individual \"<strong>User Accounts</strong>\".</p>\n</blockquote>\n</div>\n<p>The <a href=\"https://polyswarm.network/account/profile\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Profile</a> tab allows you to change your username, name, company, and password.\nYou cannot change your email address.\nThe username is what gets displayed to other users as the owner of an engine, if you claim an engine.</p>\n<h2 id=\"members\" style=\"position:relative;\"><a href=\"#members\" aria-label=\"members permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Members</h2>\n<div class=\"warning\" markdown=\"1\">\n<blockquote>\n<p>This feature is only available for \"<strong>Team Accounts</strong>\".</p>\n</blockquote>\n</div>\n<p>The Members tab allows Team Owners and Team Admins to manage the members of the team.\nWhen the Team Account is created, the only member is the User Account who created the team.\nThe User who created the team has the role of Team Owner by default.</p>\n<p>Click the <strong>“+”</strong> plus sign icon to add User Accounts to the Team Account.\nWhen inviting a user, you must specify both a name and email address.\nAdding a User Account will send an invitation to that User Account to join the Team Account.</p>\n<p><a href=\"/images/ui/ui_settings_members.png\" target=\"_blank\"><img src=\"/images/ui/ui_settings_members.png\" alt=\"Settings Members Tab\" width=\"75%\"/></a></p>\n<p>Click the Edit icon <strong>(Pencil)</strong> to edit a User, including modifying their Team Roles.</p>\n<p>Members can be removed from the team, but there must always be at least one Team Owner.</p>\n<h4 id=\"members---roles\" style=\"position:relative;\"><a href=\"#members---roles\" aria-label=\"members   roles permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Members - Roles</h4>\n<p><strong>Role-based</strong> access control defines a User's permissions to view or edit various tabs and content.\nThis includes the Team Account Settings tabs and content as well as other content outside of the settings.\nThe below highlights what access each kind of Role has access too and the functionality available.</p>\n<details>\n    <summary>\n        Advanced Tab\n    </summary>\n<table>\n<thead>\n<tr>\n<th></th>\n<th>Team<br>Member</th>\n<th>Billing<br>Admin</th>\n<th>Community<br>Admin</th>\n<th>Microengine<br>Admin</th>\n<th>Wallet<br>Admin</th>\n<th>Team<br>Admin</th>\n<th>Team<br>Owner</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>View</td>\n<td>-</td>\n<td>-</td>\n<td>-</td>\n<td>-</td>\n<td>-</td>\n<td>X</td>\n<td>X</td>\n</tr>\n</tbody>\n</table>\n</details>\n<br>\n<details>\n    <summary>\n        API Keys Tab\n    </summary>\n<table>\n<thead>\n<tr>\n<th></th>\n<th>Team<br>Member</th>\n<th>Billing<br>Admin</th>\n<th>Community<br>Admin</th>\n<th>Microengine<br>Admin</th>\n<th>Wallet<br>Admin</th>\n<th>Team<br>Admin</th>\n<th>Team<br>Owner</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>View</td>\n<td>X</td>\n<td>X</td>\n<td>X</td>\n<td>X</td>\n<td>X</td>\n<td>X</td>\n<td>X</td>\n</tr>\n<tr>\n<td>Add</td>\n<td>X</td>\n<td>X</td>\n<td>X</td>\n<td>X</td>\n<td>X</td>\n<td>X</td>\n<td>X</td>\n</tr>\n<tr>\n<td>Delete</td>\n<td>-</td>\n<td>-</td>\n<td>-</td>\n<td>-</td>\n<td>-</td>\n<td>X</td>\n<td>X</td>\n</tr>\n</tbody>\n</table>\n</details>\n<br>\n<details>\n    <summary>\n        Integrations Tab\n    </summary>\n<table>\n<thead>\n<tr>\n<th></th>\n<th>Team<br>Member</th>\n<th>Billing<br>Admin</th>\n<th>Community<br>Admin</th>\n<th>Microengine<br>Admin</th>\n<th>Wallet<br>Admin</th>\n<th>Team<br>Admin</th>\n<th>Team<br>Owner</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>View</td>\n<td>-</td>\n<td>-</td>\n<td>-</td>\n<td>-</td>\n<td>-</td>\n<td>X</td>\n<td>X</td>\n</tr>\n<tr>\n<td>Add</td>\n<td>-</td>\n<td>-</td>\n<td>-</td>\n<td>-</td>\n<td>-</td>\n<td>X</td>\n<td>X</td>\n</tr>\n<tr>\n<td>Delete</td>\n<td>-</td>\n<td>-</td>\n<td>-</td>\n<td>-</td>\n<td>-</td>\n<td>X</td>\n<td>X</td>\n</tr>\n</tbody>\n</table>\n</details>\n<br>\n<details>\n    <summary>\n        Invitations Tab\n    </summary>\n<table>\n<thead>\n<tr>\n<th></th>\n<th>Team<br>Member</th>\n<th>Billing<br>Admin</th>\n<th>Community<br>Admin</th>\n<th>Microengine<br>Admin</th>\n<th>Wallet<br>Admin</th>\n<th>Team<br>Admin</th>\n<th>Team<br>Owner</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>View</td>\n<td>-</td>\n<td>-</td>\n<td>-</td>\n<td>-</td>\n<td>-</td>\n<td>X</td>\n<td>X</td>\n</tr>\n<tr>\n<td>Add</td>\n<td>-</td>\n<td>-</td>\n<td>-</td>\n<td>-</td>\n<td>-</td>\n<td>X</td>\n<td>X</td>\n</tr>\n<tr>\n<td>Delete</td>\n<td>-</td>\n<td>-</td>\n<td>-</td>\n<td>-</td>\n<td>-</td>\n<td>X</td>\n<td>X</td>\n</tr>\n<tr>\n<td>Resend</td>\n<td>-</td>\n<td>-</td>\n<td>-</td>\n<td>-</td>\n<td>-</td>\n<td>X</td>\n<td>X</td>\n</tr>\n</tbody>\n</table>\n</details>\n<br>\n<details>\n    <summary>\n        Members Tab\n    </summary>\n<table>\n<thead>\n<tr>\n<th></th>\n<th>Team<br>Member</th>\n<th>Billing<br>Admin</th>\n<th>Community<br>Admin</th>\n<th>Microengine<br>Admin</th>\n<th>Wallet<br>Admin</th>\n<th>Team<br>Admin</th>\n<th>Team<br>Owner</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>View</td>\n<td>X</td>\n<td>X</td>\n<td>X</td>\n<td>X</td>\n<td>X</td>\n<td>X</td>\n<td>X</td>\n</tr>\n<tr>\n<td>Add</td>\n<td>-</td>\n<td>-</td>\n<td>-</td>\n<td>-</td>\n<td>-</td>\n<td>X</td>\n<td>X</td>\n</tr>\n<tr>\n<td>Edit</td>\n<td>-</td>\n<td>-</td>\n<td>-</td>\n<td>-</td>\n<td>-</td>\n<td>X</td>\n<td>X</td>\n</tr>\n<tr>\n<td>Delete</td>\n<td>X</td>\n<td>X</td>\n<td>X</td>\n<td>X</td>\n<td>X</td>\n<td>X</td>\n<td>X</td>\n</tr>\n</tbody>\n</table>\n</details>\n<br>\n<details>\n    <summary>\n        Usage Tab\n    </summary>\n<table>\n<thead>\n<tr>\n<th></th>\n<th>Team<br>Member</th>\n<th>Billing<br>Admin</th>\n<th>Community<br>Admin</th>\n<th>Microengine<br>Admin</th>\n<th>Wallet<br>Admin</th>\n<th>Team<br>Admin</th>\n<th>Team<br>Owner</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>View</td>\n<td>X</td>\n<td>X</td>\n<td>X</td>\n<td>X</td>\n<td>X</td>\n<td>X</td>\n<td>X</td>\n</tr>\n<tr>\n<td>Edit</td>\n<td>-</td>\n<td>X</td>\n<td>-</td>\n<td>-</td>\n<td>-</td>\n<td>X</td>\n<td>X</td>\n</tr>\n</tbody>\n</table>\n</details>\n<br>\n<details>\n    <summary>\n        Wallets Tab\n    </summary>\n<table>\n<thead>\n<tr>\n<th></th>\n<th>Team<br>Member</th>\n<th>Billing<br>Admin</th>\n<th>Community<br>Admin</th>\n<th>Microengine<br>Admin</th>\n<th>Wallet<br>Admin</th>\n<th>Team<br>Admin</th>\n<th>Team<br>Owner</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>View</td>\n<td>-</td>\n<td>-</td>\n<td>-</td>\n<td>-</td>\n<td>X</td>\n<td>X</td>\n<td>X</td>\n</tr>\n<tr>\n<td>Edit</td>\n<td>-</td>\n<td>-</td>\n<td>-</td>\n<td>-</td>\n<td>X</td>\n<td>X</td>\n<td>X</td>\n</tr>\n</tbody>\n</table>\n</details>\n<br>\n<details>\n    <summary>\n        Engine Webhooks Tab\n    </summary>\n<table>\n<thead>\n<tr>\n<th></th>\n<th>Team<br>Member</th>\n<th>Billing<br>Admin</th>\n<th>Community<br>Admin</th>\n<th>Microengine<br>Admin</th>\n<th>Wallet<br>Admin</th>\n<th>Team<br>Admin</th>\n<th>Team<br>Owner</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>View</td>\n<td>-</td>\n<td>-</td>\n<td>-</td>\n<td>X</td>\n<td>-</td>\n<td>X</td>\n<td>X</td>\n</tr>\n<tr>\n<td>Add</td>\n<td>-</td>\n<td>-</td>\n<td>-</td>\n<td>X</td>\n<td>-</td>\n<td>X</td>\n<td>X</td>\n</tr>\n<tr>\n<td>Delete</td>\n<td>-</td>\n<td>-</td>\n<td>-</td>\n<td>X</td>\n<td>-</td>\n<td>X</td>\n<td>X</td>\n</tr>\n</tbody>\n</table>\n</details>\n<h2 id=\"invitations\" style=\"position:relative;\"><a href=\"#invitations\" aria-label=\"invitations permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Invitations</h2>\n<div class=\"warning\" markdown=\"1\">\n<blockquote>\n<p>This feature is only available for \"<strong>Team Accounts</strong>\".</p>\n</blockquote>\n</div>\n<p>The Invitations tab allows Team Owners and Team Admins to manage Team member invitations.\nIt will list all currently active team invitations and will allow the Team Owners and Team Admins to delete or resend invitations.\nAll invited Team Members are set with the Team Member role by default.\nAdding additional Team Roles is done via the Members tab after they have accepted the Team Invitation.</p>\n<h2 id=\"api-key\" style=\"position:relative;\"><a href=\"#api-key\" aria-label=\"api key permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>API Keys</h2>\n<p>The API Keys tab allows User/Team Account members to manage their own API Keys.</p>\n<p>API Keys allow PolySwarm to authenticate and associate your usage activity with the related account.\nAll API Keys in a Team account share the Subscription Plan for that Team account.</p>\n<p>The \"Personal Account\" section has your API Keys for your User Account.\nThe \"Team Account\" section has your API keys for all Team Accounts where your User Account is a member.\nIn a Team account, each Team Member has their own separate API Keys and each Team Member can view/delete their own API Keys.\nIf you are a member of one or more Team Accounts, you will see API Keys listed for each Team Account.\nAll of these API Keys are unique to you.\nThey are not visible or shared with other Users.</p>\n<p>You must have at least one API Key in each account at all times, so we automatically create the first API Key in each account.\nYou can create more API Keys, and you can delete any API Key, but we do not permit deletion of the API Key if it is the only one for that account.</p>\n<p>When you create an API key, you can give it a Name and Expiration Date.\nA Name is now required and the Expiration Date defaults to never expires.\nWhen an API Key expires, it is not deleted, but it will no longer be accepted as valid.\nYou will get an email notification when one of your API keys is expiring.</p>\n<h2 id=\"integrations\" style=\"position:relative;\"><a href=\"#integrations\" aria-label=\"integrations permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Integrations</h2>\n<div class=\"warning\" markdown=\"1\">\n<blockquote>\n<p>This feature is only available for \"<strong>Team Accounts</strong>\".</p>\n</blockquote>\n</div>\n<p>The Integrations tab allows Team Owners and Team Admins to manage their Integration API Keys.\nThese are special API keys that are shared by ALL Team Members with the Team Owner or Team Admin role.\nWhen creating an Integration, you can specify a Name and Expiration Date.</p>\n<p>Just like regular API Keys, by default, the Name is blank, and Expiration Date is never expires.\nAnd when the key does expire, you will be notified by email and the key will no longer be valid to use.</p>\n<h2 id=\"webhooks\" style=\"position:relative;\"><a href=\"#webhooks\" aria-label=\"webhooks permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Engine Webhooks</h2>\n<p>The Engine Webhooks tab in the <a href=\"https://polyswarm.network/account/webhooks\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">User Account</a> or Team Account Settings of a PolySwarm UI Account allows you to manage engine webhooks used by your Account. In a Team Account, a User must have the Team Admin or Microengine Admin role to view and use the Engine Webhooks tab.</p>\n<p>To create your first engine webhook, click the “Create webhook” button to open the engine webhook creation window. If you have one or more existing engine webhooks, you can click the “+” button to create another one.</p>\n<p>In the Create Engine Webhook window, enter the engine webhook URL and its Rate Limit. Then click Save.</p>\n<p>Once the engine webhook has been created you can access a number of features listed below.</p>\n<p><a href=\"/images/ui/ui_settings_webhook.png\" target=\"_blank\"><img src=\"/images/ui/ui_settings_webhook.png\" alt=\"Settings Webhook Tab\" width=\"75%\"/></a></p>\n<ul>\n<li><strong>URL:</strong> The engine webhook URL must be the full URI that your web server is listening on to receive an engine webhook.\nIt must use HTTPS. Often it will be something like: “<a href=\"https://example.com:1234/my/api/%E2%80%9D\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https://example.com:1234/my/api/”</a></li>\n<li>\n<p><strong>Status:</strong> An engine webhook’s Status will be in one of the following states:</p>\n<ul>\n<li><code class=\"language-text\">Pending</code> - The engine webhook has been created, but has not been tested.</li>\n<li><code class=\"language-text\">Verified</code> - The engine webhook has been tested and the remote service responded correctly.</li>\n<li><code class=\"language-text\">Failed</code> - The engine webhook was Verified, but the remote service is no longer responding. If an engine webhook is in the Failed state, it needs to be Tested again to become Verified.</li>\n</ul>\n</li>\n<li><strong>Rate Limit:</strong> The rate limit is the number of engine webhook messages your engine webhook URL can process in one day (24hr period). This is the mechanism that you can use to control how many bounties your Engine receives in a day.</li>\n<li><strong>Engine Webhook HMAC Secret:</strong> The engine webhook’s HMAC Secret is used to allow the remote web service to verify that the engine webhook call was made by the PolySwarm Marketplace. All engine webhook calls are signed using the HMAC Secret, and can thus be verified by the recipient. In the Engine Webhooks tab, the HMAC Secret is hidden by default. You can click the “Eye” icon to view it or click the “Copy” icon to copy it to your clipboard.</li>\n<li><strong>Testing:</strong> In the Actions column, you can click on the “Gear” icon to open the Engine Webhook Test window. Click the “Test” button to send a “Ping” action to the remote engine webhook server. Give it about one minute to send the engine webhook. If the engine webhook server responds to the Ping action, the Status will update to be “verified”.</li>\n<li><strong>Deleting:</strong> To delete an engine webhook, click the “Trash” icon in the Actions column. An engine webhook cannot be deleted if it is associated with an Engine. You need to remove the engine webhook association from the Engine, and then you can delete the engine webhook.</li>\n</ul>\n<h2 id=\"rewards\" style=\"position:relative;\"><a href=\"#rewards\" aria-label=\"rewards permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Rewards</h2>\n<p>The <a href=\"https://polyswarm.network/account/rewards\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Rewards</a> tab allows you to manage your participation in the NectarNet Rewards program. This program allows users to share information automatically through browsing the internet and get paid in NCT coin.\nYou can view your rewards summary, and you can Redeem your Rewards.</p>\n<h2 id=\"wallet\" style=\"position:relative;\"><a href=\"#wallet\" aria-label=\"wallet permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Wallet</h2>\n<p>The Wallets tab allows team members with the Team Admin or Wallet Admin roles to manage your Wallets, you can also manage individual wallets if logged in as a \"User\".</p>\n<p>In a Team Account, a User must have the Team Admin or Wallet Admin role to view and use the Wallets tab.\nAll Users must <a href=\"/customers/accounts#advanced\">enable 2-factor authentication (2FA)</a> on their User Account before they can view the Wallets tab content.</p>\n<h3 id=\"rewards-wallets\" style=\"position:relative;\"><a href=\"#rewards-wallets\" aria-label=\"rewards wallets permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Rewards Wallets</h3>\n<p>The section named \"Rewards Wallets\" is the Wallets used by <a href=\"/customers/rewards\">PolySwarm Rewards</a> programs.\nOnce a User has opted into a Rewards program, there will be one row in this table for their Rewards wallet.</p>\n<ul>\n<li>Wallet - The name of the Rewards program</li>\n<li>Balance (NCT) - The current NCT balance of the Wallet</li>\n<li>Deposit Address - Rewards wallets do not currently support deposits.</li>\n<li>Withdrawal Address - An external ETH/NCT address where NCT tokens are sent when withdrawn from this Wallet (Redeemed).</li>\n<li>Withdrawal Limit - Max amount of NCT that can be withdrawn per day from this Wallet.</li>\n</ul>\n<p>In the Actions menu, there will be one or more options depending on the status of your wallet.</p>\n<ul>\n<li>Configure Withdrawals - This is where you define your <code class=\"language-text\">Withdrawal Address</code> and your <code class=\"language-text\">Withdrawal Limit</code>. This is the first step you must do.</li>\n<li>Withdrawals - Once you have defined a <code class=\"language-text\">Withdrawal Address</code> this option will be active. Use this to withdraw NCT from your Rewards wallet and transfer the NCT to your personal ETH/NCT wallet. Withdrawals from a Rewards wallet can be initiated using the Action menu, or by clicking the Redeem button on the Rewards tab.</li>\n</ul>\n<p>Below the name of the wallet is a Transactions table.\nClick the down arrow to view the set of Deposit and Withdrawal transactions for your Rewards wallet.\nNOTE: The Rewards payouts are not included in this table.</p>\n<h3 id=\"engine-wallets\" style=\"position:relative;\"><a href=\"#engine-wallets\" aria-label=\"engine wallets permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Engine Wallets</h3>\n<p>The section named \"Engine Wallets\" are the Wallets used by Engines (Microengines and Arbiters).\nThere is a separate row in the table for each Engine owned by an Account.</p>\n<ul>\n<li>Wallet - The name of the Engine</li>\n<li>Balance (NCT) - The current NCT balance of the Engine's Wallet</li>\n<li>Deposit Address - The Address where you can deposit NCT to add to your Engine's Wallet. If your Engine has not been Verified before, this will say \"Pending Engine Verification\".</li>\n</ul>\n<p>In the near future, we will be adding functionality to support making withdrawals from an Engine Wallet.</p>\n<h2 id=\"usage\" style=\"position:relative;\"><a href=\"#usage\" aria-label=\"usage permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Usage</h2>\n<p>The Usage tab displays the list of features available in the current Subscription Plan.</p>\n<p>The Daily API Request Limit is the maximum number of every total feature usage allowed per 24hrs.</p>\n<p>Next to each feature is the remaining number of times out of the total number of times that feature can be used, per quota reset period.</p>\n<p><strong>Example:</strong> <code class=\"language-text\">Hash Searches 6,692,085 of 7,000,000 /mo</code>, means you have 6,692,085 times left to use Hash Searches in that Month and the feature has been used 307,915 times.</p>\n<p><a href=\"/images/ui/ui_settings_usage.png\" target=\"_blank\"><img src=\"/images/ui/ui_settings_usage.png\" alt=\"Settings Usage Tab\" width=\"75%\"/></a></p>\n<h2 id=\"activity\" style=\"position:relative;\"><a href=\"#activity\" aria-label=\"activity permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Activity</h2>\n<p>The Activity tab provides access to functionality to report on events from members of your team.</p>\n<blockquote>\n<p><strong>Note:</strong> Team Admin and Team Owner accounts will be able to view events from all team members, non team admin accounts can only see events from their own account.</p>\n</blockquote>\n<p>This page will display the following items in the table:</p>\n<table>\n<thead>\n<tr>\n<th>Item</th>\n<th>Functionality</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Timestamp</td>\n<td>A time stamp showing when the event took place.</td>\n</tr>\n<tr>\n<td>Event Type</td>\n<td>Currently able to view Events for Sandbox Submissions (<code class=\"language-text\">sandbox_submit</code>, <code class=\"language-text\">sandbox_create</code>) and Scan Submissions (<code class=\"language-text\">scan_submit</code>, <code class=\"language-text\">scan_create</code>).</td>\n</tr>\n<tr>\n<td>User</td>\n<td>The Name and Email for the account that triggered the Event.</td>\n</tr>\n<tr>\n<td>Metadata</td>\n<td>Accompanying Metadata to the Event Type. This will vary for each Event Type but can contain information like the filename, full user name and instance ids. Clicking on the metadata will provide a popup with the full content.</td>\n</tr>\n</tbody>\n</table>\n<p>The Activity Page can be filtered based on the below items.</p>\n<ul>\n<li><strong>Event Type</strong> - Filter on Event Type i.e. Scan Create</li>\n<li><strong>User</strong> - Filter on User Events</li>\n<li><strong>Timestamp</strong> - Period to Filter on Events</li>\n<li><strong>Metadata</strong> - Various Metadata to filter on, for example Filename, Hash, Instance ID</li>\n</ul>\n<h2 id=\"advanced\" style=\"position:relative;\"><a href=\"#advanced\" aria-label=\"advanced permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Advanced</h2>\n<p>The Advanced tab provides access to functionality that is less often accessed.</p>\n<h3 id=\"secure-authentication\" style=\"position:relative;\"><a href=\"#secure-authentication\" aria-label=\"secure authentication permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Secure Authentication</h3>\n<p>Enabling Secure Authentication is highly recommended, especially when an email address and password are used to log in.</p>\n<p>This section will change depending on if the access is a User Account or a Team Account.</p>\n<p><strong>In a user context:</strong> The button will say \"Enable Two-Factor Authentication (2FA) for Secure Login.\" This encourages individual users to activate 2FA to enhance the security of their login process.</p>\n<p><a href=\"/images/ui/ui_auth_user.png\" target=\"_blank\"><img src=\"/images/ui/ui_auth_user.png\" alt=\"User Authentication 2FA\" width=\"75%\"/></a></p>\n<p><strong>In a team context:</strong> The button will say \"Require 2FA for all Team Members.\" This emphasizes the importance of implementing 2FA for every member of the team, making it mandatory for enhanced security across the entire team.</p>\n<p><a href=\"/images/ui/ui_auth_team.png\" target=\"_blank\"><img src=\"/images/ui/ui_auth_team.png\" alt=\"Team Authentication 2FA\" width=\"75%\"/></a></p>\n<p>For Users who have Engines or Wallets associated with their User Account, Enabled Secure Authentication is required.</p>\n<h3 id=\"restrict-access-to-members-tab\" style=\"position:relative;\"><a href=\"#restrict-access-to-members-tab\" aria-label=\"restrict access to members tab permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Restrict Access To Members Tab</h3>\n<p>If turned on, only Team Admins or Team Owners can see the Members tab. </p>\n<h3 id=\"sandbox-internet-access\" style=\"position:relative;\"><a href=\"#sandbox-internet-access\" aria-label=\"sandbox internet access permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Sandbox Internet Access</h3>\n<p>This section allows users the ability to define if the 'internet' is turned on or off by default when sandboxing in the specific communities.</p>\n<p><a href=\"/images/ui/ui_sandbox_inter.png\" target=\"_blank\"><img src=\"/images/ui/ui_sandbox_inter.png\" alt=\"Sandbox Internet Access\" width=\"75%\"/></a></p>\n<h3 id=\"artifact-download-encryption\" style=\"position:relative;\"><a href=\"#artifact-download-encryption\" aria-label=\"artifact download encryption permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Artifact Download Encryption</h3>\n<p>The default password when downloading files via the UI is <code class=\"language-text\">infected</code>, this section allows this to be override with a password of you choice. This change will affect all downloads for all team members. </p>\n<p><a href=\"/images/ui/ui_password_team.png\" target=\"_blank\"><img src=\"/images/ui/ui_password_team.png\" alt=\"Change Download Password\" width=\"75%\"/></a></p>\n<h3 id=\"notifications\" style=\"position:relative;\"><a href=\"#notifications\" aria-label=\"notifications permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Notifications</h3>\n<p>Enabling Notifications will provide email alerts for the individual user when a Sandbox Task has ended. Enabling or disabling this will effect the single user profile only, not the whole team. </p>\n<p>Further to this, Email Notifications will be sent out when each feature in your plan gets to 90% used in your quota window. The User must have the Team Owner or Billing Admin role assigned to them to receive these. </p>\n<p><a href=\"/images/ui/ui_notification.png\" target=\"_blank\"><img src=\"/images/ui/ui_notification.png\" alt=\"Email Notifications\" width=\"75%\"/></a></p>\n<h3 id=\"delete-account\" style=\"position:relative;\"><a href=\"#delete-account\" aria-label=\"delete account permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Delete Account</h3>\n<div class=\"warning\" markdown=\"1\">\n<blockquote>\n<p>This feature is only available for individual \"<strong>User Accounts</strong>\".</p>\n</blockquote>\n</div>\n<p>This feature will will permanently delete the user account.\nThere are some things to be aware of when deleting an account.</p>\n<ol>\n<li>If the user is the only Team Admin on a team, they cannot delete their account. The team has to first assign another user as a Team Admin.</li>\n<li>If the user has a claimed engine, they cannot delete their account. The user has to first delete their engine claim.</li>\n<li>If the user has an active Live Hunt, it will be automatically stopped and deleted.</li>\n<li>All Live and Historical Hunting instances, results, and rules will be deleted.</li>\n<li>All user account information will be deleted.</li>\n</ol>\n<div class=\"danger\" markdown=\"1\">\n<blockquote>\n<p><strong>Warning:</strong> There is no way to undo an account deletion once deleted!</p>\n</blockquote>\n</div>\n<h3 id=\"report\" style=\"position:relative;\"><a href=\"#report\" aria-label=\"report permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Configure Report Template</h3>\n<p>Provides the ability to change the template used for html and pdf reports. Accounts with the <em>Team Owner</em> or <em>Team Admin</em> role can change the template. The template they set will apply to the generation of all reports from all members of the team.</p>\n<table>\n<thead>\n<tr>\n<th>Item</th>\n<th>Functionality</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Logo</td>\n<td>Upload a <code class=\"language-text\">png</code> or <code class=\"language-text\">jpeg</code> for the logo, the max file size is 40KB and dimensions are 960x960.</td>\n</tr>\n<tr>\n<td>Primary Color</td>\n<td>Select the primary color from the color picker, or use the hex code. applies to the<code class=\"language-text\">html</code> and <code class=\"language-text\">pdf</code> report.</td>\n</tr>\n<tr>\n<td>Footer Text</td>\n<td>Text displayed at the bottom of each page.</td>\n</tr>\n<tr>\n<td>Disclaimer Text</td>\n<td>Text displayed on the last page.</td>\n</tr>\n</tbody>\n</table>\n<p><a href=\"/images/ui/ui_settings_report_template.png\" target=\"_blank\"><img src=\"/images/ui/ui_settings_report_template.png\" alt=\"Team Private Theme\" width=\"75%\"/></a></p>\n<h3 id=\"advanced-theme\" style=\"position:relative;\"><a href=\"#advanced-theme\" aria-label=\"advanced theme permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Private Mode Theme</h3>\n<p>If you have a Private Community, only Accounts with the <em>Team Owner</em> or <em>Team Admin</em> role can change the Theme. The Theme they set will apply to all members of the team.</p>\n<p><a href=\"/images/ui/ui_settings_advance_theme.png\" target=\"_blank\"><img src=\"/images/ui/ui_settings_advance_theme.png\" alt=\"Team Private Theme\" width=\"75%\"/></a></p>","rawMarkdownBody":"\n# Settings UI\n\nThis section will review the Settings Page contents and what items are available for each type of account, each section is available for both types of accounts unless highlighted.\n\nIn the Context Menu in the upper right corner, choose the Settings option to access the Account Settings for the active Account Context.\n\nWhen viewing the Account Settings, the left area has your username, name, email address, and account number readily displayed in the first box.\nThe second box indicates your current subscription plan, and the number of days remaining in your monthly usage period.\n\n<button>\n  <a href=\"https://polyswarm.network/account/usage\" target=\"_blank\" rel=\"noopener noreferrer\">\n    Explore PolySwarm Settings\n  </a>\n</button>\n\n## Profile {#profile}\n\n<div class=\"warning\" markdown=\"1\">\n\n> This feature is only available for individual \"**User Accounts**\".\n\n</div>\n\nThe [Profile](https://polyswarm.network/account/profile) tab allows you to change your username, name, company, and password.\nYou cannot change your email address.\nThe username is what gets displayed to other users as the owner of an engine, if you claim an engine.\n\n## Members {#members}\n\n<div class=\"warning\" markdown=\"1\">\n\n> This feature is only available for \"**Team Accounts**\".\n\n</div>\n\nThe Members tab allows Team Owners and Team Admins to manage the members of the team.\nWhen the Team Account is created, the only member is the User Account who created the team.\nThe User who created the team has the role of Team Owner by default.\n\nClick the **“+”** plus sign icon to add User Accounts to the Team Account.\nWhen inviting a user, you must specify both a name and email address.\nAdding a User Account will send an invitation to that User Account to join the Team Account.\n\n<a href=\"/images/ui/ui_settings_members.png\" target=\"_blank\"><img src=\"/images/ui/ui_settings_members.png\" alt=\"Settings Members Tab\" width=\"75%\"/></a>\n\nClick the Edit icon **(Pencil)** to edit a User, including modifying their Team Roles.\n\nMembers can be removed from the team, but there must always be at least one Team Owner.\n\n#### Members - Roles\n\n**Role-based** access control defines a User's permissions to view or edit various tabs and content.\nThis includes the Team Account Settings tabs and content as well as other content outside of the settings.\nThe below highlights what access each kind of Role has access too and the functionality available.\n\n<details>\n    <summary>\n        Advanced Tab\n    </summary>\n\n|      | Team<br>Member | Billing<br>Admin | Community<br>Admin | Microengine<br>Admin | Wallet<br>Admin | Team<br>Admin | Team<br>Owner |\n| ---- | -------------- | ---------------- | ------------------ | -------------------- | --------------- | ------------- | ------------- |\n| View | -              | -                | -                  | -                    | -               | X             | X             |\n\n</details>\n\n<br>\n\n<details>\n    <summary>\n        API Keys Tab\n    </summary>\n\n|        | Team<br>Member | Billing<br>Admin | Community<br>Admin | Microengine<br>Admin | Wallet<br>Admin | Team<br>Admin | Team<br>Owner |\n| ------ | -------------- | ---------------- | ------------------ | -------------------- | --------------- | ------------- | ------------- |\n| View   | X              | X                | X                  | X                    | X               | X             | X             |\n| Add    | X              | X                | X                  | X                    | X               | X             | X             |\n| Delete | -              | -                | -                  | -                    | -               | X             | X             |\n\n</details>\n\n<br>\n\n<details>\n    <summary>\n        Integrations Tab\n    </summary>\n\n|        | Team<br>Member | Billing<br>Admin | Community<br>Admin | Microengine<br>Admin | Wallet<br>Admin | Team<br>Admin | Team<br>Owner |\n| ------ | -------------- | ---------------- | ------------------ | -------------------- | --------------- | ------------- | ------------- |\n| View   | -              | -                | -                  | -                    | -               | X             | X             |\n| Add    | -              | -                | -                  | -                    | -               | X             | X             |\n| Delete | -              | -                | -                  | -                    | -               | X             | X             |\n\n</details>\n\n<br>\n\n<details>\n    <summary>\n        Invitations Tab\n    </summary>\n\n|        | Team<br>Member | Billing<br>Admin | Community<br>Admin | Microengine<br>Admin | Wallet<br>Admin | Team<br>Admin | Team<br>Owner |\n| ------ | -------------- | ---------------- | ------------------ | -------------------- | --------------- | ------------- | ------------- |\n| View   | -              | -                | -                  | -                    | -               | X             | X             |\n| Add    | -              | -                | -                  | -                    | -               | X             | X             |\n| Delete | -              | -                | -                  | -                    | -               | X             | X             |\n| Resend | -              | -                | -                  | -                    | -               | X             | X             |\n\n</details>\n\n<br>\n\n<details>\n    <summary>\n        Members Tab\n    </summary>\n\n|        | Team<br>Member | Billing<br>Admin | Community<br>Admin | Microengine<br>Admin | Wallet<br>Admin | Team<br>Admin | Team<br>Owner |\n| ------ | -------------- | ---------------- | ------------------ | -------------------- | --------------- | ------------- | ------------- |\n| View   | X              | X                | X                  | X                    | X               | X             | X             |\n| Add    | -              | -                | -                  | -                    | -               | X             | X             |\n| Edit   | -              | -                | -                  | -                    | -               | X             | X             |\n| Delete | X              | X                | X                  | X                    | X               | X             | X             |\n\n</details>\n\n<br>\n\n<details>\n    <summary>\n        Usage Tab\n    </summary>\n\n|      | Team<br>Member | Billing<br>Admin | Community<br>Admin | Microengine<br>Admin | Wallet<br>Admin | Team<br>Admin | Team<br>Owner |\n| ---- | -------------- | ---------------- | ------------------ | -------------------- | --------------- | ------------- | ------------- |\n| View | X              | X                | X                  | X                    | X               | X             | X             |\n| Edit | -              | X                | -                  | -                    | -               | X             | X             |\n\n</details>\n\n<br>\n\n<details>\n    <summary>\n        Wallets Tab\n    </summary>\n\n|      | Team<br>Member | Billing<br>Admin | Community<br>Admin | Microengine<br>Admin | Wallet<br>Admin | Team<br>Admin | Team<br>Owner |\n| ---- | -------------- | ---------------- | ------------------ | -------------------- | --------------- | ------------- | ------------- |\n| View | -              | -                | -                  | -                    | X               | X             | X             |\n| Edit | -              | -                | -                  | -                    | X               | X             | X             |\n\n</details>\n\n<br>\n\n<details>\n    <summary>\n        Engine Webhooks Tab\n    </summary>\n\n|        | Team<br>Member | Billing<br>Admin | Community<br>Admin | Microengine<br>Admin | Wallet<br>Admin | Team<br>Admin | Team<br>Owner |\n| ------ | -------------- | ---------------- | ------------------ | -------------------- | --------------- | ------------- | ------------- |\n| View   | -              | -                | -                  | X                    | -               | X             | X             |\n| Add    | -              | -                | -                  | X                    | -               | X             | X             |\n| Delete | -              | -                | -                  | X                    | -               | X             | X             |\n\n</details>\n\n## Invitations {#invitations}\n\n<div class=\"warning\" markdown=\"1\">\n\n> This feature is only available for \"**Team Accounts**\".\n\n</div>\n\nThe Invitations tab allows Team Owners and Team Admins to manage Team member invitations.\nIt will list all currently active team invitations and will allow the Team Owners and Team Admins to delete or resend invitations.\nAll invited Team Members are set with the Team Member role by default.\nAdding additional Team Roles is done via the Members tab after they have accepted the Team Invitation.\n\n## API Keys {#api-key}\n\nThe API Keys tab allows User/Team Account members to manage their own API Keys.\n\nAPI Keys allow PolySwarm to authenticate and associate your usage activity with the related account.\nAll API Keys in a Team account share the Subscription Plan for that Team account.\n\nThe \"Personal Account\" section has your API Keys for your User Account.\nThe \"Team Account\" section has your API keys for all Team Accounts where your User Account is a member.\nIn a Team account, each Team Member has their own separate API Keys and each Team Member can view/delete their own API Keys.\nIf you are a member of one or more Team Accounts, you will see API Keys listed for each Team Account.\nAll of these API Keys are unique to you.\nThey are not visible or shared with other Users.\n\nYou must have at least one API Key in each account at all times, so we automatically create the first API Key in each account.\nYou can create more API Keys, and you can delete any API Key, but we do not permit deletion of the API Key if it is the only one for that account.\n\nWhen you create an API key, you can give it a Name and Expiration Date.\nA Name is now required and the Expiration Date defaults to never expires.\nWhen an API Key expires, it is not deleted, but it will no longer be accepted as valid.\nYou will get an email notification when one of your API keys is expiring.\n\n## Integrations {#integrations}\n\n<div class=\"warning\" markdown=\"1\">\n\n> This feature is only available for \"**Team Accounts**\".\n\n</div>\n\nThe Integrations tab allows Team Owners and Team Admins to manage their Integration API Keys.\nThese are special API keys that are shared by ALL Team Members with the Team Owner or Team Admin role.\nWhen creating an Integration, you can specify a Name and Expiration Date.\n\nJust like regular API Keys, by default, the Name is blank, and Expiration Date is never expires.\nAnd when the key does expire, you will be notified by email and the key will no longer be valid to use.\n\n## Engine Webhooks {#webhooks}\n\nThe Engine Webhooks tab in the [User Account](https://polyswarm.network/account/webhooks) or Team Account Settings of a PolySwarm UI Account allows you to manage engine webhooks used by your Account. In a Team Account, a User must have the Team Admin or Microengine Admin role to view and use the Engine Webhooks tab.\n\nTo create your first engine webhook, click the “Create webhook” button to open the engine webhook creation window. If you have one or more existing engine webhooks, you can click the “+” button to create another one.\n\nIn the Create Engine Webhook window, enter the engine webhook URL and its Rate Limit. Then click Save.\n\nOnce the engine webhook has been created you can access a number of features listed below.\n\n<a href=\"/images/ui/ui_settings_webhook.png\" target=\"_blank\"><img src=\"/images/ui/ui_settings_webhook.png\" alt=\"Settings Webhook Tab\" width=\"75%\"/></a>\n\n- **URL:** The engine webhook URL must be the full URI that your web server is listening on to receive an engine webhook.\n  It must use HTTPS. Often it will be something like: “https://example.com:1234/my/api/”\n- **Status:** An engine webhook’s Status will be in one of the following states:\n  - `Pending` - The engine webhook has been created, but has not been tested.\n  - `Verified` - The engine webhook has been tested and the remote service responded correctly.\n  - `Failed` - The engine webhook was Verified, but the remote service is no longer responding. If an engine webhook is in the Failed state, it needs to be Tested again to become Verified.\n- **Rate Limit:** The rate limit is the number of engine webhook messages your engine webhook URL can process in one day (24hr period). This is the mechanism that you can use to control how many bounties your Engine receives in a day.\n- **Engine Webhook HMAC Secret:** The engine webhook’s HMAC Secret is used to allow the remote web service to verify that the engine webhook call was made by the PolySwarm Marketplace. All engine webhook calls are signed using the HMAC Secret, and can thus be verified by the recipient. In the Engine Webhooks tab, the HMAC Secret is hidden by default. You can click the “Eye” icon to view it or click the “Copy” icon to copy it to your clipboard.\n- **Testing:** In the Actions column, you can click on the “Gear” icon to open the Engine Webhook Test window. Click the “Test” button to send a “Ping” action to the remote engine webhook server. Give it about one minute to send the engine webhook. If the engine webhook server responds to the Ping action, the Status will update to be “verified”.\n- **Deleting:** To delete an engine webhook, click the “Trash” icon in the Actions column. An engine webhook cannot be deleted if it is associated with an Engine. You need to remove the engine webhook association from the Engine, and then you can delete the engine webhook.\n\n## Rewards {#rewards}\n\nThe [Rewards](https://polyswarm.network/account/rewards) tab allows you to manage your participation in the NectarNet Rewards program. This program allows users to share information automatically through browsing the internet and get paid in NCT coin.\nYou can view your rewards summary, and you can Redeem your Rewards.\n\n## Wallet {#wallet}\n\nThe Wallets tab allows team members with the Team Admin or Wallet Admin roles to manage your Wallets, you can also manage individual wallets if logged in as a \"User\".\n\nIn a Team Account, a User must have the Team Admin or Wallet Admin role to view and use the Wallets tab.\nAll Users must [enable 2-factor authentication (2FA)](/customers/accounts#advanced) on their User Account before they can view the Wallets tab content.\n\n### Rewards Wallets\n\nThe section named \"Rewards Wallets\" is the Wallets used by [PolySwarm Rewards](/customers/rewards) programs.\nOnce a User has opted into a Rewards program, there will be one row in this table for their Rewards wallet.\n\n- Wallet - The name of the Rewards program\n- Balance (NCT) - The current NCT balance of the Wallet\n- Deposit Address - Rewards wallets do not currently support deposits.\n- Withdrawal Address - An external ETH/NCT address where NCT tokens are sent when withdrawn from this Wallet (Redeemed).\n- Withdrawal Limit - Max amount of NCT that can be withdrawn per day from this Wallet.\n\nIn the Actions menu, there will be one or more options depending on the status of your wallet.\n\n- Configure Withdrawals - This is where you define your `Withdrawal Address` and your `Withdrawal Limit`. This is the first step you must do.\n- Withdrawals - Once you have defined a `Withdrawal Address` this option will be active. Use this to withdraw NCT from your Rewards wallet and transfer the NCT to your personal ETH/NCT wallet. Withdrawals from a Rewards wallet can be initiated using the Action menu, or by clicking the Redeem button on the Rewards tab.\n\nBelow the name of the wallet is a Transactions table.\nClick the down arrow to view the set of Deposit and Withdrawal transactions for your Rewards wallet.\nNOTE: The Rewards payouts are not included in this table.\n\n### Engine Wallets\n\nThe section named \"Engine Wallets\" are the Wallets used by Engines (Microengines and Arbiters).\nThere is a separate row in the table for each Engine owned by an Account.\n\n- Wallet - The name of the Engine\n- Balance (NCT) - The current NCT balance of the Engine's Wallet\n- Deposit Address - The Address where you can deposit NCT to add to your Engine's Wallet. If your Engine has not been Verified before, this will say \"Pending Engine Verification\".\n\nIn the near future, we will be adding functionality to support making withdrawals from an Engine Wallet.\n\n## Usage {#usage}\n\nThe Usage tab displays the list of features available in the current Subscription Plan.\n\nThe Daily API Request Limit is the maximum number of every total feature usage allowed per 24hrs.\n\nNext to each feature is the remaining number of times out of the total number of times that feature can be used, per quota reset period.\n\n**Example:** `Hash Searches 6,692,085 of 7,000,000 /mo`, means you have 6,692,085 times left to use Hash Searches in that Month and the feature has been used 307,915 times.\n\n<a href=\"/images/ui/ui_settings_usage.png\" target=\"_blank\"><img src=\"/images/ui/ui_settings_usage.png\" alt=\"Settings Usage Tab\" width=\"75%\"/></a>\n\n## Activity {#activity}\n\nThe Activity tab provides access to functionality to report on events from members of your team.\n\n> **Note:** Team Admin and Team Owner accounts will be able to view events from all team members, non team admin accounts can only see events from their own account.\n\nThis page will display the following items in the table:\n\n| Item       | Functionality                                                                                                                                                                                                                    |\n| ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Timestamp  | A time stamp showing when the event took place.                                                                                                                                                                                  |\n| Event Type | Currently able to view Events for Sandbox Submissions (`sandbox_submit`, `sandbox_create`) and Scan Submissions (`scan_submit`, `scan_create`).                                                                                  |\n| User       | The Name and Email for the account that triggered the Event.                                                                                                                                                                     |\n| Metadata   | Accompanying Metadata to the Event Type. This will vary for each Event Type but can contain information like the filename, full user name and instance ids. Clicking on the metadata will provide a popup with the full content. |\n\nThe Activity Page can be filtered based on the below items.\n\n- **Event Type** - Filter on Event Type i.e. Scan Create\n- **User** - Filter on User Events\n- **Timestamp** - Period to Filter on Events\n- **Metadata** - Various Metadata to filter on, for example Filename, Hash, Instance ID\n\n## Advanced {#advanced}\n\nThe Advanced tab provides access to functionality that is less often accessed.\n\n### Secure Authentication\n\nEnabling Secure Authentication is highly recommended, especially when an email address and password are used to log in.\n\nThis section will change depending on if the access is a User Account or a Team Account.\n\n**In a user context:** The button will say \"Enable Two-Factor Authentication (2FA) for Secure Login.\" This encourages individual users to activate 2FA to enhance the security of their login process.\n\n<a href=\"/images/ui/ui_auth_user.png\" target=\"_blank\"><img src=\"/images/ui/ui_auth_user.png\" alt=\"User Authentication 2FA\" width=\"75%\"/></a>\n\n**In a team context:** The button will say \"Require 2FA for all Team Members.\" This emphasizes the importance of implementing 2FA for every member of the team, making it mandatory for enhanced security across the entire team.\n\n<a href=\"/images/ui/ui_auth_team.png\" target=\"_blank\"><img src=\"/images/ui/ui_auth_team.png\" alt=\"Team Authentication 2FA\" width=\"75%\"/></a>\n\nFor Users who have Engines or Wallets associated with their User Account, Enabled Secure Authentication is required.\n\n### Restrict Access To Members Tab \n\nIf turned on, only Team Admins or Team Owners can see the Members tab. \n\n### Sandbox Internet Access\n\nThis section allows users the ability to define if the 'internet' is turned on or off by default when sandboxing in the specific communities.\n\n<a href=\"/images/ui/ui_sandbox_inter.png\" target=\"_blank\"><img src=\"/images/ui/ui_sandbox_inter.png\" alt=\"Sandbox Internet Access\" width=\"75%\"/></a>\n\n### Artifact Download Encryption\n\nThe default password when downloading files via the UI is `infected`, this section allows this to be override with a password of you choice. This change will affect all downloads for all team members. \n\n<a href=\"/images/ui/ui_password_team.png\" target=\"_blank\"><img src=\"/images/ui/ui_password_team.png\" alt=\"Change Download Password\" width=\"75%\"/></a>\n\n\n### Notifications\n\nEnabling Notifications will provide email alerts for the individual user when a Sandbox Task has ended. Enabling or disabling this will effect the single user profile only, not the whole team. \n\nFurther to this, Email Notifications will be sent out when each feature in your plan gets to 90% used in your quota window. The User must have the Team Owner or Billing Admin role assigned to them to receive these. \n\n<a href=\"/images/ui/ui_notification.png\" target=\"_blank\"><img src=\"/images/ui/ui_notification.png\" alt=\"Email Notifications\" width=\"75%\"/></a>\n\n### Delete Account\n\n<div class=\"warning\" markdown=\"1\">\n\n> This feature is only available for individual \"**User Accounts**\".\n\n</div>\n\nThis feature will will permanently delete the user account.\nThere are some things to be aware of when deleting an account.\n\n1. If the user is the only Team Admin on a team, they cannot delete their account. The team has to first assign another user as a Team Admin.\n2. If the user has a claimed engine, they cannot delete their account. The user has to first delete their engine claim.\n3. If the user has an active Live Hunt, it will be automatically stopped and deleted.\n4. All Live and Historical Hunting instances, results, and rules will be deleted.\n5. All user account information will be deleted.\n\n<div class=\"danger\" markdown=\"1\">\n\n> **Warning:** There is no way to undo an account deletion once deleted!\n\n</div>\n\n### Configure Report Template {#report}\n\nProvides the ability to change the template used for html and pdf reports. Accounts with the _Team Owner_ or _Team Admin_ role can change the template. The template they set will apply to the generation of all reports from all members of the team.\n\n| Item            | Functionality                                                                                               |\n| --------------- | ----------------------------------------------------------------------------------------------------------- |\n| Logo            | Upload a `png` or `jpeg` for the logo, the max file size is 40KB and dimensions are 960x960.                |\n| Primary Color   | Select the primary color from the color picker, or use the hex code. applies to the`html` and `pdf` report. |\n| Footer Text     | Text displayed at the bottom of each page.                                                                  |\n| Disclaimer Text | Text displayed on the last page.                                                                            |\n\n<a href=\"/images/ui/ui_settings_report_template.png\" target=\"_blank\"><img src=\"/images/ui/ui_settings_report_template.png\" alt=\"Team Private Theme\" width=\"75%\"/></a>\n\n### Private Mode Theme {#advanced-theme}\n\nIf you have a Private Community, only Accounts with the _Team Owner_ or _Team Admin_ role can change the Theme. The Theme they set will apply to all members of the team.\n\n<a href=\"/images/ui/ui_settings_advance_theme.png\" target=\"_blank\"><img src=\"/images/ui/ui_settings_advance_theme.png\" alt=\"Team Private Theme\" width=\"75%\"/></a>\n"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/engines/getting-started/marketplace-concepts.md","frontmatter":{"title":"Marketplace Concepts","excerpt":"The core marketplace terms, communities, and how verdicts and rewards are determined."},"html":"<h1 id=\"marketplace-concepts\" style=\"position:relative;\"><a href=\"#marketplace-concepts\" aria-label=\"marketplace concepts permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Marketplace Concepts</h1>\n<h2 id=\"marketplace-flow\" style=\"position:relative;\"><a href=\"#marketplace-flow\" aria-label=\"marketplace flow permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Marketplace flow</h2>\n<p>PolySwarm is a threat intelligence marketplace where Engines analyze artifacts and are incentivised for accurate results. The marketplace involves three roles:</p>\n<ul>\n<li><strong>Ambassador</strong>: brokers access to intelligence for customers and returns a final verdict</li>\n<li><strong>Engines</strong>: submit assertions (malicious or benign) and optionally stake <strong>NCT</strong> on confidence via bids</li>\n<li><strong>Arbiters</strong>: provide ground truth after additional time and evidence</li>\n</ul>\n<h3 id=\"end-to-end-flow\" style=\"position:relative;\"><a href=\"#end-to-end-flow\" aria-label=\"end to end flow permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>End-to-end flow</h3>\n<ol>\n<li>An <strong>Ambassador</strong> submits a suspicious <strong>artifact</strong> (file, URL, IP, or domain) as a <strong>bounty</strong>.</li>\n<li><strong>Engines</strong> receive the bounty and decide whether to participate.</li>\n<li>Participating Engines return an <strong>assertion</strong> (malicious or benign) and may place a <strong>bid</strong> in <strong>NCT</strong>.</li>\n<li>The <strong>Ambassador</strong> combines assertions and returns a <strong>verdict</strong> to the customer.</li>\n<li>Later, <strong>Arbiters</strong> publish <strong>ground truth</strong> for the artifact.</li>\n<li>Engines whose assertions match ground truth are rewarded, while engines that disagreed may lose staked NCT.</li>\n</ol>\n<p>PolySwarm performs the role of <strong>Ambassador</strong>. As an Engine partner, you participate as an <strong>Engine</strong>.</p>\n<h2 id=\"communities\" style=\"position:relative;\"><a href=\"#communities\" aria-label=\"communities permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Communities</h2>\n<p>PolySwarm is organised into <strong>Communities</strong>, which define who can participate and where bounties run.</p>\n<ul>\n<li><strong>Public Community</strong>: open access and the default place to get started and test.</li>\n<li><strong>Private Communities</strong>: invite only environments used for specific customer needs (for example NDA or data handling requirements).</li>\n</ul>\n<p>In most cases, Engines can participate in Private Communities without code changes. Access is controlled by configuration and customer selection.</p>\n<h2 id=\"blockchain-and-nct-what-you-need-to-know\" style=\"position:relative;\"><a href=\"#blockchain-and-nct-what-you-need-to-know\" aria-label=\"blockchain and nct what you need to know permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Blockchain and NCT (what you need to know)</h2>\n<p>Engines may stake and earn <strong>Nectar (NCT)</strong> through marketplace bidding and rewards.<br>\nYou <strong>do not</strong> need to write blockchain code, all chain interactions are handled by PolySwarm as part of the marketplace.</p>","rawMarkdownBody":"\n# Marketplace Concepts\n\n## Marketplace flow\n\nPolySwarm is a threat intelligence marketplace where Engines analyze artifacts and are incentivised for accurate results. The marketplace involves three roles:\n\n- **Ambassador**: brokers access to intelligence for customers and returns a final verdict\n- **Engines**: submit assertions (malicious or benign) and optionally stake **NCT** on confidence via bids\n- **Arbiters**: provide ground truth after additional time and evidence\n\n### End-to-end flow\n\n1. An **Ambassador** submits a suspicious **artifact** (file, URL, IP, or domain) as a **bounty**.\n2. **Engines** receive the bounty and decide whether to participate.\n3. Participating Engines return an **assertion** (malicious or benign) and may place a **bid** in **NCT**.\n4. The **Ambassador** combines assertions and returns a **verdict** to the customer.\n5. Later, **Arbiters** publish **ground truth** for the artifact.\n6. Engines whose assertions match ground truth are rewarded, while engines that disagreed may lose staked NCT.\n\nPolySwarm performs the role of **Ambassador**. As an Engine partner, you participate as an **Engine**.\n\n## Communities\n\nPolySwarm is organised into **Communities**, which define who can participate and where bounties run.\n\n- **Public Community**: open access and the default place to get started and test.\n- **Private Communities**: invite only environments used for specific customer needs (for example NDA or data handling requirements).\n\nIn most cases, Engines can participate in Private Communities without code changes. Access is controlled by configuration and customer selection.\n\n## Blockchain and NCT (what you need to know)\n\nEngines may stake and earn **Nectar (NCT)** through marketplace bidding and rewards.  \nYou **do not** need to write blockchain code, all chain interactions are handled by PolySwarm as part of the marketplace."}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/engines/launch-to-production/deposit-nct.md","frontmatter":{"title":"Deposit NCT","excerpt":"How Engine wallets work, when to deposit, and how to estimate required funding."},"html":"<h1 id=\"deposit-nct\" style=\"position:relative;\"><a href=\"#deposit-nct\" aria-label=\"deposit nct permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Deposit NCT</h1>\n<p>Engines may stake and earn <strong>Nectar (NCT)</strong> through marketplace bidding and rewards. Engines do not need to manage blockchain interactions directly, wallet functionality is handled within the PolySwarm Marketplace and UI.</p>\n<p>This page explains how deposits work and how to estimate an initial funding amount.</p>\n<h2 id=\"viewing-engine-wallet\" style=\"position:relative;\"><a href=\"#viewing-engine-wallet\" aria-label=\"viewing engine wallet permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Viewing Engine Wallet</h2>\n<p>In the PolySwarm UI, open your User or Team account settings and locate the <strong>Wallets</strong> area. There you can:</p>\n<ul>\n<li>View your Engine wallet balance</li>\n<li>Find the Engine wallet deposit address</li>\n<li>Track wallet activity as the Engine runs</li>\n</ul>\n<h2 id=\"how-deposits-work\" style=\"position:relative;\"><a href=\"#how-deposits-work\" aria-label=\"how deposits work permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>How Deposits Work</h2>\n<p>For production communities, NCT is added to an Engine by depositing to the Engine wallet deposit address.</p>\n<ul>\n<li>Deposits are initiated from your external wallet or custody solution</li>\n<li>Once confirmed, the Engine wallet balance updates in the UI</li>\n</ul>\n<p>If your organisation cannot hold or use cryptocurrencies for legal or policy reasons, contact PolySwarm to discuss alternatives.</p>\n<h3 id=\"estimating-your-initial-deposit\" style=\"position:relative;\"><a href=\"#estimating-your-initial-deposit\" aria-label=\"estimating your initial deposit permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Estimating your Initial Deposit</h3>\n<p>A practical estimate for initial funding is:</p>\n<p><code class=\"language-text\">Estimated Initial NCT = (Bounties per day asserted on) * (Average bid per assertion in NCT) * (Days in arbitration period)</code></p>\n<p>Guidelines:</p>\n<ul>\n<li><strong>Bounties per day asserted on</strong>: use your configured rate limit as an upper bound, or a smaller value if you only participate in a subset of artifact types.</li>\n<li><strong>Average bid per assertion</strong>: use your expected average bid. If you want a conservative upper bound, use your maximum bid.</li>\n<li><strong>Arbitration period</strong>: assume a multi-week delay (commonly around 14 days) unless PolySwarm confirms otherwise for your community.</li>\n</ul>\n<p>If you prefer a simple starting point, fund an amount that supports at least two weeks of expected bids, then monitor and top up as needed.</p>\n<h2 id=\"maintaining-a-sufficient-balance\" style=\"position:relative;\"><a href=\"#maintaining-a-sufficient-balance\" aria-label=\"maintaining a sufficient balance permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Maintaining a Sufficient Balance</h2>\n<p>Your Engine wallet cannot go negative. If it drops too low, your Engine may be unable to place bids and may effectively stop participating.</p>\n<p>Key balance movements:</p>\n<ul>\n<li>\n<p><strong>Assertions with bids</strong></p>\n<ul>\n<li>Bid amounts are deducted from your Engine wallet when assertions are made</li>\n<li>If the wallet cannot cover a bid, the bid may be treated as 0 and may not participate as expected</li>\n</ul>\n</li>\n<li>\n<p><strong>Arbitration and rewards</strong></p>\n<ul>\n<li>Rewards arrive after arbitration, typically on a delay of 2 weeks</li>\n<li>Your wallet must be large enough to cover bids until rewards are paid out</li>\n</ul>\n</li>\n<li>\n<p><strong>Deposits</strong></p>\n<ul>\n<li>Increase wallet balance after confirmation</li>\n</ul>\n</li>\n<li>\n<p><strong>Withdrawals</strong></p>\n<ul>\n<li>Reduce wallet balance immediately when initiated</li>\n</ul>\n</li>\n</ul>\n<h2 id=\"when-to-deposit\" style=\"position:relative;\"><a href=\"#when-to-deposit\" aria-label=\"when to deposit permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>When to Deposit?</h2>\n<p>Most Engine partners deposit NCT during the final stages of verification and activation:</p>\n<ul>\n<li>You request verification</li>\n<li>PolySwarm confirms the Engine wallet and deposit address</li>\n<li>You deposit enough NCT to support expected bidding during the arbitration window</li>\n<li>Once verified and funded, the Engine can be activated for production participation</li>\n</ul>","rawMarkdownBody":"\n# Deposit NCT\n\nEngines may stake and earn **Nectar (NCT)** through marketplace bidding and rewards. Engines do not need to manage blockchain interactions directly, wallet functionality is handled within the PolySwarm Marketplace and UI.\n\nThis page explains how deposits work and how to estimate an initial funding amount.\n\n## Viewing Engine Wallet\n\nIn the PolySwarm UI, open your User or Team account settings and locate the **Wallets** area. There you can:\n\n- View your Engine wallet balance\n- Find the Engine wallet deposit address\n- Track wallet activity as the Engine runs\n\n## How Deposits Work\n\nFor production communities, NCT is added to an Engine by depositing to the Engine wallet deposit address.\n\n- Deposits are initiated from your external wallet or custody solution\n- Once confirmed, the Engine wallet balance updates in the UI\n\nIf your organisation cannot hold or use cryptocurrencies for legal or policy reasons, contact PolySwarm to discuss alternatives.\n\n### Estimating your Initial Deposit\n\nA practical estimate for initial funding is:\n\n``` Estimated Initial NCT = (Bounties per day asserted on) * (Average bid per assertion in NCT) * (Days in arbitration period) ```\n\nGuidelines:\n- **Bounties per day asserted on**: use your configured rate limit as an upper bound, or a smaller value if you only participate in a subset of artifact types.\n- **Average bid per assertion**: use your expected average bid. If you want a conservative upper bound, use your maximum bid.\n- **Arbitration period**: assume a multi-week delay (commonly around 14 days) unless PolySwarm confirms otherwise for your community.\n\nIf you prefer a simple starting point, fund an amount that supports at least two weeks of expected bids, then monitor and top up as needed.\n\n## Maintaining a Sufficient Balance\n\nYour Engine wallet cannot go negative. If it drops too low, your Engine may be unable to place bids and may effectively stop participating.\n\nKey balance movements:\n\n* **Assertions with bids**\n   * Bid amounts are deducted from your Engine wallet when assertions are made\n   * If the wallet cannot cover a bid, the bid may be treated as 0 and may not participate as expected\n\n*  **Arbitration and rewards**\n   * Rewards arrive after arbitration, typically on a delay of 2 weeks\n   * Your wallet must be large enough to cover bids until rewards are paid out\n\n*  **Deposits**\n   * Increase wallet balance after confirmation\n\n*  **Withdrawals**\n   * Reduce wallet balance immediately when initiated\n\n## When to Deposit?\n\nMost Engine partners deposit NCT during the final stages of verification and activation:\n\n- You request verification\n- PolySwarm confirms the Engine wallet and deposit address\n- You deposit enough NCT to support expected bidding during the arbitration window\n- Once verified and funded, the Engine can be activated for production participation\n"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/engines/getting-started/roles.md","frontmatter":{"title":"Roles","excerpt":"Who does what in the marketplace, and how Engines interact with PolySwarm and ground truth."},"html":"<h1 id=\"roles\" style=\"position:relative;\"><a href=\"#roles\" aria-label=\"roles permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Roles</h1>\n<p>PolySwarm is a threat intelligence marketplace where customers receive verdicts on suspicious artifacts, and Engine partners are incentivised for accurate analysis.</p>\n<h2 id=\"polyswarm-ambassador\" style=\"position:relative;\"><a href=\"#polyswarm-ambassador\" aria-label=\"polyswarm ambassador permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>PolySwarm (Ambassador)</h2>\n<p>PolySwarm brokers access to the marketplace for customers. It submits bounties, collects Engine assertions, and returns a verdict.</p>\n<h2 id=\"engine-you\" style=\"position:relative;\"><a href=\"#engine-you\" aria-label=\"engine you permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Engine (you)</h2>\n<p>Engines analyse artifacts and submit an assertion (malicious or benign). Engines may also bid <strong>Nectar (NCT)</strong> to express confidence, and are rewarded when their results align with confirmed ground truth.</p>\n<p>Engines are typically operated by individuals or organisations with malware detection capability, specialised tooling, or expertise in a specific family, file type, or technique.</p>\n<h2 id=\"arbiter\" style=\"position:relative;\"><a href=\"#arbiter\" aria-label=\"arbiter permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Arbiter</h2>\n<p>Arbiters publish <strong>ground truth</strong> after additional time and evidence. That ground truth is used to settle rewards and penalties across participating Engines.</p>\n<p>In practice, the Arbiter capability is implemented using the same core Engine model, but applied later in the bounty lifecycle. </p>","rawMarkdownBody":"\n# Roles\n\nPolySwarm is a threat intelligence marketplace where customers receive verdicts on suspicious artifacts, and Engine partners are incentivised for accurate analysis.\n\n## PolySwarm (Ambassador)\nPolySwarm brokers access to the marketplace for customers. It submits bounties, collects Engine assertions, and returns a verdict.\n\n## Engine (you)\nEngines analyse artifacts and submit an assertion (malicious or benign). Engines may also bid **Nectar (NCT)** to express confidence, and are rewarded when their results align with confirmed ground truth.\n\nEngines are typically operated by individuals or organisations with malware detection capability, specialised tooling, or expertise in a specific family, file type, or technique.\n\n## Arbiter\nArbiters publish **ground truth** after additional time and evidence. That ground truth is used to settle rewards and penalties across participating Engines.\n\nIn practice, the Arbiter capability is implemented using the same core Engine model, but applied later in the bounty lifecycle. \n"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/engines/launch-to-production/production-hosting.md","frontmatter":{"title":"Production Hosting","excerpt":"Production readiness requirements for your endpoint, performance, and rate limits."},"html":"<h1 id=\"production-hosting\" style=\"position:relative;\"><a href=\"#production-hosting\" aria-label=\"production hosting permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Production Hosting</h1>\n<p>This page describes the hosting requirements for running your Engine webhook service in production. Your Engine must meet these requirements to pass verification and operate reliably in public production communities.</p>\n<p>PolySwarm does not mandate specific vendors or tooling, you can choose the hosting approach that fits your organisation. The requirements below describe what must be true regardless of where you run it.</p>\n<h2 id=\"requirements\" style=\"position:relative;\"><a href=\"#requirements\" aria-label=\"requirements permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Requirements</h2>\n<h3 id=\"publicly-accessible-over-https\" style=\"position:relative;\"><a href=\"#publicly-accessible-over-https\" aria-label=\"publicly accessible over https permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Publicly Accessible over HTTPS</h3>\n<p>Your engine webhook endpoint must be reachable from the public internet using HTTPS.</p>\n<ul>\n<li>The engine webhook URL must use a fully qualified domain name (FQDN)</li>\n<li>The URL may include a path</li>\n<li>TLS certificates must be valid and kept up to date</li>\n</ul>\n<h3 id=\"rate-limit\" style=\"position:relative;\"><a href=\"#rate-limit\" aria-label=\"rate limit permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Rate Limit</h3>\n<p>In the PolySwarm UI, you can set a daily rate limit for an engine webhook. Your hosting must be able to sustain that rate limit.</p>\n<p>If your Engine cannot keep up, it may:</p>\n<ul>\n<li>Fail to accept engine webhooks</li>\n<li>Time out frequently</li>\n<li>Respond too late to participate in rewards</li>\n</ul>\n<p>Engines that repeatedly fail to respond may be marked <strong>Failed</strong> and stop receiving bounties. Recovery usually requires fixes plus a new verification request.</p>\n<h3 id=\"sufficient-bandwidth-file-engines\" style=\"position:relative;\"><a href=\"#sufficient-bandwidth-file-engines\" aria-label=\"sufficient bandwidth file engines permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Sufficient Bandwidth (File Engines)</h3>\n<p>Engines that process file artifacts may download significant volumes of data, bounded by your configured rate limit. Insufficient bandwidth can cause:</p>\n<ul>\n<li>Delayed artifact downloads</li>\n<li>Late assertions (late assertions may not participate in rewards)</li>\n<li>Engine webhook request failures under load</li>\n</ul>\n<p>Ensure your hosting provides enough bandwidth for your expected daily volume and concurrency.</p>\n<h3 id=\"concurrency\" style=\"position:relative;\"><a href=\"#concurrency\" aria-label=\"concurrency permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Concurrency</h3>\n<p>Your engine webhook server must not block on scanning.</p>\n<p>Minimum expectations:</p>\n<ul>\n<li>Validate signature and enqueue work</li>\n<li>Return <code class=\"language-text\">202 Accepted</code> quickly</li>\n<li>Perform analysis in worker processes</li>\n<li>Enforce timeouts on any external tools</li>\n</ul>\n<h3 id=\"monitoring-and-logging\" style=\"position:relative;\"><a href=\"#monitoring-and-logging\" aria-label=\"monitoring and logging permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Monitoring and Logging</h3>\n<p>At minimum, you should be able to observe:</p>\n<ul>\n<li>Engine webhook received and validated</li>\n<li>Bounty queued for processing</li>\n<li>Analysis completed (verdict and timing)</li>\n<li>Assertion posted successfully (or error details)</li>\n</ul>\n<p>This reduces verification friction and improves time to recover when issues occur.</p>\n<h2 id=\"migrating-from-a-development-endpoint\" style=\"position:relative;\"><a href=\"#migrating-from-a-development-endpoint\" aria-label=\"migrating from a development endpoint permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Migrating from a Development Endpoint</h2>\n<p>If you used a temporary endpoint (for example ngrok) during development testing, switch to your production endpoint before requesting verification.</p>\n<p>A safe migration approach:</p>\n<ol>\n<li>Create a new engine webhook in the PolySwarm UI pointing to the production endpoint.</li>\n<li>Attach the new engine webhook to your Engine.</li>\n<li>Test in the Development Community using the production endpoint.</li>\n<li>Remove or disable the old engine webhook once the new one is stable.</li>\n</ol>\n<p>Engine webhooks may be treated as immutable configuration objects, so plan for creating a new engine webhook rather than editing an existing one.</p>","rawMarkdownBody":"\n# Production Hosting\n\nThis page describes the hosting requirements for running your Engine webhook service in production. Your Engine must meet these requirements to pass verification and operate reliably in public production communities.\n\nPolySwarm does not mandate specific vendors or tooling, you can choose the hosting approach that fits your organisation. The requirements below describe what must be true regardless of where you run it.\n\n## Requirements\n\n### Publicly Accessible over HTTPS\n\nYour engine webhook endpoint must be reachable from the public internet using HTTPS.\n\n- The engine webhook URL must use a fully qualified domain name (FQDN)\n- The URL may include a path\n- TLS certificates must be valid and kept up to date\n\n### Rate Limit\n\nIn the PolySwarm UI, you can set a daily rate limit for an engine webhook. Your hosting must be able to sustain that rate limit.\n\nIf your Engine cannot keep up, it may:\n- Fail to accept engine webhooks\n- Time out frequently\n- Respond too late to participate in rewards\n\nEngines that repeatedly fail to respond may be marked **Failed** and stop receiving bounties. Recovery usually requires fixes plus a new verification request.\n\n### Sufficient Bandwidth (File Engines)\n\nEngines that process file artifacts may download significant volumes of data, bounded by your configured rate limit. Insufficient bandwidth can cause:\n\n- Delayed artifact downloads\n- Late assertions (late assertions may not participate in rewards)\n- Engine webhook request failures under load\n\nEnsure your hosting provides enough bandwidth for your expected daily volume and concurrency.\n\n### Concurrency\n\nYour engine webhook server must not block on scanning.\n\nMinimum expectations:\n- Validate signature and enqueue work\n- Return `202 Accepted` quickly\n- Perform analysis in worker processes\n- Enforce timeouts on any external tools\n\n### Monitoring and Logging\n\nAt minimum, you should be able to observe:\n\n- Engine webhook received and validated\n- Bounty queued for processing\n- Analysis completed (verdict and timing)\n- Assertion posted successfully (or error details)\n\nThis reduces verification friction and improves time to recover when issues occur.\n\n## Migrating from a Development Endpoint\n\nIf you used a temporary endpoint (for example ngrok) during development testing, switch to your production endpoint before requesting verification.\n\nA safe migration approach:\n\n1. Create a new engine webhook in the PolySwarm UI pointing to the production endpoint.\n2. Attach the new engine webhook to your Engine.\n3. Test in the Development Community using the production endpoint.\n4. Remove or disable the old engine webhook once the new one is stable.\n\nEngine webhooks may be treated as immutable configuration objects, so plan for creating a new engine webhook rather than editing an existing one.\n"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/engines/launch-to-production/request-verification.md","frontmatter":{"title":"Request verification","excerpt":"The exact UI steps to request verification and what to prepare before you click it."},"html":"<h1 id=\"request-verification\" style=\"position:relative;\"><a href=\"#request-verification\" aria-label=\"request verification permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Request verification</h1>\n<p>Once your Engine is stable in the Development Community, the next step is to request verification in the PolySwarm UI. Verification is required before an Engine can operate in public production communities.</p>\n<h2 id=\"when\" style=\"position:relative;\"><a href=\"#when\" aria-label=\"when permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>When?</h2>\n<p>Request verification only when your Engine is ready for production-style operation:</p>\n<ul>\n<li>Your engine webhook service is publicly reachable over HTTPS</li>\n<li>Your Engine processes bounties reliably and returns valid assertions</li>\n<li>Unsupported artifact types return <strong>UNKNOWN</strong> with bid 0</li>\n<li>You can keep the Engine online during the verification window</li>\n</ul>\n<p>If you are still iterating frequently, still using temporary endpoints (for example ngrok), or still seeing intermittent failures, keep testing in the Development Community and wait to request verification.</p>\n<h2 id=\"how-to-request-verification\" style=\"position:relative;\"><a href=\"#how-to-request-verification\" aria-label=\"how to request verification permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>How to Request Verification</h2>\n<ol>\n<li>Open the PolySwarm UI and switch to the Team that owns the Engine, then <strong>Settings</strong></li>\n<li>Go to <strong>My Engines</strong>.</li>\n<li>Select your Engine.</li>\n<li>Click <strong>Request verification</strong>.</li>\n</ol>\n<p>During verification, keep your engine webhook endpoint online and do not rotate secrets or URLs unless you coordinate with PolySwarm.</p>\n<h2 id=\"verification-process\" style=\"position:relative;\"><a href=\"#verification-process\" aria-label=\"verification process permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Verification Process</h2>\n<h3 id=\"what-polyswarm-will-use-for-verification\" style=\"position:relative;\"><a href=\"#what-polyswarm-will-use-for-verification\" aria-label=\"what polyswarm will use for verification permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What PolySwarm will use for verification</h3>\n<p>PolySwarm will validate both configuration and behavior, including:</p>\n<ul>\n<li>Engine configuration fields in the UI (artifact types, engine webhook configuration, metadata settings)</li>\n<li>Ability to receive engine webhook bounties and respond correctly</li>\n<li>Correct assertion format (verdict, bid, metadata)</li>\n<li>Basic accuracy across known benign and malicious samples</li>\n<li>Production readiness checks (HTTPS accessibility, stability under load)</li>\n</ul>\n<h3 id=\"if-verification-fails\" style=\"position:relative;\"><a href=\"#if-verification-fails\" aria-label=\"if verification fails permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>If Verification Fails</h3>\n<p>Verification failures are common on the first attempt. Typical reasons include:</p>\n<ul>\n<li>Slow or inconsistent responses</li>\n<li>Incorrect verdict formatting or missing required fields</li>\n<li>Errors during artifact download or analysis</li>\n<li>Returning benign instead of UNKNOWN for unsupported artifact types</li>\n</ul>\n<p>If verification fails:</p>\n<ol>\n<li>Fix the issues (see next section for help)</li>\n<li>Re-test in the Development Community.</li>\n<li>Request verification again from <strong>My Engines</strong>.</li>\n</ol>","rawMarkdownBody":"\n# Request verification\n\nOnce your Engine is stable in the Development Community, the next step is to request verification in the PolySwarm UI. Verification is required before an Engine can operate in public production communities.\n\n## When?\n\nRequest verification only when your Engine is ready for production-style operation:\n\n- Your engine webhook service is publicly reachable over HTTPS\n- Your Engine processes bounties reliably and returns valid assertions\n- Unsupported artifact types return **UNKNOWN** with bid 0\n- You can keep the Engine online during the verification window\n\nIf you are still iterating frequently, still using temporary endpoints (for example ngrok), or still seeing intermittent failures, keep testing in the Development Community and wait to request verification.\n\n## How to Request Verification\n\n1. Open the PolySwarm UI and switch to the Team that owns the Engine, then **Settings**\n2. Go to **My Engines**.\n3. Select your Engine.\n4. Click **Request verification**.\n\nDuring verification, keep your engine webhook endpoint online and do not rotate secrets or URLs unless you coordinate with PolySwarm.\n\n## Verification Process\n\n### What PolySwarm will use for verification\n\nPolySwarm will validate both configuration and behavior, including:\n\n- Engine configuration fields in the UI (artifact types, engine webhook configuration, metadata settings)\n- Ability to receive engine webhook bounties and respond correctly\n- Correct assertion format (verdict, bid, metadata)\n- Basic accuracy across known benign and malicious samples\n- Production readiness checks (HTTPS accessibility, stability under load)\n\n### If Verification Fails\n\nVerification failures are common on the first attempt. Typical reasons include:\n\n- Slow or inconsistent responses\n- Incorrect verdict formatting or missing required fields\n- Errors during artifact download or analysis\n- Returning benign instead of UNKNOWN for unsupported artifact types\n\nIf verification fails:\n1. Fix the issues (see next section for help)\n2. Re-test in the Development Community.\n3. Request verification again from **My Engines**.\n"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/engines/getting-started/home.md","frontmatter":{"title":"Overview","excerpt":"A simple end-to-end view of how to go from idea to a verified Engine in production."},"html":"<h1 id=\"polyswarm-engine-overview\" style=\"position:relative;\"><a href=\"#polyswarm-engine-overview\" aria-label=\"polyswarm engine overview permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>PolySwarm Engine Overview</h1>\n<p>Thank you for your interest in creating an Engine for PolySwarm!</p>\n<p>PolySwarm Engines let you plug your detection capability into a live threat intelligence marketplace where real users submit suspicious artifacts (files, URLs, IPs, domains) and receive verdicts to support investigations and strengthen their cyber posture. </p>\n<p>As an <strong>Engine partner</strong>, you contribute verdict signals by analyzing artifacts and returning assertions, then you are incentivised through rewards when your results align with confirmed ground truth. </p>\n<p>This section is your starting point, it explains the Engine journey end to end, what you need to build, and how to participate safely and reliably in the marketplace.</p>\n<h2 id=\"high-level-flow-proposal-to-verified-engine\" style=\"position:relative;\"><a href=\"#high-level-flow-proposal-to-verified-engine\" aria-label=\"high level flow proposal to verified engine permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>High-level flow, proposal to verified Engine</h2>\n<p>This is the end-to-end path for getting an Engine live on the PolySwarm Marketplace. </p>\n<ol>\n<li><strong>Submit an Engine proposal</strong></li>\n<li><strong>PolySwarm review</strong></li>\n<li><strong>Onboarding</strong></li>\n<li><strong>Provisioning</strong></li>\n<li><strong>Integration and development testing</strong></li>\n<li><strong>Test in the Development Community</strong></li>\n<li><strong>Request verification</strong></li>\n<li><strong>Go live in production</strong></li>\n<li><strong>Operate and optimise</strong></li>\n</ol>","rawMarkdownBody":"\n# PolySwarm Engine Overview\n\nThank you for your interest in creating an Engine for PolySwarm!\n\nPolySwarm Engines let you plug your detection capability into a live threat intelligence marketplace where real users submit suspicious artifacts (files, URLs, IPs, domains) and receive verdicts to support investigations and strengthen their cyber posture. \n\nAs an **Engine partner**, you contribute verdict signals by analyzing artifacts and returning assertions, then you are incentivised through rewards when your results align with confirmed ground truth. \n\nThis section is your starting point, it explains the Engine journey end to end, what you need to build, and how to participate safely and reliably in the marketplace.\n\n## High-level flow, proposal to verified Engine\n\nThis is the end-to-end path for getting an Engine live on the PolySwarm Marketplace. \n\n1. **Submit an Engine proposal**\n2. **PolySwarm review**\n3. **Onboarding**\n4. **Provisioning**\n5. **Integration and development testing**\n6. **Test in the Development Community**\n7. **Request verification**\n8. **Go live in production**\n9. **Operate and optimise**"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/customers/polyswarm-ui/wallets.md","frontmatter":{"title":"Wallets","excerpt":"The Wallets tab in the Account Settings is used to manage Wallets"},"html":"<h1 id=\"wallets\" style=\"position:relative;\"><a href=\"#wallets\" aria-label=\"wallets permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Wallets</h1>\n<h2 id=\"general\" style=\"position:relative;\"><a href=\"#general\" aria-label=\"general permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>General</h2>\n<p>The Wallets tab in the <a href=\"https://polyswarm.network/account/wallets\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">User Account</a> or <a href=\"https://polyswarm.network/settings/team/wallets\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Team Account</a> Settings of a PolySwarm UI Account allows you to manage Wallets belonging to your Account.\nIn a Team Account, a User must have the Team Admin or Wallet Admin role to view and use the Wallets tab.\nAll Users must <a href=\"/customers/accounts#advanced\">enable 2-factor authentication (2FA)</a> on their User Account before they can view the Wallets tab content.</p>\n<h2 id=\"engine-wallets\" style=\"position:relative;\"><a href=\"#engine-wallets\" aria-label=\"engine wallets permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Engine Wallets</h2>\n<p>The section named \"Engine Wallets\" are the Wallets used by Engines (Microengines and Arbiters).\nThere is a separate row in the table for each Engine owned by an Account.</p>\n<ul>\n<li>Wallet - The name of the Engine</li>\n<li>Balance (NCT) - The current NCT balance of the Engine's Wallet</li>\n<li>Deposit Address - The Address where you can deposit NCT to add to your Engine's Wallet. If your Engine has not been Verified before, this will say \"Pending Engine Verification\".</li>\n</ul>\n<p>In the near future, we will be adding functionality to support making withdrawals from an Engine Wallet.</p>\n<h2 id=\"rewards-wallets\" style=\"position:relative;\"><a href=\"#rewards-wallets\" aria-label=\"rewards wallets permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Rewards Wallets</h2>\n<p>The section named \"Rewards Wallets\" are the Wallets used by <a href=\"/customers/rewards\">PolySwarm Rewards</a> programs.\nOnce a User has opted into a Rewards program, there will be one row in this table for their Rewards wallet.</p>\n<ul>\n<li>Wallet - The name of the Rewards program</li>\n<li>Balance (NCT) - The current NCT balance of the Wallet</li>\n<li>Deposit Address - Rewards wallets do not currently support deposits.</li>\n<li>Withdrawal Address - An external ETH/NCT address where NCT tokens are sent when withdrawn from this Wallet (Redeemed).</li>\n<li>Withdrawal Limit - Max amount of NCT that can be withdrawn per day from this Wallet.</li>\n</ul>\n<p>In the Actions menu, there will be one or more options depending on the status of your wallet.</p>\n<ul>\n<li>Configure Withdrawals - This is where you define your <code class=\"language-text\">Withdrawal Address</code> and your <code class=\"language-text\">Withdrawal Limit</code>. This is the first step you must do.</li>\n<li>Withdrawals - Once you have defined a <code class=\"language-text\">Withdrawal Address</code> this option will be active. Use this to withdraw NCT from your Rewards wallet and transfer the NCT to your personal ETH/NCT wallet. Withdrawals from a Rewards wallet can be initiated using the Action menu, or by clicking the Redeem button on the Rewards tab.</li>\n</ul>\n<p>Below the name of the wallet is a Transactions table.\nClick the down arrow to view the set of Deposit and Withdrawal transactions for your Rewards wallet.\nNOTE: The Rewards payouts are not included in this table.</p>","rawMarkdownBody":"\n# Wallets\n\n## General {#general}\n\nThe Wallets tab in the [User Account](https://polyswarm.network/account/wallets) or [Team Account](https://polyswarm.network/settings/team/wallets) Settings of a PolySwarm UI Account allows you to manage Wallets belonging to your Account.\nIn a Team Account, a User must have the Team Admin or Wallet Admin role to view and use the Wallets tab.\nAll Users must [enable 2-factor authentication (2FA)](/customers/accounts#advanced) on their User Account before they can view the Wallets tab content.\n\n## Engine Wallets\n\nThe section named \"Engine Wallets\" are the Wallets used by Engines (Microengines and Arbiters).\nThere is a separate row in the table for each Engine owned by an Account.\n\n* Wallet - The name of the Engine\n* Balance (NCT) - The current NCT balance of the Engine's Wallet\n* Deposit Address - The Address where you can deposit NCT to add to your Engine's Wallet. If your Engine has not been Verified before, this will say \"Pending Engine Verification\".\n\nIn the near future, we will be adding functionality to support making withdrawals from an Engine Wallet.\n\n## Rewards Wallets\n\nThe section named \"Rewards Wallets\" are the Wallets used by [PolySwarm Rewards](/customers/rewards) programs.\nOnce a User has opted into a Rewards program, there will be one row in this table for their Rewards wallet.\n\n* Wallet - The name of the Rewards program\n* Balance (NCT) - The current NCT balance of the Wallet\n* Deposit Address - Rewards wallets do not currently support deposits.\n* Withdrawal Address - An external ETH/NCT address where NCT tokens are sent when withdrawn from this Wallet (Redeemed).\n* Withdrawal Limit - Max amount of NCT that can be withdrawn per day from this Wallet.\n\nIn the Actions menu, there will be one or more options depending on the status of your wallet.\n* Configure Withdrawals - This is where you define your `Withdrawal Address` and your `Withdrawal Limit`. This is the first step you must do.\n* Withdrawals - Once you have defined a `Withdrawal Address` this option will be active. Use this to withdraw NCT from your Rewards wallet and transfer the NCT to your personal ETH/NCT wallet. Withdrawals from a Rewards wallet can be initiated using the Action menu, or by clicking the Redeem button on the Rewards tab.\n\nBelow the name of the wallet is a Transactions table.\nClick the down arrow to view the set of Deposit and Withdrawal transactions for your Rewards wallet.\nNOTE: The Rewards payouts are not included in this table.\n"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/engines/launch-to-production/production-verification.md","frontmatter":{"title":"Production verification","excerpt":"What PolySwarm tests during verification, pass criteria, and common failure reasons."},"html":"<h1 id=\"production-verification\" style=\"position:relative;\"><a href=\"#production-verification\" aria-label=\"production verification permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Production Verification</h1>\n<p>Production verification is the quality gate that allows an Engine to operate in public production communities. The goal is to ensure users receive reliable results and that Engines behave safely and predictably under real traffic.</p>\n<h2 id=\"what-verification-checks\" style=\"position:relative;\"><a href=\"#what-verification-checks\" aria-label=\"what verification checks permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What Verification Checks</h2>\n<p>Verification typically includes four areas:</p>\n<p><strong>Identity and agreement checks</strong></p>\n<ul>\n<li>KYC completion (where required)</li>\n<li>Engine Provider Agreement completed (where required)</li>\n</ul>\n<p> <strong>Engine configuration review</strong></p>\n<ul>\n<li>Engine configuration fields are present and correct in the UI</li>\n<li>Artifact types and engine webhook selection are correct</li>\n<li>Any required metadata or capability fields are accurately set</li>\n</ul>\n<p><strong>Technical verification</strong></p>\n<ul>\n<li>PolySwarm sends known benign and known malicious test artifacts to your Engine in a controlled environment</li>\n<li>\n<p>Your Engine must:</p>\n<ul>\n<li>accept engine webhook requests</li>\n<li>validate signatures</li>\n<li>return <code class=\"language-text\">202 Accepted</code> quickly</li>\n<li>process the bounty asynchronously</li>\n<li>post a correctly formatted assertion back</li>\n</ul>\n</li>\n<li>Unsupported artifact types must return <strong>UNKNOWN</strong> with bid 0</li>\n</ul>\n<p><strong>Operational readiness</strong></p>\n<ul>\n<li>Endpoint is stable and reachable over HTTPS</li>\n<li>Engine is reliable under expected traffic (rate limit and concurrency)</li>\n<li>Timeouts and error handling do not cause cascading failures</li>\n</ul>\n<h2 id=\"passing-verification\" style=\"position:relative;\"><a href=\"#passing-verification\" aria-label=\"passing verification permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Passing Verification</h2>\n<p>You will typically pass verification when:</p>\n<ul>\n<li>Your Engine consistently produces valid assertions</li>\n<li>Your engine webhook service stays online throughout the verification window</li>\n<li>Responses are timely, consistent, and do not exceed expected time limits</li>\n<li>Unsupported artifacts are handled safely (UNKNOWN, bid 0)</li>\n<li>Configuration in the UI matches real behavior</li>\n</ul>\n<h2 id=\"common-verification-failure-reasons\" style=\"position:relative;\"><a href=\"#common-verification-failure-reasons\" aria-label=\"common verification failure reasons permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Common Verification Failure Reasons</h2>\n<ul>\n<li><strong>Engine webhook reachable but fails signature validation</strong>: Secret mismatch or signature implementation bug</li>\n<li><strong>Engine webhook returns slow responses</strong>: Analysis happens in the HTTP request thread instead of a worker</li>\n<li><strong>Malformed assertions</strong>: Missing verdict, invalid bid type, invalid metadata structure</li>\n<li><strong>Artifact download failures</strong>: Network or firewall issues, incorrect handling of artifact_uri</li>\n<li><strong>Incorrect handling of unsupported types</strong>: Returning benign instead of UNKNOWN</li>\n</ul>\n<h3 id=\"verification-failure\" style=\"position:relative;\"><a href=\"#verification-failure\" aria-label=\"verification failure permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Verification Failure</h3>\n<ol>\n<li>Review the feedback from the PolySwarm Engines team.</li>\n<li>Fix the issue and test the fix in the Development Community.</li>\n<li>Request verification again from <strong>My Engines</strong>.</li>\n</ol>","rawMarkdownBody":"\n# Production Verification\n\nProduction verification is the quality gate that allows an Engine to operate in public production communities. The goal is to ensure users receive reliable results and that Engines behave safely and predictably under real traffic.\n\n## What Verification Checks\n\nVerification typically includes four areas:\n\n**Identity and agreement checks**\n\n   - KYC completion (where required)\n   - Engine Provider Agreement completed (where required)\n\n **Engine configuration review**\n\n   - Engine configuration fields are present and correct in the UI\n   - Artifact types and engine webhook selection are correct\n   - Any required metadata or capability fields are accurately set\n\n**Technical verification**\n\n   - PolySwarm sends known benign and known malicious test artifacts to your Engine in a controlled environment\n\n   - Your Engine must:\n\n     - accept engine webhook requests\n     - validate signatures\n     - return `202 Accepted` quickly\n     - process the bounty asynchronously\n     - post a correctly formatted assertion back\n\n   - Unsupported artifact types must return **UNKNOWN** with bid 0\n\n**Operational readiness**\n\n   - Endpoint is stable and reachable over HTTPS\n   - Engine is reliable under expected traffic (rate limit and concurrency)\n   - Timeouts and error handling do not cause cascading failures\n\n## Passing Verification\n\nYou will typically pass verification when:\n\n- Your Engine consistently produces valid assertions\n- Your engine webhook service stays online throughout the verification window\n- Responses are timely, consistent, and do not exceed expected time limits\n- Unsupported artifacts are handled safely (UNKNOWN, bid 0)\n- Configuration in the UI matches real behavior\n\n## Common Verification Failure Reasons\n\n- **Engine webhook reachable but fails signature validation**: Secret mismatch or signature implementation bug\n- **Engine webhook returns slow responses**: Analysis happens in the HTTP request thread instead of a worker\n- **Malformed assertions**: Missing verdict, invalid bid type, invalid metadata structure\n- **Artifact download failures**: Network or firewall issues, incorrect handling of artifact_uri\n- **Incorrect handling of unsupported types**: Returning benign instead of UNKNOWN\n\n### Verification Failure\n\n1. Review the feedback from the PolySwarm Engines team.\n2. Fix the issue and test the fix in the Development Community.\n3. Request verification again from **My Engines**.\n"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/customers/tutorial/polyswarm-customer-tutorials-iran-nation.md","frontmatter":{"title":"Hunting Iranian Nation State Spyware","excerpt":"A page dedicated to tutorials for polyswarm"},"html":"<h1 id=\"hunting-iranian-nation-state-spyware\" style=\"position:relative;\"><a href=\"#hunting-iranian-nation-state-spyware\" aria-label=\"hunting iranian nation state spyware permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Hunting Iranian Nation State Spyware</h1>\n<p>This tutorial will focus on how to use PolySwarm to hunt for samples that potentially related to Iranian Nation State Spyware.</p>\n<p>ZDNet <a href=\"https://www.zdnet.com/article/spying-concerns-raised-over-irans-official-covid-19-detection-app/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">published an article</a> on Iran's official COVID-19 tracker application that sends the real time location of installees to the Iranian government.</p>\n<p>The article provides only a single IOC - a SHA256 hash (<code class=\"language-text\">0f73ac8839f153cf0e830554d9b34af2ea90fd6514ed3992b66a96bc9c12bb4b</code>) we can find on PolySwarm:</p>\n<ul>\n<li>via the CLI (hash search): <code class=\"language-text\">polyswarm search hash 0f73ac8839f153cf0e830554d9b34af2ea90fd6514ed3992b66a96bc9c12bb4b</code></li>\n<li>via the CLI (metadata search using the hash): <code class=\"language-text\">polyswarm search metadata 'hash.sha256:\"0f73ac8839f153cf0e830554d9b34af2ea90fd6514ed3992b66a96bc9c12bb4b\"'</code></li>\n<li>via the Python library:</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">query <span class=\"token operator\">=</span> <span class=\"token string\">'hash.sha256:\"0f73ac8839f153cf0e830554d9b34af2ea90fd6514ed3992b66a96bc9c12bb4b\"'</span>\n\nresults <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>search_by_metadata<span class=\"token punctuation\">(</span>query<span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">for</span> result <span class=\"token keyword\">in</span> results<span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f\"Artifact Attributes: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>result<span class=\"token punctuation\">.</span>artifact<span class=\"token punctuation\">}</span></span><span class=\"token string\">\"</span></span><span class=\"token punctuation\">)</span></code></pre></div>\n<p>Let's take a look some of the Metadata Attributes from this Artifact:</p>\n<div class=\"gatsby-highlight\" data-language=\"json\"><pre class=\"language-json\"><code class=\"language-json\"><span class=\"token punctuation\">{</span>\n    <span class=\"token property\">\"artifact\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token property\">\"created\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2020-03-10T10:16:50.900548+00:00\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"71592690635387748\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"md5\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"766e5ecf6b1d86abf401ad9223de857d\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"sha1\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"f1271aa0ccf79d16b036bac5320ed4349af69b65\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"sha256\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"0f73ac8839f153cf0e830554d9b34af2ea90fd6514ed3992b66a96bc9c12bb4b\"</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    ...\n    <span class=\"token property\">\"strings\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token property\">\"domains\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n            <span class=\"token string\">\"V.mr\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token string\">\"\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token string\">\"covid-19-e9057.appspot.com\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token string\">\"p.to\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token string\">\"II1046766097017-4va56jc12ajt308tpbuge0tc5iqla179.apps.googleusercontent.com\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token string\">\"b.mc\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token string\">\"YJ.cz\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token string\">\"6.om\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token string\">\"6.gm\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token string\">\"covid-19-e9057.firebaseio.com\"</span>\n        <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n        ...\n    <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>There are several interesting domains extracted by the <code class=\"language-text\">strings</code> Tool:</p>\n<ul>\n<li><code class=\"language-text\">covid-19-e9057.appspot.com</code></li>\n<li><code class=\"language-text\">covid-19-e9057.firebaseio.com</code></li>\n</ul>\n<p>It appears as though some portion of the Iranian government's backend for this app is Google's Appspot and Firebase services.\nThis is mildly interesting because Google removed the application from their Play Store.</p>\n<p>Next, we conduct a Metadata Search for the unique portion of these domains (<code class=\"language-text\">covid-19-e9057</code>) + a wildcard (<code class=\"language-text\">*</code>) to find additional Artifacts that contain these strings:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm --fmt sha256 search metadata <span class=\"token string\">'strings.domains:covid-19-e9057*'</span></code></pre></div>\n<p>This search nets 4 Artifacts, all of which have been identified as malicious by Engines on PolySwarm. 3 of these Artifacts were, of course, not mentioned in the ZDNet article.</p>\n<p>Perhaps they have new functionality worth investigating!</p>","rawMarkdownBody":"\n# Hunting Iranian Nation State Spyware\n\nThis tutorial will focus on how to use PolySwarm to hunt for samples that potentially related to Iranian Nation State Spyware.\n\n\nZDNet [published an article](https://www.zdnet.com/article/spying-concerns-raised-over-irans-official-covid-19-detection-app/) on Iran's official COVID-19 tracker application that sends the real time location of installees to the Iranian government.\n\nThe article provides only a single IOC - a SHA256 hash (`0f73ac8839f153cf0e830554d9b34af2ea90fd6514ed3992b66a96bc9c12bb4b`) we can find on PolySwarm:\n* via the CLI (hash search): `polyswarm search hash 0f73ac8839f153cf0e830554d9b34af2ea90fd6514ed3992b66a96bc9c12bb4b`\n* via the CLI (metadata search using the hash): `polyswarm search metadata 'hash.sha256:\"0f73ac8839f153cf0e830554d9b34af2ea90fd6514ed3992b66a96bc9c12bb4b\"'`\n* via the Python library:\n\n```python\nquery = 'hash.sha256:\"0f73ac8839f153cf0e830554d9b34af2ea90fd6514ed3992b66a96bc9c12bb4b\"'\n\nresults = api.search_by_metadata(query)\n\nfor result in results:\n    print(f\"Artifact Attributes: {result.artifact}\")\n```\n\nLet's take a look some of the Metadata Attributes from this Artifact:\n\n```json\n{\n    \"artifact\": {\n        \"created\": \"2020-03-10T10:16:50.900548+00:00\",\n        \"id\": \"71592690635387748\",\n        \"md5\": \"766e5ecf6b1d86abf401ad9223de857d\",\n        \"sha1\": \"f1271aa0ccf79d16b036bac5320ed4349af69b65\",\n        \"sha256\": \"0f73ac8839f153cf0e830554d9b34af2ea90fd6514ed3992b66a96bc9c12bb4b\"\n    },\n    ...\n    \"strings\": {\n        \"domains\": [\n            \"V.mr\",\n            \"\",\n            \"covid-19-e9057.appspot.com\",\n            \"p.to\",\n            \"II1046766097017-4va56jc12ajt308tpbuge0tc5iqla179.apps.googleusercontent.com\",\n            \"b.mc\",\n            \"YJ.cz\",\n            \"6.om\",\n            \"6.gm\",\n            \"covid-19-e9057.firebaseio.com\"\n        ],\n        ...\n    }\n}\n```\n\nThere are several interesting domains extracted by the `strings` Tool:\n* `covid-19-e9057.appspot.com`\n* `covid-19-e9057.firebaseio.com`\n\nIt appears as though some portion of the Iranian government's backend for this app is Google's Appspot and Firebase services.\nThis is mildly interesting because Google removed the application from their Play Store.\n\nNext, we conduct a Metadata Search for the unique portion of these domains (`covid-19-e9057`) + a wildcard (`*`) to find additional Artifacts that contain these strings:\n\n```bash\n$ polyswarm --fmt sha256 search metadata 'strings.domains:covid-19-e9057*'\n```\n\nThis search nets 4 Artifacts, all of which have been identified as malicious by Engines on PolySwarm. 3 of these Artifacts were, of course, not mentioned in the ZDNet article.\n\nPerhaps they have new functionality worth investigating!"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/engines/operate-and-optimise/bidding-strategy.md","frontmatter":{"title":"Bidding Strategy","excerpt":"How to size bids based on confidence and constraints to balance risk and reward."},"html":"<h1 id=\"bidding-strategy\" style=\"position:relative;\"><a href=\"#bidding-strategy\" aria-label=\"bidding strategy permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Bidding Strategy</h1>\n<p>Bidding is how you stake NCT on your assertion. A good strategy aligns bid size with confidence so you can earn rewards without taking unnecessary risk.</p>\n<h2 id=\"what-bidding-controls\" style=\"position:relative;\"><a href=\"#what-bidding-controls\" aria-label=\"what bidding controls permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What Bidding Controls?</h2>\n<ul>\n<li>Higher bids can increase potential upside when you are correct</li>\n<li>Higher bids increase losses when you are wrong</li>\n<li>Bidding requires sufficient wallet balance to sustain the arbitration window</li>\n</ul>\n<h2 id=\"core-principles\" style=\"position:relative;\"><a href=\"#core-principles\" aria-label=\"core principles permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Core principles</h2>\n<h3 id=\"bid-0-on-unsupported-or-low-confidence-cases\" style=\"position:relative;\"><a href=\"#bid-0-on-unsupported-or-low-confidence-cases\" aria-label=\"bid 0 on unsupported or low confidence cases permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Bid 0 on unsupported or low-confidence cases</h3>\n<p>If you return UNKNOWN, your bid should be 0.</p>\n<p>If your signal is weak, consider:</p>\n<ul>\n<li>return UNKNOWN, bid 0</li>\n<li>or return a verdict with a conservative bid (only if your policy supports this)</li>\n</ul>\n<h3 id=\"bid-rules-by-verdict-required\" style=\"position:relative;\"><a href=\"#bid-rules-by-verdict-required\" aria-label=\"bid rules by verdict required permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Bid rules by verdict (required)</h3>\n<p>Each bounty includes a bid range in the engine webhook payload (<code class=\"language-text\">min_allowed_bid</code> and <code class=\"language-text\">max_allowed_bid</code>). Your bid must follow these rules:</p>\n<ul>\n<li>If you return <strong>MALICIOUS</strong> or <strong>BENIGN</strong>, you <strong>must</strong> place a bid <strong>within</strong> the allowed range (<code class=\"language-text\">min_allowed_bid</code> to <code class=\"language-text\">max_allowed_bid</code>).\nYou cannot bid <code class=\"language-text\">0</code> for these verdicts.</li>\n<li>If you return <strong>UNKNOWN</strong>, your bid <strong>must</strong> be <code class=\"language-text\">0</code>.</li>\n</ul>\n<p>If you cannot justify a bid within the allowed range, return <strong>UNKNOWN</strong> instead.</p>\n<h3 id=\"start-conservative\" style=\"position:relative;\"><a href=\"#start-conservative\" aria-label=\"start conservative permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Start conservative</h3>\n<p>When your Engine is new or recently changed:</p>\n<ul>\n<li>keep bids low until reliability and accuracy are stable</li>\n<li>increase only after you are confident in your signal quality</li>\n</ul>\n<h3 id=\"map-bid-to-confidence\" style=\"position:relative;\"><a href=\"#map-bid-to-confidence\" aria-label=\"map bid to confidence permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Map bid to confidence</h3>\n<p>A simple and safe mapping is:</p>\n<ul>\n<li>confidence low → small bid</li>\n<li>confidence medium → moderate bid</li>\n<li>confidence high → closer to max allowed bid</li>\n</ul>\n<p>Keep the mapping consistent and explainable.</p>\n<h3 id=\"respect-bounty-constraints\" style=\"position:relative;\"><a href=\"#respect-bounty-constraints\" aria-label=\"respect bounty constraints permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Respect bounty constraints</h3>\n<p>Bounties may define minimum and maximum bid rules. Your strategy should:</p>\n<ul>\n<li>never exceed max allowed bid</li>\n<li>avoid bidding below minimum if you want to participate</li>\n<li>adapt when constraints change</li>\n</ul>\n<h2 id=\"a-simple-starter-strategy-example\" style=\"position:relative;\"><a href=\"#a-simple-starter-strategy-example\" aria-label=\"a simple starter strategy example permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>A Simple Starter Strategy (example)</h2>\n<ul>\n<li>If unsupported type: verdict UNKNOWN, bid 0</li>\n<li>If scan failed or timed out: verdict UNKNOWN, bid 0</li>\n<li>If strong malicious signal: verdict MALICIOUS, bid near max allowed</li>\n<li>If strong benign signal: verdict BENIGN, bid low to moderate</li>\n<li>If ambiguous: verdict UNKNOWN, bid 0</li>\n</ul>\n<p>This reduces risk while you build confidence in the Engine.</p>\n<h2 id=\"tuning-over-time\" style=\"position:relative;\"><a href=\"#tuning-over-time\" aria-label=\"tuning over time permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Tuning over time</h2>\n<p>As you learn:</p>\n<ul>\n<li>increase bids only in areas where you are consistently correct</li>\n<li>decrease bids in areas where you see mistakes or unstable behavior</li>\n<li>consider separate strategies per artifact type (file vs url)</li>\n</ul>","rawMarkdownBody":"\n# Bidding Strategy\n\nBidding is how you stake NCT on your assertion. A good strategy aligns bid size with confidence so you can earn rewards without taking unnecessary risk.\n\n## What Bidding Controls?\n\n- Higher bids can increase potential upside when you are correct\n- Higher bids increase losses when you are wrong\n- Bidding requires sufficient wallet balance to sustain the arbitration window\n\n## Core principles\n\n### Bid 0 on unsupported or low-confidence cases\nIf you return UNKNOWN, your bid should be 0.\n\nIf your signal is weak, consider:\n- return UNKNOWN, bid 0\n- or return a verdict with a conservative bid (only if your policy supports this)\n\n### Bid rules by verdict (required)\n\nEach bounty includes a bid range in the engine webhook payload (`min_allowed_bid` and `max_allowed_bid`). Your bid must follow these rules:\n\n- If you return **MALICIOUS** or **BENIGN**, you **must** place a bid **within** the allowed range (`min_allowed_bid` to `max_allowed_bid`).\n  You cannot bid `0` for these verdicts.\n- If you return **UNKNOWN**, your bid **must** be `0`.\n\nIf you cannot justify a bid within the allowed range, return **UNKNOWN** instead.\n\n### Start conservative\nWhen your Engine is new or recently changed:\n- keep bids low until reliability and accuracy are stable\n- increase only after you are confident in your signal quality\n\n### Map bid to confidence\nA simple and safe mapping is:\n\n- confidence low → small bid\n- confidence medium → moderate bid\n- confidence high → closer to max allowed bid\n\nKeep the mapping consistent and explainable.\n\n### Respect bounty constraints\nBounties may define minimum and maximum bid rules. Your strategy should:\n- never exceed max allowed bid\n- avoid bidding below minimum if you want to participate\n- adapt when constraints change\n\n## A Simple Starter Strategy (example)\n\n- If unsupported type: verdict UNKNOWN, bid 0\n- If scan failed or timed out: verdict UNKNOWN, bid 0\n- If strong malicious signal: verdict MALICIOUS, bid near max allowed\n- If strong benign signal: verdict BENIGN, bid low to moderate\n- If ambiguous: verdict UNKNOWN, bid 0\n\nThis reduces risk while you build confidence in the Engine.\n\n## Tuning over time\n\nAs you learn:\n- increase bids only in areas where you are consistently correct\n- decrease bids in areas where you see mistakes or unstable behavior\n- consider separate strategies per artifact type (file vs url)\n"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/customers/tutorial/polyswarm-customer-tutorials-syrian-android.md","frontmatter":{"title":"Hunting Syrian Nation State Android Malware","excerpt":"A page dedicated to tutorials for polyswarm"},"html":"<h1 id=\"hunting-syrian-nation-state-android-malware\" style=\"position:relative;\"><a href=\"#hunting-syrian-nation-state-android-malware\" aria-label=\"hunting syrian nation state android malware permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Hunting Syrian Nation State Android Malware</h1>\n<p>This tutorial will focus on how to use PolySwarm to hunt for Android samples that potentially related to the Syrian Nation State.</p>\n<p><a href=\"https://blog.lookout.com/nation-state-mobile-malware-targets-syrians-with-covid-19-lures\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Lookout</a> published a blog post on COVID-19 related Android malware released by the Syrian Electronic Army.</p>\n<p>The post discloses:</p>\n<ul>\n<li>Where the command and control (C2) addresses are stored within the malicious applications (within <code class=\"language-text\">res/values/strings.xml</code>)</li>\n<li>A list of SHA1 hashes of applications known to belong to this family of malware</li>\n</ul>\n<p>First, we look up Lookout's first SHA1 hash on PolySwarm:</p>\n<ul>\n<li>via the CLI (hash search): <code class=\"language-text\">polyswarm search hash 1aefc2ebaf1a78f23473ce6275b0b514bbcdfb08</code></li>\n<li>via the CLI (metadata search using the hash): <code class=\"language-text\">polyswarm search metadata 'hash.sha1:\"1aefc2ebaf1a78f23473ce6275b0b514bbcdfb08\"'</code></li>\n<li>via the Python library:</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">query <span class=\"token operator\">=</span> <span class=\"token string\">'hash.sha1:\"1aefc2ebaf1a78f23473ce6275b0b514bbcdfb08\"'</span>\n\nresults <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>search_by_metadata<span class=\"token punctuation\">(</span>query<span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">for</span> result <span class=\"token keyword\">in</span> results<span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f\"Artifact Attributes: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>result<span class=\"token punctuation\">.</span>artifact<span class=\"token punctuation\">}</span></span><span class=\"token string\">\"</span></span><span class=\"token punctuation\">)</span></code></pre></div>\n<p>Next, we download the Artifact (using your choice of Web UI, CLI or Python) and use <a href=\"https://ibotpeaches.github.io/Apktool/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">apktool</a> with the <code class=\"language-text\">d</code> flag to extract <code class=\"language-text\">res/values/strings.xml</code>:</p>\n<div class=\"gatsby-highlight\" data-language=\"xml\"><pre class=\"language-xml\"><code class=\"language-xml\"><span class=\"token prolog\">&lt;?xml version=\"1.0\" encoding=\"utf-8\"?></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>resources</span><span class=\"token punctuation\">></span></span>\n    ...\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>string</span> <span class=\"token attr-name\">name</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>MT_Bin_dup_0x7f0c0020<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>Android Telegram<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>string</span><span class=\"token punctuation\">></span></span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>string</span> <span class=\"token attr-name\">name</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>MT_Bin_dup_0x7f0c0021<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>10000<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>string</span><span class=\"token punctuation\">></span></span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>string</span> <span class=\"token attr-name\">name</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>MT_Bin_dup_0x7f0c0022<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>82.137.218.185<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>string</span><span class=\"token punctuation\">></span></span>\n    ...\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>resources</span><span class=\"token punctuation\">></span></span></code></pre></div>\n<p>It appears as though the C2 address is <code class=\"language-text\">82.137.218.185</code>. This information was not published in Lookout's blog post.</p>\n<p>We can use Metadata Search to \"pivot\" using this IP(v4) address:</p>\n<ul>\n<li>via the CLI: <code class=\"language-text\">polyswarm search metadata --ip 82.137.218.185</code></li>\n<li>via the Python library:</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">results <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>search_by_metadata<span class=\"token punctuation\">(</span><span class=\"token string\">\"*\"</span><span class=\"token punctuation\">,</span> ip<span class=\"token operator\">=</span><span class=\"token string\">\"82.137.218.185\"</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">for</span> result <span class=\"token keyword\">in</span> results<span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f\"Artifact Attributes: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>result<span class=\"token punctuation\">.</span>artifact<span class=\"token punctuation\">}</span></span><span class=\"token string\">\"</span></span><span class=\"token punctuation\">)</span></code></pre></div>\n<p>At the time of writing, we see 50 results:</p>\n<ul>\n<li>at least 23 of which were not identified by Lookout in their blog post, and</li>\n<li>at least 5 of which cannot be found on platforms similar to PolySwarm.</li>\n</ul>\n<p>Using PolySwarm, researchers can quickly identify additional variants of malware and produce something that immediately expands on the public knowledge of the threat.</p>","rawMarkdownBody":"\n# Hunting Syrian Nation State Android Malware\n\nThis tutorial will focus on how to use PolySwarm to hunt for Android samples that potentially related to the Syrian Nation State.\n\n[Lookout](https://blog.lookout.com/nation-state-mobile-malware-targets-syrians-with-covid-19-lures) published a blog post on COVID-19 related Android malware released by the Syrian Electronic Army.\n\nThe post discloses:\n* Where the command and control (C2) addresses are stored within the malicious applications (within `res/values/strings.xml`)\n* A list of SHA1 hashes of applications known to belong to this family of malware\n\n\nFirst, we look up Lookout's first SHA1 hash on PolySwarm:\n* via the CLI (hash search): `polyswarm search hash 1aefc2ebaf1a78f23473ce6275b0b514bbcdfb08`\n* via the CLI (metadata search using the hash): `polyswarm search metadata 'hash.sha1:\"1aefc2ebaf1a78f23473ce6275b0b514bbcdfb08\"'`\n* via the Python library:\n\n```python\nquery = 'hash.sha1:\"1aefc2ebaf1a78f23473ce6275b0b514bbcdfb08\"'\n\nresults = api.search_by_metadata(query)\n\nfor result in results:\n    print(f\"Artifact Attributes: {result.artifact}\")\n```\n\nNext, we download the Artifact (using your choice of Web UI, CLI or Python) and use [apktool](https://ibotpeaches.github.io/Apktool/) with the `d` flag to extract `res/values/strings.xml`:\n\n```xml\n<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    ...\n    <string name=\"MT_Bin_dup_0x7f0c0020\">Android Telegram</string>\n    <string name=\"MT_Bin_dup_0x7f0c0021\">10000</string>\n    <string name=\"MT_Bin_dup_0x7f0c0022\">82.137.218.185</string>\n    ...\n</resources>\n```\n\nIt appears as though the C2 address is `82.137.218.185`. This information was not published in Lookout's blog post.\n\nWe can use Metadata Search to \"pivot\" using this IP(v4) address:\n* via the CLI: `polyswarm search metadata --ip 82.137.218.185`\n* via the Python library:\n\n```python\nresults = api.search_by_metadata(\"*\", ip=\"82.137.218.185\")\n\nfor result in results:\n    print(f\"Artifact Attributes: {result.artifact}\")\n```\n\nAt the time of writing, we see 50 results:\n* at least 23 of which were not identified by Lookout in their blog post, and\n* at least 5 of which cannot be found on platforms similar to PolySwarm.\n\nUsing PolySwarm, researchers can quickly identify additional variants of malware and produce something that immediately expands on the public knowledge of the threat.\n"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/engines/operate-and-optimise/accuracy.md","frontmatter":{"title":"Accuracy","excerpt":"Improve verdict quality and metadata over time while reducing false positives and false negatives."},"html":"<h1 id=\"accuracy\" style=\"position:relative;\"><a href=\"#accuracy\" aria-label=\"accuracy permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Accuracy</h1>\n<p>Accuracy is the quality of your verdicts over time. Higher accuracy generally improves reputation and reward outcomes, and reduces the risk of losing NCT when you bid.</p>\n<h2 id=\"what-to-optimize-for\" style=\"position:relative;\"><a href=\"#what-to-optimize-for\" aria-label=\"what to optimize for permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What to Optimize for?</h2>\n<p>Your Engine should aim to:</p>\n<ul>\n<li>Correctly identify malicious artifacts (true positives)</li>\n<li>Correctly identify benign artifacts (true negatives)</li>\n<li>Avoid false positives (benign marked malicious)</li>\n<li>Avoid false negatives (malicious marked benign)</li>\n<li>Return UNKNOWN when your signal is weak or unsupported</li>\n</ul>\n<h2 id=\"practical-accuracy-levers\" style=\"position:relative;\"><a href=\"#practical-accuracy-levers\" aria-label=\"practical accuracy levers permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Practical Accuracy Levers</h2>\n<h3 id=\"1-improve-coverage-and-typing\" style=\"position:relative;\"><a href=\"#1-improve-coverage-and-typing\" aria-label=\"1 improve coverage and typing permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>1. Improve coverage and typing</h3>\n<ul>\n<li>Detect artifact type early and handle each type explicitly</li>\n<li>For unsupported types, return UNKNOWN rather than guessing</li>\n</ul>\n<h3 id=\"2-reduce-false-positives-first\" style=\"position:relative;\"><a href=\"#2-reduce-false-positives-first\" aria-label=\"2 reduce false positives first permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>2. Reduce false positives first</h3>\n<p>False positives hurt trust and can cause operational noise for users.\nWays to reduce false positives:</p>\n<ul>\n<li>require stronger evidence before returning malicious</li>\n<li>use allowlists for common benign patterns when justified</li>\n<li>treat ambiguous cases as UNKNOWN</li>\n</ul>\n<h3 id=\"3-use-confidence-honestly\" style=\"position:relative;\"><a href=\"#3-use-confidence-honestly\" aria-label=\"3 use confidence honestly permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>3. Use confidence honestly</h3>\n<p>Only emit confidence if it maps to a real signal:</p>\n<ul>\n<li>“High confidence” should be rare and repeatable</li>\n<li>map tool outputs and heuristics into a stable confidence scale</li>\n<li>keep confidence consistent across runs</li>\n</ul>\n<h3 id=\"4-keep-malware_family-meaningful\" style=\"position:relative;\"><a href=\"#4-keep-malware_family-meaningful\" aria-label=\"4 keep malware_family meaningful permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>4. Keep malware_family meaningful</h3>\n<p>If you provide malware_family metadata:</p>\n<ul>\n<li>avoid overly generic labels</li>\n<li>avoid dumping raw tool strings that are unstable</li>\n<li>prefer a small set of consistent family names</li>\n</ul>\n<h3 id=\"5-regression-testing\" style=\"position:relative;\"><a href=\"#5-regression-testing\" aria-label=\"5 regression testing permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>5. Regression testing</h3>\n<p>As you ship changes:</p>\n<ul>\n<li>keep a small local test corpus (benign + malicious)</li>\n<li>ensure new changes do not break previous good detections</li>\n<li>add tests for any bug you fix</li>\n</ul>\n<h2 id=\"a-simple-decision-policy-that-works-well\" style=\"position:relative;\"><a href=\"#a-simple-decision-policy-that-works-well\" aria-label=\"a simple decision policy that works well permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>A simple decision policy that works well</h2>\n<ul>\n<li>Return <strong>MALICIOUS</strong> only when you have a strong signal</li>\n<li>Return <strong>BENIGN</strong> when evidence is strong that the artifact is clean</li>\n<li>\n<p>Return <strong>UNKNOWN</strong> when:</p>\n<ul>\n<li>the type is unsupported</li>\n<li>the scan failed</li>\n<li>the signal is weak</li>\n<li>timeouts occur</li>\n</ul>\n</li>\n</ul>\n<p>This usually produces better long-term outcomes than guessing benign.</p>","rawMarkdownBody":"\n# Accuracy\n\nAccuracy is the quality of your verdicts over time. Higher accuracy generally improves reputation and reward outcomes, and reduces the risk of losing NCT when you bid.\n\n## What to Optimize for?\n\nYour Engine should aim to:\n- Correctly identify malicious artifacts (true positives)\n- Correctly identify benign artifacts (true negatives)\n- Avoid false positives (benign marked malicious)\n- Avoid false negatives (malicious marked benign)\n- Return UNKNOWN when your signal is weak or unsupported\n\n## Practical Accuracy Levers\n\n### 1. Improve coverage and typing\n- Detect artifact type early and handle each type explicitly\n- For unsupported types, return UNKNOWN rather than guessing\n\n### 2. Reduce false positives first\nFalse positives hurt trust and can cause operational noise for users.\nWays to reduce false positives:\n- require stronger evidence before returning malicious\n- use allowlists for common benign patterns when justified\n- treat ambiguous cases as UNKNOWN\n\n### 3. Use confidence honestly\nOnly emit confidence if it maps to a real signal:\n- “High confidence” should be rare and repeatable\n- map tool outputs and heuristics into a stable confidence scale\n- keep confidence consistent across runs\n\n### 4. Keep malware_family meaningful\nIf you provide malware_family metadata:\n- avoid overly generic labels\n- avoid dumping raw tool strings that are unstable\n- prefer a small set of consistent family names\n\n### 5. Regression testing\nAs you ship changes:\n- keep a small local test corpus (benign + malicious)\n- ensure new changes do not break previous good detections\n- add tests for any bug you fix\n\n## A simple decision policy that works well\n\n- Return **MALICIOUS** only when you have a strong signal\n- Return **BENIGN** when evidence is strong that the artifact is clean\n- Return **UNKNOWN** when:\n  - the type is unsupported\n  - the scan failed\n  - the signal is weak\n  - timeouts occur\n\nThis usually produces better long-term outcomes than guessing benign.\n"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/customers/stix-taxii/use-stix-taxii.md","frontmatter":{"title":"PolySwarm STIX / TAXII","excerpt":"Accessing PolySwarm using STIX/TAXII is very easy..."},"html":"<style>\npre.results {\n  font: 300 0.8em monospace;\n  overflow-x: auto;\n  overflow-y: auto;\n  background-color: #fbf9fe;\n  padding: 1em;\n  max-height: 40em;\n  border-top: 2px dotted #414141;\n}\n\npre.results::before {\n    content: \"results\";\n    float: right;\n    color: #74758C;\n    font-size: 0.75em;\n    font-weight: bold;\n}\n\n.s-post .gatsby-highlight {\n  margin-bottom: 0;\n}\n\n</style>\n<h1 id=\"polyswarm-stix--taxii\" style=\"position:relative;\"><a href=\"#polyswarm-stix--taxii\" aria-label=\"polyswarm stix  taxii permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>PolySwarm STIX / TAXII</h1>\n<p><a href=\"https://docs.oasis-open.org/cti/stix/v2.1/csprd01/stix-v2.1-csprd01.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Structured Information Exchange (STIX)</a> and <a href=\"https://docs.oasis-open.org/cti/taxii/v2.1/os/taxii-v2.1-os.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Trusted Automated Exchange of Indicator Information (TAXII)</a> are community-supported specifications analysts use to automate sharing of threat intelligence.</p>\n<p>PolySwarm supports these emerging standards in our <a href=\"https://docs.oasis-open.org/cti/taxii/v2.1/os/taxii-v2.1-os.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"><strong>TAXII v2.1</strong></a>-compliant services serving <a href=\"https://docs.oasis-open.org/cti/stix/v2.1/csprd01/stix-v2.1-csprd01.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"><strong>STIX v2.1</strong></a>-formatted threat intelligence feeds. Users can augment their threat intelligence with the array of software tools supporting the most recent STIX &#x26; TAXII standards while still receiving PolySwarm-exclusive intelligence like canonicalized malware family and PolyScore.</p>\n<p>PolySwarm supports two methods of setting up STIX/TAXII, using <strong>integrations</strong> (e.g. ThreatQuotient, Cyware, Sentinel) and the <strong>Python API</strong>.</p>\n<h2 id=\"getting-started\" style=\"position:relative;\"><a href=\"#getting-started\" aria-label=\"getting started permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Getting Started</h2>\n<p>There are several initial steps that need to be taken before proceeding with the STIX/TAXII integration.</p>\n<h4 id=\"pre-requirements\" style=\"position:relative;\"><a href=\"#pre-requirements\" aria-label=\"pre requirements permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Pre-Requirements</h4>\n<ol>\n<li>If you haven't already you need to create a <a href=\"/customers#log-in-sign-up\">PolySwarm account</a>.</li>\n<li>You will need a client that supports TAXII 2.1 (<a href=\"https://github.com/oasis-open/cti-taxii-client\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"><code class=\"language-text\">taxii2client</code></a> if using the Python API)</li>\n</ol>\n<h4 id=\"api-root\" style=\"position:relative;\"><a href=\"#api-root\" aria-label=\"api root permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>API Roots &#x26; Collections</h4>\n<p>TAXII servers host a hierarchy of <code class=\"language-text\">API Roots:</code> distinct TAXII instances accessed via different URLs, each providing its collections of threat intelligence.\nPolySwarm's TAXII services are organized around <code class=\"language-text\">Collections:</code> logical threat intelligence repositories organized by type and purpose.</p>\n<h5 id=\"what-is-a-collection\" style=\"position:relative;\"><a href=\"#what-is-a-collection\" aria-label=\"what is a collection permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What is a collection?</h5>\n<p>PolySwarm's TAXII services are organized around <em>collections</em>: logical repositories of threat intelligence organized by type and purpose.</p>\n<p>Objects in a collection may also appear in others, enabling pivots between faster feeds of compact objects and detailed representations in specialized collections.</p>\n<p>PolySwarm's currently available collections are designed to allow new collections to be added without disrupting existing customers.\nCollections are assigned a unique identifier (UUID) which identifies that collection when performing queries against PolySwarm's TAXII server.</p>\n<p>You can work with your PolySwarm sales representative to enable access to each API Root and collection you want to access, to view these navigate to <a href=\"/customers/use-stix-taxii/#config-taxii-int\">here</a>.</p>\n<h4 id=\"team-api\" style=\"position:relative;\"><a href=\"#team-api\" aria-label=\"team api permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Create a Team API Key</h4>\n<p>A Team API Key will be needed for the integration setup and the Python API configuration for authentication.</p>\n<ol>\n<li>Log into the PolySwarm UI <a href=\"https://polyswarm.network/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https://polyswarm.network/</a></li>\n<li>Click on the account user name in the top right corner</li>\n<li>Click on <code class=\"language-text\">Switch Accounts</code> and switch to your Team Account</li>\n<li>Navigate to <code class=\"language-text\">Settings</code> in the top right corner</li>\n<li>Navigate to the <code class=\"language-text\">API Keys</code> Page</li>\n<li>Add a new <code class=\"language-text\">Team Account API Key</code></li>\n</ol>\n<h4 id=\"team-id\" style=\"position:relative;\"><a href=\"#team-id\" aria-label=\"team id permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Locate Team ID (for Username)</h4>\n<p>A Team ID (Username) will be needed going forward for the integrations setup and the Python API configuration for authentication.</p>\n<ol>\n<li>Log into the PolySwarm UI <a href=\"https://polyswarm.network/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https://polyswarm.network/</a></li>\n<li>Click on the account user name in the top right corner</li>\n<li>Click on <code class=\"language-text\">Switch Accounts</code> and switch to your Team Account</li>\n<li>Navigate to <code class=\"language-text\">Settings</code> in the top right corner</li>\n<li>Locate your Team ID below your Team Name. i.e. <code class=\"language-text\">#123454212</code></li>\n</ol>\n<h2 id=\"stix-int\" style=\"position:relative;\"><a href=\"#stix-int\" aria-label=\"stix int permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Connecting via Integrations</h2>\n<p>Integrations that support STIX/TAXII 2.1 will offer the ability to add a TAXII feed; you will require the following details:</p>\n<ul>\n<li>Username <a href=\"/customers/use-stix-taxii/#team-id\">PolySwarm Team ID</a>.</li>\n<li>Password <a href=\"/customers/use-stix-taxii/#team-api\">PolySwarm Team API Key</a>.</li>\n<li>API Root URL</li>\n<li>and Collection ID.</li>\n</ul>\n<p>This section will review how to find the API Root URL, and Collection ID and configure the Integration.</p>\n<h4 id=\"config-taxii-int\" style=\"position:relative;\"><a href=\"#config-taxii-int\" aria-label=\"config taxii int permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Configuration of TAXII Client</h4>\n<p>The API Root URL and Collection ID can be obtained from the table below.</p>\n<blockquote>\n<p>Note: Access to the collections will be based upon the Team account subscription plan, contact customer-success@polyswarm.io to find out further details. To find a up to date list of collections, navigate to the “Listing available collections” section in the Python API section. For integrations that require a discovery URL use:  <a href=\"https://api.polyswarm.network/v3/stix/taxii2/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https://api.polyswarm.network/v3/stix/taxii2/</a></p>\n</blockquote>\n<table>\n<thead>\n<tr>\n<th>Title</th>\n<th>Description</th>\n<th>API Root URL</th>\n<th>Collection</th>\n<th>Collection ID</th>\n<th>Details</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Ransomware</td>\n<td>Emerging Ransomware</td>\n<td><a href=\"https://api.polyswarm.network/v3/stix/ransomware/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https://api.polyswarm.network/v3/stix/ransomware/</a></td>\n<td>Identified ransomware-family feed</td>\n<td>7b6bbecc-95cf-5317-a900-5bb7008eae93</td>\n<td>PolyScore > 0.50, Artifacts in the last 14 days that match a list of malware families.</td>\n</tr>\n<tr>\n<td>PolySwarm Trust Group</td>\n<td>Guest researcher feeds</td>\n<td><a href=\"https://api.polyswarm.network/v3/stix/trustgroup/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https://api.polyswarm.network/v3/stix/trustgroup/</a></td>\n<td>14-Day Feed</td>\n<td>3f153afb-5bf5-5cca-bfe9-ee854d92658d</td>\n<td>Any PolyScore, All Artifacts in the last 14 days</td>\n</tr>\n</tbody>\n</table>\n<blockquote>\n<p>You can obtain the latest list of collections with the <a href=\"/customers/use-stix-taxii/#listing-collections\">Python API</a>.</p>\n</blockquote>\n<p>Add the details above to your integration configuration page, and once configured and saved, the collection will poll and ingest the intelligence into the integration.</p>\n<h2 id=\"stix-api\" style=\"position:relative;\"><a href=\"#stix-api\" aria-label=\"stix api permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Connecting via Python API</h2>\n<p>PolySwarm's TAXII services are accessed via standard HTTP API endpoints defined in the TAXII v2.1 standard, often using a TAXII client library such as taxii2client. This section will explain the Python Library that can be used to access the STIX/TAXII collections.</p>\n<h4 id=\"authentication\" style=\"position:relative;\"><a href=\"#authentication\" aria-label=\"authentication permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Authentication</h4>\n<p>PolySwarm performs <a href=\"https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">HTTP authentication</a> using your PolySwarm account's <a href=\"/customers/use-stix-taxii/#team-id\"><strong>Account Number</strong></a> as your <code class=\"language-text\">user</code> and <a href=\"/customers/use-stix-taxii/#team-api\"><strong>API KEY</strong></a> as <code class=\"language-text\">password</code>:</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">import</span> taxii2client<span class=\"token punctuation\">.</span>v21\n\nTAXII_SERVER <span class=\"token operator\">=</span> taxii2client<span class=\"token punctuation\">.</span>v21<span class=\"token punctuation\">.</span>Server<span class=\"token punctuation\">(</span>\n    <span class=\"token string\">'https://api.polyswarm.network/v3/stix/taxii2/'</span><span class=\"token punctuation\">,</span>\n    user<span class=\"token operator\">=</span><span class=\"token string\">'${YOUR ACCOUNT NUMBER}'</span><span class=\"token punctuation\">,</span>\n    password<span class=\"token operator\">=</span><span class=\"token string\">'${YOUR API KEY}'</span>\n<span class=\"token punctuation\">)</span></code></pre></div>\n<h4 id=\"default-root\" style=\"position:relative;\"><a href=\"#default-root\" aria-label=\"default root permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Default API Root</h4>\n<p>Users of <code class=\"language-text\">taxii2client</code> can access their default API root through the server's <code class=\"language-text\">default</code> attribute:</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">DEFAULT_API_ROOT <span class=\"token operator\">=</span> TAXII_SERVER<span class=\"token punctuation\">.</span>default</code></pre></div>\n<h4 id=\"listing-collections\" style=\"position:relative;\"><a href=\"#listing-collections\" aria-label=\"listing collections permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Listing available collections</h4>\n<p>Customers with a <a href=\"/customers#log-in-sign-up\">PolySwarm account</a> can programmatically obtain a up to date list of the titles, short descriptions, UUIDs and an indication of whether the current user is allowed to read and write from an API root &#x26; collection via the Python API:</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">def</span> <span class=\"token function\">print_all_collections</span><span class=\"token punctuation\">(</span>server<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">from</span> textwrap <span class=\"token keyword\">import</span> indent\n    <span class=\"token keyword\">from</span> functools <span class=\"token keyword\">import</span> partial\n\n    <span class=\"token keyword\">def</span> <span class=\"token function\">build_printer</span><span class=\"token punctuation\">(</span>prefix<span class=\"token operator\">=</span><span class=\"token string\">''</span><span class=\"token punctuation\">,</span> sep<span class=\"token operator\">=</span><span class=\"token string\">''</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        nsep <span class=\"token operator\">=</span> sep\n        <span class=\"token keyword\">def</span> <span class=\"token function\">driver</span><span class=\"token punctuation\">(</span><span class=\"token operator\">*</span>args<span class=\"token punctuation\">,</span> <span class=\"token operator\">**</span>kwargs<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n            <span class=\"token keyword\">nonlocal</span> nsep\n            <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>indent<span class=\"token punctuation\">(</span><span class=\"token string\">' '</span><span class=\"token punctuation\">.</span>join<span class=\"token punctuation\">(</span>args<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> prefix<span class=\"token operator\">=</span>prefix <span class=\"token operator\">+</span> nsep<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token operator\">**</span>kwargs<span class=\"token punctuation\">)</span>\n            nsep <span class=\"token operator\">=</span> <span class=\"token string\">' '</span> <span class=\"token operator\">*</span> <span class=\"token builtin\">len</span><span class=\"token punctuation\">(</span>nsep<span class=\"token punctuation\">)</span>\n        <span class=\"token keyword\">return</span> driver\n\n    p <span class=\"token operator\">=</span> build_printer<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n    p<span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Title: \"</span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>server<span class=\"token punctuation\">.</span>title<span class=\"token punctuation\">}</span></span><span class=\"token string\">\"'</span></span><span class=\"token punctuation\">)</span>\n    p<span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Contact: \"</span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>server<span class=\"token punctuation\">.</span>contact<span class=\"token punctuation\">}</span></span><span class=\"token string\">\"'</span></span><span class=\"token punctuation\">)</span>\n    p<span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Description: \"</span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>server<span class=\"token punctuation\">.</span>description<span class=\"token punctuation\">}</span></span><span class=\"token string\">\"'</span></span><span class=\"token punctuation\">)</span>\n    p<span class=\"token punctuation\">(</span><span class=\"token string\">'Roots:'</span><span class=\"token punctuation\">)</span>\n\n    <span class=\"token keyword\">for</span> root <span class=\"token keyword\">in</span> server<span class=\"token punctuation\">.</span>api_roots<span class=\"token punctuation\">:</span>\n        p <span class=\"token operator\">=</span> build_printer<span class=\"token punctuation\">(</span><span class=\"token string\">'  '</span><span class=\"token punctuation\">,</span> sep<span class=\"token operator\">=</span><span class=\"token string\">'- '</span><span class=\"token punctuation\">)</span>\n        p<span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Title: \"</span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>root<span class=\"token punctuation\">.</span>title<span class=\"token punctuation\">}</span></span><span class=\"token string\">\"'</span></span><span class=\"token punctuation\">)</span>\n        p<span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Description: \"</span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>root<span class=\"token punctuation\">.</span>description<span class=\"token punctuation\">}</span></span><span class=\"token string\">\"'</span></span><span class=\"token punctuation\">)</span>\n        p<span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'URL: \"</span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>root<span class=\"token punctuation\">.</span>url<span class=\"token punctuation\">}</span></span><span class=\"token string\">\"'</span></span><span class=\"token punctuation\">)</span>\n        p<span class=\"token punctuation\">(</span><span class=\"token string\">'Collections:'</span><span class=\"token punctuation\">)</span>\n\n        <span class=\"token keyword\">for</span> collection <span class=\"token keyword\">in</span> root<span class=\"token punctuation\">.</span>collections<span class=\"token punctuation\">:</span>\n            p <span class=\"token operator\">=</span> build_printer<span class=\"token punctuation\">(</span><span class=\"token string\">'    '</span><span class=\"token punctuation\">,</span> sep<span class=\"token operator\">=</span><span class=\"token string\">'- '</span><span class=\"token punctuation\">)</span>\n            p<span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Title: \"</span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>collection<span class=\"token punctuation\">.</span>title<span class=\"token punctuation\">}</span></span><span class=\"token string\">\"'</span></span><span class=\"token punctuation\">)</span>\n            p<span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Objects URL: \"</span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>collection<span class=\"token punctuation\">.</span>objects_url<span class=\"token punctuation\">}</span></span><span class=\"token string\">\"'</span></span><span class=\"token punctuation\">)</span>\n            <span class=\"token keyword\">if</span> collection<span class=\"token punctuation\">.</span>description<span class=\"token punctuation\">:</span>\n                p<span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Description: \"</span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>collection<span class=\"token punctuation\">.</span>description<span class=\"token punctuation\">}</span></span><span class=\"token string\">\"'</span></span><span class=\"token punctuation\">)</span>\n            p<span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Can Read: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>collection<span class=\"token punctuation\">.</span>can_read<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n            p<span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Can Write: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>collection<span class=\"token punctuation\">.</span>can_write<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n\nprint_all_collections<span class=\"token punctuation\">(</span>TAXII_SERVER<span class=\"token punctuation\">)</span></code></pre></div>\n<pre class=\"results\">\nTitle: \"Polyswarm TAXII Service\"\nContact: \"sales@polyswarm.io\"\nDescription: \"This TAXII Server contains a listing of Polyswarm's feed data\"\nRoots:\n  - Title: \"PolySwarm Trust Group\"\n    Description: \"Guest researcher feeds\"\n    URL: \"https://api.polyswarm.network/v2/stix/trustgroup/\"\n    Collections:\n    - Title: \"14-Day Feed\"\n      Objects URL: \"https://api.polyswarm.network/v2/stix/trustgroup/collections/3f153afb-5bf5-5cca-bfe9-ee854d92658d/objects/\"\n      Can Read: True\n      Can Write: False\n  - Title: \"Ransomware\"\n    Description: \"Emerging Ransomware\"\n    URL: \"https://api.polyswarm.network/v2/stix/ransomware/\"\n    Collections:\n    - Title: \"Identified ransomware-family feed\"\n      Objects URL: \"https://api.polyswarm.network/v2/stix/ransomware/collections/7b6bbecc-95cf-5317-a900-5bb7008eae93/objects/\"\n      Can Read: True\n      Can Write: False\n  - Title: \"Freemium\"\n    Description: \"Polyswarm Basic TAXII\"\n    URL: \"https://api.polyswarm.network/v2/stix/freemium/\"\n    Collections:\n    - Title: \"Freemium collection\"\n      Objects URL: \"https://api.polyswarm.network/v2/stix/freemium/collections/019630e9-0cdb-5d7d-b8c1-120c793093ad/objects/\"\n      Can Read: True\n      Can Write: False\n</pre>\n<h4 id=\"pagination\" style=\"position:relative;\"><a href=\"#pagination\" aria-label=\"pagination permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Pagination</h4>\n<p>TAXII supports pagination of very large result sets in collections.\nCollections return a \"feed\" of STIX-formatted data sorted in ascending order by the date they were added to the collection:</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">def</span> <span class=\"token function\">read_taxii_feed</span><span class=\"token punctuation\">(</span>collection<span class=\"token punctuation\">,</span> <span class=\"token operator\">**</span>kwargs<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">while</span> <span class=\"token boolean\">True</span><span class=\"token punctuation\">:</span>\n        page <span class=\"token operator\">=</span> collection<span class=\"token punctuation\">.</span>get_objects<span class=\"token punctuation\">(</span><span class=\"token operator\">**</span>kwargs<span class=\"token punctuation\">)</span>\n\n        <span class=\"token keyword\">if</span> page<span class=\"token punctuation\">:</span>\n            <span class=\"token keyword\">yield</span> page<span class=\"token punctuation\">[</span><span class=\"token string\">'objects'</span><span class=\"token punctuation\">]</span>\n\n            <span class=\"token keyword\">if</span> page<span class=\"token punctuation\">[</span><span class=\"token string\">'more'</span><span class=\"token punctuation\">]</span> <span class=\"token keyword\">is</span> <span class=\"token boolean\">True</span><span class=\"token punctuation\">:</span>\n                kwargs<span class=\"token punctuation\">[</span><span class=\"token string\">'next'</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> page<span class=\"token punctuation\">[</span><span class=\"token string\">'next'</span><span class=\"token punctuation\">]</span>\n                <span class=\"token keyword\">continue</span>\n\n        <span class=\"token keyword\">break</span>\n\niterator <span class=\"token operator\">=</span> read_taxii_feed<span class=\"token punctuation\">(</span>DEFAULT_API_ROOT<span class=\"token punctuation\">.</span>collections<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">next</span><span class=\"token punctuation\">(</span>iterator<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span></code></pre></div>\n<pre class=\"results\">\n[{'id': 'bundle--dd45c61c-ddbf-4fbb-80db-cb89fd18a656',\n  'objects': [{'aliases': ['Trojan.DownLoad3.28161',\n                           'Trojan.Generic.dayyf',\n                           'win/malicious',\n                           'TrojanDownloader:Win32/Waski.aaca15b4',\n                           'Trojan.Win32.Crypt',\n                           'Trojan.ADC939420BE48D7E'],\n               'created': '2021-09-01T19:22:45.157824Z',\n               'external_references': [{'source_name': 'polyswarm-report',\n                                        'url': 'https://polyswarm.network/scan/results/file/2b898acee79ef91d036ceaf043953f234a36be79cfc92ec9f98f0c54a547144d'}],\n               'first_seen': '2021-09-01T19:22:45.157824Z',\n               'id': 'malware--de44e0eb-0e97-4fa4-80ab-e689fd18a656',\n               'is_family': True,\n               'last_seen': '2021-09-01T19:22:45.157824Z',\n               'malware_types': ['trojan', 'downloader'],\n               'modified': '2021-09-15T19:22:44.625891Z',\n               'name': 'Trojan.Win32.Crypt',\n               'spec_version': '2.1',\n               'type': 'malware'},\n              {'atime': '2021-09-01T19:22:50.000000Z',\n               'ctime': '2021-09-01T19:22:50.000000Z',\n               'hashes': {'MD5': 'fef489eed1314bcd5d545e7f65889ed8',\n                          'SHA-1': 'ddab1051e713b9ce191382cc34820a6a6117ae7f',\n                          'SHA-256': '2b898acee79ef91d036ceaf043953f234a36be79cfc92ec9f98f0c54a547144d',\n                          'SHA-512': '760e9924f8b1c8f20420f2bde9abc09881b7e38062bb3275d4c50cd8856eb0a3b108746c1289d79c8cb751e0a6b01e979e43d2dc7c527e8f288b1d6864aa265b',\n                          'SSDEEP': '768:/whRkKCCR3IAm9MOlq8bdA/bmerdkDwRGXn/+mmCfyrr7/YMy:s5Hm9dl4/tuDz/+mjfum',\n                          'TLSH': '4413ae3c6ee95672d3bbdab6c6f655c6f931b42379029c0d40da03850c13f16eda1a2e'},\n               'id': 'file--dd45c61c-ddbf-4fbb-80db-cb89fd18a656',\n               'mtime': '2021-09-01T19:22:50.000000Z',\n               'name': '2b898acee79ef91d036ceaf043953f234a36be79cfc92ec9f98f0c54a547144d',\n               'spec_version': '2.1',\n               'type': 'file'},\n              {'aliases': ['Trojan.DownLoad3.28161',\n                           'win/malicious',\n                           'TrojanDownloader:Win32/Waski.aaca15b4',\n                           'Trojan.ADC939420BE48D7E',\n                           'Trojan.Generic.dayyf',\n                           'Trojan.Win32.Crypt'],\n               'confidence': 99,\n               'created': '2021-09-01T19:22:45.157824Z',\n               'first_seen': '2021-09-01T19:22:45.157824Z',\n               'id': 'malware--dd45c61c-ddbf-4fbb-80db-cb89fd18a656',\n               'is_family': False,\n               'last_seen': '2021-09-01T19:22:45.157824Z',\n               'modified': '2021-09-15T19:22:44.627754Z',\n               'name': 'Trojan.Win32.Crypt',\n               'sample_refs': ['file--dd45c61c-ddbf-4fbb-80db-cb89fd18a656'],\n               'spec_version': '2.1',\n               'type': 'malware'},\n              {'created': '2021-09-15T19:22:44.627966Z',\n               'id': 'relationship--5870ee12-8276-4110-bf58-42df4297025c',\n               'modified': '2021-09-15T19:22:44.627966Z',\n               'relationship_type': 'variant-of',\n               'source_ref': 'malware--dd45c61c-ddbf-4fbb-80db-cb89fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--de44e0eb-0e97-4fa4-80ab-e689fd18a656',\n               'type': 'relationship'},\n              {'created': '2021-09-01T19:22:45.157824Z',\n               'id': 'malware-analysis--dc45ca9a-beff-4fd6-8087-5689fd18a656',\n               'modified': '2021-09-15T19:22:44.628133Z',\n               'product': 'jiangmin',\n               'result': 'malicious',\n               'result_name': 'Trojan.Generic.dayyf',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.628265Z',\n               'id': 'relationship--376a66a3-9be9-4e55-be0f-d981e06bf156',\n               'modified': '2021-09-15T19:22:44.628265Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc45ca9a-beff-4fd6-8087-5689fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd45c61c-ddbf-4fbb-80db-cb89fd18a656',\n               'type': 'relationship'},\n              {'analysis_definition_version': '69971A0908A7EC9BE1CDAA21B8EFE918, '\n                                              '2020-Nov-23 22:42:22',\n               'analysis_engine_version': '7.00.49.09080',\n               'created': '2021-09-01T19:22:45.157824Z',\n               'id': 'malware-analysis--dc44f2e4-46e1-4fb2-80e5-7889fd18a656',\n               'modified': '2021-09-15T19:22:44.628403Z',\n               'product': 'drweb',\n               'result': 'malicious',\n               'result_name': 'Trojan.DownLoad3.28161',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.628524Z',\n               'id': 'relationship--4ae93d16-fa30-41db-8e17-37713f6771d7',\n               'modified': '2021-09-15T19:22:44.628524Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc44f2e4-46e1-4fb2-80e5-7889fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd45c61c-ddbf-4fbb-80db-cb89fd18a656',\n               'type': 'relationship'},\n              {'analysis_engine_version': '2',\n               'created': '2021-09-01T19:22:45.157824Z',\n               'id': 'malware-analysis--dc45bf19-ce09-4fa7-801e-3f89fd18a656',\n               'modified': '2021-09-15T19:22:44.628658Z',\n               'product': 'crowdstrike-falcon-ml',\n               'result': 'malicious',\n               'result_name': 'win/malicious',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.628776Z',\n               'id': 'relationship--db9ee711-2a3a-451a-9fe3-70b6ae5322b9',\n               'modified': '2021-09-15T19:22:44.628776Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc45bf19-ce09-4fa7-801e-3f89fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd45c61c-ddbf-4fbb-80db-cb89fd18a656',\n               'type': 'relationship'},\n              {'created': '2021-09-01T19:22:45.157824Z',\n               'id': 'malware-analysis--dc447f63-6ab3-4fc3-807f-7889fd18a656',\n               'modified': '2021-09-15T19:22:44.628910Z',\n               'product': 'filseclab',\n               'result': 'malicious',\n               'result_name': 'Trojan.ADC939420BE48D7E',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.629048Z',\n               'id': 'relationship--aa86d817-54a7-479b-977e-85cdc653f0be',\n               'modified': '2021-09-15T19:22:44.629048Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc447f63-6ab3-4fc3-807f-7889fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd45c61c-ddbf-4fbb-80db-cb89fd18a656',\n               'type': 'relationship'},\n              {'analysis_definition_version': '48872546c2e9031cb99dc29783b079288f18c6f8-Release.x64',\n               'analysis_engine_version': '4.7.0.10',\n               'created': '2021-09-01T19:22:45.157824Z',\n               'id': 'malware-analysis--dc45ee09-d9c1-4f3f-80c0-5e89fd18a656',\n               'modified': '2021-09-15T19:22:44.629191Z',\n               'product': 'sentinelone-static-ml',\n               'result': 'malicious',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.629314Z',\n               'id': 'relationship--827b5c4d-e12d-454d-8ced-e361041d2695',\n               'modified': '2021-09-15T19:22:44.629314Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc45ee09-d9c1-4f3f-80c0-5e89fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd45c61c-ddbf-4fbb-80db-cb89fd18a656',\n               'type': 'relationship'},\n              {'analysis_definition_version': '6.100',\n               'analysis_engine_version': '5.5.1',\n               'created': '2021-09-01T19:22:45.157824Z',\n               'id': 'malware-analysis--dc44db30-d404-4fcb-80ce-6289fd18a656',\n               'modified': '2021-09-15T19:22:44.629455Z',\n               'product': 'secureage',\n               'result': 'malicious',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.629575Z',\n               'id': 'relationship--fc2e7e5f-8e92-427f-a792-2bbc60cd5cfb',\n               'modified': '2021-09-15T19:22:44.629575Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc44db30-d404-4fcb-80ce-6289fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd45c61c-ddbf-4fbb-80db-cb89fd18a656',\n               'type': 'relationship'},\n              {'created': '2021-09-01T19:22:45.157824Z',\n               'id': 'malware-analysis--dc44172e-d6a0-4f38-80ba-0189fd18a656',\n               'modified': '2021-09-15T19:22:44.629717Z',\n               'product': 'lionic',\n               'result': 'malicious',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.629835Z',\n               'id': 'relationship--b64b2696-f536-4dc6-afeb-2461ec4749cd',\n               'modified': '2021-09-15T19:22:44.629835Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc44172e-d6a0-4f38-80ba-0189fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd45c61c-ddbf-4fbb-80db-cb89fd18a656',\n               'type': 'relationship'},\n              {'analysis_definition_version': '01.09.2021 18:16:19 (104093)',\n               'analysis_engine_version': '5.6.2.0',\n               'created': '2021-09-01T19:22:45.157824Z',\n               'id': 'malware-analysis--dc44609a-145c-4f5d-80a1-e189fd18a656',\n               'modified': '2021-09-15T19:22:44.629969Z',\n               'product': 'ikarus',\n               'result': 'malicious',\n               'result_name': 'Trojan.Win32.Crypt',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.630087Z',\n               'id': 'relationship--9e559a2e-d185-49fb-ab26-eb747e99de3c',\n               'modified': '2021-09-15T19:22:44.630087Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc44609a-145c-4f5d-80a1-e189fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd45c61c-ddbf-4fbb-80db-cb89fd18a656',\n               'type': 'relationship'},\n              {'analysis_definition_version': '2019-10-02 10:25',\n               'created': '2021-09-01T19:22:45.157824Z',\n               'id': 'malware-analysis--dc45b73b-fc99-4f74-8075-8789fd18a656',\n               'modified': '2021-09-15T19:22:44.630221Z',\n               'product': 'qihoo-360',\n               'result': 'benign',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.630336Z',\n               'id': 'relationship--95f18068-1342-4021-b3fd-49e3a021b9d0',\n               'modified': '2021-09-15T19:22:44.630336Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc45b73b-fc99-4f74-8075-8789fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd45c61c-ddbf-4fbb-80db-cb89fd18a656',\n               'type': 'relationship'},\n              {'created': '2021-09-01T19:22:45.157824Z',\n               'id': 'malware-analysis--dc458035-822d-4f07-80d4-0a89fd18a656',\n               'modified': '2021-09-15T19:22:44.630466Z',\n               'product': 'alibaba',\n               'result': 'malicious',\n               'result_name': 'TrojanDownloader:Win32/Waski.aaca15b4',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.630582Z',\n               'id': 'relationship--3a7abb12-86fe-4940-8800-e63b2e483c98',\n               'modified': '2021-09-15T19:22:44.630582Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc458035-822d-4f07-80d4-0a89fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd45c61c-ddbf-4fbb-80db-cb89fd18a656',\n               'type': 'relationship'}],\n  'type': 'bundle'},\n {'id': 'bundle--dd45aeee-3a07-4f09-80dd-de89fd18a656',\n  'objects': [{'aliases': ['Trojan.Win64.CoinMiner',\n                           'Trojan.BtcMine.3367',\n                           'Trojan.MSIL.qzrf',\n                           'Dropper.Agent!8.2F',\n                           'Win.Coinminer.Generic-7151250-0',\n                           'Trojan.Win32.Trick.fmmuks'],\n               'created': '2021-09-01T19:22:45.178976Z',\n               'external_references': [{'source_name': 'polyswarm-report',\n                                        'url': 'https://polyswarm.network/scan/results/file/84631ab11016280ca401d9775f0938ab31e451d228581944ee4eee3c2d538dc3'}],\n               'first_seen': '2021-09-01T19:22:45.178976Z',\n               'id': 'malware--de44e0eb-0e97-4fa4-80ab-f189fd18a656',\n               'is_family': True,\n               'last_seen': '2021-09-01T19:22:45.178976Z',\n               'malware_types': ['trojan', 'resource-exploitation', 'dropper'],\n               'modified': '2021-09-15T19:22:44.633865Z',\n               'name': 'Trojan.Win64.CoinMiner',\n               'spec_version': '2.1',\n               'type': 'malware'},\n              {'atime': '2021-09-01T19:22:47.000000Z',\n               'ctime': '2021-09-01T19:22:48.000000Z',\n               'hashes': {'MD5': '6e2757fa246b5bbdac38722930ec2794',\n                          'SHA-1': '608604a72d867383a20c1f2f08ba1be61dc31b8b',\n                          'SHA-256': '84631ab11016280ca401d9775f0938ab31e451d228581944ee4eee3c2d538dc3',\n                          'SHA-512': '3e70dc8d82c4cba93fe79e3ab10931a5dbb4a67243a9e9b1843135223c3680ef462aa3232b4fe855b85bc8f2cb65fbc0e4d75084abde914a70cf71a10496aca2',\n                          'SSDEEP': '49152:FGUzr9GOWh50kC1/dVFdNaeUE3LqW1T/f5iBA9R86DHVVzP7ffQmSumSDr4k:FG6r9GOWPClFdNaeUE3LqW1T/f5iBA9H',\n                          'TLSH': 'abb57cbd728502b1d1eec476ca178d0ff7b17a524334a1eb156443ae2e236d98639f32'},\n               'id': 'file--dd45aeee-3a07-4f09-80dd-de89fd18a656',\n               'mtime': '2021-09-01T19:22:48.000000Z',\n               'name': '84631ab11016280ca401d9775f0938ab31e451d228581944ee4eee3c2d538dc3',\n               'spec_version': '2.1',\n               'type': 'file'},\n              {'aliases': ['Trojan.Win64.CoinMiner',\n                           'Dropper.Agent!8.2F',\n                           'Trojan.Win32.Trick.fmmuks',\n                           'Trojan.MSIL.qzrf',\n                           'Trojan.BtcMine.3367',\n                           'Win.Coinminer.Generic-7151250-0'],\n               'confidence': 99,\n               'created': '2021-09-01T19:22:45.178976Z',\n               'first_seen': '2021-09-01T19:22:45.178976Z',\n               'id': 'malware--dd45aeee-3a07-4f09-80dd-de89fd18a656',\n               'is_family': False,\n               'last_seen': '2021-09-01T19:22:45.178976Z',\n               'modified': '2021-09-15T19:22:44.635847Z',\n               'name': 'Trojan.Win64.CoinMiner',\n               'sample_refs': ['file--dd45aeee-3a07-4f09-80dd-de89fd18a656'],\n               'spec_version': '2.1',\n               'type': 'malware'},\n              {'created': '2021-09-15T19:22:44.636028Z',\n               'id': 'relationship--2ddd2731-d977-4d21-9f42-456a390a9641',\n               'modified': '2021-09-15T19:22:44.636028Z',\n               'relationship_type': 'variant-of',\n               'source_ref': 'malware--dd45aeee-3a07-4f09-80dd-de89fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--de44e0eb-0e97-4fa4-80ab-f189fd18a656',\n               'type': 'relationship'},\n              {'created': '2021-09-01T19:22:45.178976Z',\n               'id': 'malware-analysis--dc45ff41-2a95-4f62-8069-d189fd18a656',\n               'modified': '2021-09-15T19:22:44.636182Z',\n               'product': 'alibaba',\n               'result': 'benign',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.636307Z',\n               'id': 'relationship--dfc0f440-5c7f-4a29-92ff-1a6545dd6d48',\n               'modified': '2021-09-15T19:22:44.636307Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc45ff41-2a95-4f62-8069-d189fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd45aeee-3a07-4f09-80dd-de89fd18a656',\n               'type': 'relationship'},\n              {'analysis_definition_version': '69971A0908A7EC9BE1CDAA21B8EFE918, '\n                                              '2020-Nov-23 22:42:22',\n               'analysis_engine_version': '7.00.49.09080',\n               'created': '2021-09-01T19:22:45.178976Z',\n               'id': 'malware-analysis--dc445ec3-809e-4f9a-8052-1089fd18a656',\n               'modified': '2021-09-15T19:22:44.636443Z',\n               'product': 'drweb',\n               'result': 'malicious',\n               'result_name': 'Trojan.BtcMine.3367',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.636561Z',\n               'id': 'relationship--e32c8ee3-1d9b-4eba-87f4-6bbb61741469',\n               'modified': '2021-09-15T19:22:44.636561Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc445ec3-809e-4f9a-8052-1089fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd45aeee-3a07-4f09-80dd-de89fd18a656',\n               'type': 'relationship'},\n              {'analysis_definition_version': '48872546c2e9031cb99dc29783b079288f18c6f8-Release.x64',\n               'analysis_engine_version': '4.7.0.10',\n               'created': '2021-09-01T19:22:45.178976Z',\n               'id': 'malware-analysis--dc44186b-960c-4f21-8012-5589fd18a656',\n               'modified': '2021-09-15T19:22:44.636694Z',\n               'product': 'sentinelone-static-ml',\n               'result': 'malicious',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.636812Z',\n               'id': 'relationship--308f92fb-ecdc-40a8-9245-b40c601ff795',\n               'modified': '2021-09-15T19:22:44.636812Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc44186b-960c-4f21-8012-5589fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd45aeee-3a07-4f09-80dd-de89fd18a656',\n               'type': 'relationship'},\n              {'analysis_engine_version': '2',\n               'created': '2021-09-01T19:22:45.178976Z',\n               'id': 'malware-analysis--dc44dd7a-4c15-4f86-8034-1b89fd18a656',\n               'modified': '2021-09-15T19:22:44.636948Z',\n               'product': 'crowdstrike-falcon-ml',\n               'result': 'benign',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.637101Z',\n               'id': 'relationship--9148f1a1-b66c-4bde-b0f6-819ad558607a',\n               'modified': '2021-09-15T19:22:44.637101Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc44dd7a-4c15-4f86-8034-1b89fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd45aeee-3a07-4f09-80dd-de89fd18a656',\n               'type': 'relationship'},\n              {'analysis_engine_version': 'ClamAV 0.102.4/26281/Wed Sep  1 '\n                                          '08:21:58 2021',\n               'created': '2021-09-01T19:22:45.178976Z',\n               'id': 'malware-analysis--dc44f633-e3e2-4f0c-802b-9989fd18a656',\n               'modified': '2021-09-15T19:22:44.637241Z',\n               'product': 'clamav',\n               'result': 'malicious',\n               'result_name': 'Win.Coinminer.Generic-7151250-0',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.637359Z',\n               'id': 'relationship--f48af396-db6d-44b8-9e71-57a713d6f47f',\n               'modified': '2021-09-15T19:22:44.637359Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc44f633-e3e2-4f0c-802b-9989fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd45aeee-3a07-4f09-80dd-de89fd18a656',\n               'type': 'relationship'},\n              {'analysis_definition_version': '6.100',\n               'analysis_engine_version': '5.5.1',\n               'created': '2021-09-01T19:22:45.178976Z',\n               'id': 'malware-analysis--dc445857-1da9-4f82-80f3-1989fd18a656',\n               'modified': '2021-09-15T19:22:44.637492Z',\n               'product': 'secureage',\n               'result': 'malicious',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.637610Z',\n               'id': 'relationship--23dd6ac8-5b49-4353-b54e-392bc524126e',\n               'modified': '2021-09-15T19:22:44.637610Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc445857-1da9-4f82-80f3-1989fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd45aeee-3a07-4f09-80dd-de89fd18a656',\n               'type': 'relationship'},\n              {'analysis_definition_version': '0.14.35.19132',\n               'analysis_engine_version': '1.0.134.90676',\n               'created': '2021-09-01T19:22:45.178976Z',\n               'id': 'malware-analysis--dc45a504-0f2e-4ff6-80d4-1989fd18a656',\n               'modified': '2021-09-15T19:22:44.637743Z',\n               'product': 'nanoav',\n               'result': 'malicious',\n               'result_name': 'Trojan.Win32.Trick.fmmuks',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.637861Z',\n               'id': 'relationship--d12b3cab-fdf5-4bbe-b48b-9ce9ffa00e11',\n               'modified': '2021-09-15T19:22:44.637861Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc45a504-0f2e-4ff6-80d4-1989fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd45aeee-3a07-4f09-80dd-de89fd18a656',\n               'type': 'relationship'},\n              {'created': '2021-09-01T19:22:45.178976Z',\n               'id': 'malware-analysis--dc440050-76f9-4f3c-8038-9e89fd18a656',\n               'modified': '2021-09-15T19:22:44.637995Z',\n               'product': 'rising',\n               'result': 'malicious',\n               'result_name': 'Dropper.Agent!8.2F',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.638121Z',\n               'id': 'relationship--0a1c9971-36b9-482e-b117-39ecc03c5ed5',\n               'modified': '2021-09-15T19:22:44.638121Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc440050-76f9-4f3c-8038-9e89fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd45aeee-3a07-4f09-80dd-de89fd18a656',\n               'type': 'relationship'},\n              {'created': '2021-09-01T19:22:45.178976Z',\n               'id': 'malware-analysis--dc45f7a9-3354-4f02-80ad-bc89fd18a656',\n               'modified': '2021-09-15T19:22:44.638263Z',\n               'product': 'filseclab',\n               'result': 'benign',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.638383Z',\n               'id': 'relationship--5f2cb4a5-94d2-49f0-abc5-dd2ea9795a07',\n               'modified': '2021-09-15T19:22:44.638383Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc45f7a9-3354-4f02-80ad-bc89fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd45aeee-3a07-4f09-80dd-de89fd18a656',\n               'type': 'relationship'},\n              {'analysis_definition_version': '01.09.2021 18:16:19 (104093)',\n               'analysis_engine_version': '5.6.2.0',\n               'created': '2021-09-01T19:22:45.178976Z',\n               'id': 'malware-analysis--dc446861-42b0-4f55-804a-0389fd18a656',\n               'modified': '2021-09-15T19:22:44.638518Z',\n               'product': 'ikarus',\n               'result': 'malicious',\n               'result_name': 'Trojan.Win64.CoinMiner',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.638636Z',\n               'id': 'relationship--c4056dc0-23e5-4b36-8d50-4cc1dafd9958',\n               'modified': '2021-09-15T19:22:44.638636Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc446861-42b0-4f55-804a-0389fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd45aeee-3a07-4f09-80dd-de89fd18a656',\n               'type': 'relationship'},\n              {'created': '2021-09-01T19:22:45.178976Z',\n               'id': 'malware-analysis--dc44bf82-a407-4fd6-800d-ab89fd18a656',\n               'modified': '2021-09-15T19:22:44.638769Z',\n               'product': 'lionic',\n               'result': 'benign',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.639014Z',\n               'id': 'relationship--0c2bccc2-ff2c-4b56-9088-e2b93e8abf91',\n               'modified': '2021-09-15T19:22:44.639014Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc44bf82-a407-4fd6-800d-ab89fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd45aeee-3a07-4f09-80dd-de89fd18a656',\n               'type': 'relationship'},\n              {'created': '2021-09-01T19:22:45.178976Z',\n               'id': 'malware-analysis--dc44455e-f135-4f64-809d-8d89fd18a656',\n               'modified': '2021-09-15T19:22:44.639160Z',\n               'product': 'jiangmin',\n               'result': 'malicious',\n               'result_name': 'Trojan.MSIL.qzrf',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.639281Z',\n               'id': 'relationship--855479ed-53f2-4368-95d3-92340d4a68fb',\n               'modified': '2021-09-15T19:22:44.639281Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc44455e-f135-4f64-809d-8d89fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd45aeee-3a07-4f09-80dd-de89fd18a656',\n               'type': 'relationship'}],\n  'type': 'bundle'},\n {'id': 'bundle--dd44bb23-4668-4f3b-80c3-d589fd18a656',\n  'objects': [{'aliases': ['Backdoor.6536F84D7F60AA9C',\n                           'win/malicious',\n                           'Malware:Win32/Dorpal.ali1000029',\n                           'BackDoor.Golf.260',\n                           'Backdoor.Generic.ztr',\n                           'Trojan.Win32.Urelas',\n                           'Backdoor.Plite!8.2D6',\n                           'Win.Malware.Urelas-6840420-0'],\n               'created': '2021-09-01T19:22:45.194687Z',\n               'external_references': [{'source_name': 'polyswarm-report',\n                                        'url': 'https://polyswarm.network/scan/results/file/ce50012446934e7ad42c209a12e377a9594930f788c659b32b5344bbc7ef5fb3'}],\n               'first_seen': '2021-09-01T19:22:45.194687Z',\n               'id': 'malware--de44e0eb-0e97-4fa4-80ab-e089fd18a656',\n               'is_family': True,\n               'last_seen': '2021-09-01T19:22:45.194687Z',\n               'malware_types': ['backdoor', 'virus', 'trojan'],\n               'modified': '2021-09-15T19:22:44.642432Z',\n               'name': 'Urelas',\n               'spec_version': '2.1',\n               'type': 'malware'},\n              {'atime': '2021-09-01T19:22:50.000000Z',\n               'ctime': '2021-09-01T19:22:50.000000Z',\n               'hashes': {'MD5': 'f5b78e02928c276f22be13313d37bcb4',\n                          'SHA-1': 'e024f5d831e101d4d7748fe3d0792e72f4762ff0',\n                          'SHA-256': 'ce50012446934e7ad42c209a12e377a9594930f788c659b32b5344bbc7ef5fb3',\n                          'SHA-512': '66727aa1e7c24987b515ff42704b35a89d4ea5d3c62d32649f158218628344b30adfaa8a61967124592969f7301930588e472a618b5eed0b629c509d114e3b28',\n                          'SSDEEP': '1536:s1baYkjUIKECOmxUNKwhB+GT/4I2fm3w9Rri+pXmf8t1dn4vcj0:sjIKn1xUswhsGTgI23RGUXmUDg',\n                          'TLSH': '22d3cf4566010894f71c0b721a02fad0889dae7c65d6fa5ff1bc7d7ab932183a97309f'},\n               'id': 'file--dd44bb23-4668-4f3b-80c3-d589fd18a656',\n               'mtime': '2021-09-01T19:22:50.000000Z',\n               'name': 'ce50012446934e7ad42c209a12e377a9594930f788c659b32b5344bbc7ef5fb3',\n               'spec_version': '2.1',\n               'type': 'file'},\n              {'aliases': ['Backdoor.6536F84D7F60AA9C',\n                           'win/malicious',\n                           'Malware:Win32/Dorpal.ali1000029',\n                           'BackDoor.Golf.260',\n                           'Backdoor.Generic.ztr',\n                           'Trojan.Win32.Urelas',\n                           'Backdoor.Plite!8.2D6',\n                           'Win.Malware.Urelas-6840420-0'],\n               'confidence': 99,\n               'created': '2021-09-01T19:22:45.194687Z',\n               'first_seen': '2021-09-01T19:22:45.194687Z',\n               'id': 'malware--dd44bb23-4668-4f3b-80c3-d589fd18a656',\n               'is_family': False,\n               'last_seen': '2021-09-01T19:22:45.194687Z',\n               'modified': '2021-09-15T19:22:44.644475Z',\n               'name': 'Urelas',\n               'sample_refs': ['file--dd44bb23-4668-4f3b-80c3-d589fd18a656'],\n               'spec_version': '2.1',\n               'type': 'malware'},\n              {'created': '2021-09-15T19:22:44.644702Z',\n               'id': 'relationship--d1f3b112-02c4-4ea8-b36d-56c871f3da91',\n               'modified': '2021-09-15T19:22:44.644702Z',\n               'relationship_type': 'variant-of',\n               'source_ref': 'malware--dd44bb23-4668-4f3b-80c3-d589fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--de44e0eb-0e97-4fa4-80ab-e089fd18a656',\n               'type': 'relationship'},\n              {'analysis_engine_version': '2',\n               'created': '2021-09-01T19:22:45.194687Z',\n               'id': 'malware-analysis--dc44ef20-ce6a-4f5a-8060-d389fd18a656',\n               'modified': '2021-09-15T19:22:44.644858Z',\n               'product': 'crowdstrike-falcon-ml',\n               'result': 'malicious',\n               'result_name': 'win/malicious',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.644982Z',\n               'id': 'relationship--d5a07ca3-fcbe-4722-92e8-16a6ac82da9e',\n               'modified': '2021-09-15T19:22:44.644982Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc44ef20-ce6a-4f5a-8060-d389fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd44bb23-4668-4f3b-80c3-d589fd18a656',\n               'type': 'relationship'},\n              {'created': '2021-09-01T19:22:45.194687Z',\n               'id': 'malware-analysis--dc44ff03-52a3-4f74-8059-1289fd18a656',\n               'modified': '2021-09-15T19:22:44.645144Z',\n               'product': 'jiangmin',\n               'result': 'malicious',\n               'result_name': 'Backdoor.Generic.ztr',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.645264Z',\n               'id': 'relationship--4b08404d-64e3-44ae-99ab-8017944749ad',\n               'modified': '2021-09-15T19:22:44.645264Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc44ff03-52a3-4f74-8059-1289fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd44bb23-4668-4f3b-80c3-d589fd18a656',\n               'type': 'relationship'},\n              {'analysis_definition_version': '6.100',\n               'analysis_engine_version': '5.5.1',\n               'created': '2021-09-01T19:22:45.194687Z',\n               'id': 'malware-analysis--dc44f830-1712-4fcc-80e6-1089fd18a656',\n               'modified': '2021-09-15T19:22:44.645396Z',\n               'product': 'secureage',\n               'result': 'malicious',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.645514Z',\n               'id': 'relationship--937a07aa-bc4f-4039-94b7-34c586f42703',\n               'modified': '2021-09-15T19:22:44.645514Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc44f830-1712-4fcc-80e6-1089fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd44bb23-4668-4f3b-80c3-d589fd18a656',\n               'type': 'relationship'},\n              {'analysis_definition_version': '69971A0908A7EC9BE1CDAA21B8EFE918, '\n                                              '2020-Nov-23 22:42:22',\n               'analysis_engine_version': '7.00.49.09080',\n               'created': '2021-09-01T19:22:45.194687Z',\n               'id': 'malware-analysis--dc443af4-a14c-4f37-8028-7b89fd18a656',\n               'modified': '2021-09-15T19:22:44.645648Z',\n               'product': 'drweb',\n               'result': 'malicious',\n               'result_name': 'BackDoor.Golf.260',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.645765Z',\n               'id': 'relationship--09473b27-7c9e-4c41-bacb-b507e2a59900',\n               'modified': '2021-09-15T19:22:44.645765Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc443af4-a14c-4f37-8028-7b89fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd44bb23-4668-4f3b-80c3-d589fd18a656',\n               'type': 'relationship'},\n              {'created': '2021-09-01T19:22:45.194687Z',\n               'id': 'malware-analysis--dc44bea2-b17e-4fb6-80e1-2c89fd18a656',\n               'modified': '2021-09-15T19:22:44.645898Z',\n               'product': 'filseclab',\n               'result': 'malicious',\n               'result_name': 'Backdoor.6536F84D7F60AA9C',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.646016Z',\n               'id': 'relationship--c9070ece-6c17-4af8-843b-8c9506acd11a',\n               'modified': '2021-09-15T19:22:44.646016Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc44bea2-b17e-4fb6-80e1-2c89fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd44bb23-4668-4f3b-80c3-d589fd18a656',\n               'type': 'relationship'},\n              {'created': '2021-09-01T19:22:45.194687Z',\n               'id': 'malware-analysis--dc44cd9a-0c37-4f5e-808c-4189fd18a656',\n               'modified': '2021-09-15T19:22:44.646147Z',\n               'product': 'alibaba',\n               'result': 'malicious',\n               'result_name': 'Malware:Win32/Dorpal.ali1000029',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.646281Z',\n               'id': 'relationship--fdf11db2-f58b-4b3e-b5ac-eafd5aae5fff',\n               'modified': '2021-09-15T19:22:44.646281Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc44cd9a-0c37-4f5e-808c-4189fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd44bb23-4668-4f3b-80c3-d589fd18a656',\n               'type': 'relationship'},\n              {'created': '2021-09-01T19:22:45.194687Z',\n               'id': 'malware-analysis--dc44ef5d-f3cf-4ff5-8048-6089fd18a656',\n               'modified': '2021-09-15T19:22:44.646417Z',\n               'product': 'lionic',\n               'result': 'malicious',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.646531Z',\n               'id': 'relationship--4c9040a8-e18c-4e18-9719-bd1d0aea4b84',\n               'modified': '2021-09-15T19:22:44.646531Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc44ef5d-f3cf-4ff5-8048-6089fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd44bb23-4668-4f3b-80c3-d589fd18a656',\n               'type': 'relationship'},\n              {'analysis_definition_version': '01.09.2021 18:16:19 (104093)',\n               'analysis_engine_version': '5.6.2.0',\n               'created': '2021-09-01T19:22:45.194687Z',\n               'id': 'malware-analysis--dc44f324-c769-4fb0-805e-4089fd18a656',\n               'modified': '2021-09-15T19:22:44.646661Z',\n               'product': 'ikarus',\n               'result': 'malicious',\n               'result_name': 'Trojan.Win32.Urelas',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.646777Z',\n               'id': 'relationship--6c4ae8f4-6834-463f-bd8a-7f48897802c6',\n               'modified': '2021-09-15T19:22:44.646777Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc44f324-c769-4fb0-805e-4089fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd44bb23-4668-4f3b-80c3-d589fd18a656',\n               'type': 'relationship'},\n              {'analysis_definition_version': '2019-10-02 10:25',\n               'created': '2021-09-01T19:22:45.194687Z',\n               'id': 'malware-analysis--dc4461c1-5f2a-4f35-80dd-e589fd18a656',\n               'modified': '2021-09-15T19:22:44.646906Z',\n               'product': 'qihoo-360',\n               'result': 'benign',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.647020Z',\n               'id': 'relationship--af73da52-3871-4627-89d9-dec1a1da70bb',\n               'modified': '2021-09-15T19:22:44.647020Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc4461c1-5f2a-4f35-80dd-e589fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd44bb23-4668-4f3b-80c3-d589fd18a656',\n               'type': 'relationship'},\n              {'created': '2021-09-01T19:22:45.194687Z',\n               'id': 'malware-analysis--dc44b4fb-d3f9-4f32-80ef-6489fd18a656',\n               'modified': '2021-09-15T19:22:44.647162Z',\n               'product': 'rising',\n               'result': 'malicious',\n               'result_name': 'Backdoor.Plite!8.2D6',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.647277Z',\n               'id': 'relationship--7d6c1a5b-b470-44cc-9518-deaedfe23236',\n               'modified': '2021-09-15T19:22:44.647277Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc44b4fb-d3f9-4f32-80ef-6489fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd44bb23-4668-4f3b-80c3-d589fd18a656',\n               'type': 'relationship'},\n              {'analysis_definition_version': '48872546c2e9031cb99dc29783b079288f18c6f8-Release.x64',\n               'analysis_engine_version': '4.7.0.10',\n               'created': '2021-09-01T19:22:45.194687Z',\n               'id': 'malware-analysis--dc44beb6-1678-4f7b-801f-2b89fd18a656',\n               'modified': '2021-09-15T19:22:44.647410Z',\n               'product': 'sentinelone-static-ml',\n               'result': 'malicious',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.647525Z',\n               'id': 'relationship--ee17c47a-9768-4f6f-8cf8-446a4a34d524',\n               'modified': '2021-09-15T19:22:44.647525Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc44beb6-1678-4f7b-801f-2b89fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd44bb23-4668-4f3b-80c3-d589fd18a656',\n               'type': 'relationship'},\n              {'analysis_engine_version': 'ClamAV 0.102.4/26090/Wed Feb 24 '\n                                          '12:09:42 2021',\n               'created': '2021-09-01T19:22:45.194687Z',\n               'id': 'malware-analysis--dc446b6b-1a0d-4f7c-806c-4c89fd18a656',\n               'modified': '2021-09-15T19:22:44.647653Z',\n               'product': 'clamav',\n               'result': 'malicious',\n               'result_name': 'Win.Malware.Urelas-6840420-0',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.647769Z',\n               'id': 'relationship--56e75fba-6af7-4cec-9482-dabcb866ea6d',\n               'modified': '2021-09-15T19:22:44.647769Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc446b6b-1a0d-4f7c-806c-4c89fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd44bb23-4668-4f3b-80c3-d589fd18a656',\n               'type': 'relationship'}],\n  'type': 'bundle'}]\n</pre>\n<h4 id=\"filter-parameters\" style=\"position:relative;\"><a href=\"#filter-parameters\" aria-label=\"filter parameters permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Filter Parameters</h4>\n<p>A TAXII Client can request specific content from a TAXII Server by specifying a set of filters included in the URL query parameters of the request to the server.</p>\n<h5 id=\"universal-filter-parameters\" style=\"position:relative;\"><a href=\"#universal-filter-parameters\" aria-label=\"universal filter parameters permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Universal filter parameters</h5>\n<p>All of PolySwarm's collections support the following filter parameters:</p>\n<table>\n<thead>\n<tr>\n<th>URL Query Parameters</th>\n<th>Description</th>\n<th>Example</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">added_after</code></td>\n<td>A single \"T-Syntax\" RFC3339 time stamp that filters objects to only include those objects added after the specified time stamp. If no <code class=\"language-text\">added_after</code> URL query parameter is provided, the server will return the oldest objects matching the request first. For example, if a server has 100 objects (0-99), the server would start at record 0 looking for a match and work its way up from oldest to newest finding 50 (the default &#x26; maximum limit) of objects that matched the request.</td>\n<td><code class=\"language-text\">2021-09-08T00:00:00Z</code></td>\n</tr>\n<tr>\n<td><code class=\"language-text\">limit</code></td>\n<td>A single integer value that indicates the maximum number of objects that to receive in a single response. This must be a positive integer greater than 0 and less than 51.</td>\n<td><code class=\"language-text\">25</code></td>\n</tr>\n<tr>\n<td><code class=\"language-text\">next</code></td>\n<td>A single opaque string value that indicates the next record or set of records in the data set that the client is requesting. This value never expires and may be used to resume pagination at a later date (if you attempt to resume pagination of objects older than that collection's defined maximum object age, you will resume pagination from that collection's initial page.</td>\n<td><code class=\"language-text\">gAAAAAOSmbvF...oRY06o==</code></td>\n</tr>\n</tbody>\n</table>\n<p>You can use supply any these parameters as keyword arguments to <code class=\"language-text\">read_taxii_feed</code>:</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">read_taxii_feed<span class=\"token punctuation\">(</span>collection<span class=\"token punctuation\">,</span> added_after<span class=\"token operator\">=</span><span class=\"token string\">'2021-09-08T00:00:00Z'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span></code></pre></div>\n<h5 id=\"using-the-matchfield-for-filtering\" style=\"position:relative;\"><a href=\"#using-the-matchfield-for-filtering\" aria-label=\"using the matchfield for filtering permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Using the <code class=\"language-text\">match[&lt;field>]</code> for Filtering</h5>\n<p>Non-freemium collections also provide a <code class=\"language-text\">match[&lt;field>]</code> parameter to apply filtering on a specific <code class=\"language-text\">&lt;field></code>. The <code class=\"language-text\">match</code> parameter can be specified any number of times, where each match instance specifies an additional filter combined as logical \"AND\" predicates. Individual <code class=\"language-text\">match</code> query parameters may contain multiple values separated by a comma (<code class=\"language-text\">,</code>) which are treated as a logical \"OR\". For instance, <code class=\"language-text\">?match[type]=bundle,sighting</code> specifies a filter for objects that are of type <code class=\"language-text\">bundle</code> OR <code class=\"language-text\">sighting</code>.</p>\n<table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Description</th>\n<th>Example</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">id</code></td>\n<td>The identifier of the object(s) that are being requested</td>\n<td><code class=\"language-text\">bundle--dd45feca-cf0c-4f86-8026-f889</code></td>\n</tr>\n<tr>\n<td><code class=\"language-text\">type</code></td>\n<td>The type of the object(s) that are being requested. Only the types listed in this parameter are permitted in the response.</td>\n<td><code class=\"language-text\">bundle,sighting</code></td>\n</tr>\n</tbody>\n</table>\n<p>You can use supply any these parameters as keyword arguments to <code class=\"language-text\">read_taxii_feed</code>:</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">read_taxii_feed<span class=\"token punctuation\">(</span>collection<span class=\"token punctuation\">,</span> <span class=\"token builtin\">id</span><span class=\"token operator\">=</span><span class=\"token string\">'bundle--dd45feca-cf0c-4f86-8026-f889,bundle--dd445a57-7358-4ff4-8056-5d89'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span></code></pre></div>\n<h2 id=\"stix-mapping\" style=\"position:relative;\"><a href=\"#stix-mapping\" aria-label=\"stix mapping permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>STIX Field Mapping</h2>\n<p>This sections will provide you with the field mapping of the STIX PolySwarm file.</p>\n<table>\n<thead>\n<tr>\n<th>Field Name</th>\n<th>Description</th>\n<th>Sample Data</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>aliases</td>\n<td>Family names from engine results</td>\n<td><code class=\"language-text\">[\"Backdoor.Padodor.c\",\"Backdoor.Win32.Padodor\",\"Backdoor.Berbew!8.115\", \"Trojan:Win32/Starter.ali1001008\", \"BackDoor.HangUp.5\",\"Win.Trojan.Crypted-29\",\"Proxy-Program ( 00557ea51 )\",\"win/malicious\"]</code></td>\n</tr>\n<tr>\n<td>created/first_seen</td>\n<td>When hash was first seen in the PolySwarm Marketplace</td>\n<td><code class=\"language-text\">2021-01-20T23:30:10.665092Z</code></td>\n</tr>\n<tr>\n<td>external_references</td>\n<td>Link to PolySwarm portal with full details</td>\n<td><code class=\"language-text\">\"url\": \"https://polyswarm.network/scan/results/file/017bcfbe29b805c010cf7c1790c17fb10a1069c7806ff65ae15fe12dd27e6645\"</code></td>\n</tr>\n<tr>\n<td>malware_types</td>\n<td>Malware functionality tags</td>\n<td><code class=\"language-text\">[ \"backdoor\", \"greyware\", \"Trojan\" ]</code></td>\n</tr>\n<tr>\n<td>imphash</td>\n<td>Valid only for Windows PE files</td>\n<td><code class=\"language-text\">26babd76bbb7f9c516a338b0601b4c9f</code></td>\n</tr>\n<tr>\n<td>optional_header</td>\n<td>PE header information</td>\n<td><code class=\"language-text\">\"address_of_entry_point\": 204800, \"major_linker_version\": 2, \"major_os_version\": 1, \"major_subsystem_version\": 4, \"minor_linker_version\": 5, \"minor_os_version\": 0, \"minor_subsystem_version\": 0, \"size_of_code\": 47104, \"size_of_initialized_data\": 18432</code></td>\n</tr>\n<tr>\n<td>pe_type</td>\n<td>File type</td>\n<td><code class=\"language-text\">exe</code></td>\n</tr>\n<tr>\n<td>time<em>date</em>stamp</td>\n<td>Binary compile date timestamp</td>\n<td><code class=\"language-text\">2020-07-11T03:39:59Z</code></td>\n</tr>\n<tr>\n<td>hashes</td>\n<td>MD5, SHA-1, SHA-256, SHA-512, SSDEEP, TLSH hashes of the malware</td>\n<td><code class=\"language-text\">{ \"MD5\": \"ab49bfba6e83c2211bcb5e25dfd428ae\", \"SHA-1\": \"0c09e4ecdedf46f5c801a1c2267d5166afd48a48\", \"SHA-256\": \"017bcfbe29b805c010cf7c1790c17fb10a1069c7806ff65ae15fe12dd27e6645\", \"SHA-512\": \"386f20b87848fc138b14931bdec5c348e26c7c270d952ba3487a020819ac07b1449b0715082e01aea898e69a1edb1aa77c5857c87ab1c8daa0d787f75c422def\", \"SSDEEP\": \"768:/abmyOy0JJk0Zvj12BhSPbefkcjnJuv+I1CV+zClaEZIGXOjWW3RuSyRZPAv8Q5:iDCJJko4hSPbelju91ZCla7IUW5SyRQ\", \"TLSH\": \"54637cc901172d79e8d9a5f25c238aa9a407cf390752f7dc0eda4db978fa4075f28c61\" }</code></td>\n</tr>\n<tr>\n<td>mime_type</td>\n<td>Mime type of the file</td>\n<td><code class=\"language-text\">application/x-dosexec</code></td>\n</tr>\n<tr>\n<td>size</td>\n<td>File size of the sample submitted</td>\n<td><code class=\"language-text\">69632</code></td>\n</tr>\n<tr>\n<td>confidence</td>\n<td>PolyScore * 100</td>\n<td><code class=\"language-text\">99</code></td>\n</tr>\n<tr>\n<td>last_seen</td>\n<td>When it was last scanned by the malware engines</td>\n<td><code class=\"language-text\">2021-01-20T23:30:10.584455Z</code></td>\n</tr>\n<tr>\n<td>product</td>\n<td>Engine name providing response (repeated for every engine asserting)</td>\n<td><code class=\"language-text\">clamav</code></td>\n</tr>\n<tr>\n<td>result</td>\n<td>Benign or malicious  (repeated for every engine asserting)</td>\n<td><code class=\"language-text\">malicious</code></td>\n</tr>\n<tr>\n<td>result_name</td>\n<td>Family name provided by engine (not provided by every engine) (repeated for every engine asserting)</td>\n<td><code class=\"language-text\">Win.Trojan.Crypted-29</code></td>\n</tr>\n</tbody>\n</table>","rawMarkdownBody":"\n<style>\npre.results {\n  font: 300 0.8em monospace;\n  overflow-x: auto;\n  overflow-y: auto;\n  background-color: #fbf9fe;\n  padding: 1em;\n  max-height: 40em;\n  border-top: 2px dotted #414141;\n}\n\npre.results::before {\n    content: \"results\";\n    float: right;\n    color: #74758C;\n    font-size: 0.75em;\n    font-weight: bold;\n}\n\n.s-post .gatsby-highlight {\n  margin-bottom: 0;\n}\n\n</style>\n\n# PolySwarm STIX / TAXII\n\n[Structured Information Exchange (STIX)](https://docs.oasis-open.org/cti/stix/v2.1/csprd01/stix-v2.1-csprd01.html) and [Trusted Automated Exchange of Indicator Information (TAXII)](https://docs.oasis-open.org/cti/taxii/v2.1/os/taxii-v2.1-os.html) are community-supported specifications analysts use to automate sharing of threat intelligence.\n\nPolySwarm supports these emerging standards in our [**TAXII v2.1**](https://docs.oasis-open.org/cti/taxii/v2.1/os/taxii-v2.1-os.html)-compliant services serving [**STIX v2.1**](https://docs.oasis-open.org/cti/stix/v2.1/csprd01/stix-v2.1-csprd01.html)-formatted threat intelligence feeds. Users can augment their threat intelligence with the array of software tools supporting the most recent STIX & TAXII standards while still receiving PolySwarm-exclusive intelligence like canonicalized malware family and PolyScore.\n\nPolySwarm supports two methods of setting up STIX/TAXII, using **integrations** (e.g. ThreatQuotient, Cyware, Sentinel) and the **Python API**.\n\n## Getting Started {#getting-started}\n\nThere are several initial steps that need to be taken before proceeding with the STIX/TAXII integration.\n\n#### Pre-Requirements {#pre-requirements}\n\n1. If you haven't already you need to create a [PolySwarm account](/customers#log-in-sign-up).\n2. You will need a client that supports TAXII 2.1 ([`taxii2client`](https://github.com/oasis-open/cti-taxii-client) if using the Python API)\n\n#### API Roots & Collections {#api-root}\n\nTAXII servers host a hierarchy of `API Roots:` distinct TAXII instances accessed via different URLs, each providing its collections of threat intelligence.\nPolySwarm's TAXII services are organized around `Collections:` logical threat intelligence repositories organized by type and purpose.\n\n##### What is a collection?\n\nPolySwarm's TAXII services are organized around _collections_: logical repositories of threat intelligence organized by type and purpose.\n\nObjects in a collection may also appear in others, enabling pivots between faster feeds of compact objects and detailed representations in specialized collections.\n\nPolySwarm's currently available collections are designed to allow new collections to be added without disrupting existing customers.\nCollections are assigned a unique identifier (UUID) which identifies that collection when performing queries against PolySwarm's TAXII server.\n\nYou can work with your PolySwarm sales representative to enable access to each API Root and collection you want to access, to view these navigate to [here](/customers/use-stix-taxii/#config-taxii-int).\n\n#### Create a Team API Key {#team-api}\n\nA Team API Key will be needed for the integration setup and the Python API configuration for authentication.\n1. Log into the PolySwarm UI https://polyswarm.network/\n2. Click on the account user name in the top right corner\n3. Click on `Switch Accounts` and switch to your Team Account\n4. Navigate to `Settings` in the top right corner\n5. Navigate to the `API Keys` Page\n6. Add a new `Team Account API Key`\n\n#### Locate Team ID (for Username) {#team-id}\n\nA Team ID (Username) will be needed going forward for the integrations setup and the Python API configuration for authentication.\n1. Log into the PolySwarm UI https://polyswarm.network/\n2. Click on the account user name in the top right corner\n3. Click on `Switch Accounts` and switch to your Team Account\n4. Navigate to `Settings` in the top right corner\n5. Locate your Team ID below your Team Name. i.e. `#123454212`\n\n## Connecting via Integrations {#stix-int}\n\nIntegrations that support STIX/TAXII 2.1 will offer the ability to add a TAXII feed; you will require the following details:\n* Username [PolySwarm Team ID](/customers/use-stix-taxii/#team-id).\n* Password [PolySwarm Team API Key](/customers/use-stix-taxii/#team-api).\n* API Root URL\n* and Collection ID.\n\nThis section will review how to find the API Root URL, and Collection ID and configure the Integration.\n\n#### Configuration of TAXII Client {#config-taxii-int}\n\nThe API Root URL and Collection ID can be obtained from the table below.\n>Note: Access to the collections will be based upon the Team account subscription plan, contact customer-success@polyswarm.io to find out further details. To find a up to date list of collections, navigate to the “Listing available collections” section in the Python API section. For integrations that require a discovery URL use:  https://api.polyswarm.network/v3/stix/taxii2/\n\n| Title      | Description | API Root URL | Collection | Collection ID | Details |\n| ----------- | ----------- |----------- | ----------- | ----------- | ----------- |\n| Ransomware | Emerging Ransomware | https://api.polyswarm.network/v3/stix/ransomware/  | Identified ransomware-family feed  | 7b6bbecc-95cf-5317-a900-5bb7008eae93  | PolyScore > 0.50, Artifacts in the last 14 days that match a list of malware families.  |\n| PolySwarm Trust Group      | Guest researcher feeds       | https://api.polyswarm.network/v3/stix/trustgroup/      | 14-Day Feed       | 3f153afb-5bf5-5cca-bfe9-ee854d92658d      | Any PolyScore, All Artifacts in the last 14 days        |\n\n> You can obtain the latest list of collections with the [Python API](/customers/use-stix-taxii/#listing-collections).\n\nAdd the details above to your integration configuration page, and once configured and saved, the collection will poll and ingest the intelligence into the integration.\n\n## Connecting via Python API {#stix-api}\nPolySwarm's TAXII services are accessed via standard HTTP API endpoints defined in the TAXII v2.1 standard, often using a TAXII client library such as taxii2client. This section will explain the Python Library that can be used to access the STIX/TAXII collections.\n\n#### Authentication {#authentication}\n\nPolySwarm performs [HTTP authentication](https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication) using your PolySwarm account's [**Account Number**](/customers/use-stix-taxii/#team-id) as your `user` and [**API KEY**](/customers/use-stix-taxii/#team-api) as `password`:\n\n```python\nimport taxii2client.v21\n\nTAXII_SERVER = taxii2client.v21.Server(\n    'https://api.polyswarm.network/v3/stix/taxii2/',\n    user='${YOUR ACCOUNT NUMBER}',\n    password='${YOUR API KEY}'\n)\n```\n\n#### Default API Root {#default-root}\n\nUsers of `taxii2client` can access their default API root through the server's `default` attribute:\n\n```python\nDEFAULT_API_ROOT = TAXII_SERVER.default\n```\n#### Listing available collections {#listing-collections}\n\nCustomers with a [PolySwarm account](/customers#log-in-sign-up) can programmatically obtain a up to date list of the titles, short descriptions, UUIDs and an indication of whether the current user is allowed to read and write from an API root & collection via the Python API:\n\n```python\ndef print_all_collections(server):\n    from textwrap import indent\n    from functools import partial\n\n    def build_printer(prefix='', sep=''):\n        nsep = sep\n        def driver(*args, **kwargs):\n            nonlocal nsep\n            print(indent(' '.join(args), prefix=prefix + nsep), **kwargs)\n            nsep = ' ' * len(nsep)\n        return driver\n\n    p = build_printer()\n    p(f'Title: \"{server.title}\"')\n    p(f'Contact: \"{server.contact}\"')\n    p(f'Description: \"{server.description}\"')\n    p('Roots:')\n\n    for root in server.api_roots:\n        p = build_printer('  ', sep='- ')\n        p(f'Title: \"{root.title}\"')\n        p(f'Description: \"{root.description}\"')\n        p(f'URL: \"{root.url}\"')\n        p('Collections:')\n\n        for collection in root.collections:\n            p = build_printer('    ', sep='- ')\n            p(f'Title: \"{collection.title}\"')\n            p(f'Objects URL: \"{collection.objects_url}\"')\n            if collection.description:\n                p(f'Description: \"{collection.description}\"')\n            p(f'Can Read: {collection.can_read}')\n            p(f'Can Write: {collection.can_write}')\n\nprint_all_collections(TAXII_SERVER)\n```\n\n<pre class=\"results\">\nTitle: \"Polyswarm TAXII Service\"\nContact: \"sales@polyswarm.io\"\nDescription: \"This TAXII Server contains a listing of Polyswarm's feed data\"\nRoots:\n  - Title: \"PolySwarm Trust Group\"\n    Description: \"Guest researcher feeds\"\n    URL: \"https://api.polyswarm.network/v2/stix/trustgroup/\"\n    Collections:\n    - Title: \"14-Day Feed\"\n      Objects URL: \"https://api.polyswarm.network/v2/stix/trustgroup/collections/3f153afb-5bf5-5cca-bfe9-ee854d92658d/objects/\"\n      Can Read: True\n      Can Write: False\n  - Title: \"Ransomware\"\n    Description: \"Emerging Ransomware\"\n    URL: \"https://api.polyswarm.network/v2/stix/ransomware/\"\n    Collections:\n    - Title: \"Identified ransomware-family feed\"\n      Objects URL: \"https://api.polyswarm.network/v2/stix/ransomware/collections/7b6bbecc-95cf-5317-a900-5bb7008eae93/objects/\"\n      Can Read: True\n      Can Write: False\n  - Title: \"Freemium\"\n    Description: \"Polyswarm Basic TAXII\"\n    URL: \"https://api.polyswarm.network/v2/stix/freemium/\"\n    Collections:\n    - Title: \"Freemium collection\"\n      Objects URL: \"https://api.polyswarm.network/v2/stix/freemium/collections/019630e9-0cdb-5d7d-b8c1-120c793093ad/objects/\"\n      Can Read: True\n      Can Write: False\n</pre>\n\n#### Pagination {#pagination}\n\nTAXII supports pagination of very large result sets in collections.\nCollections return a \"feed\" of STIX-formatted data sorted in ascending order by the date they were added to the collection:\n\n```python\ndef read_taxii_feed(collection, **kwargs):\n    while True:\n        page = collection.get_objects(**kwargs)\n\n        if page:\n            yield page['objects']\n\n            if page['more'] is True:\n                kwargs['next'] = page['next']\n                continue\n\n        break\n\niterator = read_taxii_feed(DEFAULT_API_ROOT.collections[0])\nprint(next(iterator))\n```\n\n<pre class=\"results\">\n[{'id': 'bundle--dd45c61c-ddbf-4fbb-80db-cb89fd18a656',\n  'objects': [{'aliases': ['Trojan.DownLoad3.28161',\n                           'Trojan.Generic.dayyf',\n                           'win/malicious',\n                           'TrojanDownloader:Win32/Waski.aaca15b4',\n                           'Trojan.Win32.Crypt',\n                           'Trojan.ADC939420BE48D7E'],\n               'created': '2021-09-01T19:22:45.157824Z',\n               'external_references': [{'source_name': 'polyswarm-report',\n                                        'url': 'https://polyswarm.network/scan/results/file/2b898acee79ef91d036ceaf043953f234a36be79cfc92ec9f98f0c54a547144d'}],\n               'first_seen': '2021-09-01T19:22:45.157824Z',\n               'id': 'malware--de44e0eb-0e97-4fa4-80ab-e689fd18a656',\n               'is_family': True,\n               'last_seen': '2021-09-01T19:22:45.157824Z',\n               'malware_types': ['trojan', 'downloader'],\n               'modified': '2021-09-15T19:22:44.625891Z',\n               'name': 'Trojan.Win32.Crypt',\n               'spec_version': '2.1',\n               'type': 'malware'},\n              {'atime': '2021-09-01T19:22:50.000000Z',\n               'ctime': '2021-09-01T19:22:50.000000Z',\n               'hashes': {'MD5': 'fef489eed1314bcd5d545e7f65889ed8',\n                          'SHA-1': 'ddab1051e713b9ce191382cc34820a6a6117ae7f',\n                          'SHA-256': '2b898acee79ef91d036ceaf043953f234a36be79cfc92ec9f98f0c54a547144d',\n                          'SHA-512': '760e9924f8b1c8f20420f2bde9abc09881b7e38062bb3275d4c50cd8856eb0a3b108746c1289d79c8cb751e0a6b01e979e43d2dc7c527e8f288b1d6864aa265b',\n                          'SSDEEP': '768:/whRkKCCR3IAm9MOlq8bdA/bmerdkDwRGXn/+mmCfyrr7/YMy:s5Hm9dl4/tuDz/+mjfum',\n                          'TLSH': '4413ae3c6ee95672d3bbdab6c6f655c6f931b42379029c0d40da03850c13f16eda1a2e'},\n               'id': 'file--dd45c61c-ddbf-4fbb-80db-cb89fd18a656',\n               'mtime': '2021-09-01T19:22:50.000000Z',\n               'name': '2b898acee79ef91d036ceaf043953f234a36be79cfc92ec9f98f0c54a547144d',\n               'spec_version': '2.1',\n               'type': 'file'},\n              {'aliases': ['Trojan.DownLoad3.28161',\n                           'win/malicious',\n                           'TrojanDownloader:Win32/Waski.aaca15b4',\n                           'Trojan.ADC939420BE48D7E',\n                           'Trojan.Generic.dayyf',\n                           'Trojan.Win32.Crypt'],\n               'confidence': 99,\n               'created': '2021-09-01T19:22:45.157824Z',\n               'first_seen': '2021-09-01T19:22:45.157824Z',\n               'id': 'malware--dd45c61c-ddbf-4fbb-80db-cb89fd18a656',\n               'is_family': False,\n               'last_seen': '2021-09-01T19:22:45.157824Z',\n               'modified': '2021-09-15T19:22:44.627754Z',\n               'name': 'Trojan.Win32.Crypt',\n               'sample_refs': ['file--dd45c61c-ddbf-4fbb-80db-cb89fd18a656'],\n               'spec_version': '2.1',\n               'type': 'malware'},\n              {'created': '2021-09-15T19:22:44.627966Z',\n               'id': 'relationship--5870ee12-8276-4110-bf58-42df4297025c',\n               'modified': '2021-09-15T19:22:44.627966Z',\n               'relationship_type': 'variant-of',\n               'source_ref': 'malware--dd45c61c-ddbf-4fbb-80db-cb89fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--de44e0eb-0e97-4fa4-80ab-e689fd18a656',\n               'type': 'relationship'},\n              {'created': '2021-09-01T19:22:45.157824Z',\n               'id': 'malware-analysis--dc45ca9a-beff-4fd6-8087-5689fd18a656',\n               'modified': '2021-09-15T19:22:44.628133Z',\n               'product': 'jiangmin',\n               'result': 'malicious',\n               'result_name': 'Trojan.Generic.dayyf',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.628265Z',\n               'id': 'relationship--376a66a3-9be9-4e55-be0f-d981e06bf156',\n               'modified': '2021-09-15T19:22:44.628265Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc45ca9a-beff-4fd6-8087-5689fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd45c61c-ddbf-4fbb-80db-cb89fd18a656',\n               'type': 'relationship'},\n              {'analysis_definition_version': '69971A0908A7EC9BE1CDAA21B8EFE918, '\n                                              '2020-Nov-23 22:42:22',\n               'analysis_engine_version': '7.00.49.09080',\n               'created': '2021-09-01T19:22:45.157824Z',\n               'id': 'malware-analysis--dc44f2e4-46e1-4fb2-80e5-7889fd18a656',\n               'modified': '2021-09-15T19:22:44.628403Z',\n               'product': 'drweb',\n               'result': 'malicious',\n               'result_name': 'Trojan.DownLoad3.28161',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.628524Z',\n               'id': 'relationship--4ae93d16-fa30-41db-8e17-37713f6771d7',\n               'modified': '2021-09-15T19:22:44.628524Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc44f2e4-46e1-4fb2-80e5-7889fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd45c61c-ddbf-4fbb-80db-cb89fd18a656',\n               'type': 'relationship'},\n              {'analysis_engine_version': '2',\n               'created': '2021-09-01T19:22:45.157824Z',\n               'id': 'malware-analysis--dc45bf19-ce09-4fa7-801e-3f89fd18a656',\n               'modified': '2021-09-15T19:22:44.628658Z',\n               'product': 'crowdstrike-falcon-ml',\n               'result': 'malicious',\n               'result_name': 'win/malicious',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.628776Z',\n               'id': 'relationship--db9ee711-2a3a-451a-9fe3-70b6ae5322b9',\n               'modified': '2021-09-15T19:22:44.628776Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc45bf19-ce09-4fa7-801e-3f89fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd45c61c-ddbf-4fbb-80db-cb89fd18a656',\n               'type': 'relationship'},\n              {'created': '2021-09-01T19:22:45.157824Z',\n               'id': 'malware-analysis--dc447f63-6ab3-4fc3-807f-7889fd18a656',\n               'modified': '2021-09-15T19:22:44.628910Z',\n               'product': 'filseclab',\n               'result': 'malicious',\n               'result_name': 'Trojan.ADC939420BE48D7E',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.629048Z',\n               'id': 'relationship--aa86d817-54a7-479b-977e-85cdc653f0be',\n               'modified': '2021-09-15T19:22:44.629048Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc447f63-6ab3-4fc3-807f-7889fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd45c61c-ddbf-4fbb-80db-cb89fd18a656',\n               'type': 'relationship'},\n              {'analysis_definition_version': '48872546c2e9031cb99dc29783b079288f18c6f8-Release.x64',\n               'analysis_engine_version': '4.7.0.10',\n               'created': '2021-09-01T19:22:45.157824Z',\n               'id': 'malware-analysis--dc45ee09-d9c1-4f3f-80c0-5e89fd18a656',\n               'modified': '2021-09-15T19:22:44.629191Z',\n               'product': 'sentinelone-static-ml',\n               'result': 'malicious',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.629314Z',\n               'id': 'relationship--827b5c4d-e12d-454d-8ced-e361041d2695',\n               'modified': '2021-09-15T19:22:44.629314Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc45ee09-d9c1-4f3f-80c0-5e89fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd45c61c-ddbf-4fbb-80db-cb89fd18a656',\n               'type': 'relationship'},\n              {'analysis_definition_version': '6.100',\n               'analysis_engine_version': '5.5.1',\n               'created': '2021-09-01T19:22:45.157824Z',\n               'id': 'malware-analysis--dc44db30-d404-4fcb-80ce-6289fd18a656',\n               'modified': '2021-09-15T19:22:44.629455Z',\n               'product': 'secureage',\n               'result': 'malicious',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.629575Z',\n               'id': 'relationship--fc2e7e5f-8e92-427f-a792-2bbc60cd5cfb',\n               'modified': '2021-09-15T19:22:44.629575Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc44db30-d404-4fcb-80ce-6289fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd45c61c-ddbf-4fbb-80db-cb89fd18a656',\n               'type': 'relationship'},\n              {'created': '2021-09-01T19:22:45.157824Z',\n               'id': 'malware-analysis--dc44172e-d6a0-4f38-80ba-0189fd18a656',\n               'modified': '2021-09-15T19:22:44.629717Z',\n               'product': 'lionic',\n               'result': 'malicious',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.629835Z',\n               'id': 'relationship--b64b2696-f536-4dc6-afeb-2461ec4749cd',\n               'modified': '2021-09-15T19:22:44.629835Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc44172e-d6a0-4f38-80ba-0189fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd45c61c-ddbf-4fbb-80db-cb89fd18a656',\n               'type': 'relationship'},\n              {'analysis_definition_version': '01.09.2021 18:16:19 (104093)',\n               'analysis_engine_version': '5.6.2.0',\n               'created': '2021-09-01T19:22:45.157824Z',\n               'id': 'malware-analysis--dc44609a-145c-4f5d-80a1-e189fd18a656',\n               'modified': '2021-09-15T19:22:44.629969Z',\n               'product': 'ikarus',\n               'result': 'malicious',\n               'result_name': 'Trojan.Win32.Crypt',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.630087Z',\n               'id': 'relationship--9e559a2e-d185-49fb-ab26-eb747e99de3c',\n               'modified': '2021-09-15T19:22:44.630087Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc44609a-145c-4f5d-80a1-e189fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd45c61c-ddbf-4fbb-80db-cb89fd18a656',\n               'type': 'relationship'},\n              {'analysis_definition_version': '2019-10-02 10:25',\n               'created': '2021-09-01T19:22:45.157824Z',\n               'id': 'malware-analysis--dc45b73b-fc99-4f74-8075-8789fd18a656',\n               'modified': '2021-09-15T19:22:44.630221Z',\n               'product': 'qihoo-360',\n               'result': 'benign',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.630336Z',\n               'id': 'relationship--95f18068-1342-4021-b3fd-49e3a021b9d0',\n               'modified': '2021-09-15T19:22:44.630336Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc45b73b-fc99-4f74-8075-8789fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd45c61c-ddbf-4fbb-80db-cb89fd18a656',\n               'type': 'relationship'},\n              {'created': '2021-09-01T19:22:45.157824Z',\n               'id': 'malware-analysis--dc458035-822d-4f07-80d4-0a89fd18a656',\n               'modified': '2021-09-15T19:22:44.630466Z',\n               'product': 'alibaba',\n               'result': 'malicious',\n               'result_name': 'TrojanDownloader:Win32/Waski.aaca15b4',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.630582Z',\n               'id': 'relationship--3a7abb12-86fe-4940-8800-e63b2e483c98',\n               'modified': '2021-09-15T19:22:44.630582Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc458035-822d-4f07-80d4-0a89fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd45c61c-ddbf-4fbb-80db-cb89fd18a656',\n               'type': 'relationship'}],\n  'type': 'bundle'},\n {'id': 'bundle--dd45aeee-3a07-4f09-80dd-de89fd18a656',\n  'objects': [{'aliases': ['Trojan.Win64.CoinMiner',\n                           'Trojan.BtcMine.3367',\n                           'Trojan.MSIL.qzrf',\n                           'Dropper.Agent!8.2F',\n                           'Win.Coinminer.Generic-7151250-0',\n                           'Trojan.Win32.Trick.fmmuks'],\n               'created': '2021-09-01T19:22:45.178976Z',\n               'external_references': [{'source_name': 'polyswarm-report',\n                                        'url': 'https://polyswarm.network/scan/results/file/84631ab11016280ca401d9775f0938ab31e451d228581944ee4eee3c2d538dc3'}],\n               'first_seen': '2021-09-01T19:22:45.178976Z',\n               'id': 'malware--de44e0eb-0e97-4fa4-80ab-f189fd18a656',\n               'is_family': True,\n               'last_seen': '2021-09-01T19:22:45.178976Z',\n               'malware_types': ['trojan', 'resource-exploitation', 'dropper'],\n               'modified': '2021-09-15T19:22:44.633865Z',\n               'name': 'Trojan.Win64.CoinMiner',\n               'spec_version': '2.1',\n               'type': 'malware'},\n              {'atime': '2021-09-01T19:22:47.000000Z',\n               'ctime': '2021-09-01T19:22:48.000000Z',\n               'hashes': {'MD5': '6e2757fa246b5bbdac38722930ec2794',\n                          'SHA-1': '608604a72d867383a20c1f2f08ba1be61dc31b8b',\n                          'SHA-256': '84631ab11016280ca401d9775f0938ab31e451d228581944ee4eee3c2d538dc3',\n                          'SHA-512': '3e70dc8d82c4cba93fe79e3ab10931a5dbb4a67243a9e9b1843135223c3680ef462aa3232b4fe855b85bc8f2cb65fbc0e4d75084abde914a70cf71a10496aca2',\n                          'SSDEEP': '49152:FGUzr9GOWh50kC1/dVFdNaeUE3LqW1T/f5iBA9R86DHVVzP7ffQmSumSDr4k:FG6r9GOWPClFdNaeUE3LqW1T/f5iBA9H',\n                          'TLSH': 'abb57cbd728502b1d1eec476ca178d0ff7b17a524334a1eb156443ae2e236d98639f32'},\n               'id': 'file--dd45aeee-3a07-4f09-80dd-de89fd18a656',\n               'mtime': '2021-09-01T19:22:48.000000Z',\n               'name': '84631ab11016280ca401d9775f0938ab31e451d228581944ee4eee3c2d538dc3',\n               'spec_version': '2.1',\n               'type': 'file'},\n              {'aliases': ['Trojan.Win64.CoinMiner',\n                           'Dropper.Agent!8.2F',\n                           'Trojan.Win32.Trick.fmmuks',\n                           'Trojan.MSIL.qzrf',\n                           'Trojan.BtcMine.3367',\n                           'Win.Coinminer.Generic-7151250-0'],\n               'confidence': 99,\n               'created': '2021-09-01T19:22:45.178976Z',\n               'first_seen': '2021-09-01T19:22:45.178976Z',\n               'id': 'malware--dd45aeee-3a07-4f09-80dd-de89fd18a656',\n               'is_family': False,\n               'last_seen': '2021-09-01T19:22:45.178976Z',\n               'modified': '2021-09-15T19:22:44.635847Z',\n               'name': 'Trojan.Win64.CoinMiner',\n               'sample_refs': ['file--dd45aeee-3a07-4f09-80dd-de89fd18a656'],\n               'spec_version': '2.1',\n               'type': 'malware'},\n              {'created': '2021-09-15T19:22:44.636028Z',\n               'id': 'relationship--2ddd2731-d977-4d21-9f42-456a390a9641',\n               'modified': '2021-09-15T19:22:44.636028Z',\n               'relationship_type': 'variant-of',\n               'source_ref': 'malware--dd45aeee-3a07-4f09-80dd-de89fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--de44e0eb-0e97-4fa4-80ab-f189fd18a656',\n               'type': 'relationship'},\n              {'created': '2021-09-01T19:22:45.178976Z',\n               'id': 'malware-analysis--dc45ff41-2a95-4f62-8069-d189fd18a656',\n               'modified': '2021-09-15T19:22:44.636182Z',\n               'product': 'alibaba',\n               'result': 'benign',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.636307Z',\n               'id': 'relationship--dfc0f440-5c7f-4a29-92ff-1a6545dd6d48',\n               'modified': '2021-09-15T19:22:44.636307Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc45ff41-2a95-4f62-8069-d189fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd45aeee-3a07-4f09-80dd-de89fd18a656',\n               'type': 'relationship'},\n              {'analysis_definition_version': '69971A0908A7EC9BE1CDAA21B8EFE918, '\n                                              '2020-Nov-23 22:42:22',\n               'analysis_engine_version': '7.00.49.09080',\n               'created': '2021-09-01T19:22:45.178976Z',\n               'id': 'malware-analysis--dc445ec3-809e-4f9a-8052-1089fd18a656',\n               'modified': '2021-09-15T19:22:44.636443Z',\n               'product': 'drweb',\n               'result': 'malicious',\n               'result_name': 'Trojan.BtcMine.3367',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.636561Z',\n               'id': 'relationship--e32c8ee3-1d9b-4eba-87f4-6bbb61741469',\n               'modified': '2021-09-15T19:22:44.636561Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc445ec3-809e-4f9a-8052-1089fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd45aeee-3a07-4f09-80dd-de89fd18a656',\n               'type': 'relationship'},\n              {'analysis_definition_version': '48872546c2e9031cb99dc29783b079288f18c6f8-Release.x64',\n               'analysis_engine_version': '4.7.0.10',\n               'created': '2021-09-01T19:22:45.178976Z',\n               'id': 'malware-analysis--dc44186b-960c-4f21-8012-5589fd18a656',\n               'modified': '2021-09-15T19:22:44.636694Z',\n               'product': 'sentinelone-static-ml',\n               'result': 'malicious',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.636812Z',\n               'id': 'relationship--308f92fb-ecdc-40a8-9245-b40c601ff795',\n               'modified': '2021-09-15T19:22:44.636812Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc44186b-960c-4f21-8012-5589fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd45aeee-3a07-4f09-80dd-de89fd18a656',\n               'type': 'relationship'},\n              {'analysis_engine_version': '2',\n               'created': '2021-09-01T19:22:45.178976Z',\n               'id': 'malware-analysis--dc44dd7a-4c15-4f86-8034-1b89fd18a656',\n               'modified': '2021-09-15T19:22:44.636948Z',\n               'product': 'crowdstrike-falcon-ml',\n               'result': 'benign',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.637101Z',\n               'id': 'relationship--9148f1a1-b66c-4bde-b0f6-819ad558607a',\n               'modified': '2021-09-15T19:22:44.637101Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc44dd7a-4c15-4f86-8034-1b89fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd45aeee-3a07-4f09-80dd-de89fd18a656',\n               'type': 'relationship'},\n              {'analysis_engine_version': 'ClamAV 0.102.4/26281/Wed Sep  1 '\n                                          '08:21:58 2021',\n               'created': '2021-09-01T19:22:45.178976Z',\n               'id': 'malware-analysis--dc44f633-e3e2-4f0c-802b-9989fd18a656',\n               'modified': '2021-09-15T19:22:44.637241Z',\n               'product': 'clamav',\n               'result': 'malicious',\n               'result_name': 'Win.Coinminer.Generic-7151250-0',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.637359Z',\n               'id': 'relationship--f48af396-db6d-44b8-9e71-57a713d6f47f',\n               'modified': '2021-09-15T19:22:44.637359Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc44f633-e3e2-4f0c-802b-9989fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd45aeee-3a07-4f09-80dd-de89fd18a656',\n               'type': 'relationship'},\n              {'analysis_definition_version': '6.100',\n               'analysis_engine_version': '5.5.1',\n               'created': '2021-09-01T19:22:45.178976Z',\n               'id': 'malware-analysis--dc445857-1da9-4f82-80f3-1989fd18a656',\n               'modified': '2021-09-15T19:22:44.637492Z',\n               'product': 'secureage',\n               'result': 'malicious',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.637610Z',\n               'id': 'relationship--23dd6ac8-5b49-4353-b54e-392bc524126e',\n               'modified': '2021-09-15T19:22:44.637610Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc445857-1da9-4f82-80f3-1989fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd45aeee-3a07-4f09-80dd-de89fd18a656',\n               'type': 'relationship'},\n              {'analysis_definition_version': '0.14.35.19132',\n               'analysis_engine_version': '1.0.134.90676',\n               'created': '2021-09-01T19:22:45.178976Z',\n               'id': 'malware-analysis--dc45a504-0f2e-4ff6-80d4-1989fd18a656',\n               'modified': '2021-09-15T19:22:44.637743Z',\n               'product': 'nanoav',\n               'result': 'malicious',\n               'result_name': 'Trojan.Win32.Trick.fmmuks',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.637861Z',\n               'id': 'relationship--d12b3cab-fdf5-4bbe-b48b-9ce9ffa00e11',\n               'modified': '2021-09-15T19:22:44.637861Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc45a504-0f2e-4ff6-80d4-1989fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd45aeee-3a07-4f09-80dd-de89fd18a656',\n               'type': 'relationship'},\n              {'created': '2021-09-01T19:22:45.178976Z',\n               'id': 'malware-analysis--dc440050-76f9-4f3c-8038-9e89fd18a656',\n               'modified': '2021-09-15T19:22:44.637995Z',\n               'product': 'rising',\n               'result': 'malicious',\n               'result_name': 'Dropper.Agent!8.2F',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.638121Z',\n               'id': 'relationship--0a1c9971-36b9-482e-b117-39ecc03c5ed5',\n               'modified': '2021-09-15T19:22:44.638121Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc440050-76f9-4f3c-8038-9e89fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd45aeee-3a07-4f09-80dd-de89fd18a656',\n               'type': 'relationship'},\n              {'created': '2021-09-01T19:22:45.178976Z',\n               'id': 'malware-analysis--dc45f7a9-3354-4f02-80ad-bc89fd18a656',\n               'modified': '2021-09-15T19:22:44.638263Z',\n               'product': 'filseclab',\n               'result': 'benign',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.638383Z',\n               'id': 'relationship--5f2cb4a5-94d2-49f0-abc5-dd2ea9795a07',\n               'modified': '2021-09-15T19:22:44.638383Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc45f7a9-3354-4f02-80ad-bc89fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd45aeee-3a07-4f09-80dd-de89fd18a656',\n               'type': 'relationship'},\n              {'analysis_definition_version': '01.09.2021 18:16:19 (104093)',\n               'analysis_engine_version': '5.6.2.0',\n               'created': '2021-09-01T19:22:45.178976Z',\n               'id': 'malware-analysis--dc446861-42b0-4f55-804a-0389fd18a656',\n               'modified': '2021-09-15T19:22:44.638518Z',\n               'product': 'ikarus',\n               'result': 'malicious',\n               'result_name': 'Trojan.Win64.CoinMiner',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.638636Z',\n               'id': 'relationship--c4056dc0-23e5-4b36-8d50-4cc1dafd9958',\n               'modified': '2021-09-15T19:22:44.638636Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc446861-42b0-4f55-804a-0389fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd45aeee-3a07-4f09-80dd-de89fd18a656',\n               'type': 'relationship'},\n              {'created': '2021-09-01T19:22:45.178976Z',\n               'id': 'malware-analysis--dc44bf82-a407-4fd6-800d-ab89fd18a656',\n               'modified': '2021-09-15T19:22:44.638769Z',\n               'product': 'lionic',\n               'result': 'benign',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.639014Z',\n               'id': 'relationship--0c2bccc2-ff2c-4b56-9088-e2b93e8abf91',\n               'modified': '2021-09-15T19:22:44.639014Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc44bf82-a407-4fd6-800d-ab89fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd45aeee-3a07-4f09-80dd-de89fd18a656',\n               'type': 'relationship'},\n              {'created': '2021-09-01T19:22:45.178976Z',\n               'id': 'malware-analysis--dc44455e-f135-4f64-809d-8d89fd18a656',\n               'modified': '2021-09-15T19:22:44.639160Z',\n               'product': 'jiangmin',\n               'result': 'malicious',\n               'result_name': 'Trojan.MSIL.qzrf',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.639281Z',\n               'id': 'relationship--855479ed-53f2-4368-95d3-92340d4a68fb',\n               'modified': '2021-09-15T19:22:44.639281Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc44455e-f135-4f64-809d-8d89fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd45aeee-3a07-4f09-80dd-de89fd18a656',\n               'type': 'relationship'}],\n  'type': 'bundle'},\n {'id': 'bundle--dd44bb23-4668-4f3b-80c3-d589fd18a656',\n  'objects': [{'aliases': ['Backdoor.6536F84D7F60AA9C',\n                           'win/malicious',\n                           'Malware:Win32/Dorpal.ali1000029',\n                           'BackDoor.Golf.260',\n                           'Backdoor.Generic.ztr',\n                           'Trojan.Win32.Urelas',\n                           'Backdoor.Plite!8.2D6',\n                           'Win.Malware.Urelas-6840420-0'],\n               'created': '2021-09-01T19:22:45.194687Z',\n               'external_references': [{'source_name': 'polyswarm-report',\n                                        'url': 'https://polyswarm.network/scan/results/file/ce50012446934e7ad42c209a12e377a9594930f788c659b32b5344bbc7ef5fb3'}],\n               'first_seen': '2021-09-01T19:22:45.194687Z',\n               'id': 'malware--de44e0eb-0e97-4fa4-80ab-e089fd18a656',\n               'is_family': True,\n               'last_seen': '2021-09-01T19:22:45.194687Z',\n               'malware_types': ['backdoor', 'virus', 'trojan'],\n               'modified': '2021-09-15T19:22:44.642432Z',\n               'name': 'Urelas',\n               'spec_version': '2.1',\n               'type': 'malware'},\n              {'atime': '2021-09-01T19:22:50.000000Z',\n               'ctime': '2021-09-01T19:22:50.000000Z',\n               'hashes': {'MD5': 'f5b78e02928c276f22be13313d37bcb4',\n                          'SHA-1': 'e024f5d831e101d4d7748fe3d0792e72f4762ff0',\n                          'SHA-256': 'ce50012446934e7ad42c209a12e377a9594930f788c659b32b5344bbc7ef5fb3',\n                          'SHA-512': '66727aa1e7c24987b515ff42704b35a89d4ea5d3c62d32649f158218628344b30adfaa8a61967124592969f7301930588e472a618b5eed0b629c509d114e3b28',\n                          'SSDEEP': '1536:s1baYkjUIKECOmxUNKwhB+GT/4I2fm3w9Rri+pXmf8t1dn4vcj0:sjIKn1xUswhsGTgI23RGUXmUDg',\n                          'TLSH': '22d3cf4566010894f71c0b721a02fad0889dae7c65d6fa5ff1bc7d7ab932183a97309f'},\n               'id': 'file--dd44bb23-4668-4f3b-80c3-d589fd18a656',\n               'mtime': '2021-09-01T19:22:50.000000Z',\n               'name': 'ce50012446934e7ad42c209a12e377a9594930f788c659b32b5344bbc7ef5fb3',\n               'spec_version': '2.1',\n               'type': 'file'},\n              {'aliases': ['Backdoor.6536F84D7F60AA9C',\n                           'win/malicious',\n                           'Malware:Win32/Dorpal.ali1000029',\n                           'BackDoor.Golf.260',\n                           'Backdoor.Generic.ztr',\n                           'Trojan.Win32.Urelas',\n                           'Backdoor.Plite!8.2D6',\n                           'Win.Malware.Urelas-6840420-0'],\n               'confidence': 99,\n               'created': '2021-09-01T19:22:45.194687Z',\n               'first_seen': '2021-09-01T19:22:45.194687Z',\n               'id': 'malware--dd44bb23-4668-4f3b-80c3-d589fd18a656',\n               'is_family': False,\n               'last_seen': '2021-09-01T19:22:45.194687Z',\n               'modified': '2021-09-15T19:22:44.644475Z',\n               'name': 'Urelas',\n               'sample_refs': ['file--dd44bb23-4668-4f3b-80c3-d589fd18a656'],\n               'spec_version': '2.1',\n               'type': 'malware'},\n              {'created': '2021-09-15T19:22:44.644702Z',\n               'id': 'relationship--d1f3b112-02c4-4ea8-b36d-56c871f3da91',\n               'modified': '2021-09-15T19:22:44.644702Z',\n               'relationship_type': 'variant-of',\n               'source_ref': 'malware--dd44bb23-4668-4f3b-80c3-d589fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--de44e0eb-0e97-4fa4-80ab-e089fd18a656',\n               'type': 'relationship'},\n              {'analysis_engine_version': '2',\n               'created': '2021-09-01T19:22:45.194687Z',\n               'id': 'malware-analysis--dc44ef20-ce6a-4f5a-8060-d389fd18a656',\n               'modified': '2021-09-15T19:22:44.644858Z',\n               'product': 'crowdstrike-falcon-ml',\n               'result': 'malicious',\n               'result_name': 'win/malicious',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.644982Z',\n               'id': 'relationship--d5a07ca3-fcbe-4722-92e8-16a6ac82da9e',\n               'modified': '2021-09-15T19:22:44.644982Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc44ef20-ce6a-4f5a-8060-d389fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd44bb23-4668-4f3b-80c3-d589fd18a656',\n               'type': 'relationship'},\n              {'created': '2021-09-01T19:22:45.194687Z',\n               'id': 'malware-analysis--dc44ff03-52a3-4f74-8059-1289fd18a656',\n               'modified': '2021-09-15T19:22:44.645144Z',\n               'product': 'jiangmin',\n               'result': 'malicious',\n               'result_name': 'Backdoor.Generic.ztr',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.645264Z',\n               'id': 'relationship--4b08404d-64e3-44ae-99ab-8017944749ad',\n               'modified': '2021-09-15T19:22:44.645264Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc44ff03-52a3-4f74-8059-1289fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd44bb23-4668-4f3b-80c3-d589fd18a656',\n               'type': 'relationship'},\n              {'analysis_definition_version': '6.100',\n               'analysis_engine_version': '5.5.1',\n               'created': '2021-09-01T19:22:45.194687Z',\n               'id': 'malware-analysis--dc44f830-1712-4fcc-80e6-1089fd18a656',\n               'modified': '2021-09-15T19:22:44.645396Z',\n               'product': 'secureage',\n               'result': 'malicious',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.645514Z',\n               'id': 'relationship--937a07aa-bc4f-4039-94b7-34c586f42703',\n               'modified': '2021-09-15T19:22:44.645514Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc44f830-1712-4fcc-80e6-1089fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd44bb23-4668-4f3b-80c3-d589fd18a656',\n               'type': 'relationship'},\n              {'analysis_definition_version': '69971A0908A7EC9BE1CDAA21B8EFE918, '\n                                              '2020-Nov-23 22:42:22',\n               'analysis_engine_version': '7.00.49.09080',\n               'created': '2021-09-01T19:22:45.194687Z',\n               'id': 'malware-analysis--dc443af4-a14c-4f37-8028-7b89fd18a656',\n               'modified': '2021-09-15T19:22:44.645648Z',\n               'product': 'drweb',\n               'result': 'malicious',\n               'result_name': 'BackDoor.Golf.260',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.645765Z',\n               'id': 'relationship--09473b27-7c9e-4c41-bacb-b507e2a59900',\n               'modified': '2021-09-15T19:22:44.645765Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc443af4-a14c-4f37-8028-7b89fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd44bb23-4668-4f3b-80c3-d589fd18a656',\n               'type': 'relationship'},\n              {'created': '2021-09-01T19:22:45.194687Z',\n               'id': 'malware-analysis--dc44bea2-b17e-4fb6-80e1-2c89fd18a656',\n               'modified': '2021-09-15T19:22:44.645898Z',\n               'product': 'filseclab',\n               'result': 'malicious',\n               'result_name': 'Backdoor.6536F84D7F60AA9C',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.646016Z',\n               'id': 'relationship--c9070ece-6c17-4af8-843b-8c9506acd11a',\n               'modified': '2021-09-15T19:22:44.646016Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc44bea2-b17e-4fb6-80e1-2c89fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd44bb23-4668-4f3b-80c3-d589fd18a656',\n               'type': 'relationship'},\n              {'created': '2021-09-01T19:22:45.194687Z',\n               'id': 'malware-analysis--dc44cd9a-0c37-4f5e-808c-4189fd18a656',\n               'modified': '2021-09-15T19:22:44.646147Z',\n               'product': 'alibaba',\n               'result': 'malicious',\n               'result_name': 'Malware:Win32/Dorpal.ali1000029',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.646281Z',\n               'id': 'relationship--fdf11db2-f58b-4b3e-b5ac-eafd5aae5fff',\n               'modified': '2021-09-15T19:22:44.646281Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc44cd9a-0c37-4f5e-808c-4189fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd44bb23-4668-4f3b-80c3-d589fd18a656',\n               'type': 'relationship'},\n              {'created': '2021-09-01T19:22:45.194687Z',\n               'id': 'malware-analysis--dc44ef5d-f3cf-4ff5-8048-6089fd18a656',\n               'modified': '2021-09-15T19:22:44.646417Z',\n               'product': 'lionic',\n               'result': 'malicious',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.646531Z',\n               'id': 'relationship--4c9040a8-e18c-4e18-9719-bd1d0aea4b84',\n               'modified': '2021-09-15T19:22:44.646531Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc44ef5d-f3cf-4ff5-8048-6089fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd44bb23-4668-4f3b-80c3-d589fd18a656',\n               'type': 'relationship'},\n              {'analysis_definition_version': '01.09.2021 18:16:19 (104093)',\n               'analysis_engine_version': '5.6.2.0',\n               'created': '2021-09-01T19:22:45.194687Z',\n               'id': 'malware-analysis--dc44f324-c769-4fb0-805e-4089fd18a656',\n               'modified': '2021-09-15T19:22:44.646661Z',\n               'product': 'ikarus',\n               'result': 'malicious',\n               'result_name': 'Trojan.Win32.Urelas',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.646777Z',\n               'id': 'relationship--6c4ae8f4-6834-463f-bd8a-7f48897802c6',\n               'modified': '2021-09-15T19:22:44.646777Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc44f324-c769-4fb0-805e-4089fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd44bb23-4668-4f3b-80c3-d589fd18a656',\n               'type': 'relationship'},\n              {'analysis_definition_version': '2019-10-02 10:25',\n               'created': '2021-09-01T19:22:45.194687Z',\n               'id': 'malware-analysis--dc4461c1-5f2a-4f35-80dd-e589fd18a656',\n               'modified': '2021-09-15T19:22:44.646906Z',\n               'product': 'qihoo-360',\n               'result': 'benign',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.647020Z',\n               'id': 'relationship--af73da52-3871-4627-89d9-dec1a1da70bb',\n               'modified': '2021-09-15T19:22:44.647020Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc4461c1-5f2a-4f35-80dd-e589fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd44bb23-4668-4f3b-80c3-d589fd18a656',\n               'type': 'relationship'},\n              {'created': '2021-09-01T19:22:45.194687Z',\n               'id': 'malware-analysis--dc44b4fb-d3f9-4f32-80ef-6489fd18a656',\n               'modified': '2021-09-15T19:22:44.647162Z',\n               'product': 'rising',\n               'result': 'malicious',\n               'result_name': 'Backdoor.Plite!8.2D6',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.647277Z',\n               'id': 'relationship--7d6c1a5b-b470-44cc-9518-deaedfe23236',\n               'modified': '2021-09-15T19:22:44.647277Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc44b4fb-d3f9-4f32-80ef-6489fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd44bb23-4668-4f3b-80c3-d589fd18a656',\n               'type': 'relationship'},\n              {'analysis_definition_version': '48872546c2e9031cb99dc29783b079288f18c6f8-Release.x64',\n               'analysis_engine_version': '4.7.0.10',\n               'created': '2021-09-01T19:22:45.194687Z',\n               'id': 'malware-analysis--dc44beb6-1678-4f7b-801f-2b89fd18a656',\n               'modified': '2021-09-15T19:22:44.647410Z',\n               'product': 'sentinelone-static-ml',\n               'result': 'malicious',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.647525Z',\n               'id': 'relationship--ee17c47a-9768-4f6f-8cf8-446a4a34d524',\n               'modified': '2021-09-15T19:22:44.647525Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc44beb6-1678-4f7b-801f-2b89fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd44bb23-4668-4f3b-80c3-d589fd18a656',\n               'type': 'relationship'},\n              {'analysis_engine_version': 'ClamAV 0.102.4/26090/Wed Feb 24 '\n                                          '12:09:42 2021',\n               'created': '2021-09-01T19:22:45.194687Z',\n               'id': 'malware-analysis--dc446b6b-1a0d-4f7c-806c-4c89fd18a656',\n               'modified': '2021-09-15T19:22:44.647653Z',\n               'product': 'clamav',\n               'result': 'malicious',\n               'result_name': 'Win.Malware.Urelas-6840420-0',\n               'spec_version': '2.1',\n               'type': 'malware-analysis'},\n              {'created': '2021-09-15T19:22:44.647769Z',\n               'id': 'relationship--56e75fba-6af7-4cec-9482-dabcb866ea6d',\n               'modified': '2021-09-15T19:22:44.647769Z',\n               'relationship_type': 'av-analysis-of',\n               'source_ref': 'malware-analysis--dc446b6b-1a0d-4f7c-806c-4c89fd18a656',\n               'spec_version': '2.1',\n               'target_ref': 'malware--dd44bb23-4668-4f3b-80c3-d589fd18a656',\n               'type': 'relationship'}],\n  'type': 'bundle'}]\n</pre>\n\n#### Filter Parameters {#filter-parameters}\n\nA TAXII Client can request specific content from a TAXII Server by specifying a set of filters included in the URL query parameters of the request to the server.\n\n##### Universal filter parameters\n\nAll of PolySwarm's collections support the following filter parameters:\n\n| URL Query Parameters | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | Example                   |\n| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------- |\n| `added_after`        | A single \"T-Syntax\" RFC3339 time stamp that filters objects to only include those objects added after the specified time stamp. If no `added_after` URL query parameter is provided, the server will return the oldest objects matching the request first. For example, if a server has 100 objects (0-99), the server would start at record 0 looking for a match and work its way up from oldest to newest finding 50 (the default & maximum limit) of objects that matched the request. | `2021-09-08T00:00:00Z`    |\n| `limit`              | A single integer value that indicates the maximum number of objects that to receive in a single response. This must be a positive integer greater than 0 and less than 51.                                                                                                                                                                                                                                                                                                                 | `25`                      |\n| `next`               | A single opaque string value that indicates the next record or set of records in the data set that the client is requesting. This value never expires and may be used to resume pagination at a later date (if you attempt to resume pagination of objects older than that collection's defined maximum object age, you will resume pagination from that collection's initial page.                                                                                                | `gAAAAAOSmbvF...oRY06o==` |\n\nYou can use supply any these parameters as keyword arguments to `read_taxii_feed`:\n\n```python\nread_taxii_feed(collection, added_after='2021-09-08T00:00:00Z'):\n```\n##### Using the `match[<field>]` for Filtering\n\nNon-freemium collections also provide a `match[<field>]` parameter to apply filtering on a specific `<field>`. The `match` parameter can be specified any number of times, where each match instance specifies an additional filter combined as logical \"AND\" predicates. Individual `match` query parameters may contain multiple values separated by a comma (`,`) which are treated as a logical \"OR\". For instance, `?match[type]=bundle,sighting` specifies a filter for objects that are of type `bundle` OR `sighting`.\n\n| Field  | Description                                                                                                                | Example                                |\n| ------ | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------- |\n| `id`   | The identifier of the object(s) that are being requested                                                                   | `bundle--dd45feca-cf0c-4f86-8026-f889` |\n| `type` | The type of the object(s) that are being requested. Only the types listed in this parameter are permitted in the response. | `bundle,sighting`                      |\n\nYou can use supply any these parameters as keyword arguments to `read_taxii_feed`:\n\n```python\nread_taxii_feed(collection, id='bundle--dd45feca-cf0c-4f86-8026-f889,bundle--dd445a57-7358-4ff4-8056-5d89'):\n```\n## STIX Field Mapping  {#stix-mapping}\n\nThis sections will provide you with the field mapping of the STIX PolySwarm file.\n\n| Field Name  | Description | Sample Data |\n| ----------- | ----------- |----------- |\n| aliases | Family names from engine results  | `[\"Backdoor.Padodor.c\",\"Backdoor.Win32.Padodor\",\"Backdoor.Berbew!8.115\", \"Trojan:Win32/Starter.ali1001008\", \"BackDoor.HangUp.5\",\"Win.Trojan.Crypted-29\",\"Proxy-Program ( 00557ea51 )\",\"win/malicious\"]`|\n| created/first_seen | When hash was first seen in the PolySwarm Marketplace  | `2021-01-20T23:30:10.665092Z`|\n| external_references | Link to PolySwarm portal with full details  | `\"url\": \"https://polyswarm.network/scan/results/file/017bcfbe29b805c010cf7c1790c17fb10a1069c7806ff65ae15fe12dd27e6645\"`|\n| malware_types| Malware functionality tags | `[ \"backdoor\", \"greyware\", \"Trojan\" ]` |\n| imphash | Valid only for Windows PE files | `26babd76bbb7f9c516a338b0601b4c9f`|\n| optional_header | PE header information | `\"address_of_entry_point\": 204800, \"major_linker_version\": 2, \"major_os_version\": 1, \"major_subsystem_version\": 4, \"minor_linker_version\": 5, \"minor_os_version\": 0, \"minor_subsystem_version\": 0, \"size_of_code\": 47104, \"size_of_initialized_data\": 18432`|\n| pe_type | File type | `exe` |\n| time_date_stamp | Binary compile date timestamp | `2020-07-11T03:39:59Z` |\n| hashes | MD5, SHA-1, SHA-256, SHA-512, SSDEEP, TLSH hashes of the malware | `{ \"MD5\": \"ab49bfba6e83c2211bcb5e25dfd428ae\", \"SHA-1\": \"0c09e4ecdedf46f5c801a1c2267d5166afd48a48\", \"SHA-256\": \"017bcfbe29b805c010cf7c1790c17fb10a1069c7806ff65ae15fe12dd27e6645\", \"SHA-512\": \"386f20b87848fc138b14931bdec5c348e26c7c270d952ba3487a020819ac07b1449b0715082e01aea898e69a1edb1aa77c5857c87ab1c8daa0d787f75c422def\", \"SSDEEP\": \"768:/abmyOy0JJk0Zvj12BhSPbefkcjnJuv+I1CV+zClaEZIGXOjWW3RuSyRZPAv8Q5:iDCJJko4hSPbelju91ZCla7IUW5SyRQ\", \"TLSH\": \"54637cc901172d79e8d9a5f25c238aa9a407cf390752f7dc0eda4db978fa4075f28c61\" }`|\n| mime_type | Mime type of the file | `application/x-dosexec` |\n| size | File size of the sample submitted | `69632` |\n| confidence | PolyScore * 100 | `99` |\n| last_seen | When it was last scanned by the malware engines | `2021-01-20T23:30:10.584455Z` |\n| product | Engine name providing response (repeated for every engine asserting) | `clamav`|\n| result | Benign or malicious  (repeated for every engine asserting) | `malicious` |\n| result_name | Family name provided by engine (not provided by every engine) (repeated for every engine asserting) | `Win.Trojan.Crypted-29`|\n\n\n"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/engines/operate-and-optimise/start-operate-optimise.md","frontmatter":{"title":"Operate and Optimise","excerpt":"Once your Engine is verified and running in production, the goal shifts from..."},"html":"<h1 id=\"operate-and-optimise\" style=\"position:relative;\"><a href=\"#operate-and-optimise\" aria-label=\"operate and optimise permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Operate and Optimise</h1>\n<p>Once your Engine is verified and running in production, the goal shifts from “it works” to “it performs”. This section covers the operational areas that most directly impact:</p>\n<ul>\n<li>Whether you keep receiving bounties</li>\n<li>Whether your assertions participate in rewards</li>\n<li>How often you win rewards</li>\n<li>How much NCT you put at risk</li>\n</ul>\n<p>Use these pages as an ongoing checklist as you iterate on your Engine.</p>\n<h2 id=\"what-to-focus-on-first\" style=\"position:relative;\"><a href=\"#what-to-focus-on-first\" aria-label=\"what to focus on first permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What to focus on first</h2>\n<ol>\n<li><strong>Reliability</strong><br>\nKeep your Engine online, fast, and predictable. Late or failed responses reduce earnings and can cause your Engine to be marked Failed.</li>\n<li><strong>Accuracy</strong><br>\nImprove decision quality and reduce false positives and false negatives.</li>\n<li><strong>Bidding Strategy</strong><br>\nAlign bids with confidence so you are not over-staking on weak signals.</li>\n<li><strong>NCT Management</strong><br>\nMaintain enough balance to keep bidding during the arbitration window and avoid running out of funds mid-flight.</li>\n</ol>","rawMarkdownBody":"\n# Operate and Optimise\n\nOnce your Engine is verified and running in production, the goal shifts from “it works” to “it performs”. This section covers the operational areas that most directly impact:\n\n- Whether you keep receiving bounties\n- Whether your assertions participate in rewards\n- How often you win rewards\n- How much NCT you put at risk\n\nUse these pages as an ongoing checklist as you iterate on your Engine.\n\n## What to focus on first\n\n1. **Reliability**  \n   Keep your Engine online, fast, and predictable. Late or failed responses reduce earnings and can cause your Engine to be marked Failed.\n\n2. **Accuracy**  \n   Improve decision quality and reduce false positives and false negatives.\n\n3. **Bidding Strategy**  \n   Align bids with confidence so you are not over-staking on weak signals.\n\n4. **NCT Management**  \n   Maintain enough balance to keep bidding during the arbitration window and avoid running out of funds mid-flight.\n"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/engines/operate-and-optimise/reliability.md","frontmatter":{"title":"Reliability","excerpt":"Keep your Engine healthy, responsive, and consistent so results arrive on time and you avoid failures."},"html":"<h1 id=\"reliability\" style=\"position:relative;\"><a href=\"#reliability\" aria-label=\"reliability permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Reliability</h1>\n<p>Reliability determines whether your Engine consistently receives bounties and whether your results arrive in time to participate in rewards. A reliable Engine is predictable, responsive, and safe under load.</p>\n<h2 id=\"reliability-criteria\" style=\"position:relative;\"><a href=\"#reliability-criteria\" aria-label=\"reliability criteria permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Reliability Criteria</h2>\n<p>Your Engine should:</p>\n<ul>\n<li>Accept engine webhooks consistently over HTTPS</li>\n<li>Validate signatures on every request</li>\n<li>Return <code class=\"language-text\">202 Accepted</code> quickly</li>\n<li>Process bounties asynchronously in workers</li>\n<li>Post assertions back successfully and on time</li>\n<li>Degrade safely (UNKNOWN instead of crashing)</li>\n</ul>\n<h2 id=\"common-failure-points\" style=\"position:relative;\"><a href=\"#common-failure-points\" aria-label=\"common failure points permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Common Failure Points</h2>\n<ul>\n<li>Engine webhook endpoint is not reachable (DNS, TLS, firewall)</li>\n<li>Signature validation fails (secret mismatch)</li>\n<li>Web server blocks on scanning (no queue, no worker separation)</li>\n<li>Worker crashes on edge cases (empty bounty, unsupported type)</li>\n<li>Artifact downloads fail intermittently (network, timeouts)</li>\n<li>Concurrency is too low for configured rate limit</li>\n<li>External tools hang (no timeouts)</li>\n</ul>\n<h2 id=\"minimum-operational-checklist\" style=\"position:relative;\"><a href=\"#minimum-operational-checklist\" aria-label=\"minimum operational checklist permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Minimum Operational Checklist</h2>\n<h3 id=\"availability\" style=\"position:relative;\"><a href=\"#availability\" aria-label=\"availability permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Availability</h3>\n<ul>\n<li>Endpoint is publicly reachable over HTTPS</li>\n<li>Certificates are valid and renewed automatically</li>\n<li>Health check endpoint exists (optional but recommended)</li>\n</ul>\n<h3 id=\"performance\" style=\"position:relative;\"><a href=\"#performance\" aria-label=\"performance permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Performance</h3>\n<ul>\n<li>Engine webhook request returns quickly (do not scan in the request thread)</li>\n<li>Worker concurrency supports your configured rate limit</li>\n<li>\n<p>Timeouts are enforced for:</p>\n<ul>\n<li>artifact download</li>\n<li>external tool execution</li>\n<li>response submission</li>\n</ul>\n</li>\n</ul>\n<h3 id=\"correct-behavior-under-stress\" style=\"position:relative;\"><a href=\"#correct-behavior-under-stress\" aria-label=\"correct behavior under stress permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Correct behavior under stress</h3>\n<ul>\n<li>Unsupported artifact types return UNKNOWN with bid 0</li>\n<li>Empty or malformed bounties do not crash the service</li>\n<li>Retries do not create duplicate assertions (idempotency where possible)</li>\n</ul>\n<h3 id=\"logging-and-observability\" style=\"position:relative;\"><a href=\"#logging-and-observability\" aria-label=\"logging and observability permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Logging and Observability</h3>\n<p>At minimum log:</p>\n<ul>\n<li>Bounty received (id, type)</li>\n<li>Signature validation result</li>\n<li>Job queued and started</li>\n<li>Analysis finished (verdict, duration)</li>\n<li>Assertion post result (success or error)</li>\n</ul>\n<h2 id=\"protecting-against-late-results\" style=\"position:relative;\"><a href=\"#protecting-against-late-results\" aria-label=\"protecting against late results permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Protecting against “late results”</h2>\n<p>Late results often earn nothing. Reduce “late” outcomes by:</p>\n<ul>\n<li>Enforcing timeouts and returning UNKNOWN when needed</li>\n<li>Keeping artifact downloads fast (bandwidth, caching if appropriate)</li>\n<li>Avoiding slow startup paths and cold starts</li>\n<li>Not overloading workers beyond capacity</li>\n</ul>\n<h2 id=\"if-your-engine-is-marked-failed\" style=\"position:relative;\"><a href=\"#if-your-engine-is-marked-failed\" aria-label=\"if your engine is marked failed permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>If your Engine is marked Failed</h2>\n<p>If your Engine enters a Failed state:</p>\n<ul>\n<li>Fix the underlying reliability issue first</li>\n<li>Re-test in the Development Community if needed</li>\n<li>Follow your verification recovery process as required by your workflow</li>\n</ul>","rawMarkdownBody":"\n# Reliability\n\nReliability determines whether your Engine consistently receives bounties and whether your results arrive in time to participate in rewards. A reliable Engine is predictable, responsive, and safe under load.\n\n## Reliability Criteria\n\nYour Engine should:\n- Accept engine webhooks consistently over HTTPS\n- Validate signatures on every request\n- Return `202 Accepted` quickly\n- Process bounties asynchronously in workers\n- Post assertions back successfully and on time\n- Degrade safely (UNKNOWN instead of crashing)\n\n## Common Failure Points\n\n- Engine webhook endpoint is not reachable (DNS, TLS, firewall)\n- Signature validation fails (secret mismatch)\n- Web server blocks on scanning (no queue, no worker separation)\n- Worker crashes on edge cases (empty bounty, unsupported type)\n- Artifact downloads fail intermittently (network, timeouts)\n- Concurrency is too low for configured rate limit\n- External tools hang (no timeouts)\n\n## Minimum Operational Checklist\n\n### Availability\n- Endpoint is publicly reachable over HTTPS\n- Certificates are valid and renewed automatically\n- Health check endpoint exists (optional but recommended)\n\n### Performance\n- Engine webhook request returns quickly (do not scan in the request thread)\n- Worker concurrency supports your configured rate limit\n- Timeouts are enforced for:\n  - artifact download\n  - external tool execution\n  - response submission\n\n### Correct behavior under stress\n- Unsupported artifact types return UNKNOWN with bid 0\n- Empty or malformed bounties do not crash the service\n- Retries do not create duplicate assertions (idempotency where possible)\n\n### Logging and Observability\nAt minimum log:\n- Bounty received (id, type)\n- Signature validation result\n- Job queued and started\n- Analysis finished (verdict, duration)\n- Assertion post result (success or error)\n\n## Protecting against “late results”\n\nLate results often earn nothing. Reduce “late” outcomes by:\n- Enforcing timeouts and returning UNKNOWN when needed\n- Keeping artifact downloads fast (bandwidth, caching if appropriate)\n- Avoiding slow startup paths and cold starts\n- Not overloading workers beyond capacity\n\n## If your Engine is marked Failed\n\nIf your Engine enters a Failed state:\n- Fix the underlying reliability issue first\n- Re-test in the Development Community if needed\n- Follow your verification recovery process as required by your workflow\n"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/engines/reference/protocols-and-apis.md","frontmatter":{"title":"Protocols and APIs","excerpt":"The required engine webhook and callback behaviour, payloads, and response expectations."},"html":"<h1 id=\"protocols-and-apis\" style=\"position:relative;\"><a href=\"#protocols-and-apis\" aria-label=\"protocols and apis permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Protocols and APIs</h1>\n<p>Engines communicate with the PolySwarm Marketplace using:</p>\n<ol>\n<li>Inbound engine webhooks from PolySwarm to your Engine</li>\n<li>Outbound callbacks from your Engine to PolySwarm (artifact download and analysis submission)</li>\n</ol>\n<p>You do not need to implement blockchain interactions.</p>\n<h2 id=\"inbound-engine-webhook-polyswarm-to-engine\" style=\"position:relative;\"><a href=\"#inbound-engine-webhook-polyswarm-to-engine\" aria-label=\"inbound engine webhook polyswarm to engine permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Inbound engine webhook, PolySwarm to Engine</h2>\n<p>PolySwarm sends HTTP <code class=\"language-text\">POST</code> requests to the engine webhook URL configured for your Engine.</p>\n<h3 id=\"https-requirement\" style=\"position:relative;\"><a href=\"#https-requirement\" aria-label=\"https requirement permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>HTTPS requirement</h3>\n<p>Your engine webhook endpoint must be publicly reachable over HTTPS using an FQDN.</p>\n<ul>\n<li>Use HTTPS only</li>\n<li>Use a fully qualified domain name (FQDN)</li>\n<li>You may include a path in the URL</li>\n</ul>\n<h3 id=\"standard-headers\" style=\"position:relative;\"><a href=\"#standard-headers\" aria-label=\"standard headers permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Standard headers</h3>\n<p>PolySwarm includes headers on engine webhook calls. Common headers include:</p>\n<ul>\n<li><code class=\"language-text\">X-POLYSWARM-DELIVERY</code> (unique delivery id)</li>\n<li><code class=\"language-text\">X-POLYSWARM-EVENT</code> (event type, for example <code class=\"language-text\">bounty</code> or <code class=\"language-text\">ping</code>)</li>\n<li><code class=\"language-text\">X-POLYSWARM-SIGNATURE</code> (HMAC signature for sender validation)</li>\n</ul>\n<p>Header names can vary by implementation, so treat the above as a reference and follow the Engine template you are using.</p>\n<h3 id=\"signature-validation\" style=\"position:relative;\"><a href=\"#signature-validation\" aria-label=\"signature validation permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Signature validation</h3>\n<p>Your server should validate that PolySwarm sent the request by verifying the signature header against the raw request body using the shared secret configured for the engine webhook.</p>\n<p>If signature validation fails, reject the request (commonly <code class=\"language-text\">401</code> or <code class=\"language-text\">403</code>) and do not process the bounty.</p>\n<h3 id=\"event-ping\" style=\"position:relative;\"><a href=\"#event-ping\" aria-label=\"event ping permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Event, ping</h3>\n<p>Ping is a connectivity test.</p>\n<ul>\n<li>Method: <code class=\"language-text\">POST</code></li>\n<li>Event header: <code class=\"language-text\">X-POLYSWARM-EVENT: ping</code></li>\n</ul>\n<p>Recommended response:</p>\n<ul>\n<li>Status: <code class=\"language-text\">202</code></li>\n<li>\n<p>Body:</p>\n<div class=\"gatsby-highlight\" data-language=\"json\"><pre class=\"language-json\"><code class=\"language-json\"><span class=\"token punctuation\">{</span> <span class=\"token property\">\"status\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"OK\"</span> <span class=\"token punctuation\">}</span></code></pre></div>\n</li>\n</ul>\n<h3 id=\"event-bounty\" style=\"position:relative;\"><a href=\"#event-bounty\" aria-label=\"event bounty permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Event, bounty</h3>\n<p>Bounty is the main event. It tells your Engine what to analyze.</p>\n<ul>\n<li>Method: <code class=\"language-text\">POST</code></li>\n<li>Event header: <code class=\"language-text\">X-POLYSWARM-EVENT: bounty</code></li>\n<li>Body: JSON bounty payload</li>\n</ul>\n<h4 id=\"typical-bounty-payload\" style=\"position:relative;\"><a href=\"#typical-bounty-payload\" aria-label=\"typical bounty payload permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Typical bounty payload</h4>\n<p>Field names vary slightly by tooling, but the concepts are consistent.</p>\n<div class=\"gatsby-highlight\" data-language=\"json\"><pre class=\"language-json\"><code class=\"language-json\"><span class=\"token punctuation\">{</span>\n  <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1234567890</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"artifact_type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"file\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"artifact_uri\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://api.polyswarm.network/path/to/download\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"expiration\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"1970-01-01T00:00:00+0000\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"response_url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://api.polyswarm.network/path/to/respond\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"phase\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"assertion\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"sha256\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"optional-for-file\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"mimetype\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"optional-for-file\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"rules\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token property\">\"min_allowed_bid\"</span><span class=\"token operator\">:</span> <span class=\"token number\">625000000000</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"max_allowed_bid\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1000000000000000000</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<blockquote>\n<p><strong>Note:</strong> The above <code class=\"language-text\">min_allowed_bid</code> and <code class=\"language-text\">max_allowed_bid</code> values are in units of NCT-WEI.</p>\n</blockquote>\n<h4 id=\"expected-engine-webhook-server-behaviour\" style=\"position:relative;\"><a href=\"#expected-engine-webhook-server-behaviour\" aria-label=\"expected engine webhook server behaviour permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Expected engine webhook server behaviour</h4>\n<p>Your engine webhook server should:</p>\n<ul>\n<li>validate signature</li>\n<li>enqueue work for a worker</li>\n<li>return quickly</li>\n</ul>\n<p>Recommended success response:</p>\n<ul>\n<li>Status: <code class=\"language-text\">202</code></li>\n<li>\n<p>Body:</p>\n<div class=\"gatsby-highlight\" data-language=\"json\"><pre class=\"language-json\"><code class=\"language-json\"><span class=\"token punctuation\">{</span> <span class=\"token property\">\"status\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ACCEPTED\"</span> <span class=\"token punctuation\">}</span></code></pre></div>\n</li>\n</ul>\n<p>If the payload is invalid (missing required fields), return a client error (commonly <code class=\"language-text\">400</code>).</p>\n<h2 id=\"outbound-callbacks-engine-to-polyswarm\" style=\"position:relative;\"><a href=\"#outbound-callbacks-engine-to-polyswarm\" aria-label=\"outbound callbacks engine to polyswarm permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Outbound callbacks, Engine to PolySwarm</h2>\n<h3 id=\"1-artifact-download-file-artifacts\" style=\"position:relative;\"><a href=\"#1-artifact-download-file-artifacts\" aria-label=\"1 artifact download file artifacts permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>1) Artifact download (file artifacts)</h3>\n<p>To fetch a file artifact, your Engine downloads from <code class=\"language-text\">artifact_uri</code> (or equivalent field).</p>\n<ul>\n<li>Method: <code class=\"language-text\">GET</code></li>\n<li>URL: <code class=\"language-text\">artifact_uri</code></li>\n</ul>\n<p>Expected success:</p>\n<ul>\n<li>Status: <code class=\"language-text\">200</code></li>\n<li>Response body: binary file content</li>\n</ul>\n<h3 id=\"2-submit-analysis-assertion\" style=\"position:relative;\"><a href=\"#2-submit-analysis-assertion\" aria-label=\"2 submit analysis assertion permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>2) Submit analysis (assertion)</h3>\n<p>Your Engine posts the analysis result to <code class=\"language-text\">response_url</code> (or equivalent field).</p>\n<ul>\n<li>Method: <code class=\"language-text\">POST</code></li>\n<li>URL: <code class=\"language-text\">response_url</code></li>\n<li>Content-Type: <code class=\"language-text\">application/json</code></li>\n</ul>\n<p>Payload:</p>\n<div class=\"gatsby-highlight\" data-language=\"json\"><pre class=\"language-json\"><code class=\"language-json\"><span class=\"token punctuation\">{</span>\n  <span class=\"token property\">\"verdict\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"malicious\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"bid\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1000000000000000000</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"metadata\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token property\">\"malware_family\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EICAR-TEST-FILE\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"confidence\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1.0</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"scanner\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"version\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"1.0.0\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"environment\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token property\">\"operating_system\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Linux\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"architecture\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"x86_64\"</span>\n      <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>Rules:</p>\n<ul>\n<li><code class=\"language-text\">bid</code> must be an integer in NCT-wei</li>\n<li>bids must respect <code class=\"language-text\">min_allowed_bid</code> and <code class=\"language-text\">max_allowed_bid</code></li>\n<li><code class=\"language-text\">unknown</code> and unsupported cases should return bid 0</li>\n<li>metadata is optional but recommended, keep it stable and meaningful</li>\n</ul>\n<h2 id=\"required-behaviour-summary\" style=\"position:relative;\"><a href=\"#required-behaviour-summary\" aria-label=\"required behaviour summary permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Required behaviour summary</h2>\n<ul>\n<li>validate signature on inbound engine webhooks</li>\n<li>return <code class=\"language-text\">202</code> quickly and scan asynchronously</li>\n<li>fetch artifacts from the provided URI and enforce timeouts</li>\n<li>post a correctly formatted analysis to the provided response URL before expiration</li>\n<li>return <code class=\"language-text\">UNKNOWN</code> for unsupported types, failures, and timeouts</li>\n</ul>","rawMarkdownBody":"\n# Protocols and APIs\n\nEngines communicate with the PolySwarm Marketplace using:\n\n1. Inbound engine webhooks from PolySwarm to your Engine\n2. Outbound callbacks from your Engine to PolySwarm (artifact download and analysis submission)\n\nYou do not need to implement blockchain interactions.\n\n## Inbound engine webhook, PolySwarm to Engine\n\nPolySwarm sends HTTP `POST` requests to the engine webhook URL configured for your Engine.\n\n### HTTPS requirement\n\nYour engine webhook endpoint must be publicly reachable over HTTPS using an FQDN.\n\n- Use HTTPS only\n- Use a fully qualified domain name (FQDN)\n- You may include a path in the URL\n\n### Standard headers\n\nPolySwarm includes headers on engine webhook calls. Common headers include:\n\n- `X-POLYSWARM-DELIVERY` (unique delivery id)\n- `X-POLYSWARM-EVENT` (event type, for example `bounty` or `ping`)\n- `X-POLYSWARM-SIGNATURE` (HMAC signature for sender validation)\n\nHeader names can vary by implementation, so treat the above as a reference and follow the Engine template you are using.\n\n### Signature validation\n\nYour server should validate that PolySwarm sent the request by verifying the signature header against the raw request body using the shared secret configured for the engine webhook.\n\nIf signature validation fails, reject the request (commonly `401` or `403`) and do not process the bounty.\n\n### Event, ping\n\nPing is a connectivity test.\n\n- Method: `POST`\n- Event header: `X-POLYSWARM-EVENT: ping`\n\nRecommended response:\n- Status: `202`\n- Body:\n```json\n{ \"status\": \"OK\" }\n```\n\n### Event, bounty\n\nBounty is the main event. It tells your Engine what to analyze.\n\n- Method: `POST`\n- Event header: `X-POLYSWARM-EVENT: bounty`\n- Body: JSON bounty payload\n\n#### Typical bounty payload\n\nField names vary slightly by tooling, but the concepts are consistent.\n\n```json\n{\n  \"id\": 1234567890,\n  \"artifact_type\": \"file\",\n  \"artifact_uri\": \"https://api.polyswarm.network/path/to/download\",\n  \"expiration\": \"1970-01-01T00:00:00+0000\",\n  \"response_url\": \"https://api.polyswarm.network/path/to/respond\",\n  \"phase\": \"assertion\",\n  \"sha256\": \"optional-for-file\",\n  \"mimetype\": \"optional-for-file\",\n  \"rules\": {\n    \"min_allowed_bid\": 625000000000,\n    \"max_allowed_bid\": 1000000000000000000\n  }\n}\n```\n\n> **Note:** The above `min_allowed_bid` and `max_allowed_bid` values are in units of NCT-WEI.\n\n#### Expected engine webhook server behaviour\n\nYour engine webhook server should:\n- validate signature\n- enqueue work for a worker\n- return quickly\n\nRecommended success response:\n- Status: `202`\n- Body:\n```json\n{ \"status\": \"ACCEPTED\" }\n```\n\nIf the payload is invalid (missing required fields), return a client error (commonly `400`).\n\n## Outbound callbacks, Engine to PolySwarm\n\n### 1) Artifact download (file artifacts)\n\nTo fetch a file artifact, your Engine downloads from `artifact_uri` (or equivalent field).\n\n- Method: `GET`\n- URL: `artifact_uri`\n\nExpected success:\n- Status: `200`\n- Response body: binary file content\n\n### 2) Submit analysis (assertion)\n\nYour Engine posts the analysis result to `response_url` (or equivalent field).\n\n- Method: `POST`\n- URL: `response_url`\n- Content-Type: `application/json`\n\nPayload:\n\n```json\n{\n  \"verdict\": \"malicious\",\n  \"bid\": 1000000000000000000,\n  \"metadata\": {\n    \"malware_family\": \"EICAR-TEST-FILE\",\n    \"confidence\": 1.0,\n    \"scanner\": {\n      \"version\": \"1.0.0\",\n      \"environment\": {\n        \"operating_system\": \"Linux\",\n        \"architecture\": \"x86_64\"\n      }\n    }\n  }\n}\n```\n\nRules:\n- `bid` must be an integer in NCT-wei\n- bids must respect `min_allowed_bid` and `max_allowed_bid`\n- `unknown` and unsupported cases should return bid 0\n- metadata is optional but recommended, keep it stable and meaningful\n\n## Required behaviour summary\n\n- validate signature on inbound engine webhooks\n- return `202` quickly and scan asynchronously\n- fetch artifacts from the provided URI and enforce timeouts\n- post a correctly formatted analysis to the provided response URL before expiration\n- return `UNKNOWN` for unsupported types, failures, and timeouts\n"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/engines/build-and-test/end-to-end-testing-in-dev-community.md","frontmatter":{"title":"End-to-end testing in the Development Community","excerpt":"Connect your Engine in the UI and validate real bounty flow in a safe environment."},"html":"<h1 id=\"end-to-end-testing-in-the-development-community\" style=\"position:relative;\"><a href=\"#end-to-end-testing-in-the-development-community\" aria-label=\"end to end testing in the development community permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>End-to-end testing in the Development Community</h1>\n<p>This page covers end-to-end testing against PolySwarm using the Development Community. It validates that your Engine can receive real bounties via engine webhook and send valid assertions back to the marketplace.</p>\n<h2 id=\"before-you-start\" style=\"position:relative;\"><a href=\"#before-you-start\" aria-label=\"before you start permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Before you start</h2>\n<p>You should have:</p>\n<ul>\n<li>Completed local tests on the Engine template (see <strong><a href=\"/engines/testing-your-engine#minimum-quality-gate-required\">Testing your Engine</a></strong>)</li>\n<li>\n<p>A running engine webhook service that:</p>\n<ul>\n<li>Validates signatures</li>\n<li>Returns 202 quickly</li>\n<li>Processes bounties asynchronously</li>\n<li>Posts assertions back to the provided response endpoint</li>\n</ul>\n</li>\n</ul>\n<h2 id=\"process\" style=\"position:relative;\"><a href=\"#process\" aria-label=\"process permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Process</h2>\n<h3 id=\"step-1---create-an-engine-webhook-in-the-polyswarm-ui\" style=\"position:relative;\"><a href=\"#step-1---create-an-engine-webhook-in-the-polyswarm-ui\" aria-label=\"step 1   create an engine webhook in the polyswarm ui permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Step 1 - Create an engine webhook in the PolySwarm UI</h3>\n<p>In your Team account:</p>\n<ol>\n<li>Create a new engine webhook endpoint</li>\n<li>Set the shared secret (store it securely)</li>\n<li>Configure the URL to your engine webhook server (must be reachable from PolySwarm)</li>\n</ol>\n<h3 id=\"step-2---attach-the-engine-webhook-to-your-engine\" style=\"position:relative;\"><a href=\"#step-2---attach-the-engine-webhook-to-your-engine\" aria-label=\"step 2   attach the engine webhook to your engine permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Step 2 - Attach the engine webhook to your Engine</h3>\n<p>In your Team account:</p>\n<ol>\n<li>Open your Engine</li>\n<li>Attach the engine webhook you created</li>\n<li>Confirm the Engine is in a development state for testing</li>\n</ol>\n<h3 id=\"step-3---send-test-bounties\" style=\"position:relative;\"><a href=\"#step-3---send-test-bounties\" aria-label=\"step 3   send test bounties permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Step 3 - Send test bounties</h3>\n<p>Run test bounties appropriate to your Engine type:</p>\n<ul>\n<li><strong>File engine:</strong> send an EICAR style test where appropriate</li>\n<li><strong>URL engine:</strong> send WICAR style test</li>\n<li>Also test unsupported artifact types and confirm UNKNOWN is returned safely</li>\n</ul>\n<p>Your goals:</p>\n<ul>\n<li>Confirm the engine webhook receives the bounty</li>\n<li>Confirm the worker processes it</li>\n<li>Confirm an assertion is sent back successfully</li>\n<li>Confirm the UI shows activity for the Engine</li>\n</ul>\n<h3 id=\"step-4---validate-expected-behavior\" style=\"position:relative;\"><a href=\"#step-4---validate-expected-behavior\" aria-label=\"step 4   validate expected behavior permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Step 4 - Validate expected behavior</h3>\n<h4 id=\"required-checks\" style=\"position:relative;\"><a href=\"#required-checks\" aria-label=\"required checks permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Required checks</h4>\n<ul>\n<li>Signature validation is enforced (invalid signature requests are rejected)</li>\n<li>Response is posted within expected timing</li>\n<li>Verdict format is correct</li>\n<li>Unknown is used for unsupported artifacts</li>\n<li>Errors do not crash the service</li>\n</ul>\n<h4 id=\"recommended-checks\" style=\"position:relative;\"><a href=\"#recommended-checks\" aria-label=\"recommended checks permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Recommended checks</h4>\n<ul>\n<li>Repeated bounties behave consistently</li>\n<li>Metadata is stable and meaningful</li>\n<li>Logging is sufficient to debug failures quickly</li>\n</ul>\n<h2 id=\"common-failure-modes\" style=\"position:relative;\"><a href=\"#common-failure-modes\" aria-label=\"common failure modes permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Common failure modes</h2>\n<ul>\n<li>\n<p><strong>Engine webhook never receives bounties</strong></p>\n<ul>\n<li>URL not reachable from the internet</li>\n<li>wrong endpoint configured in UI</li>\n<li>TLS or firewall issues</li>\n</ul>\n</li>\n<li>\n<p><strong>Requests arrive but are rejected</strong></p>\n<ul>\n<li>Incorrect shared secret</li>\n<li>Signature validation mismatch</li>\n</ul>\n</li>\n<li>\n<p><strong>Engine receives bounty but no assertion is posted</strong></p>\n<ul>\n<li>Worker not running</li>\n<li>Broker misconfigured</li>\n<li>Crash during analysis</li>\n<li>Response endpoint call failing (network, auth, formatting)</li>\n</ul>\n</li>\n<li>\n<p><strong>Slow responses</strong></p>\n<ul>\n<li>Analysis running in the web server process instead of the worker</li>\n<li>External tools lacking timeouts</li>\n<li>Insufficient concurrency</li>\n</ul>\n</li>\n</ul>\n<h2 id=\"next-steps\" style=\"position:relative;\"><a href=\"#next-steps\" aria-label=\"next steps permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Next Steps</h2>\n<p>You are ready to request verification when:</p>\n<ul>\n<li>End to end dev community tests pass repeatedly</li>\n<li>Assertions are valid and timely</li>\n<li>Unsupported artifacts return UNKNOWN cleanly</li>\n<li>Logs are sufficient to diagnose issues</li>\n<li>Reliability is stable under repeated bounties</li>\n</ul>","rawMarkdownBody":"\n# End-to-end testing in the Development Community\n\nThis page covers end-to-end testing against PolySwarm using the Development Community. It validates that your Engine can receive real bounties via engine webhook and send valid assertions back to the marketplace.\n\n## Before you start\n\nYou should have:\n- Completed local tests on the Engine template (see **[Testing your Engine](/engines/testing-your-engine#minimum-quality-gate-required)**)\n- A running engine webhook service that:\n  - Validates signatures\n  - Returns 202 quickly\n  - Processes bounties asynchronously\n  - Posts assertions back to the provided response endpoint\n\n## Process\n\n### Step 1 - Create an engine webhook in the PolySwarm UI\n\nIn your Team account:\n1. Create a new engine webhook endpoint\n2. Set the shared secret (store it securely)\n3. Configure the URL to your engine webhook server (must be reachable from PolySwarm)\n\n### Step 2 - Attach the engine webhook to your Engine\n\nIn your Team account:\n1. Open your Engine\n2. Attach the engine webhook you created\n3. Confirm the Engine is in a development state for testing\n\n### Step 3 - Send test bounties\n\nRun test bounties appropriate to your Engine type:\n\n- **File engine:** send an EICAR style test where appropriate\n- **URL engine:** send WICAR style test\n- Also test unsupported artifact types and confirm UNKNOWN is returned safely\n\nYour goals:\n- Confirm the engine webhook receives the bounty\n- Confirm the worker processes it\n- Confirm an assertion is sent back successfully\n- Confirm the UI shows activity for the Engine\n\n### Step 4 - Validate expected behavior\n\n#### Required checks\n- Signature validation is enforced (invalid signature requests are rejected)\n- Response is posted within expected timing\n- Verdict format is correct\n- Unknown is used for unsupported artifacts\n- Errors do not crash the service\n\n#### Recommended checks\n- Repeated bounties behave consistently\n- Metadata is stable and meaningful\n- Logging is sufficient to debug failures quickly\n\n## Common failure modes\n\n- **Engine webhook never receives bounties**\n  - URL not reachable from the internet\n  - wrong endpoint configured in UI\n  - TLS or firewall issues\n\n- **Requests arrive but are rejected**\n  - Incorrect shared secret\n  - Signature validation mismatch\n\n- **Engine receives bounty but no assertion is posted**\n  - Worker not running\n  - Broker misconfigured\n  - Crash during analysis\n  - Response endpoint call failing (network, auth, formatting)\n\n- **Slow responses**\n  - Analysis running in the web server process instead of the worker\n  - External tools lacking timeouts\n  - Insufficient concurrency\n\n## Next Steps\n\nYou are ready to request verification when:\n- End to end dev community tests pass repeatedly\n- Assertions are valid and timely\n- Unsupported artifacts return UNKNOWN cleanly\n- Logs are sufficient to diagnose issues\n- Reliability is stable under repeated bounties\n"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/engines/build-and-test/quickstart.md","frontmatter":{"title":"Quickstart","excerpt":"Get the reference Engine running locally and confirm you can produce valid results."},"html":"<h1 id=\"quickstart\" style=\"position:relative;\"><a href=\"#quickstart\" aria-label=\"quickstart permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Quickstart</h1>\n<p>This quickstart gets you from zero to a working <strong>Engine template</strong> that can analyze a test artifact locally. You will clone the reference repo, install dependencies, run a known-good check, then run the test suite.</p>\n<p>All instructions and examples assume that you are using a recent version of Linux and are building an Engine using Python with our reference implementation and associated artifact object library.</p>\n<button>\n  <a href=\"https://github.com/polyswarm/microengine-webhooks-py\" target=\"_blank\" rel=\"noopener noreferrer\">\n    Reference template: microengine-webhooks-py\n  </a>\n</button>\n<button>\n  <a href=\"https://github.com/polyswarm/polyswarm-artifact\" target=\"_blank\" rel=\"noopener noreferrer\">\n    Artifact library: polyswarm-artifacts\n  </a>\n</button>\n<p>Our Python reference Engine implementation and Artifact object library should work in any current x86_64 Operating System.</p>\n<h2 id=\"prerequisites\" style=\"position:relative;\"><a href=\"#prerequisites\" aria-label=\"prerequisites permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Prerequisites</h2>\n<ul>\n<li>Git</li>\n<li>Python (use the version supported by the template repo)</li>\n<li>A Python virtual environment (recommended)</li>\n</ul>\n<h2 id=\"process\" style=\"position:relative;\"><a href=\"#process\" aria-label=\"process permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Process</h2>\n<h3 id=\"step-1---cone\" style=\"position:relative;\"><a href=\"#step-1---cone\" aria-label=\"step 1   cone permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Step 1 - Cone</h3>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">git</span> clone https://github.com/polyswarm/microengine-webhooks-py.git</code></pre></div>\n<h3 id=\"step-2---install-dependencies\" style=\"position:relative;\"><a href=\"#step-2---install-dependencies\" aria-label=\"step 2   install dependencies permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Step 2 - Install dependencies</h3>\n<p>Create and activate a virtual environment, then install the template in editable mode with the recommended extras.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">python3 -m venv psvenv\n<span class=\"token builtin class-name\">source</span> psvenv/bin/activate\npip <span class=\"token function\">install</span> -U pip\npip <span class=\"token function\">install</span> -e .<span class=\"token punctuation\">[</span>web,gunicorn,tests<span class=\"token punctuation\">]</span></code></pre></div>\n<h3 id=\"step-3---run-a-known-good-local-check\" style=\"position:relative;\"><a href=\"#step-3---run-a-known-good-local-check\" aria-label=\"step 3   run a known good local check permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Step 3 - Run a known-good local check</h3>\n<p>Run the built-in analyzer checks. You should see a structured result containing a verdict and bid.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">python -m microenginewebhookspy.engine analyze --check-eicar</code></pre></div>\n<h3 id=\"step-4---run-tests\" style=\"position:relative;\"><a href=\"#step-4---run-tests\" aria-label=\"step 4   run tests permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Step 4 - Run tests</h3>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">pytest -v</code></pre></div>\n<p>If this passes, you have a working Engine skeleton and test harness.</p>\n<h2 id=\"what-you-have-now\" style=\"position:relative;\"><a href=\"#what-you-have-now\" aria-label=\"what you have now permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What you have now</h2>\n<p>You now have an Engine template that:</p>\n<ul>\n<li>Accepts a bounty object locally</li>\n<li>Runs an analyzer function</li>\n<li>Produces a valid assertion payload (verdict, bid, optional metadata)</li>\n<li>Has unit and integration tests you can build on</li>\n</ul>","rawMarkdownBody":"\n# Quickstart\n\nThis quickstart gets you from zero to a working **Engine template** that can analyze a test artifact locally. You will clone the reference repo, install dependencies, run a known-good check, then run the test suite.\n\nAll instructions and examples assume that you are using a recent version of Linux and are building an Engine using Python with our reference implementation and associated artifact object library.\n\n<button>\n  <a href=\"https://github.com/polyswarm/microengine-webhooks-py\" target=\"_blank\" rel=\"noopener noreferrer\">\n    Reference template: microengine-webhooks-py\n  </a>\n</button>\n\n<button>\n  <a href=\"https://github.com/polyswarm/polyswarm-artifact\" target=\"_blank\" rel=\"noopener noreferrer\">\n    Artifact library: polyswarm-artifacts\n  </a>\n</button>\n\nOur Python reference Engine implementation and Artifact object library should work in any current x86_64 Operating System.\n\n## Prerequisites\n\n- Git\n- Python (use the version supported by the template repo)\n- A Python virtual environment (recommended)\n\n## Process\n\n### Step 1 - Cone\n\n```bash\ngit clone https://github.com/polyswarm/microengine-webhooks-py.git\n```\n\n### Step 2 - Install dependencies\nCreate and activate a virtual environment, then install the template in editable mode with the recommended extras.\n\n```bash\npython3 -m venv psvenv\nsource psvenv/bin/activate\npip install -U pip\npip install -e .[web,gunicorn,tests]\n```\n\n### Step 3 - Run a known-good local check\n\nRun the built-in analyzer checks. You should see a structured result containing a verdict and bid.\n\n```bash\npython -m microenginewebhookspy.engine analyze --check-eicar\n```\n\n### Step 4 - Run tests \n```bash\npytest -v\n```\nIf this passes, you have a working Engine skeleton and test harness.\n\n## What you have now\n\nYou now have an Engine template that:\n- Accepts a bounty object locally\n- Runs an analyzer function\n- Produces a valid assertion payload (verdict, bid, optional metadata)\n- Has unit and integration tests you can build on\n"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/engines/build-and-test/build-your-engine.md","frontmatter":{"title":"Build your Engine","excerpt":"Choose an implementation pattern, branch safely on bounty attributes, and map your detection output to a stable verdict, bid, and metadata."},"html":"<h1 id=\"build-your-engine\" style=\"position:relative;\"><a href=\"#build-your-engine\" aria-label=\"build your engine permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Build your Engine</h1>\n<p>This page explains how to turn the Engine template into a real detection Engine.</p>\n<p>At a high level, your Engine will:</p>\n<ol>\n<li>receive a <strong>bounty</strong> (artifact + rules + deadlines)</li>\n<li>analyze the artifact using your tooling</li>\n<li>\n<p>return an <strong>analysis</strong> response:</p>\n<ul>\n<li><code class=\"language-text\">verdict</code>: <code class=\"language-text\">malicious</code>, <code class=\"language-text\">benign</code>, or <code class=\"language-text\">unknown</code></li>\n<li><code class=\"language-text\">bid</code>: how much NCT you stake (within the bounty bid rules)</li>\n<li><code class=\"language-text\">metadata</code>: optional context (for example <code class=\"language-text\">malware_family</code>, <code class=\"language-text\">confidence</code>)</li>\n</ul>\n</li>\n</ol>\n<blockquote>\n<p><strong>Note</strong>\nSetup and installation steps live in <strong>Quickstart</strong>. This page focuses on implementation patterns and the analyzer logic.</p>\n</blockquote>\n<hr>\n<h2 id=\"core-implementation-point-analyzebounty\" style=\"position:relative;\"><a href=\"#core-implementation-point-analyzebounty\" aria-label=\"core implementation point analyzebounty permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Core implementation point: <code class=\"language-text\">analyze(bounty)</code></h2>\n<p>In the template, the main implementation point is the analyzer function (commonly named <code class=\"language-text\">analyze(bounty)</code>).</p>\n<p>Your analyzer should:</p>\n<ol>\n<li>branch early on artifact type (and other attributes if needed)</li>\n<li>retrieve the artifact (bytes, stream, or temp file path)</li>\n<li>run your detection logic (local tool, service, or remote API)</li>\n<li>map tool output into a stable <code class=\"language-text\">verdict</code>, <code class=\"language-text\">bid</code>, and <code class=\"language-text\">metadata</code></li>\n</ol>\n<hr>\n<h2 id=\"architectures\" style=\"position:relative;\"><a href=\"#architectures\" aria-label=\"architectures permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Architectures</h2>\n<p>Depending on the scanning technology you are using, you will typically implement one of these patterns:</p>\n<ul>\n<li><strong>Command Line Scanner</strong></li>\n<li><strong>Remote API</strong></li>\n<li><strong>Local Service</strong></li>\n</ul>\n<h3 id=\"command-line-scanner\" style=\"position:relative;\"><a href=\"#command-line-scanner\" aria-label=\"command line scanner permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Command Line Scanner</h3>\n<p>If your tool runs via CLI, update <code class=\"language-text\">analyze()</code> to:</p>\n<ol>\n<li>get the artifact (often via a temp file)</li>\n<li>run your CLI tool with a timeout</li>\n<li>parse output to a stable verdict and metadata</li>\n<li>return an analysis dict</li>\n</ol>\n<p>Tips:</p>\n<ul>\n<li>always enforce timeouts</li>\n<li>capture exit codes and stderr</li>\n<li>keep output parsing resilient and consistent</li>\n</ul>\n<h3 id=\"remote-api\" style=\"position:relative;\"><a href=\"#remote-api\" aria-label=\"remote api permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Remote API</h3>\n<p>If your tool is a remote API that accepts files and/or URLs:</p>\n<ol>\n<li>get the bounty (and sometimes the artifact)</li>\n<li>submit an analysis request to the remote API</li>\n<li>poll (or async callback) until completion</li>\n<li>parse results</li>\n<li>return an analysis dict</li>\n</ol>\n<p>A key decision is how to pass file artifacts:</p>\n<ul>\n<li>if the remote API can accept a URL to download the sample, prefer passing <code class=\"language-text\">artifact_uri</code></li>\n<li>otherwise, your Engine will download then upload (slower, more bandwidth)</li>\n</ul>\n<p>For URL artifacts, you can usually pass <code class=\"language-text\">bounty.artifact_uri</code> directly as the scan target.</p>\n<h3 id=\"local-service\" style=\"position:relative;\"><a href=\"#local-service\" aria-label=\"local service permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Local Service</h3>\n<p>If your tool runs locally as a daemon (for example ClamAV):</p>\n<ol>\n<li>download the artifact (bytes or temp file)</li>\n<li>connect to the local service (socket/HTTP)</li>\n<li>send the artifact or path</li>\n<li>parse results</li>\n<li>return an analysis dict</li>\n</ol>\n<p>With local services, you also need surrounding machinery to ensure the service is running before the Engine starts handling bounties.</p>\n<hr>\n<h2 id=\"branching-on-bounty-attributes\" style=\"position:relative;\"><a href=\"#branching-on-bounty-attributes\" aria-label=\"branching on bounty attributes permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Branching on bounty attributes</h2>\n<p>Many Engines need to take different actions based on the bounty contents, for example:</p>\n<ul>\n<li>Engines that process URLs, domains, and IPs differently</li>\n<li>Engines that process both file and URL artifact types</li>\n<li>Engines that only support a limited set of file mimetypes</li>\n</ul>\n<p>The examples below assume <code class=\"language-text\">polyswarm_engine</code> is available as <code class=\"language-text\">ps</code>:</p>\n<div class=\"gatsby-highlight\" data-language=\"py\"><pre class=\"language-py\"><code class=\"language-py\"><span class=\"token keyword\">import</span> polyswarm_engine <span class=\"token keyword\">as</span> ps</code></pre></div>\n<h3 id=\"file-vs-url-artifact-type\" style=\"position:relative;\"><a href=\"#file-vs-url-artifact-type\" aria-label=\"file vs url artifact type permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>File vs URL artifact type</h3>\n<p>Branch early so you either handle the artifact type explicitly or return a safe UNKNOWN response.</p>\n<div class=\"gatsby-highlight\" data-language=\"py\"><pre class=\"language-py\"><code class=\"language-py\"><span class=\"token keyword\">if</span> ps<span class=\"token punctuation\">.</span>is_file_artifact<span class=\"token punctuation\">(</span>bounty<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    do_file<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">else</span><span class=\"token punctuation\">:</span>\n    do_url<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span></code></pre></div>\n<p>If you only support one type, reject the others:</p>\n<div class=\"gatsby-highlight\" data-language=\"py\"><pre class=\"language-py\"><code class=\"language-py\"><span class=\"token keyword\">if</span> <span class=\"token keyword\">not</span> ps<span class=\"token punctuation\">.</span>is_file_artifact<span class=\"token punctuation\">(</span>bounty<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">return</span> ps<span class=\"token punctuation\">.</span>UNSUPPORTED</code></pre></div>\n<h3 id=\"detecting-ip-vs-domain-vs-url\" style=\"position:relative;\"><a href=\"#detecting-ip-vs-domain-vs-url\" aria-label=\"detecting ip vs domain vs url permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Detecting IP vs domain vs URL</h3>\n<p>The bounty does not always indicate whether a URL artifact is an IP, a domain, or a full URL.\nUse <code class=\"language-text\">bounty.artifact_uri</code> as input to your own parsing and branching:</p>\n<div class=\"gatsby-highlight\" data-language=\"py\"><pre class=\"language-py\"><code class=\"language-py\"><span class=\"token keyword\">if</span> ps<span class=\"token punctuation\">.</span>is_url_artifact<span class=\"token punctuation\">(</span>bounty<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    target <span class=\"token operator\">=</span> bounty<span class=\"token punctuation\">.</span>artifact_uri\n    <span class=\"token keyword\">if</span> is_ip<span class=\"token punctuation\">(</span>target<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        do_ip_task<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">elif</span> is_domain<span class=\"token punctuation\">(</span>target<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        do_domain_task<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">else</span><span class=\"token punctuation\">:</span>\n        do_url_task<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span></code></pre></div>\n<h3 id=\"detecting-mimetypes\" style=\"position:relative;\"><a href=\"#detecting-mimetypes\" aria-label=\"detecting mimetypes permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Detecting mimetypes</h3>\n<p>If your Engine only supports specific mimetypes, check before scanning:</p>\n<div class=\"gatsby-highlight\" data-language=\"py\"><pre class=\"language-py\"><code class=\"language-py\">SUPPORTED_MIMETYPES <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"mimetype1\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"mimetype2\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"mimetype3\"</span><span class=\"token punctuation\">]</span>\n\n<span class=\"token keyword\">if</span> ps<span class=\"token punctuation\">.</span>is_file_artifact<span class=\"token punctuation\">(</span>bounty<span class=\"token punctuation\">)</span> <span class=\"token keyword\">and</span> bounty<span class=\"token punctuation\">.</span>mimetype <span class=\"token keyword\">in</span> SUPPORTED_MIMETYPES<span class=\"token punctuation\">:</span>\n    do_file<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">else</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">return</span> ps<span class=\"token punctuation\">.</span>UNSUPPORTED</code></pre></div>\n<hr>\n<h2 id=\"minimal-analyzer-example\" style=\"position:relative;\"><a href=\"#minimal-analyzer-example\" aria-label=\"minimal analyzer example permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Minimal analyzer example</h2>\n<p>Start by branching on artifact type and returning UNKNOWN for anything you do not support.</p>\n<div class=\"gatsby-highlight\" data-language=\"py\"><pre class=\"language-py\"><code class=\"language-py\"><span class=\"token keyword\">import</span> polyswarm_engine <span class=\"token keyword\">as</span> ps\n\n<span class=\"token decorator annotation punctuation\">@engine<span class=\"token punctuation\">.</span>register_analyzer</span>\n<span class=\"token keyword\">def</span> <span class=\"token function\">analyze</span><span class=\"token punctuation\">(</span>bounty<span class=\"token punctuation\">:</span> ps<span class=\"token punctuation\">.</span>Bounty<span class=\"token punctuation\">)</span> <span class=\"token operator\">-</span><span class=\"token operator\">></span> ps<span class=\"token punctuation\">.</span>Analysis<span class=\"token punctuation\">:</span>\n    <span class=\"token comment\"># Only handle file artifacts in this example</span>\n    <span class=\"token keyword\">if</span> <span class=\"token keyword\">not</span> ps<span class=\"token punctuation\">.</span>is_file_artifact<span class=\"token punctuation\">(</span>bounty<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">return</span> ps<span class=\"token punctuation\">.</span>UNSUPPORTED\n\n    <span class=\"token comment\"># Download the artifact to a temporary file for scanners that expect a file path</span>\n    <span class=\"token keyword\">with</span> ps<span class=\"token punctuation\">.</span>ArtifactTempfile<span class=\"token punctuation\">(</span>bounty<span class=\"token punctuation\">)</span> <span class=\"token keyword\">as</span> path<span class=\"token punctuation\">:</span>\n        result <span class=\"token operator\">=</span> my_scanner<span class=\"token punctuation\">(</span>path<span class=\"token punctuation\">)</span>  <span class=\"token comment\"># Replace with your tooling</span>\n\n    <span class=\"token comment\"># Map your scanner output into PolySwarm analysis fields</span>\n    <span class=\"token keyword\">if</span> result<span class=\"token punctuation\">.</span>malicious<span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">return</span> <span class=\"token punctuation\">{</span>\n            <span class=\"token string\">\"verdict\"</span><span class=\"token punctuation\">:</span> ps<span class=\"token punctuation\">.</span>MALICIOUS<span class=\"token punctuation\">,</span>\n            <span class=\"token string\">\"bid\"</span><span class=\"token punctuation\">:</span> ps<span class=\"token punctuation\">.</span>bid_max<span class=\"token punctuation\">(</span>bounty<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n            <span class=\"token string\">\"metadata\"</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">{</span>\n                <span class=\"token string\">\"malware_family\"</span><span class=\"token punctuation\">:</span> result<span class=\"token punctuation\">.</span>family<span class=\"token punctuation\">,</span>\n                <span class=\"token string\">\"confidence\"</span><span class=\"token punctuation\">:</span> <span class=\"token builtin\">float</span><span class=\"token punctuation\">(</span>result<span class=\"token punctuation\">.</span>confidence<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">}</span>\n\n    <span class=\"token keyword\">return</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token string\">\"verdict\"</span><span class=\"token punctuation\">:</span> ps<span class=\"token punctuation\">.</span>BENIGN<span class=\"token punctuation\">,</span>\n        <span class=\"token string\">\"bid\"</span><span class=\"token punctuation\">:</span> ps<span class=\"token punctuation\">.</span>bid_min<span class=\"token punctuation\">(</span>bounty<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n        <span class=\"token string\">\"metadata\"</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">{</span><span class=\"token string\">\"confidence\"</span><span class=\"token punctuation\">:</span> <span class=\"token builtin\">float</span><span class=\"token punctuation\">(</span>result<span class=\"token punctuation\">.</span>confidence<span class=\"token punctuation\">)</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">}</span></code></pre></div>\n<hr>\n<h2 id=\"returning-a-valid-analysis\" style=\"position:relative;\"><a href=\"#returning-a-valid-analysis\" aria-label=\"returning a valid analysis permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Returning a valid analysis</h2>\n<p>Your return payload must validate against the Engine schema rules.</p>\n<h3 id=\"verdict-rules\" style=\"position:relative;\"><a href=\"#verdict-rules\" aria-label=\"verdict rules permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Verdict rules</h3>\n<p>Use verdicts consistently:</p>\n<ul>\n<li><code class=\"language-text\">MALICIOUS</code>: strong detection</li>\n<li><code class=\"language-text\">BENIGN</code>: strong evidence it is clean</li>\n<li><code class=\"language-text\">UNKNOWN</code>: unsupported type, failed processing, timeouts, or low confidence</li>\n</ul>\n<h3 id=\"bid-rules\" style=\"position:relative;\"><a href=\"#bid-rules\" aria-label=\"bid rules permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Bid rules</h3>\n<ul>\n<li>\n<p>If you return <strong>MALICIOUS</strong> or <strong>BENIGN</strong>, your <code class=\"language-text\">bid</code> must be within the bounty range: <code class=\"language-text\">MIN_BID &lt;= bid &lt;= MAX_BID</code>.</p>\n<ul>\n<li><code class=\"language-text\">MIN_BID</code> and <code class=\"language-text\">MAX_BID</code> are provided in the bounty rules for each bounty.</li>\n</ul>\n</li>\n<li>If you return <strong>UNKNOWN</strong> (including <code class=\"language-text\">UNSUPPORTED</code>), your <code class=\"language-text\">bid</code> must be <code class=\"language-text\">0</code>.</li>\n</ul>\n<p>Use helpers like <code class=\"language-text\">ps.bid_min(bounty)</code> and <code class=\"language-text\">ps.bid_max(bounty)</code> to stay inside the range.</p>\n<h3 id=\"metadata-discipline\" style=\"position:relative;\"><a href=\"#metadata-discipline\" aria-label=\"metadata discipline permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Metadata discipline</h3>\n<p>Keep metadata consistent and meaningful:</p>\n<ul>\n<li>include <code class=\"language-text\">malware_family</code> when you have a stable family label</li>\n<li>only include <code class=\"language-text\">confidence</code> if you have a real signal behind it (float <code class=\"language-text\">0.0</code> to <code class=\"language-text\">1.0</code>)</li>\n<li>avoid dumping raw tool output or unbounded strings</li>\n</ul>\n<hr>\n<h2 id=\"bidding\" style=\"position:relative;\"><a href=\"#bidding\" aria-label=\"bidding permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Bidding</h2>\n<p>Bidding expresses confidence with stake.</p>\n<ul>\n<li>start conservative while validating reliability and accuracy</li>\n<li>only increase bids where your signal is stable and repeatable</li>\n<li>always follow the bid rules for the verdict you return</li>\n</ul>\n<p>See <strong>Bidding Strategy</strong> for bid sizing guidance.</p>","rawMarkdownBody":"\n# Build your Engine\n\nThis page explains how to turn the Engine template into a real detection Engine.\n\nAt a high level, your Engine will:\n1. receive a **bounty** (artifact + rules + deadlines)\n2. analyze the artifact using your tooling\n3. return an **analysis** response:\n   - `verdict`: `malicious`, `benign`, or `unknown`\n   - `bid`: how much NCT you stake (within the bounty bid rules)\n   - `metadata`: optional context (for example `malware_family`, `confidence`)\n\n> **Note**\n> Setup and installation steps live in **Quickstart**. This page focuses on implementation patterns and the analyzer logic.\n\n---\n\n## Core implementation point: `analyze(bounty)`\n\nIn the template, the main implementation point is the analyzer function (commonly named `analyze(bounty)`).\n\nYour analyzer should:\n1. branch early on artifact type (and other attributes if needed)\n2. retrieve the artifact (bytes, stream, or temp file path)\n3. run your detection logic (local tool, service, or remote API)\n4. map tool output into a stable `verdict`, `bid`, and `metadata`\n\n---\n\n## Architectures\n\nDepending on the scanning technology you are using, you will typically implement one of these patterns:\n\n- **Command Line Scanner**\n- **Remote API**\n- **Local Service**\n\n### Command Line Scanner\n\nIf your tool runs via CLI, update `analyze()` to:\n1. get the artifact (often via a temp file)\n2. run your CLI tool with a timeout\n3. parse output to a stable verdict and metadata\n4. return an analysis dict\n\nTips:\n- always enforce timeouts\n- capture exit codes and stderr\n- keep output parsing resilient and consistent\n\n### Remote API\n\nIf your tool is a remote API that accepts files and/or URLs:\n1. get the bounty (and sometimes the artifact)\n2. submit an analysis request to the remote API\n3. poll (or async callback) until completion\n4. parse results\n5. return an analysis dict\n\nA key decision is how to pass file artifacts:\n- if the remote API can accept a URL to download the sample, prefer passing `artifact_uri`\n- otherwise, your Engine will download then upload (slower, more bandwidth)\n\nFor URL artifacts, you can usually pass `bounty.artifact_uri` directly as the scan target.\n\n### Local Service\n\nIf your tool runs locally as a daemon (for example ClamAV):\n1. download the artifact (bytes or temp file)\n2. connect to the local service (socket/HTTP)\n3. send the artifact or path\n4. parse results\n5. return an analysis dict\n\nWith local services, you also need surrounding machinery to ensure the service is running before the Engine starts handling bounties.\n\n---\n\n## Branching on bounty attributes\n\nMany Engines need to take different actions based on the bounty contents, for example:\n- Engines that process URLs, domains, and IPs differently\n- Engines that process both file and URL artifact types\n- Engines that only support a limited set of file mimetypes\n\nThe examples below assume `polyswarm_engine` is available as `ps`:\n\n```py\nimport polyswarm_engine as ps\n```\n\n### File vs URL artifact type\n\nBranch early so you either handle the artifact type explicitly or return a safe UNKNOWN response.\n\n```py\nif ps.is_file_artifact(bounty):\n    do_file()\nelse:\n    do_url()\n```\n\nIf you only support one type, reject the others:\n\n```py\nif not ps.is_file_artifact(bounty):\n    return ps.UNSUPPORTED\n```\n\n### Detecting IP vs domain vs URL\n\nThe bounty does not always indicate whether a URL artifact is an IP, a domain, or a full URL.\nUse `bounty.artifact_uri` as input to your own parsing and branching:\n\n```py\nif ps.is_url_artifact(bounty):\n    target = bounty.artifact_uri\n    if is_ip(target):\n        do_ip_task()\n    elif is_domain(target):\n        do_domain_task()\n    else:\n        do_url_task()\n```\n\n### Detecting mimetypes\n\nIf your Engine only supports specific mimetypes, check before scanning:\n\n```py\nSUPPORTED_MIMETYPES = [\"mimetype1\", \"mimetype2\", \"mimetype3\"]\n\nif ps.is_file_artifact(bounty) and bounty.mimetype in SUPPORTED_MIMETYPES:\n    do_file()\nelse:\n    return ps.UNSUPPORTED\n```\n\n---\n\n## Minimal analyzer example\n\nStart by branching on artifact type and returning UNKNOWN for anything you do not support.\n\n```py\nimport polyswarm_engine as ps\n\n@engine.register_analyzer\ndef analyze(bounty: ps.Bounty) -> ps.Analysis:\n    # Only handle file artifacts in this example\n    if not ps.is_file_artifact(bounty):\n        return ps.UNSUPPORTED\n\n    # Download the artifact to a temporary file for scanners that expect a file path\n    with ps.ArtifactTempfile(bounty) as path:\n        result = my_scanner(path)  # Replace with your tooling\n\n    # Map your scanner output into PolySwarm analysis fields\n    if result.malicious:\n        return {\n            \"verdict\": ps.MALICIOUS,\n            \"bid\": ps.bid_max(bounty),\n            \"metadata\": {\n                \"malware_family\": result.family,\n                \"confidence\": float(result.confidence),\n            },\n        }\n\n    return {\n        \"verdict\": ps.BENIGN,\n        \"bid\": ps.bid_min(bounty),\n        \"metadata\": {\"confidence\": float(result.confidence)},\n    }\n```\n\n---\n\n## Returning a valid analysis\n\nYour return payload must validate against the Engine schema rules.\n\n### Verdict rules\n\nUse verdicts consistently:\n- `MALICIOUS`: strong detection\n- `BENIGN`: strong evidence it is clean\n- `UNKNOWN`: unsupported type, failed processing, timeouts, or low confidence\n\n### Bid rules\n\n- If you return **MALICIOUS** or **BENIGN**, your `bid` must be within the bounty range: `MIN_BID <= bid <= MAX_BID`.\n  - `MIN_BID` and `MAX_BID` are provided in the bounty rules for each bounty.\n- If you return **UNKNOWN** (including `UNSUPPORTED`), your `bid` must be `0`.\n\nUse helpers like `ps.bid_min(bounty)` and `ps.bid_max(bounty)` to stay inside the range.\n\n### Metadata discipline\n\nKeep metadata consistent and meaningful:\n- include `malware_family` when you have a stable family label\n- only include `confidence` if you have a real signal behind it (float `0.0` to `1.0`)\n- avoid dumping raw tool output or unbounded strings\n\n---\n\n## Bidding\n\nBidding expresses confidence with stake.\n- start conservative while validating reliability and accuracy\n- only increase bids where your signal is stable and repeatable\n- always follow the bid rules for the verdict you return\n\nSee **Bidding Strategy** for bid sizing guidance.\n"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/engines/reference/polyswarm-engine-package-reference.md","frontmatter":{"title":"Polyswarm-engine package reference","excerpt":"A practical guide to the helpers, types, and utilities used in Engine code."},"html":"<h1 id=\"polyswarm_engine-package-reference\" style=\"position:relative;\"><a href=\"#polyswarm_engine-package-reference\" aria-label=\"polyswarm_engine package reference permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><code class=\"language-text\">polyswarm_engine</code> package reference</h1>\n<p><code class=\"language-text\">polyswarm_engine</code> is a helper library for building PolySwarm Engines. It is designed to make it easy to:</p>\n<ul>\n<li>receive a bounty payload (artifact to analyze)</li>\n<li>fetch the artifact safely (bytes, stream, or temp file)</li>\n<li>return a correctly formatted analysis (verdict, bid, metadata)</li>\n<li>use common bidding helpers (min, max, rescale, NCT to wei)</li>\n</ul>\n<p>This page is a practical overview of the parts most Engine partners use.</p>\n<h2 id=\"core-types\" style=\"position:relative;\"><a href=\"#core-types\" aria-label=\"core types permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Core types</h2>\n<h3 id=\"bounty\" style=\"position:relative;\"><a href=\"#bounty\" aria-label=\"bounty permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><code class=\"language-text\">Bounty</code></h3>\n<p>A <code class=\"language-text\">Bounty</code> represents an incoming request to analyze an artifact. It includes the artifact type, where to download it, where to send your response, the expiration deadline, and bid rules.</p>\n<p>Typical fields you will use:</p>\n<ul>\n<li><code class=\"language-text\">artifact_type</code> (example: <code class=\"language-text\">FILE</code> or <code class=\"language-text\">URL</code>)</li>\n<li><code class=\"language-text\">artifact_uri</code> (where to fetch the artifact)</li>\n<li><code class=\"language-text\">response_uri</code> or <code class=\"language-text\">response_url</code> (where to send your analysis)</li>\n<li><code class=\"language-text\">expiration</code> (deadline)</li>\n<li><code class=\"language-text\">rules</code> (includes <code class=\"language-text\">min_allowed_bid</code>, <code class=\"language-text\">max_allowed_bid</code>)</li>\n<li><code class=\"language-text\">phase</code> (example: <code class=\"language-text\">assertion</code> or <code class=\"language-text\">arbitration</code>)</li>\n<li><code class=\"language-text\">sha256</code>, <code class=\"language-text\">mimetype</code> (commonly present for file artifacts)</li>\n</ul>\n<p>Your analyzer function receives a <code class=\"language-text\">Bounty</code> as input.</p>\n<h3 id=\"analysis\" style=\"position:relative;\"><a href=\"#analysis\" aria-label=\"analysis permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><code class=\"language-text\">Analysis</code></h3>\n<p>An <code class=\"language-text\">Analysis</code> is what your Engine returns. The minimum expected shape is:</p>\n<ul>\n<li><code class=\"language-text\">verdict</code>: <code class=\"language-text\">malicious</code>, <code class=\"language-text\">benign</code>, <code class=\"language-text\">suspicious</code>, or <code class=\"language-text\">unknown</code></li>\n<li><code class=\"language-text\">bid</code>: integer in <strong>NCT-wei</strong></li>\n<li><code class=\"language-text\">metadata</code>: optional object with extra context</li>\n</ul>\n<p>Example:</p>\n<div class=\"gatsby-highlight\" data-language=\"py\"><pre class=\"language-py\"><code class=\"language-py\"><span class=\"token keyword\">return</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token string\">\"verdict\"</span><span class=\"token punctuation\">:</span> ps<span class=\"token punctuation\">.</span>MALICIOUS<span class=\"token punctuation\">,</span>\n  <span class=\"token string\">\"bid\"</span><span class=\"token punctuation\">:</span> ps<span class=\"token punctuation\">.</span>bid_max<span class=\"token punctuation\">(</span>bounty<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n  <span class=\"token string\">\"metadata\"</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token string\">\"malware_family\"</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"ExampleFamily\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token string\">\"confidence\"</span><span class=\"token punctuation\">:</span> <span class=\"token number\">0.92</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<h2 id=\"engine-registration\" style=\"position:relative;\"><a href=\"#engine-registration\" aria-label=\"engine registration permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Engine registration</h2>\n<h3 id=\"enginemanager\" style=\"position:relative;\"><a href=\"#enginemanager\" aria-label=\"enginemanager permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><code class=\"language-text\">EngineManager</code></h3>\n<p>You typically register two functions:</p>\n<ol>\n<li><code class=\"language-text\">@engine.register_head</code>\nUse this to attach static metadata once, then re-use it on every analysis.</li>\n<li><code class=\"language-text\">@engine.register_analyzer</code>\nThis is your main scanning function. It runs once per bounty.</li>\n</ol>\n<p>Example:</p>\n<div class=\"gatsby-highlight\" data-language=\"py\"><pre class=\"language-py\"><code class=\"language-py\"><span class=\"token keyword\">import</span> polyswarm_engine <span class=\"token keyword\">as</span> ps\n\nengine <span class=\"token operator\">=</span> ps<span class=\"token punctuation\">.</span>EngineManager<span class=\"token punctuation\">(</span>name<span class=\"token operator\">=</span><span class=\"token string\">\"my-engine\"</span><span class=\"token punctuation\">,</span> vendor<span class=\"token operator\">=</span><span class=\"token string\">\"my-company\"</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token decorator annotation punctuation\">@engine<span class=\"token punctuation\">.</span>register_head</span>\n<span class=\"token keyword\">def</span> <span class=\"token function\">head</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">-</span><span class=\"token operator\">></span> <span class=\"token builtin\">dict</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">return</span> <span class=\"token punctuation\">{</span><span class=\"token string\">\"scanner\"</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">{</span><span class=\"token string\">\"version\"</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"1.0.0\"</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">}</span>\n\n<span class=\"token decorator annotation punctuation\">@engine<span class=\"token punctuation\">.</span>register_analyzer</span>\n<span class=\"token keyword\">def</span> <span class=\"token function\">analyze</span><span class=\"token punctuation\">(</span>bounty<span class=\"token punctuation\">:</span> ps<span class=\"token punctuation\">.</span>Bounty<span class=\"token punctuation\">)</span> <span class=\"token operator\">-</span><span class=\"token operator\">></span> ps<span class=\"token punctuation\">.</span>Analysis<span class=\"token punctuation\">:</span>\n    <span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span></code></pre></div>\n<h2 id=\"fetching-artifacts\" style=\"position:relative;\"><a href=\"#fetching-artifacts\" aria-label=\"fetching artifacts permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Fetching artifacts</h2>\n<h3 id=\"get_artifact_bytesbounty\" style=\"position:relative;\"><a href=\"#get_artifact_bytesbounty\" aria-label=\"get_artifact_bytesbounty permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><code class=\"language-text\">get_artifact_bytes(bounty)</code></h3>\n<p>Downloads the artifact and returns <code class=\"language-text\">bytes</code>. Best for small files or simple logic.</p>\n<div class=\"gatsby-highlight\" data-language=\"py\"><pre class=\"language-py\"><code class=\"language-py\">content <span class=\"token operator\">=</span> ps<span class=\"token punctuation\">.</span>get_artifact_bytes<span class=\"token punctuation\">(</span>bounty<span class=\"token punctuation\">)</span></code></pre></div>\n<h3 id=\"get_artifact_streambounty\" style=\"position:relative;\"><a href=\"#get_artifact_streambounty\" aria-label=\"get_artifact_streambounty permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><code class=\"language-text\">get_artifact_stream(bounty)</code></h3>\n<p>Returns a stream-like object so you can forward the artifact to an external service without loading it all into memory.</p>\n<div class=\"gatsby-highlight\" data-language=\"py\"><pre class=\"language-py\"><code class=\"language-py\">stream <span class=\"token operator\">=</span> ps<span class=\"token punctuation\">.</span>get_artifact_stream<span class=\"token punctuation\">(</span>bounty<span class=\"token punctuation\">)</span></code></pre></div>\n<h3 id=\"artifacttempfilebounty\" style=\"position:relative;\"><a href=\"#artifacttempfilebounty\" aria-label=\"artifacttempfilebounty permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><code class=\"language-text\">ArtifactTempfile(bounty)</code></h3>\n<p>Recommended for file-path tools, it downloads to a temp file and cleans up automatically.</p>\n<div class=\"gatsby-highlight\" data-language=\"py\"><pre class=\"language-py\"><code class=\"language-py\"><span class=\"token keyword\">with</span> ps<span class=\"token punctuation\">.</span>ArtifactTempfile<span class=\"token punctuation\">(</span>bounty<span class=\"token punctuation\">)</span> <span class=\"token keyword\">as</span> filepath<span class=\"token punctuation\">:</span>\n    run_my_scanner<span class=\"token punctuation\">(</span>filepath<span class=\"token punctuation\">)</span></code></pre></div>\n<h2 id=\"artifact-type-helpers\" style=\"position:relative;\"><a href=\"#artifact-type-helpers\" aria-label=\"artifact type helpers permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Artifact type helpers</h2>\n<p>Use these to safely reject unsupported artifact types:</p>\n<div class=\"gatsby-highlight\" data-language=\"py\"><pre class=\"language-py\"><code class=\"language-py\"><span class=\"token keyword\">if</span> <span class=\"token keyword\">not</span> ps<span class=\"token punctuation\">.</span>is_file_artifact<span class=\"token punctuation\">(</span>bounty<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">return</span> ps<span class=\"token punctuation\">.</span>UNSUPPORTED</code></pre></div>\n<p>Common helpers:</p>\n<ul>\n<li><code class=\"language-text\">is_file_artifact(bounty)</code></li>\n<li><code class=\"language-text\">is_url_artifact(bounty)</code></li>\n</ul>\n<h2 id=\"verdicts-and-bid-rules\" style=\"position:relative;\"><a href=\"#verdicts-and-bid-rules\" aria-label=\"verdicts and bid rules permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Verdicts and bid rules</h2>\n<p>Use these verdict meanings consistently. Bid rules are enforced by the bounty bid range in the engine webhook payload (<code class=\"language-text\">min_allowed_bid</code> and <code class=\"language-text\">max_allowed_bid</code>).</p>\n<ul>\n<li><code class=\"language-text\">MALICIOUS</code>: strong detection, provide <code class=\"language-text\">malware_family</code> when possible\nBid must be <strong>within</strong> <code class=\"language-text\">min_allowed_bid</code> and <code class=\"language-text\">max_allowed_bid</code> (bid cannot be <code class=\"language-text\">0</code>)</li>\n<li><code class=\"language-text\">BENIGN</code>: strong evidence it is clean\nBid must be <strong>within</strong> <code class=\"language-text\">min_allowed_bid</code> and <code class=\"language-text\">max_allowed_bid</code> (bid cannot be <code class=\"language-text\">0</code>)</li>\n<li><code class=\"language-text\">SUSPICIOUS</code>: weak indicators, informational only\nBid must be <strong>0</strong></li>\n<li><code class=\"language-text\">UNKNOWN</code>: unsupported, failed processing, timeouts, or low confidence\nBid must be <strong>0</strong></li>\n</ul>\n<p>If you cannot justify a bid within the allowed range, return <code class=\"language-text\">UNKNOWN</code> instead.</p>\n<h3 id=\"pre-built-unknown-responses\" style=\"position:relative;\"><a href=\"#pre-built-unknown-responses\" aria-label=\"pre built unknown responses permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Pre-built UNKNOWN responses</h3>\n<p><code class=\"language-text\">polyswarm_engine</code> includes standard UNKNOWN responses for common cases:</p>\n<ul>\n<li><code class=\"language-text\">ps.SKIPPED</code></li>\n<li><code class=\"language-text\">ps.ENCRYPTED</code></li>\n<li><code class=\"language-text\">ps.UNSAFE_DECOMPRESSION</code></li>\n<li><code class=\"language-text\">ps.UNSUPPORTED</code></li>\n<li><code class=\"language-text\">ps.CANNOT_FETCH</code></li>\n</ul>\n<p>These are useful to avoid boilerplate and keep behaviour consistent.</p>\n<h2 id=\"bidding-helpers\" style=\"position:relative;\"><a href=\"#bidding-helpers\" aria-label=\"bidding helpers permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Bidding helpers</h2>\n<p>Bids are integers in <strong>NCT-wei</strong>.</p>\n<p>Useful helpers:</p>\n<ul>\n<li><code class=\"language-text\">bid_min(bounty)</code></li>\n<li><code class=\"language-text\">bid_max(bounty)</code></li>\n<li><code class=\"language-text\">bid_range(bounty)</code></li>\n<li><code class=\"language-text\">bid_median(bounty)</code></li>\n<li><code class=\"language-text\">rescale_to_bid(bounty, value, min=0, max=100)</code></li>\n<li><code class=\"language-text\">to_wei(nct_amount)</code></li>\n</ul>\n<p>Example, scale a confidence score into the bounty bid range:</p>\n<div class=\"gatsby-highlight\" data-language=\"py\"><pre class=\"language-py\"><code class=\"language-py\">score <span class=\"token operator\">=</span> <span class=\"token number\">85</span>\nbid <span class=\"token operator\">=</span> ps<span class=\"token punctuation\">.</span>rescale_to_bid<span class=\"token punctuation\">(</span>bounty<span class=\"token punctuation\">,</span> score<span class=\"token punctuation\">,</span> <span class=\"token builtin\">min</span><span class=\"token operator\">=</span><span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token builtin\">max</span><span class=\"token operator\">=</span><span class=\"token number\">100</span><span class=\"token punctuation\">)</span></code></pre></div>\n<h2 id=\"best-practice-summary\" style=\"position:relative;\"><a href=\"#best-practice-summary\" aria-label=\"best practice summary permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Best practice summary</h2>\n<ul>\n<li>return <code class=\"language-text\">202 Accepted</code> quickly at the engine webhook layer, scan in a worker</li>\n<li>return <code class=\"language-text\">UNKNOWN</code> for unsupported types, failures, and timeouts</li>\n<li>keep metadata stable and meaningful, avoid dumping raw tool strings</li>\n<li>keep bidding aligned with confidence, start conservative</li>\n</ul>","rawMarkdownBody":"\n# `polyswarm_engine` package reference\n\n`polyswarm_engine` is a helper library for building PolySwarm Engines. It is designed to make it easy to:\n\n- receive a bounty payload (artifact to analyze)\n- fetch the artifact safely (bytes, stream, or temp file)\n- return a correctly formatted analysis (verdict, bid, metadata)\n- use common bidding helpers (min, max, rescale, NCT to wei)\n\nThis page is a practical overview of the parts most Engine partners use.\n\n## Core types\n\n### `Bounty`\nA `Bounty` represents an incoming request to analyze an artifact. It includes the artifact type, where to download it, where to send your response, the expiration deadline, and bid rules.\n\nTypical fields you will use:\n- `artifact_type` (example: `FILE` or `URL`)\n- `artifact_uri` (where to fetch the artifact)\n- `response_uri` or `response_url` (where to send your analysis)\n- `expiration` (deadline)\n- `rules` (includes `min_allowed_bid`, `max_allowed_bid`)\n- `phase` (example: `assertion` or `arbitration`)\n- `sha256`, `mimetype` (commonly present for file artifacts)\n\nYour analyzer function receives a `Bounty` as input.\n\n### `Analysis`\nAn `Analysis` is what your Engine returns. The minimum expected shape is:\n\n- `verdict`: `malicious`, `benign`, `suspicious`, or `unknown`\n- `bid`: integer in **NCT-wei**\n- `metadata`: optional object with extra context\n\nExample:\n\n```py\nreturn {\n  \"verdict\": ps.MALICIOUS,\n  \"bid\": ps.bid_max(bounty),\n  \"metadata\": {\n    \"malware_family\": \"ExampleFamily\",\n    \"confidence\": 0.92\n  }\n}\n```\n\n## Engine registration\n\n### `EngineManager`\nYou typically register two functions:\n\n1. `@engine.register_head`\n   Use this to attach static metadata once, then re-use it on every analysis.\n\n2. `@engine.register_analyzer`\n   This is your main scanning function. It runs once per bounty.\n\nExample:\n\n```py\nimport polyswarm_engine as ps\n\nengine = ps.EngineManager(name=\"my-engine\", vendor=\"my-company\")\n\n@engine.register_head\ndef head() -> dict:\n    return {\"scanner\": {\"version\": \"1.0.0\"}}\n\n@engine.register_analyzer\ndef analyze(bounty: ps.Bounty) -> ps.Analysis:\n    ...\n```\n\n## Fetching artifacts\n\n### `get_artifact_bytes(bounty)`\nDownloads the artifact and returns `bytes`. Best for small files or simple logic.\n\n```py\ncontent = ps.get_artifact_bytes(bounty)\n```\n\n### `get_artifact_stream(bounty)`\nReturns a stream-like object so you can forward the artifact to an external service without loading it all into memory.\n\n```py\nstream = ps.get_artifact_stream(bounty)\n```\n\n### `ArtifactTempfile(bounty)`\nRecommended for file-path tools, it downloads to a temp file and cleans up automatically.\n\n```py\nwith ps.ArtifactTempfile(bounty) as filepath:\n    run_my_scanner(filepath)\n```\n\n## Artifact type helpers\n\nUse these to safely reject unsupported artifact types:\n\n```py\nif not ps.is_file_artifact(bounty):\n    return ps.UNSUPPORTED\n```\n\nCommon helpers:\n- `is_file_artifact(bounty)`\n- `is_url_artifact(bounty)`\n\n## Verdicts and bid rules\n\nUse these verdict meanings consistently. Bid rules are enforced by the bounty bid range in the engine webhook payload (`min_allowed_bid` and `max_allowed_bid`).\n\n- `MALICIOUS`: strong detection, provide `malware_family` when possible\n  Bid must be **within** `min_allowed_bid` and `max_allowed_bid` (bid cannot be `0`)\n\n- `BENIGN`: strong evidence it is clean\n  Bid must be **within** `min_allowed_bid` and `max_allowed_bid` (bid cannot be `0`)\n\n- `SUSPICIOUS`: weak indicators, informational only\n  Bid must be **0**\n\n- `UNKNOWN`: unsupported, failed processing, timeouts, or low confidence\n  Bid must be **0**\n\nIf you cannot justify a bid within the allowed range, return `UNKNOWN` instead.\n\n### Pre-built UNKNOWN responses\n`polyswarm_engine` includes standard UNKNOWN responses for common cases:\n\n- `ps.SKIPPED`\n- `ps.ENCRYPTED`\n- `ps.UNSAFE_DECOMPRESSION`\n- `ps.UNSUPPORTED`\n- `ps.CANNOT_FETCH`\n\nThese are useful to avoid boilerplate and keep behaviour consistent.\n\n## Bidding helpers\n\nBids are integers in **NCT-wei**.\n\nUseful helpers:\n- `bid_min(bounty)`\n- `bid_max(bounty)`\n- `bid_range(bounty)`\n- `bid_median(bounty)`\n- `rescale_to_bid(bounty, value, min=0, max=100)`\n- `to_wei(nct_amount)`\n\nExample, scale a confidence score into the bounty bid range:\n\n```py\nscore = 85\nbid = ps.rescale_to_bid(bounty, score, min=0, max=100)\n```\n\n## Best practice summary\n\n- return `202 Accepted` quickly at the engine webhook layer, scan in a worker\n- return `UNKNOWN` for unsupported types, failures, and timeouts\n- keep metadata stable and meaningful, avoid dumping raw tool strings\n- keep bidding aligned with confidence, start conservative\n"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/customers/tutorial/polyswarm-customer-tutorials-zoom.md","frontmatter":{"title":"Hunting Zoom-Related Malware","excerpt":"A page dedicated to tutorials for polyswarm"},"html":"<h1 id=\"hunting-zoom-related-malware\" style=\"position:relative;\"><a href=\"#hunting-zoom-related-malware\" aria-label=\"hunting zoom related malware permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Hunting Zoom-Related Malware</h1>\n<p>This tutorial will focus on how to use PolySwarm to hunt for Windows samples that potentially related to Zoom.</p>\n<p>TrendMicro recently published <a href=\"https://blog.trendmicro.com/trendlabs-security-intelligence/zoomed-in-a-look-into-a-coinminer-bundled-with-zoom-installer/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">a blog post</a> on some malware exploiting the rise in Zoom popularity.</p>\n<p>After review the article, this malware:</p>\n<ul>\n<li>is a Powershell script,</li>\n<li>that embeds a <a href=\"https://www.7-zip.org/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">7zip</a> extractor, and</li>\n<li>7zip-compressed <a href=\"https://www.torproject.org/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Tor</a>, coinminer (the actual malware) and (legitimate) Zoom installers</li>\n</ul>\n<p>The malware will cause the victim machine to mine cryptocurrency if the infected computer is powerful enough (notably, has a discrete GPU) over Tor.</p>\n<p>TrendMicro published a handful of IOCs, including a C2 URL: <code class=\"language-text\">https://2no.co/1O5aW</code>.</p>\n<p>Use Metadata search to find Artifacts that contain this URL:</p>\n<ul>\n<li>via the CLI: <code class=\"language-text\">polyswarm search metadata 'strings.urls:*2no.co*1O5aW'</code></li>\n<li>via the Python library:</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">query <span class=\"token operator\">=</span> <span class=\"token string\">'strings.urls:*2no.co*1O5aW'</span>\n\nresults <span class=\"token operator\">=</span> api<span class=\"token punctuation\">.</span>search_by_metadata<span class=\"token punctuation\">(</span>query<span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">for</span> result <span class=\"token keyword\">in</span> results<span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f\"Artifact Attributes: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>result<span class=\"token punctuation\">.</span>artifact<span class=\"token punctuation\">}</span></span><span class=\"token string\">\"</span></span><span class=\"token punctuation\">)</span></code></pre></div>\n<p>We get <a href=\"https://polyswarm.network/scan/results/file/ef794ceaf0e181b2ed041374dcd09d9a64c3dd3087c2974c38dd387739646fce\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">1 result</a>, which was not part of the IOCs published by TrendMicro, but is clearly a PowerShell script exactly as described in their blog!</p>","rawMarkdownBody":"\n# Hunting Zoom-Related Malware\n\nThis tutorial will focus on how to use PolySwarm to hunt for Windows samples that potentially related to Zoom.\n\nTrendMicro recently published [a blog post](https://blog.trendmicro.com/trendlabs-security-intelligence/zoomed-in-a-look-into-a-coinminer-bundled-with-zoom-installer/) on some malware exploiting the rise in Zoom popularity.\n\nAfter review the article, this malware:\n* is a Powershell script,\n* that embeds a [7zip](https://www.7-zip.org/) extractor, and\n* 7zip-compressed [Tor](https://www.torproject.org/), coinminer (the actual malware) and (legitimate) Zoom installers\n\nThe malware will cause the victim machine to mine cryptocurrency if the infected computer is powerful enough (notably, has a discrete GPU) over Tor.\n\nTrendMicro published a handful of IOCs, including a C2 URL: `https://2no.co/1O5aW`.\n\nUse Metadata search to find Artifacts that contain this URL:\n* via the CLI: `polyswarm search metadata 'strings.urls:*2no.co*1O5aW'`\n* via the Python library:\n\n```python\nquery = 'strings.urls:*2no.co*1O5aW'\n\nresults = api.search_by_metadata(query)\n\nfor result in results:\n    print(f\"Artifact Attributes: {result.artifact}\")\n```\n\nWe get [1 result](https://polyswarm.network/scan/results/file/ef794ceaf0e181b2ed041374dcd09d9a64c3dd3087c2974c38dd387739646fce), which was not part of the IOCs published by TrendMicro, but is clearly a PowerShell script exactly as described in their blog!"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/engines/proposal-and-account-setup/propose-new-engine.md","frontmatter":{"title":"Propose a New Engine","excerpt":"How to submit an Engine proposal, what information we need, and what happens next."},"html":"<h1 id=\"propose-a-new-engine\" style=\"position:relative;\"><a href=\"#propose-a-new-engine\" aria-label=\"propose a new engine permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Propose a New Engine</h1>\n<p>If you would like to add a new Engine to the PolySwarm Marketplace, you can submit an Engine proposal from the PolySwarm UI below.</p>\n<button>\n  <a href=\"https://polyswarm.network/engines\" target=\"_blank\" rel=\"noopener noreferrer\">\n    Propose a New Engine\n  </a>\n</button>\n<p>This page explains what information we need, what happens after you submit, and how you move from proposal to a verified Engine.</p>\n<h2 id=\"submission-process\" style=\"position:relative;\"><a href=\"#submission-process\" aria-label=\"submission process permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Submission Process</h2>\n<p>This is the end-to-end path for submitting your proposal and onboarding your Engine.</p>\n<h3 id=\"submit-an-engine-proposal\" style=\"position:relative;\"><a href=\"#submit-an-engine-proposal\" aria-label=\"submit an engine proposal permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><strong>Submit an Engine proposal</strong></h3>\n<ol>\n<li>Provide a short overview of what your Engine detects, how it works, and where it adds value.</li>\n<li>Submit via the PolySwarm UI: <strong><a href=\"https://polyswarm.network/engines\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Engines</a></strong></li>\n</ol>\n<h3 id=\"polyswarm-review\" style=\"position:relative;\"><a href=\"#polyswarm-review\" aria-label=\"polyswarm review permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><strong>PolySwarm review</strong></h3>\n<ol>\n<li>We review your submission against marketplace guidelines and expected value for users.</li>\n<li>\n<p>Outcome is one of:</p>\n<ul>\n<li><strong>Approved</strong>: move to onboarding</li>\n<li><strong>Not approved</strong>: we respond with the reason and next steps</li>\n</ul>\n</li>\n</ol>\n<h3 id=\"onboarding\" style=\"position:relative;\"><a href=\"#onboarding\" aria-label=\"onboarding permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><strong>Onboarding</strong></h3>\n<ol>\n<li>Complete <strong>KYC</strong> to confirm who owns and operates the Engine.</li>\n<li>Sign the <strong>Engine Provider Agreement</strong> (required before provisioning).</li>\n<li>\n<p>Confirm the technical deployment model:</p>\n<ul>\n<li><strong>PolySwarm-hosted</strong> (we host your Engine)</li>\n<li><strong>Partner-hosted</strong> (you host your Engine and expose an engine webhook service)</li>\n</ul>\n</li>\n</ol>","rawMarkdownBody":"\n# Propose a New Engine\n\nIf you would like to add a new Engine to the PolySwarm Marketplace, you can submit an Engine proposal from the PolySwarm UI below.\n\n<button>\n  <a href=\"https://polyswarm.network/engines\" target=\"_blank\" rel=\"noopener noreferrer\">\n    Propose a New Engine\n  </a>\n</button>\n\nThis page explains what information we need, what happens after you submit, and how you move from proposal to a verified Engine.\n\n## Submission Process\n\nThis is the end-to-end path for submitting your proposal and onboarding your Engine.\n\n### **Submit an Engine proposal**\n\n   1. Provide a short overview of what your Engine detects, how it works, and where it adds value.\n   2. Submit via the PolySwarm UI: **[Engines](https://polyswarm.network/engines)**\n\n### **PolySwarm review**\n\n   1. We review your submission against marketplace guidelines and expected value for users.\n   2. Outcome is one of:\n\n     * **Approved**: move to onboarding\n     * **Not approved**: we respond with the reason and next steps\n\n### **Onboarding**\n\n   1. Complete **KYC** to confirm who owns and operates the Engine.\n   2. Sign the **Engine Provider Agreement** (required before provisioning).\n   3. Confirm the technical deployment model:\n\n     * **PolySwarm-hosted** (we host your Engine)\n     * **Partner-hosted** (you host your Engine and expose an engine webhook service)\n"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/engines/operate-and-optimise/nct-management.md","frontmatter":{"title":"NCT Management","excerpt":"Monitor and maintain wallet balance so you can keep bidding through the arbitration window."},"html":"<h1 id=\"nct-management\" style=\"position:relative;\"><a href=\"#nct-management\" aria-label=\"nct management permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>NCT Management</h1>\n<p>NCT management is keeping your Engine funded so it can bid consistently, and avoiding unexpected downtime from insufficient balance.</p>\n<h2 id=\"what-affects-your-balance\" style=\"position:relative;\"><a href=\"#what-affects-your-balance\" aria-label=\"what affects your balance permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What Affects your Balance?</h2>\n<p><strong>Bids</strong></p>\n<ul>\n<li>When you place a bid, that amount is deducted from your Engine wallet.</li>\n<li>If the wallet cannot cover the bid, your participation may be reduced or treated as bid 0.</li>\n</ul>\n<p><strong>Rewards and penalties</strong></p>\n<ul>\n<li>Rewards arrive after arbitration, typically on a delay of weeks.</li>\n<li>That delay means your wallet must fund bids until rewards are paid out.</li>\n</ul>\n<p><strong>Deposits</strong></p>\n<ul>\n<li>Add NCT to your Engine wallet via the deposit address shown in the PolySwarm UI.</li>\n</ul>\n<p><strong>Withdrawals</strong></p>\n<ul>\n<li>Reduce wallet balance immediately when initiated.</li>\n</ul>\n<h2 id=\"operating-checklist\" style=\"position:relative;\"><a href=\"#operating-checklist\" aria-label=\"operating checklist permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Operating Checklist</h2>\n<h3 id=\"1-choose-a-target-minimum-balance\" style=\"position:relative;\"><a href=\"#1-choose-a-target-minimum-balance\" aria-label=\"1 choose a target minimum balance permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>1. Choose a target minimum balance</h3>\n<p>Pick a minimum balance that covers at least the arbitration window for your expected bidding rate.</p>\n<p>A practical estimate:</p>\n<ul>\n<li>Daily bounties you bid on</li>\n<li>Average bid size</li>\n<li>Arbitration window duration</li>\n</ul>\n<h3 id=\"2-monitor-balance-and-set-a-refill-threshold\" style=\"position:relative;\"><a href=\"#2-monitor-balance-and-set-a-refill-threshold\" aria-label=\"2 monitor balance and set a refill threshold permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>2. Monitor balance and set a refill threshold</h3>\n<p>Decide a refill point such as:</p>\n<ul>\n<li>“top up when balance drops below X”</li>\n<li>“top up weekly if below X”</li>\n</ul>\n<h3 id=\"3-match-bidding-to-wallet-reality\" style=\"position:relative;\"><a href=\"#3-match-bidding-to-wallet-reality\" aria-label=\"3 match bidding to wallet reality permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>3. Match bidding to wallet reality</h3>\n<p>If your balance is low:</p>\n<ul>\n<li>Reduce bids temporarily</li>\n<li>Bid only on your strongest signal areas</li>\n<li>Return UNKNOWN on anything uncertain</li>\n</ul>\n<h3 id=\"4-avoid-sudden-bid-spikes\" style=\"position:relative;\"><a href=\"#4-avoid-sudden-bid-spikes\" aria-label=\"4 avoid sudden bid spikes permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>4. Avoid sudden bid spikes</h3>\n<p>Bid spikes can drain your wallet quickly and create a stop-start Engine. Keep bids stable and increase gradually.</p>\n<h2 id=\"signs-you-need-to-adjust\" style=\"position:relative;\"><a href=\"#signs-you-need-to-adjust\" aria-label=\"signs you need to adjust permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Signs you need to adjust</h2>\n<ul>\n<li>Wallet drops rapidly day over day</li>\n<li>You stop participating due to insufficient bid funds</li>\n<li>You are overbidding relative to confidence</li>\n<li>Your configured rate limit is too high for your current funding level</li>\n</ul>","rawMarkdownBody":"\n# NCT Management\n\nNCT management is keeping your Engine funded so it can bid consistently, and avoiding unexpected downtime from insufficient balance.\n\n## What Affects your Balance?\n\n**Bids**\n\n   - When you place a bid, that amount is deducted from your Engine wallet.\n   - If the wallet cannot cover the bid, your participation may be reduced or treated as bid 0.\n\n**Rewards and penalties**\n\n   - Rewards arrive after arbitration, typically on a delay of weeks.\n   - That delay means your wallet must fund bids until rewards are paid out.\n\n**Deposits**\n\n   - Add NCT to your Engine wallet via the deposit address shown in the PolySwarm UI.\n\n**Withdrawals**\n\n   - Reduce wallet balance immediately when initiated.\n\n## Operating Checklist\n\n### 1. Choose a target minimum balance\nPick a minimum balance that covers at least the arbitration window for your expected bidding rate.\n\nA practical estimate:\n- Daily bounties you bid on\n- Average bid size\n- Arbitration window duration\n\n### 2. Monitor balance and set a refill threshold\nDecide a refill point such as:\n- “top up when balance drops below X”\n- “top up weekly if below X”\n\n### 3. Match bidding to wallet reality\nIf your balance is low:\n- Reduce bids temporarily\n- Bid only on your strongest signal areas\n- Return UNKNOWN on anything uncertain\n\n### 4. Avoid sudden bid spikes\nBid spikes can drain your wallet quickly and create a stop-start Engine. Keep bids stable and increase gradually.\n\n## Signs you need to adjust\n\n- Wallet drops rapidly day over day\n- You stop participating due to insufficient bid funds\n- You are overbidding relative to confidence\n- Your configured rate limit is too high for your current funding level\n"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/engines/build-and-test/run-your-engine-as-a-webhook-service.md","frontmatter":{"title":"Run your Engines as an Engine Webhook Service","excerpt":"Run the web server and worker so your Engine can receive bounties over HTTPS."},"html":"<h1 id=\"run-your-engines-as-an-engine-webhook-service\" style=\"position:relative;\"><a href=\"#run-your-engines-as-an-engine-webhook-service\" aria-label=\"run your engines as an engine webhook service permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Run your Engines as an Engine Webhook Service</h1>\n<p>This page explains how to run your Engine as a real engine webhook service, meaning it can receive bounties over HTTP, process them asynchronously, then send assertions back to PolySwarm.</p>\n<h2 id=\"architecture-what-runs-where\" style=\"position:relative;\"><a href=\"#architecture-what-runs-where\" aria-label=\"architecture what runs where permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Architecture (what runs where)</h2>\n<p>A typical engine webhook setup has three moving parts:</p>\n<h3 id=\"engine-webhook-http-server\" style=\"position:relative;\"><a href=\"#engine-webhook-http-server\" aria-label=\"engine webhook http server permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Engine Webhook HTTP Server</h3>\n<ul>\n<li>Receives bounty events via HTTP POST</li>\n<li>Verifies the request signature</li>\n<li>Returns <code class=\"language-text\">202 Accepted</code> quickly</li>\n<li>Enqueues work for processing</li>\n</ul>\n<h3 id=\"queue-and-broker\" style=\"position:relative;\"><a href=\"#queue-and-broker\" aria-label=\"queue and broker permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Queue and broker</h3>\n<ul>\n<li>A message broker such as RabbitMQ</li>\n<li>Connects the web server to the worker</li>\n</ul>\n<h3 id=\"worker\" style=\"position:relative;\"><a href=\"#worker\" aria-label=\"worker permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Worker</h3>\n<ul>\n<li>Pulls jobs from the queue</li>\n<li>Executes your analyzer logic</li>\n<li>Posts the assertion back to the marketplace using the provided response endpoint</li>\n</ul>\n<h2 id=\"prerequisites\" style=\"position:relative;\"><a href=\"#prerequisites\" aria-label=\"prerequisites permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Prerequisites</h2>\n<ul>\n<li>Docker and docker compose (recommended for local development)</li>\n<li>A broker URL configured for both the server and the worker</li>\n</ul>\n<h2 id=\"required-configuration\" style=\"position:relative;\"><a href=\"#required-configuration\" aria-label=\"required configuration permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Required configuration</h2>\n<p>Both the HTTP server and worker must share the broker configuration, commonly set via an environment variable such as:</p>\n<ul>\n<li>\n<p><code class=\"language-text\">PSENGINE_BROKER_URL</code> (template default example uses AMQP)</p>\n<ul>\n<li>example: <code class=\"language-text\">amqp://user:password@rabbitmq:5672</code></li>\n</ul>\n</li>\n</ul>\n<p>You will also configure an engine webhook shared secret (used to validate signatures).</p>\n<h2 id=\"running-locally-recommended-path\" style=\"position:relative;\"><a href=\"#running-locally-recommended-path\" aria-label=\"running locally recommended path permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Running locally (recommended path)</h2>\n<p>Use the template repo docker compose example to run:</p>\n<ul>\n<li>Broker</li>\n<li>Engine webhook server</li>\n<li>Worker</li>\n<li>Optional integration helper service for local testing</li>\n</ul>\n<p>This gives you the closest behavior to production without hand-installing RabbitMQ and process managers.</p>\n<blockquote>\n<p>If you support a non-docker path, document it as an alternative, but keep docker as the default for Engine partners.</p>\n</blockquote>\n<h2 id=\"engine-webhook-security-requirements\" style=\"position:relative;\"><a href=\"#engine-webhook-security-requirements\" aria-label=\"engine webhook security requirements permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Engine Webhook Security Requirements</h2>\n<h3 id=\"validate-request-signatures\" style=\"position:relative;\"><a href=\"#validate-request-signatures\" aria-label=\"validate request signatures permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Validate request signatures</h3>\n<p>Your engine webhook server should verify that incoming requests are truly from PolySwarm.\nThis is typically done via an HMAC signature header using a shared secret configured in your Team account engine webhook.</p>\n<p>Requirements:</p>\n<ul>\n<li>Reject unsigned requests</li>\n<li>Reject invalid signatures</li>\n<li>Do not run analysis for invalid requests</li>\n</ul>\n<h3 id=\"return-quickly\" style=\"position:relative;\"><a href=\"#return-quickly\" aria-label=\"return quickly permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Return quickly</h3>\n<p>Your HTTP server should not block while scanning.</p>\n<ul>\n<li>Return <code class=\"language-text\">202 Accepted</code> immediately after validation</li>\n<li>Enqueue work for the worker to process</li>\n</ul>\n<h3 id=\"replay-protection\" style=\"position:relative;\"><a href=\"#replay-protection\" aria-label=\"replay protection permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Replay protection</h3>\n<p>If your engine webhook includes a delivery id or request id, log it and ensure duplicates do not trigger duplicate processing.</p>\n<h2 id=\"operational-expectations-development\" style=\"position:relative;\"><a href=\"#operational-expectations-development\" aria-label=\"operational expectations development permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Operational expectations (development)</h2>\n<ul>\n<li>Log at least: request received, request validated, job queued, analysis completed, assertion posted</li>\n<li>Enforce timeouts on any external tools</li>\n<li>Ensure crashes do not take down both the server and worker</li>\n<li>Prefer a small, stable set of environment variables over hardcoding values</li>\n</ul>","rawMarkdownBody":"\n# Run your Engines as an Engine Webhook Service\n\nThis page explains how to run your Engine as a real engine webhook service, meaning it can receive bounties over HTTP, process them asynchronously, then send assertions back to PolySwarm.\n\n## Architecture (what runs where)\n\nA typical engine webhook setup has three moving parts:\n\n### Engine Webhook HTTP Server\n   - Receives bounty events via HTTP POST\n   - Verifies the request signature\n   - Returns `202 Accepted` quickly\n   - Enqueues work for processing\n\n###  Queue and broker\n   - A message broker such as RabbitMQ\n   - Connects the web server to the worker\n\n### Worker\n   - Pulls jobs from the queue\n   - Executes your analyzer logic\n   - Posts the assertion back to the marketplace using the provided response endpoint\n\n## Prerequisites\n\n- Docker and docker compose (recommended for local development)\n- A broker URL configured for both the server and the worker\n\n## Required configuration\n\nBoth the HTTP server and worker must share the broker configuration, commonly set via an environment variable such as:\n\n- `PSENGINE_BROKER_URL` (template default example uses AMQP)\n  - example: `amqp://user:password@rabbitmq:5672`\n\nYou will also configure an engine webhook shared secret (used to validate signatures).\n\n## Running locally (recommended path)\n\nUse the template repo docker compose example to run:\n- Broker\n- Engine webhook server\n- Worker\n- Optional integration helper service for local testing\n\nThis gives you the closest behavior to production without hand-installing RabbitMQ and process managers.\n\n> If you support a non-docker path, document it as an alternative, but keep docker as the default for Engine partners.\n\n## Engine Webhook Security Requirements\n\n### Validate request signatures\nYour engine webhook server should verify that incoming requests are truly from PolySwarm.\nThis is typically done via an HMAC signature header using a shared secret configured in your Team account engine webhook.\n\nRequirements:\n- Reject unsigned requests\n- Reject invalid signatures\n- Do not run analysis for invalid requests\n\n### Return quickly\nYour HTTP server should not block while scanning.\n- Return `202 Accepted` immediately after validation\n- Enqueue work for the worker to process\n\n### Replay protection\nIf your engine webhook includes a delivery id or request id, log it and ensure duplicates do not trigger duplicate processing.\n\n## Operational expectations (development)\n\n- Log at least: request received, request validated, job queued, analysis completed, assertion posted\n- Enforce timeouts on any external tools\n- Ensure crashes do not take down both the server and worker\n- Prefer a small, stable set of environment variables over hardcoding values\n"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/engines/build-and-test/testing-your-engine.md","frontmatter":{"title":"Testing your Engine","excerpt":"Unit and local integration testing patterns to validate behaviour before marketplace testing."},"html":"<h1 id=\"testing-your-engine\" style=\"position:relative;\"><a href=\"#testing-your-engine\" aria-label=\"testing your engine permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Testing your Engine</h1>\n<p>Before you run your Engine as an engine webhook service or request verification, your Engine should pass a minimum set of local tests. This prevents the most common failure modes during Development Community testing and verification.</p>\n<h2 id=\"minimum-quality-gate-required\" style=\"position:relative;\"><a href=\"#minimum-quality-gate-required\" aria-label=\"minimum quality gate required permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Minimum Quality Gate (required)</h2>\n<h3 id=\"1---structure-validation\" style=\"position:relative;\"><a href=\"#1---structure-validation\" aria-label=\"1   structure validation permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>1 - Structure validation</h3>\n<p>Your analyzer must always return a valid analysis object:</p>\n<ul>\n<li>verdict is always present</li>\n<li>bid is always an integer</li>\n<li>metadata is optional, but if confidence is provided it must be 0.0 to 1.0</li>\n</ul>\n<h3 id=\"2---empty-bounty-handling\" style=\"position:relative;\"><a href=\"#2---empty-bounty-handling\" aria-label=\"2   empty bounty handling permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>2 - Empty bounty handling</h3>\n<p>Your Engine should handle an empty or minimal bounty without crashing.</p>\n<p>Run:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">python -m microenginewebhookspy.engine analyze --check-empty</code></pre></div>\n<p>Expected:</p>\n<ul>\n<li>no exceptions</li>\n<li>returns UNKNOWN (or a safe default) with bid 0</li>\n</ul>\n<h3 id=\"3---known-good-checks\" style=\"position:relative;\"><a href=\"#3---known-good-checks\" aria-label=\"3   known good checks permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>3 - Known-good checks</h3>\n<p>Use the built-in checks relevant to your Engine type.</p>\n<p>File Engines:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">python -m microenginewebhookspy.engine analyze --check-eicar</code></pre></div>\n<p>URL Engines:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">python -m microenginewebhookspy.engine analyze --check-wicar</code></pre></div>\n<h3 id=\"4---unsupported-artifact-types\" style=\"position:relative;\"><a href=\"#4---unsupported-artifact-types\" aria-label=\"4   unsupported artifact types permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>4 - Unsupported artifact types</h3>\n<p>If a bounty is outside your scope, return UNKNOWN with bid 0.</p>\n<p>Example expectation:</p>\n<ul>\n<li>File engine receives URL bounty, returns UNKNOWN</li>\n<li>URL engine receives file bounty, returns UNKNOWN</li>\n</ul>\n<h2 id=\"recommended-additional-tests\" style=\"position:relative;\"><a href=\"#recommended-additional-tests\" aria-label=\"recommended additional tests permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Recommended additional tests</h2>\n<ul>\n<li>Determinism: same input yields same verdict and stable metadata</li>\n<li>Timeout behavior: slow backends return UNKNOWN rather than hanging indefinitely</li>\n<li>Error mapping: backend errors become UNKNOWN, not 500 crashes</li>\n<li>Metadata sanity: malware_family present only when meaningful, confidence only when justified</li>\n</ul>","rawMarkdownBody":"\n# Testing your Engine\n\nBefore you run your Engine as an engine webhook service or request verification, your Engine should pass a minimum set of local tests. This prevents the most common failure modes during Development Community testing and verification.\n\n## Minimum Quality Gate (required)\n\n### 1 - Structure validation\nYour analyzer must always return a valid analysis object:\n- verdict is always present\n- bid is always an integer\n- metadata is optional, but if confidence is provided it must be 0.0 to 1.0\n\n### 2 - Empty bounty handling\nYour Engine should handle an empty or minimal bounty without crashing.\n\nRun:\n\n```bash\npython -m microenginewebhookspy.engine analyze --check-empty\n```\n\nExpected:\n- no exceptions\n- returns UNKNOWN (or a safe default) with bid 0\n\n### 3 - Known-good checks\n\nUse the built-in checks relevant to your Engine type.\n\nFile Engines:\n```bash\npython -m microenginewebhookspy.engine analyze --check-eicar\n```\n\nURL Engines:\n```bash\npython -m microenginewebhookspy.engine analyze --check-wicar\n```\n\n### 4 - Unsupported artifact types\n\nIf a bounty is outside your scope, return UNKNOWN with bid 0.\n\nExample expectation:\n- File engine receives URL bounty, returns UNKNOWN\n- URL engine receives file bounty, returns UNKNOWN\n\n## Recommended additional tests\n\n- Determinism: same input yields same verdict and stable metadata\n- Timeout behavior: slow backends return UNKNOWN rather than hanging indefinitely\n- Error mapping: backend errors become UNKNOWN, not 500 crashes\n- Metadata sanity: malware_family present only when meaningful, confidence only when justified\n"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/customers/api/polyswarm-rest-api-v3.md","frontmatter":{"title":"PolySwarm Rest API v3","excerpt":"An interface to the version 3 PolySwarm customer APIs..."},"html":"<h1 id=\"polyswarm-rest-api-v3\" style=\"position:relative;\"><a href=\"#polyswarm-rest-api-v3\" aria-label=\"polyswarm rest api v3 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>PolySwarm Rest API v3</h1>\n<p>Rest API Endpoints for interacting with version 3 of the PolySwarm Customer APIs.</p>\n<h2 id=\"getting-started\" style=\"position:relative;\"><a href=\"#getting-started\" aria-label=\"getting started permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Getting Started</h2>\n<h3 id=\"test\" style=\"position:relative;\"><a href=\"#test\" aria-label=\"test permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Using the API</h3>\n<p>PolySwarm's API provides a RESTful interface for various PolySwarm features.\nIf you'd like to report an issue or provide feedback for this page, please contact customersuccess@polyswarm.io</p>\n<p>The PolySwarm API is available at <a href=\"https://api.polyswarm.network/v3\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https://api.polyswarm.network/v3</a></p>\n<p>For the rest of this document, the base API URL will not be included in any endpoints (e.g., the branch for search will be described as <code class=\"language-text\">/v3/search</code> rather than <code class=\"language-text\">https://api.polyswarm.network/v3/search)</code>. You will be responsible for adding the correct base API URL.</p>\n<p>The overview of the API Endpoints will include required and optional parameters, with a curl example.</p>\n<p>Community (free) users have a limit of 60 calls per hour, Paying Enterprise Customers have a limit of 1000 calls per second.\nEach feature (i.e. Scanning) may have its own set monthly quota, and utilize a daily or monthly api limit too. See the team's usage page to better understand these numbers.</p>\n<h3 id=\"authentication\" style=\"position:relative;\"><a href=\"#authentication\" aria-label=\"authentication permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Authentication</h3>\n<p>Every API request must include an HTTP Authorization Header with an API key.</p>\n<p>Locate the <code class=\"language-text\">api_key</code> for the User/Team from <a href=\"https://polyswarm.network/account/api-keys\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">here</a></p>\n<table>\n<thead>\n<tr>\n<th>HTTP Header</th>\n<th>Value</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Authorization</td>\n<td><code class=\"language-text\">API Key</code></td>\n</tr>\n</tbody>\n</table>\n<p><strong>Example:</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X GET -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span> <span class=\"token string\">'https://api.polyswarm.network/v3/search/url?url=https%3A%2F%2Fpolyswarm.io&amp;community=default'</span></code></pre></div>\n<h3 id=\"retrieve-account-information\" style=\"position:relative;\"><a href=\"#retrieve-account-information\" aria-label=\"retrieve account information permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Retrieve account information</h3>\n<h4 id=\"account-details\" style=\"position:relative;\"><a href=\"#account-details\" aria-label=\"account details permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Account details</h4>\n<p><code class=\"language-text\">/v3/public/accounts/whois</code></p>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> https://api.polyswarm.network/v3/public/accounts/whois -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$POLYSWARM_API_KEY</span>\"</span></code></pre></div>\n<h4 id=\"account-features-and-quotas\" style=\"position:relative;\"><a href=\"#account-features-and-quotas\" aria-label=\"account features and quotas permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Account features and quotas</h4>\n<p><code class=\"language-text\">/v3/public/accounts</code></p>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> https://api.polyswarm.network/v3/public/accounts -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$POLYSWARM_API_KEY</span>\"</span></code></pre></div>\n<h3 id=\"pagination-and-offset-handling\" style=\"position:relative;\"><a href=\"#pagination-and-offset-handling\" aria-label=\"pagination and offset handling permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Pagination and Offset Handling</h3>\n<p>When interacting with paginated endpoints, each page of results consumes one quota unit.</p>\n<h4 id=\"key-points-on-pagination\" style=\"position:relative;\"><a href=\"#key-points-on-pagination\" aria-label=\"key points on pagination permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Key Points on Pagination:</h4>\n<ul>\n<li>The <code class=\"language-text\">has_more</code> flag indicates whether additional pages of results are available.</li>\n<li>If <code class=\"language-text\">has_more=true</code>, the response will include an encrypted offset value.</li>\n<li>For the first request, specify a <code class=\"language-text\">limit</code> parameter (e.g., <code class=\"language-text\">limit=50</code>). The server will return an <code class=\"language-text\">offset</code> value for the next page in the response.</li>\n<li>For subsequent requests, include the <code class=\"language-text\">offset</code> value returned by the server in the previous response. The server will always provide the next <code class=\"language-text\">offset</code>, which must be sent back unmodified in subsequent calls.</li>\n</ul>\n<h4 id=\"example-initial-request\" style=\"position:relative;\"><a href=\"#example-initial-request\" aria-label=\"example initial request permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Example Initial Request</h4>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -H <span class=\"token string\">'Authorization: &lt;API_KEY>'</span> <span class=\"token string\">'https://api.polyswarm.network/v3/hunt/live/list?limit=50&amp;timeout=30'</span></code></pre></div>\n<p>The response will include an <code class=\"language-text\">offset</code> value for the next page.</p>\n<h4 id=\"example-subsequent-request\" style=\"position:relative;\"><a href=\"#example-subsequent-request\" aria-label=\"example subsequent request permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Example Subsequent Request</h4>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -H <span class=\"token string\">'Authorization: &lt;API_KEY>'</span> <span class=\"token string\">'https://api.polyswarm.network/v3/hunt/live/list?limit=50&amp;timeout=30&amp;offset=&lt;OFFSET>'</span></code></pre></div>\n<blockquote>\n<p>Note: The offset is an encrypted token generated by the server. Clients must use it as-is and not attempt to modify it.</p>\n</blockquote>\n<h4 id=\"hash-search-and-collision-handling\" style=\"position:relative;\"><a href=\"#hash-search-and-collision-handling\" aria-label=\"hash search and collision handling permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Hash Search and Collision Handling</h4>\n<p>For the Hash Search endpoint, the <code class=\"language-text\">has_more</code> flag will typically return <code class=\"language-text\">false</code>. However, consider the following:</p>\n<ul>\n<li>A sha256 collision is highly unlikely, but not impossible.</li>\n<li>Collisions are more probable with weaker hash algorithms like md5 or sha1.</li>\n</ul>\n<p>To address potential risks:</p>\n<ul>\n<li>Use the <code class=\"language-text\">has_more</code> flag to manage collisions, particularly when working with md5 or sha1.</li>\n<li>Decide whether to rely on this flag based on your specific use case and risk tolerance.</li>\n</ul>\n<h2 id=\"lookup\" style=\"position:relative;\"><a href=\"#lookup\" aria-label=\"lookup permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Artifact Lookup</h2>\n<p>To retrieve the results of a scan or sandbox, you can do an artifact lookup. In the scanning/sandboxing sections we will remind you of this.</p>\n<p><span style=\"background-color: #abf7ab\">GET</span> <code class=\"language-text\">/v3/consumer/submission/default/{artifact_id}</code></p>\n<p>Once the scan has completed the returned <code class=\"language-text\">window_closed</code> value will be <code class=\"language-text\">true</code>, if this value is <code class=\"language-text\">false</code> then the scan is still processing, so you will need to poll periodically.\nIf the value <code class=\"language-text\">failed</code> is <code class=\"language-text\">true</code> then the scan has failed.</p>\n<h2 id=\"scanning\" style=\"position:relative;\"><a href=\"#scanning\" aria-label=\"scanning permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Scanning Artifacts</h2>\n<p>The following are the 3 sequential steps in a Scanning operation:</p>\n<ul>\n<li><span style=\"background-color: #b5d5ff\">POST</span> Inform PolySwarm to start a scan, returns an <code class=\"language-text\">artifact_id</code> and pre signed AWS URL that the artifact can be uploaded to</li>\n<li><span style=\"background-color: #ffbd8c\">PUT</span> Upload the artifact to the AWS URL location</li>\n<li><span style=\"background-color: #ffbd8c\">PUT</span> Inform PolySwarm that the artifact is uploaded and to start the scan</li>\n</ul>\n<p>Lastly, <strong>lookup the artifact</strong> for the verdict, follow this process <a href=\"/customers/polyswarm-rest-api-v3/#lookup\">here</a>.</p>\n<h3 id=\"url-scanning\" style=\"position:relative;\"><a href=\"#url-scanning\" aria-label=\"url scanning permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>URL Scanning</h3>\n<p><span style=\"background-color: #b5d5ff\">POST</span> <code class=\"language-text\">/v3/instance</code></p>\n<blockquote>\n<p>Inform PolySwarm to start a scan, returns an <code class=\"language-text\">artifact_id</code> and pre signed AWS URL that the file/url can be uploaded to</p>\n</blockquote>\n<p><strong>Body Schema</strong>\n(application/json)</p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">artifact_name</code></td>\n<td>string</td>\n<td>true</td>\n<td>URL value to be scanned.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">artifact_type</code></td>\n<td>string</td>\n<td>true</td>\n<td>Defines the type, should be <code class=\"language-text\">URL</code>.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">scan_config</code></td>\n<td>string</td>\n<td>false</td>\n<td>Allows additional time for the scan, default if not provided, <code class=\"language-text\">default</code>, <code class=\"language-text\">more-time</code>, <code class=\"language-text\">most-time</code>.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">url-file</code></td>\n<td>string</td>\n<td>false</td>\n<td>Path of the file containing a single line of the URL to be scanned.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">community</code></td>\n<td>string</td>\n<td>true</td>\n<td>Name of the Community. Simplest to use <code class=\"language-text\">default</code> for the public community, or <code class=\"language-text\">private</code> for your Private Community.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">preprocessing</code></td>\n<td>object</td>\n<td>false</td>\n<td>Set to <code class=\"language-text\">{\"type\": \"qrcode\"}</code> if the URL is inside a QR Code image.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X POST -d <span class=\"token string\">'{\n  \"artifact_name\": \"https://www.google.com\",\n  \"artifact_type\": \"URL\",\n  \"scan_config\": \"most-time\",\n  \"community\": \"default\"\n}'</span> -H <span class=\"token string\">\"Content-Type: application/json\"</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span>  https://api.polyswarm.network/v3/instance</code></pre></div>\n<p>Here is a sample of how to scan a URL that is inside a QR Code image:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X POST -d <span class=\"token string\">'{\n  \"artifact_name\": \"qrcode.png\",\n  \"artifact_type\": \"URL\",\n  \"community\": \"default\",\n  \"preprocessing\": {\"type\": \"qrcode\"}\n}'</span> -H <span class=\"token string\">\"Content-Type: application/json\"</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span>  https://api.polyswarm.network/v3/instance</code></pre></div>\n<hr>\n<p><span style=\"background-color: #ffbd8c\">PUT</span> <code class=\"language-text\">https://s3.us-east-2.amazonaws.com/{PRE_SIGNED_AWS_URL}</code></p>\n<blockquote>\n<p>Provide the artifact to upload to the AWS URL.</p>\n</blockquote>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X PUT <span class=\"token string\">'&lt;PRE_SIGNED_AWS_URL>'</span> -d <span class=\"token string\">'content=www.google.com'</span></code></pre></div>\n<hr>\n<p><span style=\"background-color: #ffbd8c\">PUT</span> <code class=\"language-text\">/v3/instance</code></p>\n<blockquote>\n<p>Inform PolySwarm the upload is complete and to start the scan.</p>\n</blockquote>\n<p><strong>Query Parameters</strong></p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">id</code></td>\n<td>string</td>\n<td>true</td>\n<td><code class=\"language-text\">artifact_id</code> that has been returned by the first <code class=\"language-text\">POST</code> command.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X PUT -H <span class=\"token string\">\"Content-Type: application/json\"</span> https://api.polyswarm.network/v3/instance?id<span class=\"token operator\">=</span><span class=\"token number\">49722305458696948</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span></code></pre></div>\n<p>Lastly, <strong>lookup the artifact</strong> for the verdict, follow this process <a href=\"/customers/polyswarm-rest-api-v3/#lookup\">here</a>.</p>\n<h3 id=\"file-scanning\" style=\"position:relative;\"><a href=\"#file-scanning\" aria-label=\"file scanning permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>File Scanning</h3>\n<p><span style=\"background-color: #b5d5ff\">POST</span> <code class=\"language-text\">/v3/instance</code></p>\n<blockquote>\n<p>Inform PolySwarm to start a scan, returns an <code class=\"language-text\">artifact_id</code> and pre signed AWS url that the file needs to be placed into.</p>\n</blockquote>\n<p><strong>Body Schema</strong>\n(application/json)</p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">artifact_name</code></td>\n<td>string</td>\n<td>true</td>\n<td>Path of the File to be scanned.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">artifact_type</code></td>\n<td>string</td>\n<td>true</td>\n<td>Defines the type, should be <code class=\"language-text\">FILE</code>.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">preprocessing</code></td>\n<td>object</td>\n<td>false</td>\n<td>Preprocessing settings to be applied to the artifact. See schema table bellow.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">expiration_window</code></td>\n<td>int</td>\n<td>false</td>\n<td>Applies to Private Communities only and affects new uploads. After the configured number of days, the binary file is deleted, but the metadata remains available, so the hash can still be searched. Must be <code class=\"language-text\">30</code> or <code class=\"language-text\">180</code>.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">scan_config</code></td>\n<td>string</td>\n<td>false</td>\n<td>Allows additional time for the scan, default if not provided, <code class=\"language-text\">default</code>, <code class=\"language-text\">more-time</code>, <code class=\"language-text\">most-time</code>.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">community</code></td>\n<td>string</td>\n<td>true</td>\n<td>Name of the Community. Simplest to use <code class=\"language-text\">default</code> for the public community, or <code class=\"language-text\">private</code> for your Private Community.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Body / Preprocessing Schema</strong>\n(application/json)</p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">type</code></td>\n<td>string</td>\n<td>true</td>\n<td>Either <code class=\"language-text\">zip</code>, <code class=\"language-text\">7zip</code>, <code class=\"language-text\">base64</code>, or<code class=\"language-text\">qrcode</code>, the first two mean the file is a zip that the server has to decompress to then scan the content (only one file inside allowed). \"qrcode\" means the file is a QR Code image with a URL as payload, and you want to scan the URL, not the actual file (artifact_type has to be \"URL\").</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">password</code></td>\n<td>string</td>\n<td>false</td>\n<td>Use this password to decompress the zip file.</td>\n</tr>\n</tbody>\n</table>\n<p>|</p>\n<p><strong>Query Sample</strong></p>\n<p>Scan a file <code class=\"language-text\">install.exe</code> example:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X POST -d <span class=\"token string\">'{\n  \"artifact_name\": \"install.exe\",\n  \"artifact_type\": \"FILE\",\n  \"community\": \"default\"\n}'</span> -H <span class=\"token string\">\"Content-Type: application/json\"</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span> https://api.polyswarm.network/v3/instance</code></pre></div>\n<p>The file to scan is inside an encrypted zip:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X POST -d <span class=\"token string\">'{\n  \"artifact_name\": \"install.exe\",\n  \"artifact_type\": \"FILE\",\n  \"community\": \"default\",\n  \"preprocessing\": {\"type\": \"zip\", \"password\": \"password\"}\n}'</span> -H <span class=\"token string\">\"Content-Type: application/json\"</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span> https://api.polyswarm.network/v3/instance</code></pre></div>\n<hr>\n<p><span style=\"background-color: #ffbd8c\">PUT</span> <code class=\"language-text\">https://s3.us-east-2.amazonaws.com/{PRE_SIGNED_AWS_URL}</code></p>\n<blockquote>\n<p>Provide the artifact to upload to the AWS URL.</p>\n</blockquote>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> --upload-file ./tests/eicar.yara <span class=\"token string\">\"&lt;PRE_SIGNED_AWS_URL>\"</span></code></pre></div>\n<hr>\n<p><span style=\"background-color: #ffbd8c\">PUT</span> <code class=\"language-text\">/v3/instance</code></p>\n<blockquote>\n<p>Inform PolySwarm the upload is complete and to start the scan.</p>\n</blockquote>\n<p><strong>Query Parameters</strong></p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">id</code></td>\n<td>string</td>\n<td>true</td>\n<td><code class=\"language-text\">artifact_id</code> that has been returned by the first <code class=\"language-text\">POST</code> command.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X PUT https://api.polyswarm.network/v3/instance?id<span class=\"token operator\">=</span><span class=\"token number\">49722305458696948</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span></code></pre></div>\n<p>Lastly, <strong>lookup the artifact</strong> for the verdict, follow this process <a href=\"/customers/polyswarm-rest-api-v3/#lookup\">here</a>.</p>\n<h2 id=\"rescanning\" style=\"position:relative;\"><a href=\"#rescanning\" aria-label=\"rescanning permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Rescanning Artifacts</h2>\n<p><span style=\"background-color: #b5d5ff\">POST</span> <code class=\"language-text\">/v3/consumer/submission/default/rescan/sha256/{sha256}</code></p>\n<blockquote>\n<p>Other Endpoints include: <code class=\"language-text\">/v3/consumer/submission/default/rescan/md5/{md5}</code> and <code class=\"language-text\">/v3/consumer/submission/default/rescan/sha1/{sha1}</code></p>\n</blockquote>\n<blockquote>\n<p>This endpoint can only be used to rescan files, for urls see rescan by id below. </p>\n</blockquote>\n<p><strong>Query Parameters</strong></p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">hash-type</code></td>\n<td>string</td>\n<td>false</td>\n<td>Hash type to be searched on, default is <code class=\"language-text\">autodetect</code>.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">scan-config</code></td>\n<td>string</td>\n<td>false</td>\n<td>Configuration template to use, provides more time for the results to be returned, <code class=\"language-text\">default</code>, <code class=\"language-text\">more-time</code>, <code class=\"language-text\">most-time</code>.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">community</code></td>\n<td>string</td>\n<td>true</td>\n<td>Name of the Community. Simplest to use <code class=\"language-text\">default</code> for the public community, or <code class=\"language-text\">private</code> for your Private Community.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X POST <span class=\"token string\">'https://api.polyswarm.network/v3/consumer/submission/default/rescan/sha256/5da5a1e3983982a92341953929d4c7726da65fe5125d264dd8932a870f2f154a?community=default&amp;scan_config=more-time'</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span></code></pre></div>\n<p>Lastly, <strong>lookup the artifact</strong> for the verdict, follow this process <a href=\"/customers/polyswarm-rest-api-v3/#lookup\">here</a>.</p>\n<h2 id=\"rescanning-by-id\" style=\"position:relative;\"><a href=\"#rescanning-by-id\" aria-label=\"rescanning by id permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Rescanning Artifacts by ID</h2>\n<p><span style=\"background-color: #b5d5ff\">POST</span> <code class=\"language-text\">/v3/consumer/submission/{community}/rescan/{id}</code></p>\n<blockquote>\n<p>Rescan an existing artifact by its <code class=\"language-text\">artifact_id</code> (also referred to as <code class=\"language-text\">instance_id</code>) rather than by hash. The community (<code class=\"language-text\">default</code> or <code class=\"language-text\">private</code>) is specified as part of the URL path, include this. </p>\n</blockquote>\n<p><strong>Path Parameters</strong></p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">community</code></td>\n<td>string</td>\n<td>true</td>\n<td>Name of the Community in the URL path. Use <code class=\"language-text\">default</code> for the public community, or <code class=\"language-text\">private</code> for your Private Community.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">id</code></td>\n<td>integer</td>\n<td>true</td>\n<td><code class=\"language-text\">artifact_id</code> of the artifact to rescan.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Parameters</strong></p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">scan-config</code></td>\n<td>string</td>\n<td>false</td>\n<td>Configuration template to use, provides more time for the results to be returned, <code class=\"language-text\">default</code>, <code class=\"language-text\">more-time</code>, <code class=\"language-text\">most-time</code>.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X POST <span class=\"token string\">'https://api.polyswarm.network/v3/consumer/submission/private/rescan/3147283219576984'</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span></code></pre></div>\n<p><strong>Query Sample with scan-config in private</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X POST <span class=\"token string\">'https://api.polyswarm.network/v3/consumer/submission/private/rescan/3147283219576984?scan_config=more-time'</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span></code></pre></div>\n<p>Lastly, <strong>lookup the artifact</strong> for the verdict, follow this process <a href=\"/customers/polyswarm-rest-api-v3/#lookup\">here</a>.</p>\n<h2 id=\"downloading\" style=\"position:relative;\"><a href=\"#downloading\" aria-label=\"downloading permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Downloading</h2>\n<h3 id=\"download-artifact\" style=\"position:relative;\"><a href=\"#download-artifact\" aria-label=\"download artifact permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Download an Artifact</h3>\n<p><span style=\"background-color: #abf7ab\">GET</span> <code class=\"language-text\">/v3/consumer/download/sha256/{sha256}</code></p>\n<blockquote>\n<p>Other Endpoints include: <code class=\"language-text\">/v3/consumer/download/sha256/{md5}</code> and <code class=\"language-text\">/v3/consumer/download/sha256/{sha1}</code></p>\n</blockquote>\n<p><strong>Query Parameters</strong></p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">hash-type</code></td>\n<td>string</td>\n<td>false</td>\n<td>Hash type to be searched on, default is <code class=\"language-text\">autodetect</code>.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">destination</code></td>\n<td>string</td>\n<td>false</td>\n<td>Local Path where to store the downloaded files.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">community</code></td>\n<td>string</td>\n<td>true</td>\n<td>Name of the Community. Simplest to use <code class=\"language-text\">default</code> for the public community, or <code class=\"language-text\">private</code> for your Private Community.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X GET <span class=\"token string\">'https://api.polyswarm.network/v3/consumer/download/sha256/5da5a1e3983982a92341953929d4c7726da65fe5125d264dd8932a870f2f154a?community=default'</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span></code></pre></div>\n<h3 id=\"download-id\" style=\"position:relative;\"><a href=\"#download-id\" aria-label=\"download id permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Download via id</h3>\n<p><span style=\"background-color: #abf7ab\">GET</span> <code class=\"language-text\">/v3/instance/download</code></p>\n<blockquote>\n<p>Tip: Can be used to download reports and files from a sandbox detonation, see sandboxing sections to retrieve the <code class=\"language-text\">instance_id</code>.</p>\n</blockquote>\n<p><strong>Query Parameters</strong></p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">instance_id</code></td>\n<td>integer</td>\n<td>true</td>\n<td><code class=\"language-text\">instance_id</code> of the item to download, often provided in the output of a previous query.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X GET <span class=\"token string\">'https://api.polyswarm.network/v3/instance/download?instance_id=84432173138232095'</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span></code></pre></div>\n<h3 id=\"download-bundle\" style=\"position:relative;\"><a href=\"#download-bundle\" aria-label=\"download bundle permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Download Bundle</h3>\n<h5 id=\"create-the-bundle\" style=\"position:relative;\"><a href=\"#create-the-bundle\" aria-label=\"create the bundle permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Create the Bundle</h5>\n<p><span style=\"background-color: #b5d5ff\">POST</span> <code class=\"language-text\">/v3/bundle</code></p>\n<p><strong>Body Schema</strong>\n(application/json)</p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">instance-ids</code></td>\n<td>string array</td>\n<td>true</td>\n<td>The ID's of an instance to include in the bundle archive.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">preserve_filenames</code></td>\n<td>boolean</td>\n<td>false</td>\n<td>Preserve the names of the files in the bundle.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">filename</code></td>\n<td>string</td>\n<td>false</td>\n<td>Name of the archive that will be created.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">community</code></td>\n<td>string</td>\n<td>true</td>\n<td>Define the community either <code class=\"language-text\">private</code> or <code class=\"language-text\">public</code>.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X POST <span class=\"token string\">\"https://api.polyswarm.network/v3/bundle\"</span> <span class=\"token punctuation\">\\</span>\n  -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span> <span class=\"token punctuation\">\\</span>\n  -H <span class=\"token string\">\"Content-Type: application/json\"</span> <span class=\"token punctuation\">\\</span>\n  -d <span class=\"token string\">'{\"instance_ids\": [\"51375268900310741\", \"58964500531258633\"], \"preserve_filenames\": true, \"filename\": \"output-archive.zip\"}'</span> <span class=\"token punctuation\">\\</span></code></pre></div>\n<hr>\n<h5 id=\"check-status-of-bundle\" style=\"position:relative;\"><a href=\"#check-status-of-bundle\" aria-label=\"check status of bundle permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Check Status of Bundle</h5>\n<p><span style=\"background-color: #b5d5ff\">GET</span> <code class=\"language-text\">/v3/bundle</code></p>\n<p><strong>Query Parameters</strong></p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">id</code></td>\n<td>string</td>\n<td>true</td>\n<td>The Bundle Task ID Returned in step 1.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">community</code></td>\n<td>string</td>\n<td>true</td>\n<td>Define the community either <code class=\"language-text\">private</code> or <code class=\"language-text\">public</code>.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X GET <span class=\"token string\">\"https://api.polyswarm.network/v3/bundle?id=41476135624684596&amp;community=private\"</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$POLYSWARM_API_KEY</span>\"</span></code></pre></div>\n<hr>\n<h5 id=\"download-the-bundle\" style=\"position:relative;\"><a href=\"#download-the-bundle\" aria-label=\"download the bundle permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Download the Bundle</h5>\n<p><span style=\"background-color: #abf7ab\">GET</span> <code class=\"language-text\">https://s3.us-east-2.amazonaws.com/{PRE_SIGNED_AWS_URL}</code></p>\n<blockquote>\n<p>Note: The previous GET command returns the <code class=\"language-text\">PRE_SIGNED_AWS_URL</code> once the report generation has been completed.</p>\n</blockquote>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -o output-archive.zip -X GET <span class=\"token string\">'https://s3.us-east-2.amazonaws.com/{PRE_SIGNED_AWS_URL}'</span></code></pre></div>\n<h2 id=\"report\" style=\"position:relative;\"><a href=\"#report\" aria-label=\"report permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Reporting</h2>\n<h3 id=\"downloading-reports\" style=\"position:relative;\"><a href=\"#downloading-reports\" aria-label=\"downloading reports permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Downloading Reports</h3>\n<p>PolySwarm provides the ability to generate and download HTML/PDF reports for Scanning and Sandboxing, these are separate reports.</p>\n<p>The following are the 3 sequential steps in a report generation operation:</p>\n<ul>\n<li><span style=\"background-color: #b5d5ff\">POST</span> Inform PolySwarm to start generating the report.</li>\n<li><span style=\"background-color: #abf7ab\">GET</span> Poll PolySwarm to understand when the report has finished generating.</li>\n<li><span style=\"background-color: #abf7ab\">GET</span> Download the report locally once generation is successful.</li>\n</ul>\n<hr>\n<p><span style=\"background-color: #b5d5ff\">POST</span> <code class=\"language-text\">/v3/reports</code></p>\n<p><strong>Body Schema</strong>\n(application/json)</p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">format</code></td>\n<td>string</td>\n<td>true</td>\n<td>pdf, html or zip.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">type</code></td>\n<td>string</td>\n<td>true</td>\n<td><code class=\"language-text\">scan</code>, <code class=\"language-text\">sandbox</code>, or <code class=\"language-text\">sandbox_zip</code>.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">community</code></td>\n<td>string</td>\n<td>true</td>\n<td>Define the community either <code class=\"language-text\">private</code> or <code class=\"language-text\">public</code>.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">template_metadata</code></td>\n<td>object</td>\n<td>false</td>\n<td>Choose what to include in the report or zip file, separated by commas. When choosing a PDF or HTML report the options are: analysis, detections, droppedFiles, extractedConfig, fileMetadata, network, summary. If not included in body, the default is all items. EXAMPLE: <code class=\"language-text\">{\"includes\":[\"summary\"]}</code>. When choosing a Sandbox ZIP file there are two optional values in the <code class=\"language-text\">template_metadata</code>, <code class=\"language-text\">zip_report_ids</code> and <code class=\"language-text\">sandbox_artifact_type</code>. The <code class=\"language-text\">zip_report_ids</code> are the ID's of the other reports already created to include in the zip file. The <code class=\"language-text\">sandbox_artifact_type</code> are a list of sandbox artifacts to include from: <code class=\"language-text\">report</code>,<code class=\"language-text\">raw_report</code>,<code class=\"language-text\">screenshot</code>,<code class=\"language-text\">recording</code>,<code class=\"language-text\">dropped_file</code>,<code class=\"language-text\">memory_dump</code>,<code class=\"language-text\">pcap</code> and <code class=\"language-text\">jarm</code>.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">instance_id</code></td>\n<td>integer</td>\n<td>true</td>\n<td>Required if generating a scanning report, this is the <code class=\"language-text\">artifact_id</code>.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">sandbox_task_id</code></td>\n<td>integer</td>\n<td>true</td>\n<td>Required if generating a sandboxing report or sandbox zip, this is the <code class=\"language-text\">sandbox_id</code>.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample Scan Report</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X POST -d <span class=\"token string\">'{\"type\": \"scan\", \"format\": \"pdf\", \"template_metadata\": {\"includes\": [\"summary\", \"detections\"]}, \"instance_id\": \"97903321852386706\"}'</span>  -H <span class=\"token string\">\"Content-Type: application/json\"</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span>  https://api.polyswarm.network/v3/reports</code></pre></div>\n<p><strong>Query Sample Sandbox ZIP File</strong></p>\n<p>The below example downloads the report json and the pcap files in a single zip file.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X POST -d <span class=\"token string\">'{\"type\": \"sandbox_zip\", \"format\": \"zip\", \"template_metadata\": {\"sandbox_artifact_types\": [\"report\", \"pcap\"]}, \"sandbox_task_id\": \"97903321852386706\"}'</span>  -H <span class=\"token string\">\"Content-Type: application/json\"</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span>  https://api.polyswarm.network/v3/reports</code></pre></div>\n<hr>\n<p><span style=\"background-color: #abf7ab\">GET</span> <code class=\"language-text\">/v3/reports</code></p>\n<p><strong>Query Parameters</strong></p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">id</code></td>\n<td>integer</td>\n<td>true</td>\n<td><code class=\"language-text\">id</code> returned from the previous POST command.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">community</code></td>\n<td>string</td>\n<td>true</td>\n<td>Define the community either <code class=\"language-text\">private</code> or <code class=\"language-text\">public</code>.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X GET <span class=\"token string\">'https://api.polyswarm.network/v3/reports?id=59403308938961820'</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span></code></pre></div>\n<hr>\n<p><span style=\"background-color: #abf7ab\">GET</span> <code class=\"language-text\">https://s3.us-east-2.amazonaws.com/{PRE_SIGNED_AWS_URL}</code></p>\n<blockquote>\n<p>Note: The previous GET command returns the <code class=\"language-text\">PRE_SIGNED_AWS_URL</code> once the report generation has been completed.</p>\n</blockquote>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -o scan-97903321852386706.pdf -X GET <span class=\"token string\">'https://s3.us-east-2.amazonaws.com/{PRE_SIGNED_AWS_URL}'</span></code></pre></div>\n<h3 id=\"report-templates\" style=\"position:relative;\"><a href=\"#report-templates\" aria-label=\"report templates permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Report Templates</h3>\n<h5 id=\"list-templates\" style=\"position:relative;\"><a href=\"#list-templates\" aria-label=\"list templates permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>List templates</h5>\n<p><span style=\"background-color: #abf7ab\">GET</span> <code class=\"language-text\">/v3/reports/templates/list</code></p>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X GET <span class=\"token string\">'https://api.polyswarm.network/v3/reports/templates/list'</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span></code></pre></div>\n<h5 id=\"create-a-template\" style=\"position:relative;\"><a href=\"#create-a-template\" aria-label=\"create a template permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Create a template</h5>\n<p><span style=\"background-color: #b5d5ff\">POST</span> <code class=\"language-text\">/v3/reports/templates</code></p>\n<p><strong>Body Schema</strong>\n(application/json)</p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">template_name</code></td>\n<td>string</td>\n<td>true</td>\n<td>Name for the template.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">is_default</code></td>\n<td>boolean</td>\n<td>false</td>\n<td>If <code class=\"language-text\">true</code> this template will be the default template for the team.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">primary_color</code></td>\n<td>string</td>\n<td>false</td>\n<td>Six-character hex color code.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">footer_text</code></td>\n<td>string</td>\n<td>false</td>\n<td>Text to be displayed in the footer of each page. Up to 100 characters are allowed.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">last_page_text</code></td>\n<td>string</td>\n<td>false</td>\n<td>Text to be displayed on the last page. Up to 1000 characters are allowed.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">includes</code></td>\n<td>string</td>\n<td>false</td>\n<td>Array list of sections to include in the report. Can be one or more of: \"analysis\", \"detections\", \"droppedFiles\", \"extractedConfig\", \"fileMetadata\", \"network\", \"summary\".</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X POST -d <span class=\"token string\">'{\"template_name\": \"temptest\", \"primary_color\": \"ff0000\", \"includes\": [\"summary\", \"detections\", \"fileMetadata\"]}'</span>  -H <span class=\"token string\">\"Content-Type: application/json\"</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span>  https://api.polyswarm.network/v3/reports/templates</code></pre></div>\n<h5 id=\"delete-a-templates\" style=\"position:relative;\"><a href=\"#delete-a-templates\" aria-label=\"delete a templates permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Delete a templates</h5>\n<p><span style=\"background-color: #ffa3a3\">DELETE</span> <code class=\"language-text\">/v3/reports/templates</code></p>\n<p><strong>Query Parameters</strong></p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">id</code></td>\n<td>integer</td>\n<td>true</td>\n<td><code class=\"language-text\">id</code> value of the template.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X DELETE <span class=\"token string\">'https://api.polyswarm.network/v3/reports/templates?id=10512439389909571'</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span></code></pre></div>\n<h5 id=\"get-template-details\" style=\"position:relative;\"><a href=\"#get-template-details\" aria-label=\"get template details permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Get template details</h5>\n<p><span style=\"background-color: #abf7ab\">GET</span> <code class=\"language-text\">/v3/reports/templates</code></p>\n<p><strong>Query Parameters</strong></p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">id</code></td>\n<td>integer</td>\n<td>true</td>\n<td><code class=\"language-text\">id</code> value of the template.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X GET <span class=\"token string\">'https://api.polyswarm.network/v3/reports/templates?id=89035259732911602'</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span></code></pre></div>\n<h5 id=\"update-a-template\" style=\"position:relative;\"><a href=\"#update-a-template\" aria-label=\"update a template permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Update a template</h5>\n<p><span style=\"background-color: #ffbd8c\">PUT</span> <code class=\"language-text\">/v3/reports/templates</code></p>\n<p>NOTE: despite being a <code class=\"language-text\">PUT</code> endpoint, only fields passed in the JSON body are updated, the remaining fields retain their values.\n<strong>Query Parameters</strong></p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">id</code></td>\n<td>integer</td>\n<td>true</td>\n<td><code class=\"language-text\">id</code> value of the template.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Body Schema</strong>\n(application/json)</p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">template_name</code></td>\n<td>string</td>\n<td>true</td>\n<td>Name for the template.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">is_default</code></td>\n<td>boolean</td>\n<td>false</td>\n<td>If <code class=\"language-text\">true</code> this template will be the default template for the team.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">primary_color</code></td>\n<td>string</td>\n<td>false</td>\n<td>Six-character hex color code.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">footer_text</code></td>\n<td>string</td>\n<td>false</td>\n<td>Text to be displayed in the footer of each page. Up to 100 characters are allowed.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">last_page_text</code></td>\n<td>string</td>\n<td>false</td>\n<td>Text to be displayed on the last page. Up to 1000 characters are allowed.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">includes</code></td>\n<td>string</td>\n<td>false</td>\n<td>Array list of sections to include in the report. Can be one or more of: \"summary\", \"detections\", \"fileMetadata\", \"network\", \"droppedFiles\", \"extractedConfig\", \"analysis\".</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X PUT -d <span class=\"token string\">'{\"primary_color\": \"7bfa7f\", \"includes\": [\"summary\", \"detections\", \"fileMetadata\"]}'</span> -H <span class=\"token string\">\"Content-Type: application/json\"</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span> <span class=\"token string\">\"https://api.polyswarm.network/v3/reports/templates?id=89035259732911602\"</span></code></pre></div>\n<h5 id=\"upload-template-logo\" style=\"position:relative;\"><a href=\"#upload-template-logo\" aria-label=\"upload template logo permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Upload template logo</h5>\n<p><span style=\"background-color: #ffbd8c\">PUT</span> <code class=\"language-text\">/v3/reports/templates/logo</code></p>\n<p>A logo can be provided for an already created template. The image is only used in the first page of the PDF reports. Can be either a PNG or JPEG file, the max size allowed is 40 Kb, and the max resolution 960px x 960px.</p>\n<p><strong>Query Parameters</strong></p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">id</code></td>\n<td>integer</td>\n<td>true</td>\n<td><code class=\"language-text\">id</code> value of the template</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Body Parameters</strong></p>\n<p>The body has to be the binary data of the image. Max length allowed is 40 Kb.</p>\n<p><strong>Header Parameters</strong></p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">Content-Type</code></td>\n<td>true</td>\n<td>Either <code class=\"language-text\">image/png</code> or <code class=\"language-text\">image/jpeg</code></td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<p>Having a file <code class=\"language-text\">logo.jpg</code> in the same folder were <code class=\"language-text\">curl</code> is executed:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X PUT <span class=\"token string\">'https://api.polyswarm.network/v3/reports/templates/logo?id=89035259732911602'</span> --data-binary @logo.jpg -H <span class=\"token string\">\"Content-Type: image/jpeg\"</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span></code></pre></div>\n<h5 id=\"delete-template-logo\" style=\"position:relative;\"><a href=\"#delete-template-logo\" aria-label=\"delete template logo permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Delete template logo</h5>\n<p><span style=\"background-color: #ffa3a3\">DELETE</span> <code class=\"language-text\">v3/reports/templates/logo</code></p>\n<p><strong>Query Parameters</strong></p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">id</code></td>\n<td>integer</td>\n<td>true</td>\n<td><code class=\"language-text\">id</code> value of the template.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X DELETE <span class=\"token string\">'https://api.polyswarm.network/v3/reports/templates/logo?id=89035259732911602'</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span></code></pre></div>\n<h5 id=\"download-template-logo\" style=\"position:relative;\"><a href=\"#download-template-logo\" aria-label=\"download template logo permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Download template logo</h5>\n<p><span style=\"background-color: #abf7ab\">GET</span> <code class=\"language-text\">v3/reports/templates/logo</code></p>\n<p><strong>Query Parameters</strong></p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">id</code></td>\n<td>integer</td>\n<td>true</td>\n<td><code class=\"language-text\">id</code> value of the template.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X GET <span class=\"token string\">'https://api.polyswarm.network/v3/reports/templates/logo?id=89035259732911602'</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span> --output /Users/John/Documents/logo.jpg</code></pre></div>\n<h3 id=\"llm-reports\" style=\"position:relative;\"><a href=\"#llm-reports\" aria-label=\"llm reports permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>LLM Reports</h3>\n<p>LLM reports provide AI-generated analysis summaries for both scans and sandbox detonations using language models.</p>\n<p>For this to work, the team plan must include access to <code class=\"language-text\">downloads</code>. This feature consumes one unit from the PolySwarm Intelligence quota per report generated, which covers both the create and download steps.</p>\n<h5 id=\"create-llm-report\" style=\"position:relative;\"><a href=\"#create-llm-report\" aria-label=\"create llm report permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Create LLM Report</h5>\n<p><span style=\"background-color: #b5d5ff\">POST</span> <code class=\"language-text\">/v3/reports/llm</code></p>\n<blockquote>\n<p>Creates an LLM report task that will generate an AI-powered analysis summary. The system automatically detects duplicate pending reports and returns the existing one instead of creating a duplicate.</p>\n</blockquote>\n<p><strong>Body Schema</strong>\n(application/json)</p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">instance_id</code></td>\n<td>integer</td>\n<td>false</td>\n<td>The <code class=\"language-text\">artifact_id</code> from a scan submission. Include to add scan results to the LLM report.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">cape_sandbox_task_id</code></td>\n<td>integer</td>\n<td>false</td>\n<td>The task ID of a Cape sandbox detonation. Include to add Cape sandbox results to the LLM report.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">triage_sandbox_task_id</code></td>\n<td>integer</td>\n<td>false</td>\n<td>The task ID of a Triage sandbox detonation. Include to add Triage sandbox results to the LLM report.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">community</code></td>\n<td>string</td>\n<td>true</td>\n<td>Name of the Community. Simplest to use <code class=\"language-text\">default</code> for the public community, or <code class=\"language-text\">private</code> for your Private Community.</td>\n</tr>\n</tbody>\n</table>\n<blockquote>\n<p>At least one of <code class=\"language-text\">instance_id</code>, <code class=\"language-text\">cape_sandbox_task_id</code>, or <code class=\"language-text\">triage_sandbox_task_id</code> is required. You may combine <code class=\"language-text\">cape_sandbox_task_id</code> and <code class=\"language-text\">triage_sandbox_task_id</code> together, optionally alongside <code class=\"language-text\">instance_id</code>, to generate a single unified report from multiple sources.</p>\n</blockquote>\n<p><strong>Query Sample for Scan Report</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X POST -d <span class=\"token string\">'{\"instance_id\": \"97903321852386706\", \"community\": \"default\"}'</span> -H <span class=\"token string\">\"Content-Type: application/json\"</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span> https://api.polyswarm.network/v3/reports/llm</code></pre></div>\n<p><strong>Query Sample for Cape Sandbox Report</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X POST -d <span class=\"token string\">'{\"cape_sandbox_task_id\": \"97903321852386706\"}'</span> -H <span class=\"token string\">\"Content-Type: application/json\"</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span> https://api.polyswarm.network/v3/reports/llm</code></pre></div>\n<p><strong>Query Sample for Triage Sandbox Report</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X POST -d <span class=\"token string\">'{\"triage_sandbox_task_id\": \"97903321852386706\"}'</span> -H <span class=\"token string\">\"Content-Type: application/json\"</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span> https://api.polyswarm.network/v3/reports/llm</code></pre></div>\n<p><strong>Query Sample for Combined Cape + Triage Report</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X POST -d <span class=\"token string\">'{\"cape_sandbox_task_id\": \"97903321852386706\", \"triage_sandbox_task_id\": \"12345678901234567\"}'</span> -H <span class=\"token string\">\"Content-Type: application/json\"</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span> https://api.polyswarm.network/v3/reports/llm</code></pre></div>\n<hr>\n<h5 id=\"get-llm-report\" style=\"position:relative;\"><a href=\"#get-llm-report\" aria-label=\"get llm report permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Get LLM Report</h5>\n<p><span style=\"background-color: #abf7ab\">GET</span> <code class=\"language-text\">/v3/reports/llm</code></p>\n<blockquote>\n<p>Retrieve the status and details of an LLM report task. Use the <code class=\"language-text\">id</code> returned from the POST request.</p>\n</blockquote>\n<p><strong>Query Parameters</strong></p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">id</code></td>\n<td>integer</td>\n<td>true</td>\n<td><code class=\"language-text\">id</code> returned from the LLM report POST.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">community</code></td>\n<td>string</td>\n<td>true</td>\n<td>Name of the Community. Simplest to use <code class=\"language-text\">default</code> for the public community, or <code class=\"language-text\">private</code> for your Private Community.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X GET <span class=\"token string\">'https://api.polyswarm.network/v3/reports/llm?id=12345678901234567&amp;community=default'</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span></code></pre></div>\n<h2 id=\"searching\" style=\"position:relative;\"><a href=\"#searching\" aria-label=\"searching permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Searching</h2>\n<h3 id=\"hash-search\" style=\"position:relative;\"><a href=\"#hash-search\" aria-label=\"hash search permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Hash Searching</h3>\n<p><span style=\"background-color: #abf7ab\">GET</span> <code class=\"language-text\">/v3/search/hash/sha256</code></p>\n<blockquote>\n<p>Other Endpoints include: <code class=\"language-text\">/v3/search/hash/md5</code> and <code class=\"language-text\">/v3/search/hash/sha1</code></p>\n</blockquote>\n<p><strong>Query Parameters</strong></p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">hash</code></td>\n<td>string</td>\n<td>true</td>\n<td>Hash (sha256,md5 or sha1) value to be searched.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">community</code></td>\n<td>string</td>\n<td>true</td>\n<td>Name of the Community. Simplest to use <code class=\"language-text\">default</code> for the public community, or <code class=\"language-text\">private</code> for your Private Community.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">hash-type</code></td>\n<td>string</td>\n<td>false</td>\n<td>Hash type to be searched on, default is <code class=\"language-text\">autodetect</code>.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X GET <span class=\"token string\">'https://api.polyswarm.network/v3/search/hash/sha256?hash=5da5a1e3983982a92341953929d4c7726da65fe5125d264dd8932a870f2f154a&amp;community=default'</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span></code></pre></div>\n<h3 id=\"view-scan-history\" style=\"position:relative;\"><a href=\"#view-scan-history\" aria-label=\"view scan history permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>View Scan History</h3>\n<p><span style=\"background-color: #abf7ab\">GET</span> <code class=\"language-text\">/v3/search/instances</code></p>\n<p><strong>Query Parameters</strong></p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">hash</code></td>\n<td>string</td>\n<td>true</td>\n<td>Hash (sha256,md5 or sha1) value to be searched.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">community</code></td>\n<td>string</td>\n<td>true</td>\n<td>Name of the Community. Simplest to use <code class=\"language-text\">default</code> for the public community, or <code class=\"language-text\">private</code> for your Private Community.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X GET <span class=\"token string\">'https://api.polyswarm.network/v3/search/instances?hash=95531b268adee781f88c962f4b6d747ed82e1c1a58b636fdd925ca3ce31e9cf5&amp;community=default'</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span></code></pre></div>\n<h3 id=\"url-search\" style=\"position:relative;\"><a href=\"#url-search\" aria-label=\"url search permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>URL Searching</h3>\n<p><span style=\"background-color: #abf7ab\">GET</span> <code class=\"language-text\">/v3/search/url</code></p>\n<p><strong>Query Parameters</strong></p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">url</code></td>\n<td>string</td>\n<td>true</td>\n<td>URL value to be searched.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">community</code></td>\n<td>string</td>\n<td>true</td>\n<td>Name of the Community. Simplest to use <code class=\"language-text\">default</code> for the public community, or <code class=\"language-text\">private</code> for your Private Community.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X GET <span class=\"token string\">'https://api.polyswarm.network/v3/search/url?url=https%3A%2F%2Fpolyswarm.io&amp;community=default'</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span></code></pre></div>\n<h3 id=\"meta-search\" style=\"position:relative;\"><a href=\"#meta-search\" aria-label=\"meta search permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Metadata Searching</h3>\n<p><span style=\"background-color: #abf7ab\">GET</span> <code class=\"language-text\">/v3/search/metadata/query</code></p>\n<blockquote>\n<p>To understand how to build out a Metadata query see the <a href=\"/customers/polyswarm-customer-meta-query/#meta-getting-started\">How-To Guide</a>.</p>\n</blockquote>\n<p><strong>Query Parameters</strong></p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">query</code></td>\n<td>string</td>\n<td>true</td>\n<td>Metadata query to search on.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">include</code></td>\n<td>string</td>\n<td>false</td>\n<td>Metadata field to include in results.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">exclude</code></td>\n<td>string</td>\n<td>false</td>\n<td>Metadata field to exclude in results.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">community</code></td>\n<td>string</td>\n<td>true</td>\n<td>Name of the Community. Simplest to use <code class=\"language-text\">default</code> for the public community, or <code class=\"language-text\">private</code> for your Private Community.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X GET <span class=\"token string\">'https://api.polyswarm.network/v3/search/metadata/query?query=artifact.sha256:5da5a1e3983982a92341953929d4c7726da65fe5125d264dd8932a870f2f154a'</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span></code></pre></div>\n<p><strong>Query Sample</strong></p>\n<p>The below query searches for artifacts related to emotet and only return the Triage TTP values, making use of the <code class=\"language-text\">include</code> option.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X GET <span class=\"token string\">'https://api.polyswarm.network/v3/search/metadata/query?include=triage_sandbox_v0.ttp&amp;query=polyunite.malware_family%3AEmotet&amp;community=default'</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span></code></pre></div>\n<h3 id=\"ioc-search\" style=\"position:relative;\"><a href=\"#ioc-search\" aria-label=\"ioc search permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>IOC Searching</h3>\n<ul>\n<li>Searching for Associated IOCs related to a Hash: This returns IOCs that were observed by our sandbox during analysis. These IP's and Domains are classified as C2 or malicious.</li>\n<li>Searching for Associated Hashes related to an IP, URL, imphash or MITRE TTP: This returns file hashes that were seen communicating with the specified IPs or domains in our sandbox — regardless of whether the communication was malicious or not.</li>\n</ul>\n<h5 id=\"associated-iocs\" style=\"position:relative;\"><a href=\"#associated-iocs\" aria-label=\"associated iocs permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Search for Associated IOCs</h5>\n<p><span style=\"background-color: #abf7ab\">GET</span> <code class=\"language-text\">/v3/ioc/sha256/{sha256}</code></p>\n<blockquote>\n<p>Other Endpoints include: <code class=\"language-text\">/v3/ioc/md5/{md5}</code> and <code class=\"language-text\">/v3/ioc/sha1/{sha1}</code>. Include the desired hash value in the endpoint to retrieve associated ip,domain, ttp and imphash results.</p>\n</blockquote>\n<p><strong>Query Parameters</strong></p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">community</code></td>\n<td>string</td>\n<td>true</td>\n<td>Name of the Community. Simplest to use <code class=\"language-text\">default</code> for the public community, or <code class=\"language-text\">private</code> for your Private Community.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X GET <span class=\"token string\">'https://api.polyswarm.network/v3/ioc/sha256/2a85d68c1c503d9b6efcf124ac7d7afc0f3a8a0543f5d6790ebd978f4e8468bd?community=default'</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span></code></pre></div>\n<h5 id=\"associated-hash\" style=\"position:relative;\"><a href=\"#associated-hash\" aria-label=\"associated hash permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Search for Associated Hashes</h5>\n<p><span style=\"background-color: #abf7ab\">GET</span> <code class=\"language-text\">/v3/ioc/search</code></p>\n<p><strong>Query Parameters</strong></p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">community</code></td>\n<td>string</td>\n<td>true</td>\n<td>Name of the Community. Simplest to use <code class=\"language-text\">default</code> for the public community, or <code class=\"language-text\">private</code> for your Private Community.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">imphash</code></td>\n<td>string</td>\n<td>false</td>\n<td>imphash to see related hashes.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">domain</code></td>\n<td>string</td>\n<td>false</td>\n<td>domain to see related hashes.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">ttp</code></td>\n<td>string</td>\n<td>false</td>\n<td>MITRE ttp to see related hashes.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">ip</code></td>\n<td>string</td>\n<td>false</td>\n<td>IP to see related hashes.</td>\n</tr>\n</tbody>\n</table>\n<blockquote>\n<p>Requires at least one of the values imphash, domain, ttp or ip in the query.</p>\n</blockquote>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X GET <span class=\"token string\">'https://api.polyswarm.network/v3/ioc/search?ip=193.138.218.74&amp;community=default'</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span></code></pre></div>\n<h2 id=\"sandboxing\" style=\"position:relative;\"><a href=\"#sandboxing\" aria-label=\"sandboxing permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Sandboxing</h2>\n<h3 id=\"list-sandboxes\" style=\"position:relative;\"><a href=\"#list-sandboxes\" aria-label=\"list sandboxes permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>List Sandboxes</h3>\n<p><span style=\"background-color: #abf7ab\">GET</span> <code class=\"language-text\">/v3/sandbox/provider/list</code></p>\n<blockquote>\n<p>List the <code class=\"language-text\">provider_slug</code> and <code class=\"language-text\">vm_slug</code> values for sandboxing a file and/or artifact.</p>\n</blockquote>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X GET <span class=\"token string\">'https://api.polyswarm.network/v3/sandbox/provider/list'</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span></code></pre></div>\n<h3 id=\"sandboxing-a-fileurl\" style=\"position:relative;\"><a href=\"#sandboxing-a-fileurl\" aria-label=\"sandboxing a fileurl permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Sandboxing a File/URL</h3>\n<blockquote>\n<p>Want to know what files types are supported? See <a href=\"sandbox#file-types\">here</a></p>\n</blockquote>\n<p><span style=\"background-color: #b5d5ff\">POST</span> <code class=\"language-text\">/v3/sandbox/sandboxtask/instance</code></p>\n<blockquote>\n<p>Inform PolySwarm to start a sandbox, returns an <code class=\"language-text\">id</code> value in the json and pre signed AWS url that the file needs to be placed into. This is the same process for Sandboxing a File and Sandboxing a URL, as the process for URL will be to upload a file with the URL inside it.</p>\n</blockquote>\n<p><strong>Body Schema</strong>\n(application/json)</p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">artifact_name</code></td>\n<td>string</td>\n<td>true</td>\n<td>Path to File of the artifact to be sandboxed or URL string.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">artifact_type</code></td>\n<td>string</td>\n<td>true</td>\n<td>Defines the type, <code class=\"language-text\">FILE</code> to Sandbox a file, <code class=\"language-text\">URL</code> to Sandbox a URL.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">preprocessing</code></td>\n<td>object</td>\n<td>false</td>\n<td>Preprocessing settings to be applied to the artifact. See schema table bellow.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">provider_slug</code></td>\n<td>string</td>\n<td>true</td>\n<td>Name of the sandbox to detonate on. For URL Sandboxing only Triage is Supported.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">community</code></td>\n<td>string</td>\n<td>true</td>\n<td>Name of the Community. Simplest to use <code class=\"language-text\">default</code> for the public community, or <code class=\"language-text\">private</code> for your Private Community.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">vm_slug</code></td>\n<td>string</td>\n<td>true</td>\n<td>Slug name for the sandbox vm to use, for URL Sandboxing only Windows 10 on Triage is Supported.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">browser</code></td>\n<td>string</td>\n<td>false</td>\n<td>Optional value to choose the browser for URL detonation, only <code class=\"language-text\">edge</code> supported.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Body / Preprocessing Schema</strong>\n(application/json)</p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">type</code></td>\n<td>string</td>\n<td>true</td>\n<td>Either <code class=\"language-text\">zip</code> or <code class=\"language-text\">qrcode</code>, the first mean the file is a zip that the server has to decompress to then sandbox the content (only one file inside allowed). \"qrcode\" means the file is a QR Code image with a URL as payload, and you want to sandbox the URL, not the actual file (artifact_type has to be \"URL\").</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">password</code></td>\n<td>string</td>\n<td>false</td>\n<td>Use this password to decompress the zip file.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<p>Here is a simple sandboxing POST request:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X POST -d <span class=\"token string\">'{\n  \"artifact_name\": \"eicar.txt\",\n  \"artifact_type\": \"FILE\",\n  \"community\": \"default\",\n  \"sandbox\": \"cape\"\n}'</span> -H <span class=\"token string\">\"Content-Type: application/json\"</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span> https://api.polyswarm.network/v3/sandbox/sandboxtask/instance</code></pre></div>\n<p>Here is an example using the \"preprocessing\" argument to send an encrypted zip file:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X POST -d <span class=\"token string\">'{\n  \"artifact_name\": \"target.zip\",\n  \"artifact_type\": \"FILE\",\n  \"community\": \"default\",\n  \"sandbox\": \"cape\",\n  \"preprocessing\": {\"type\": \"zip\", \"password\": \"password\"}\n}'</span> -H <span class=\"token string\">\"Content-Type: application/json\"</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span> https://api.polyswarm.network/v3/sandbox/sandboxtask/instance</code></pre></div>\n<hr>\n<p><span style=\"background-color: #ffbd8c\">PUT</span> <code class=\"language-text\">https://s3.us-east-2.amazonaws.com/{PRE_SIGNED_AWS_URL}</code></p>\n<blockquote>\n<p>Provide the file to upload to the AWS URL.</p>\n</blockquote>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> --upload-file ./tests/eicar.txt <span class=\"token string\">\"&lt;PRE_SIGNED_AWS_URL>\"</span></code></pre></div>\n<hr>\n<p><span style=\"background-color: #ffbd8c\">PUT</span> <code class=\"language-text\">/v3/sandbox/sandboxtask/instance</code></p>\n<blockquote>\n<p>Inform PolySwarm the upload is complete and to start the sandbox.</p>\n</blockquote>\n<p><strong>Query Parameters</strong></p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">id</code></td>\n<td>string</td>\n<td>true</td>\n<td><code class=\"language-text\">id</code> that has been returned by the first <code class=\"language-text\">POST</code> command.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">community</code></td>\n<td>string</td>\n<td>false</td>\n<td><code class=\"language-text\">private</code> or <code class=\"language-text\">public</code> values for the community`</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X PUT <span class=\"token string\">'https://api.polyswarm.network/v3/sandbox/sandboxtask/instance?id=49722305458696948'</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span></code></pre></div>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X PUT <span class=\"token string\">'https://api.polyswarm.network/v3/sandbox/sandboxtask/instance?id=49722305458696948&amp;community=private'</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span></code></pre></div>\n<p>Sandboxes have multiple returned statuses, these are listed below.</p>\n<table>\n<thead>\n<tr>\n<th>Status Name</th>\n<th>API Status Name</th>\n<th>What is it for?</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">Success</code></td>\n<td><code class=\"language-text\">SUCCEEDED</code></td>\n<td>Finished processing correctly.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">Started</code></td>\n<td><code class=\"language-text\">STARTED</code></td>\n<td>Sandbox session has started.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">Collecting Data</code></td>\n<td><code class=\"language-text\">COLLECTING_DATA</code></td>\n<td>Sandbox session has been successful and data is being collected.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">Failed</code></td>\n<td><code class=\"language-text\">FAILED</code></td>\n<td>Sandbox session has failed, this can be due to many reasons.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">Pending</code></td>\n<td><code class=\"language-text\">PENDING</code></td>\n<td>Sandbox session is queued up and ready to start.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">Timed out</code></td>\n<td><code class=\"language-text\">TIMEDOUT</code></td>\n<td>Sandbox session has timed out and quota has not been reimbursed.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">Delayed</code></td>\n<td><code class=\"language-text\">DELAYED</code></td>\n<td>Sandbox session has been delayed and will start soon.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">Failed with Quota Reimbursement</code></td>\n<td><code class=\"language-text\">FAILED_REIMBURSED</code></td>\n<td>Finished processing but failed, quota will be reimbursed.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">Timed out with Quota Reimbursement</code></td>\n<td><code class=\"language-text\">TIMEDOUT_REIMBURSED</code></td>\n<td>Delayed in the queue for too long, got timed out and then reimbursement.</td>\n</tr>\n</tbody>\n</table>\n<p>Query every 30 seconds to understand if the Sandbox session has been successful, see the <a href=\"polyswarm-rest-api-v3#lookup-sandbox\">Lookup Sandbox Task</a> section below.</p>\n<h3 id=\"sandboxing-an-existing-artifact\" style=\"position:relative;\"><a href=\"#sandboxing-an-existing-artifact\" aria-label=\"sandboxing an existing artifact permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Sandboxing an Existing Artifact</h3>\n<p><span style=\"background-color: #b5d5ff\">POST</span> <code class=\"language-text\">/v3/sandbox/sandboxtask</code></p>\n<p>Send an existing artifact to be sandboxed by providing its artifact id, and the chosen Sandbox provider.</p>\n<p><strong>Body Schema</strong>\n(application/json)</p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">artifact_id</code></td>\n<td>integer</td>\n<td>true</td>\n<td><code class=\"language-text\">artifact_id</code> value for the artifact.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">provider_slug</code></td>\n<td>string</td>\n<td>true</td>\n<td>Sandbox provider name.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">community</code></td>\n<td>string</td>\n<td>false</td>\n<td><code class=\"language-text\">private</code> or <code class=\"language-text\">public</code> values for the community`</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">network_enabled</code></td>\n<td>boolean</td>\n<td>false</td>\n<td><code class=\"language-text\">true</code> or <code class=\"language-text\">false</code> defines if you want Internet on Sandbox Detonation. Default <code class=\"language-text\">true</code> for public communities and <code class=\"language-text\">false</code> for private ones.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">vm_slug</code></td>\n<td>string</td>\n<td>false</td>\n<td>Slug name for the sandbox vm to use.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X POST -d <span class=\"token string\">'{\"artifact_id\": \"66885603025097785\", \"provider_slug\": \"cape\"}'</span>  -H <span class=\"token string\">\"Content-Type: application/json\"</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span> https://api.polyswarm.network/v3/sandbox/sandboxtask</code></pre></div>\n<h3 id=\"lookup-sandbox\" style=\"position:relative;\"><a href=\"#lookup-sandbox\" aria-label=\"lookup sandbox permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Lookup Sandbox Task</h3>\n<p><span style=\"background-color: #abf7ab\">GET</span> <code class=\"language-text\">/v3/sandbox/sandboxtask</code></p>\n<p>Lookup the results from the specified sandbox task.</p>\n<p><strong>Query Parameters</strong></p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">community</code></td>\n<td>string</td>\n<td>true</td>\n<td>Name of the Community. Simplest to use <code class=\"language-text\">default</code> for the public community, or <code class=\"language-text\">private</code> for your Private Community.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">sandbox_task_id</code></td>\n<td>integer</td>\n<td>true</td>\n<td>sandbox task id value.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X GET <span class=\"token string\">'https://api.polyswarm.network/v3/sandbox/sandboxtask?community=default&amp;sandbox_task_id=29603365297891589'</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span></code></pre></div>\n<h3 id=\"lookup-latest-sandbox-task\" style=\"position:relative;\"><a href=\"#lookup-latest-sandbox-task\" aria-label=\"lookup latest sandbox task permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Lookup Latest Sandbox Task</h3>\n<p><span style=\"background-color: #abf7ab\">GET</span> <code class=\"language-text\">/v3/sandbox/sandboxtask/latest</code></p>\n<p>Lookup the results from the most recent sandbox task that was run on the provided sha256 in the provided sandbox.</p>\n<p><strong>Query Parameters</strong></p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">community</code></td>\n<td>string</td>\n<td>true</td>\n<td>Name of the Community. Simplest to use <code class=\"language-text\">default</code> for the public community, or <code class=\"language-text\">private</code> for your Private Community.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">sha256</code></td>\n<td>string</td>\n<td>true</td>\n<td>Hash value to lookup.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">sandbox</code></td>\n<td>string</td>\n<td>true</td>\n<td>Name of the Sandbox, e.g. <code class=\"language-text\">cape</code>, <code class=\"language-text\">triage</code>.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X GET <span class=\"token string\">'https://api.polyswarm.network/v3/sandbox/sandboxtask/latest?community=default&amp;sandbox=cape&amp;sha256=5da5a1e3983982a92341953929d4c7726da65fe5125d264dd8932a870f2f154a'</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span></code></pre></div>\n<h3 id=\"download-sandbox-artifact\" style=\"position:relative;\"><a href=\"#download-sandbox-artifact\" aria-label=\"download sandbox artifact permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Download Sandbox Artifact</h3>\n<p>To download Sandbox Artifacts like pcap, jarm or report files follow <a href=\"/customers/polyswarm-rest-api-v3/#download-id\">this</a> section to download via <code class=\"language-text\">instance_id</code>.</p>\n<blockquote>\n<p>Each file (pcap,report etc) will have its own <code class=\"language-text\">instance_id</code>, these can be found by using the \"Lookup Sandbox Task\" (<code class=\"language-text\">/v3/sandbox/sandboxtask</code>) command, and each file name will have an <code class=\"language-text\">instance_id</code> listed beside it.</p>\n</blockquote>\n<h3 id=\"list-my-sandbox-tasks\" style=\"position:relative;\"><a href=\"#list-my-sandbox-tasks\" aria-label=\"list my sandbox tasks permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>List my Sandbox Tasks</h3>\n<p><span style=\"background-color: #abf7ab\">GET</span> <code class=\"language-text\">/v3/sandbox/sandboxtask/my-tasks</code></p>\n<p>Find all sandbox tasks that you or your team members have run in the chosen date range.</p>\n<p><strong>Query Parameters</strong></p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">community</code></td>\n<td>string</td>\n<td>true</td>\n<td>Name of the Community. Simplest to use <code class=\"language-text\">default</code> for the public community, or <code class=\"language-text\">private</code> for your Private Community.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">sandbox</code></td>\n<td>string</td>\n<td>false</td>\n<td>Name of the sandbox to search on.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">start-date</code></td>\n<td>string</td>\n<td>false</td>\n<td>Start date to search.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">end-date</code></td>\n<td>string</td>\n<td>false</td>\n<td>End date to search.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">user_account_id</code></td>\n<td>integer</td>\n<td>false</td>\n<td>User account that created the sandbox task.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X GET <span class=\"token string\">'https://api.polyswarm.network/v3/sandbox/sandboxtask/my-tasks?community=default'</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span></code></pre></div>\n<h3 id=\"search-sandbox-tasks\" style=\"position:relative;\"><a href=\"#search-sandbox-tasks\" aria-label=\"search sandbox tasks permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Search Sandbox Tasks</h3>\n<p><span style=\"background-color: #abf7ab\">GET</span> <code class=\"language-text\">/v3/sandbox/sandboxtask/list</code></p>\n<p>Find all sandbox tasks associated with a sha256 (i.e. each time that artifact was sandboxed).</p>\n<p><strong>Query Parameters</strong></p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">sha256</code></td>\n<td>string</td>\n<td>true</td>\n<td>Hash value to find related tasks.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">sandbox</code></td>\n<td>string</td>\n<td>false</td>\n<td>Sandbox name to search.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">start_date</code></td>\n<td>string</td>\n<td>false</td>\n<td>Start date for the search, i.e. <code class=\"language-text\">2024-09-27</code> (ISO format).</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">end_date</code></td>\n<td>string</td>\n<td>false</td>\n<td>End date for the search, i.e. <code class=\"language-text\">2024-09-27</code> (ISO format).</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">status</code></td>\n<td>string</td>\n<td>false</td>\n<td>Status of the sandbox task i.e. <code class=\"language-text\">PENDING</code>.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">account_id</code></td>\n<td>integer</td>\n<td>false</td>\n<td>Account that created the sandbox task.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X GET <span class=\"token string\">'https://api.polyswarm.network/v3/sandbox/sandboxtask/list?sha256=5da5a1e3983982a92341953929d4c7726da65fe5125d264dd8932a870f2f154a'</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span></code></pre></div>\n<h2 id=\"notification-webhooks\" style=\"position:relative;\"><a href=\"#notification-webhooks\" aria-label=\"notification webhooks permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Notification Webhooks</h2>\n<p>Notification webhooks allow you to receive real-time notifications for events in PolySwarm, such as when sandbox analysis completes.</p>\n<h3 id=\"create-a-notification-webhook\" style=\"position:relative;\"><a href=\"#create-a-notification-webhook\" aria-label=\"create a notification webhook permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Create a Notification Webhook</h3>\n<p><span style=\"background-color: #b5d5ff\">POST</span> <code class=\"language-text\">/v3/notification/webhook</code></p>\n<p><strong>Body Schema</strong>\n(application/json)</p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">webhook_uri</code></td>\n<td>string</td>\n<td>true</td>\n<td>The URI where notification webhook events should be sent.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">secret</code></td>\n<td>string</td>\n<td>true</td>\n<td>The secret key used for HMAC signature verification.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">status</code></td>\n<td>string</td>\n<td>false</td>\n<td>Notification webhook status: <code class=\"language-text\">enabled</code> or <code class=\"language-text\">disabled</code> (default: <code class=\"language-text\">enabled</code>)</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">events</code></td>\n<td>array</td>\n<td>false</td>\n<td>Event types to subscribe to (e.g., <code class=\"language-text\">['sandbox_done']</code>)</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X POST -d <span class=\"token string\">'{\n  \"webhook_uri\": \"https://example.com/webhook\",\n  \"secret\": \"your-secret-key\",\n  \"status\": \"enabled\",\n  \"events\": [\"sandbox_done\"]\n}'</span> -H <span class=\"token string\">\"Content-Type: application/json\"</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span> https://api.polyswarm.network/v3/notification/webhook</code></pre></div>\n<h3 id=\"get-a-notification-webhook\" style=\"position:relative;\"><a href=\"#get-a-notification-webhook\" aria-label=\"get a notification webhook permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Get a Notification Webhook</h3>\n<p><span style=\"background-color: #abf7ab\">GET</span> <code class=\"language-text\">/v3/notification/webhook</code></p>\n<p><strong>Query Parameters</strong></p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">id</code></td>\n<td>integer</td>\n<td>true</td>\n<td>The ID of the notification webhook.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X GET <span class=\"token string\">'https://api.polyswarm.network/v3/notification/webhook?id=12345'</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span></code></pre></div>\n<h3 id=\"update-a-notification-webhook\" style=\"position:relative;\"><a href=\"#update-a-notification-webhook\" aria-label=\"update a notification webhook permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Update a Notification Webhook</h3>\n<p><span style=\"background-color: #ffbd8c\">PUT</span> <code class=\"language-text\">/v3/notification/webhook</code></p>\n<p><strong>Query Parameters</strong></p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">id</code></td>\n<td>integer</td>\n<td>true</td>\n<td>The ID of the notification webhook.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Body Schema</strong>\n(application/json)</p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">webhook_uri</code></td>\n<td>string</td>\n<td>false</td>\n<td>The new notification webhook URI.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">secret</code></td>\n<td>string</td>\n<td>false</td>\n<td>The new secret for HMAC signing.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">status</code></td>\n<td>string</td>\n<td>false</td>\n<td>The new status: <code class=\"language-text\">enabled</code> or <code class=\"language-text\">disabled</code>.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">events</code></td>\n<td>array</td>\n<td>false</td>\n<td>Event types to subscribe to.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X PUT -d <span class=\"token string\">'{\n  \"webhook_uri\": \"https://newexample.com/webhook\",\n  \"status\": \"disabled\"\n}'</span> -H <span class=\"token string\">\"Content-Type: application/json\"</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span> https://api.polyswarm.network/v3/notification/webhook?id<span class=\"token operator\">=</span><span class=\"token number\">12345</span></code></pre></div>\n<h3 id=\"delete-a-notification-webhook\" style=\"position:relative;\"><a href=\"#delete-a-notification-webhook\" aria-label=\"delete a notification webhook permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Delete a Notification Webhook</h3>\n<p><span style=\"background-color: #ffa3a3\">DELETE</span> <code class=\"language-text\">/v3/notification/webhook</code></p>\n<p><strong>Query Parameters</strong></p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">id</code></td>\n<td>integer</td>\n<td>true</td>\n<td>The ID of the notification webhook.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X DELETE <span class=\"token string\">'https://api.polyswarm.network/v3/notification/webhook?id=12345'</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span></code></pre></div>\n<h3 id=\"list-all-notification-webhooks\" style=\"position:relative;\"><a href=\"#list-all-notification-webhooks\" aria-label=\"list all notification webhooks permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>List All Notification Webhooks</h3>\n<p><span style=\"background-color: #abf7ab\">GET</span> <code class=\"language-text\">/v3/notification/webhook/list</code></p>\n<p><strong>Query Parameters</strong></p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">limit</code></td>\n<td>integer</td>\n<td>false</td>\n<td>Number of results per page (default: 50).</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">offset</code></td>\n<td>string</td>\n<td>false</td>\n<td>Pagination offset token returned by the server for the next page of results.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X GET <span class=\"token string\">'https://api.polyswarm.network/v3/notification/webhook/list?limit=50'</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span></code></pre></div>\n<h3 id=\"test-a-notification-webhook\" style=\"position:relative;\"><a href=\"#test-a-notification-webhook\" aria-label=\"test a notification webhook permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Test a Notification Webhook</h3>\n<p><span style=\"background-color: #b5d5ff\">POST</span> <code class=\"language-text\">/v3/notification/webhook/test</code></p>\n<p><strong>Query Parameters</strong></p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">id</code></td>\n<td>integer</td>\n<td>true</td>\n<td>The ID of the notification webhook.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X POST <span class=\"token string\">'https://api.polyswarm.network/v3/notification/webhook/test?id=12345'</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span></code></pre></div>\n<blockquote>\n<p>Note: When this endpoint is called, a success response is returned, this is a success  for the request, it does not mean the webhook url worked.</p>\n</blockquote>\n<h2 id=\"hunting\" style=\"position:relative;\"><a href=\"#hunting\" aria-label=\"hunting permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Hunting with Yara</h2>\n<h3 id=\"yara-hunt\" style=\"position:relative;\"><a href=\"#yara-hunt\" aria-label=\"yara hunt permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Managing Yara Rulesets</h3>\n<h5 id=\"create-ruleset\" style=\"position:relative;\"><a href=\"#create-ruleset\" aria-label=\"create ruleset permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Create Ruleset</h5>\n<p><span style=\"background-color: #b5d5ff\">POST</span> <code class=\"language-text\">/v3/hunt/rule</code></p>\n<p>Create a new ruleset.</p>\n<p><strong>Body Schema</strong>\n(application/json)</p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">yara</code></td>\n<td>string</td>\n<td>true</td>\n<td>Yara values, escape the items.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">name</code></td>\n<td>string</td>\n<td>true</td>\n<td>Name of the ruleset.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">description</code></td>\n<td>string</td>\n<td>false</td>\n<td>Description for the ruleset.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X POST -d <span class=\"token string\">'{\"yara\": \"\\/*\\r\\n This Yara ruleset is under the GNU-GPLv2 license (http:\\/\\/www.gnu.org\\/licenses\\/gpl-2.0.html) and open to any user or organization, as long as you use it under this license.\\r\\n\\r\\n*\\/\\r\\n\\r\\nimport \\\"pe\\\"\\r\\n\\r\\nrule MirageStrings\\r\\n{\\r\\n meta:\\r\\n description = \\\"Mirage Identifying Strings\\\"\\r\\n author = \\\"Seth Hardy\\\"\\r\\n last_modified = \\\"2014-06-25\\\"\\r\\n \\r\\n strings:\\r\\n $ = \\\"Neo,welcome to the desert of real.\\\" wide ascii\\r\\n $ = \\\"\\/result?hl=en&amp;id=%s\\\"\\r\\n \\r\\n condition:\\r\\n  any of them\\r\\n}\\r\\n\\r\\nrule Mirage\\r\\n{\\r\\n meta:\\r\\n description = \\\"Mirage\\\"\\r\\n author = \\\"Seth Hardy\\\"\\r\\n last_modified = \\\"2014-06-25\\\"\\r\\n \\r\\n condition:\\r\\n MirageStrings\\r\\n}\\r\\n\\r\\nrule Mirage_APT\\r\\n{\\r\\n meta:\\r\\n Author = \\\"Silas Cutler\\\"\\r\\n Date = \\\"yyyy\\/mm\\/dd\\\"\\r\\n Description = \\\"Malware related to APT campaign\\\"\\r\\n Reference  = \\\"Useful link\\\"\\r\\n \\r\\n strings:\\r\\n $a1 = \\\"welcome to the desert of the real\\\"\\r\\n $a2 = \\\"Mirage\\\"\\r\\n $b = \\\"Encoding: gzip\\\"\\r\\n $c = \\/\\\\\\/[A-Za-z]*\\\\?hl=en\\/\\r\\n\\r\\n condition: \\r\\n (($a1 or $a2) or $b) and $c\\r\\n}\", \"name\": \"test_rule\"}'</span> -H <span class=\"token string\">\"Content-Type: application/json\"</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span> https://api.polyswarm.network/v3/hunt/rule</code></pre></div>\n<h5 id=\"view-ruleset\" style=\"position:relative;\"><a href=\"#view-ruleset\" aria-label=\"view ruleset permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>View Ruleset</h5>\n<p><span style=\"background-color: #abf7ab\">GET</span> <code class=\"language-text\">/v3/hunt/rule</code></p>\n<p>View the contents of the specified ruleset.</p>\n<p><strong>Query Parameters</strong></p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">id</code></td>\n<td>integer</td>\n<td>true</td>\n<td><code class=\"language-text\">ruleset id</code> value to view the contents.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X GET <span class=\"token string\">'https://api.polyswarm.network/v3/hunt/rule?id=15862162112430616'</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span></code></pre></div>\n<h5 id=\"list-rulesets\" style=\"position:relative;\"><a href=\"#list-rulesets\" aria-label=\"list rulesets permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>List Rulesets</h5>\n<p><span style=\"background-color: #abf7ab\">GET</span> <code class=\"language-text\">/v3/hunt/rule/list</code></p>\n<p>List all rulesets in your account</p>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X GET <span class=\"token string\">'https://api.polyswarm.network/v3/hunt/rule/list'</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span></code></pre></div>\n<h5 id=\"update-ruleset\" style=\"position:relative;\"><a href=\"#update-ruleset\" aria-label=\"update ruleset permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Update Ruleset</h5>\n<p><span style=\"background-color: #ffbd8c\">PUT</span> <code class=\"language-text\">/v3/hunt/rule</code></p>\n<p><strong>Query Parameters</strong></p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">id</code></td>\n<td>integer</td>\n<td>true</td>\n<td><code class=\"language-text\">ruleset_id</code> that needs to be updated.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Body Schema</strong>\n(application/json)</p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">name</code></td>\n<td>string</td>\n<td>false</td>\n<td>New updated name for the ruleset.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">file</code></td>\n<td>string</td>\n<td>false</td>\n<td>New updated yara values, escaped.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">description</code></td>\n<td>string</td>\n<td>false</td>\n<td>New updated description.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X PUT -d <span class=\"token string\">'{\"yara\": \"\\/*\\r\\n This Yara ruleset is under the GNU-GPLv2 license (http:\\/\\/www.gnu.org\\/licenses\\/gpl-2.0.html) and open to any user or organization, as long as you use it under this license.\\r\\n\\r\\n*\\/\\r\\n\\r\\nimport \\\"pe\\\"\\r\\n\\r\\nrule MirageStrings\\r\\n{\\r\\n meta:\\r\\n description = \\\"Mirage Identifying Strings\\\"\\r\\n author = \\\"Seth Hardy\\\"\\r\\n last_modified = \\\"2014-06-25\\\"\\r\\n \\r\\n strings:\\r\\n $ = \\\"Neo,welcome to the desert of real.\\\" wide ascii\\r\\n $ = \\\"\\/result?hl=en&amp;id=%s\\\"\\r\\n \\r\\n condition:\\r\\n  any of them\\r\\n}\\r\\n\\r\\nrule Mirage\\r\\n{\\r\\n meta:\\r\\n description = \\\"Mirage\\\"\\r\\n author = \\\"Seth Hardy\\\"\\r\\n last_modified = \\\"2014-06-25\\\"\\r\\n \\r\\n condition:\\r\\n MirageStrings\\r\\n}\\r\\n\\r\\nrule Mirage_APT\\r\\n{\\r\\n meta:\\r\\n Author = \\\"Silas Cutler\\\"\\r\\n Date = \\\"yyyy\\/mm\\/dd\\\"\\r\\n Description = \\\"Malware related to APT campaign\\\"\\r\\n Reference  = \\\"Useful link\\\"\\r\\n \\r\\n strings:\\r\\n $a1 = \\\"welcome to the desert of the real\\\"\\r\\n $a2 = \\\"Mirage\\\"\\r\\n $b = \\\"Encoding: gzip\\\"\\r\\n $c = \\/\\\\\\/[A-Za-z]*\\\\?hl=en\\/\\r\\n\\r\\n condition: \\r\\n (($a1 or $a2) or $b) and $c\\r\\n}\", \"name\": \"yytest_rule4444\"}'</span> -H <span class=\"token string\">\"Content-Type: application/json\"</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span> https://api.polyswarm.network/v3/hunt/rule?id<span class=\"token operator\">=</span><span class=\"token number\">15862162112430616</span></code></pre></div>\n<h5 id=\"delete-ruleset\" style=\"position:relative;\"><a href=\"#delete-ruleset\" aria-label=\"delete ruleset permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Delete Ruleset</h5>\n<p><span style=\"background-color: #ffa3a3\">DELETE</span> <code class=\"language-text\">/v3/hunt/rule</code></p>\n<p>Delete the given ruleset.</p>\n<p><strong>Query Parameters</strong></p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">id</code></td>\n<td>integer</td>\n<td>true</td>\n<td><code class=\"language-text\">ruleset_id</code> value to delete.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X DELETE <span class=\"token string\">'https://api.polyswarm.network/v3/hunt/rule?id=15862162112430616'</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span></code></pre></div>\n<h3 id=\"live-hunt\" style=\"position:relative;\"><a href=\"#live-hunt\" aria-label=\"live hunt permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Live Hunts</h3>\n<h5 id=\"start-live-hunt\" style=\"position:relative;\"><a href=\"#start-live-hunt\" aria-label=\"start live hunt permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Start Live Hunt</h5>\n<p><span style=\"background-color: #b5d5ff\">POST</span> <code class=\"language-text\">/v3/hunt/rule/live</code></p>\n<p>Start a Live Hunt using the given ruleset.</p>\n<p><strong>Body Schema</strong>\n(application/json)</p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">rule_id</code></td>\n<td>integer</td>\n<td>true</td>\n<td><code class=\"language-text\">rule_id</code> of the ruleset to start a live hunt.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X POST -d <span class=\"token string\">'{\"rule_id\":\"6992666340481223\"}'</span> -H <span class=\"token string\">\"Content-Type: application/json\"</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span> https://api.polyswarm.network/v3/hunt/rule/live</code></pre></div>\n<h5 id=\"stop-live-hunt\" style=\"position:relative;\"><a href=\"#stop-live-hunt\" aria-label=\"stop live hunt permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Stop Live Hunt</h5>\n<p><span style=\"background-color: #ffa3a3\">DELETE</span> <code class=\"language-text\">/v3/hunt/rule/live</code></p>\n<p>Stop the Live Hunt on a given ruleset.</p>\n<p><strong>Body Schema</strong>\n(application/json)</p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">rule_id</code></td>\n<td>integer</td>\n<td>true</td>\n<td><code class=\"language-text\">rule_id</code> of the ruleset to stop a live hunt/</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X DELETE -d <span class=\"token string\">'{\"rule_id\":\"6992666340481223\"}'</span> -H <span class=\"token string\">\"Content-Type: application/json\"</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span> https://api.polyswarm.network/v3/hunt/rule/live</code></pre></div>\n<h5 id=\"view-live-results-of-a-live-hunt\" style=\"position:relative;\"><a href=\"#view-live-results-of-a-live-hunt\" aria-label=\"view live results of a live hunt permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>View Live Results of a Live Hunt</h5>\n<p><span style=\"background-color: #abf7ab\">GET</span> <code class=\"language-text\">/v3/hunt/live/list</code></p>\n<p><strong>Query Parameters</strong></p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">since</code></td>\n<td>integer</td>\n<td>false</td>\n<td>Time value (in seconds) for how far back to request results (default <code class=\"language-text\">1440</code>).</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">rule-name</code></td>\n<td>integer</td>\n<td>false</td>\n<td>Name of the ruleset being used in the hunt.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">family</code></td>\n<td>string</td>\n<td>false</td>\n<td>Filter results based on the family name.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">community</code></td>\n<td>string</td>\n<td>false</td>\n<td>Filter results based community.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">polyscore-lower</code></td>\n<td>string</td>\n<td>false</td>\n<td>Polyscore lower bound for the hunt results.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">polyscore-upper</code></td>\n<td>string</td>\n<td>false</td>\n<td>Polyscore upper bound for the hunt results.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X GET <span class=\"token string\">'https://api.polyswarm.network/v3/hunt/live/list?polyscore-upper=0.99'</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span></code></pre></div>\n<h5 id=\"view-a-singular-result\" style=\"position:relative;\"><a href=\"#view-a-singular-result\" aria-label=\"view a singular result permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>View a Singular Result</h5>\n<p><span style=\"background-color: #abf7ab\">GET</span> <code class=\"language-text\">/v3/hunt/live</code></p>\n<p><strong>Query Parameters</strong></p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">id</code></td>\n<td>integer</td>\n<td>true</td>\n<td>Provide the result id value.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X GET <span class=\"token string\">'https://api.polyswarm.network/v3/hunt/live?id=75570120079919313'</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span></code></pre></div>\n<h5 id=\"delete-live-result\" style=\"position:relative;\"><a href=\"#delete-live-result\" aria-label=\"delete live result permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Delete Live Result</h5>\n<p><span style=\"background-color: #ffa3a3\">DELETE</span> <code class=\"language-text\">/v3/hunt/live/list</code></p>\n<p><strong>Body Schema</strong>\n(application/json)</p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">result_ids</code></td>\n<td>integer</td>\n<td>true</td>\n<td>List of <code class=\"language-text\">ruleset_ids</code> for the live hunt results to be deleted.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X DELETE -d <span class=\"token string\">'{\"result_ids\":[\"66625018770158663\"]}'</span>  -H <span class=\"token string\">\"Content-Type: application/json\"</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span> https://api.polyswarm.network/v3/hunt/live/list</code></pre></div>\n<h3 id=\"hist-hunt\" style=\"position:relative;\"><a href=\"#hist-hunt\" aria-label=\"hist hunt permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Historical Hunts</h3>\n<h5 id=\"start-a-historical-hunt\" style=\"position:relative;\"><a href=\"#start-a-historical-hunt\" aria-label=\"start a historical hunt permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Start a Historical Hunt</h5>\n<p><span style=\"background-color: #b5d5ff\">POST</span> <code class=\"language-text\">/v3/hunt/historical</code></p>\n<p>start a new Historical Hunt using the provided yara rules or existing ruleset file.</p>\n<p><strong>Body Schema</strong>\n(application/json)</p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">rule_id</code></td>\n<td>integer</td>\n<td>true</td>\n<td><code class=\"language-text\">rule_id</code> of the ruleset to start a historical hunt.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">yara</code></td>\n<td>string</td>\n<td>true</td>\n<td>Path of the yara file to start a historical hunt.</td>\n</tr>\n</tbody>\n</table>\n<blockquote>\n<p>Either <code class=\"language-text\">rule_id</code> or <code class=\"language-text\">yara</code> is required in the call.</p>\n</blockquote>\n<p><strong>Query Parameters</strong></p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">name</code></td>\n<td>string</td>\n<td>false</td>\n<td>Name of the ruleset to start an historical hunt.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X POST -d <span class=\"token string\">'{\"rule_id\":\"24285974317896172\"}'</span>  -H <span class=\"token string\">\"Content-Type: application/json\"</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span> https://api.polyswarm.network/v3/hunt/historical</code></pre></div>\n<h5 id=\"cancel-an-historical-hunt\" style=\"position:relative;\"><a href=\"#cancel-an-historical-hunt\" aria-label=\"cancel an historical hunt permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Cancel an Historical Hunt</h5>\n<p><span style=\"background-color: #ffbd8c\">PUT</span> <code class=\"language-text\">/v3/hunt/historical</code></p>\n<p>Stop a Historical Hunt. If it's already running, it will stop at the next batch interval.</p>\n<p><strong>Query Parameters</strong></p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">id</code></td>\n<td>integer</td>\n<td>true</td>\n<td>id of the historical hunt to stop.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X PUT <span class=\"token string\">'https://api.polyswarm.network/v3/hunt/historical?'</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span></code></pre></div>\n<h5 id=\"list-historical-hunts\" style=\"position:relative;\"><a href=\"#list-historical-hunts\" aria-label=\"list historical hunts permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>List Historical Hunts</h5>\n<p><span style=\"background-color: #abf7ab\">GET</span> <code class=\"language-text\">/v3/hunt/historical/list</code></p>\n<p>List the Historical Hunts in your account.</p>\n<p><strong>Query Parameters</strong></p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">since</code></td>\n<td>integer</td>\n<td>false</td>\n<td>Value in seconds to look for Historical Hunts.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X GET <span class=\"token string\">'https://api.polyswarm.network/v3/hunt/historical/list'</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span></code></pre></div>\n<h5 id=\"view-historical-hunt-details-for-a-hunt\" style=\"position:relative;\"><a href=\"#view-historical-hunt-details-for-a-hunt\" aria-label=\"view historical hunt details for a hunt permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>View Historical Hunt Details for a Hunt</h5>\n<p><span style=\"background-color: #abf7ab\">GET</span> <code class=\"language-text\">/v3/hunt/historical</code></p>\n<blockquote>\n<p>Provides ability to download results as a csv file and see the ruleset contents.</p>\n</blockquote>\n<p><strong>Query Parameters</strong></p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">id</code></td>\n<td>integer</td>\n<td>true</td>\n<td>historical hunt id to view details.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X GET <span class=\"token string\">'https://api.polyswarm.network/v3/hunt/historical?id=75570120079919313'</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span></code></pre></div>\n<h5 id=\"view-historical-hunt-results\" style=\"position:relative;\"><a href=\"#view-historical-hunt-results\" aria-label=\"view historical hunt results permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>View Historical Hunt Results</h5>\n<p><span style=\"background-color: #abf7ab\">GET</span> <code class=\"language-text\">/v3/hunt/historical/results/list</code></p>\n<p><strong>Query Parameters</strong></p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">id</code></td>\n<td>integer</td>\n<td>true</td>\n<td>Historical hunt id.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">rule-name</code></td>\n<td>integer</td>\n<td>false</td>\n<td>Ruleset name to filter results.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">family</code></td>\n<td>integer</td>\n<td>false</td>\n<td>Family name to filter results.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">community</code></td>\n<td>string</td>\n<td>false</td>\n<td>Filter results based community.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">polyscore-lower</code></td>\n<td>integer</td>\n<td>false</td>\n<td>Polyscore lower bound for the results.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">polyscore-upper</code></td>\n<td>integer</td>\n<td>false</td>\n<td>Polyscore upper bound for the results.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X GET <span class=\"token string\">'https://api.polyswarm.network/v3/hunt/historical/results/list?id=75570120079919313'</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span></code></pre></div>\n<h5 id=\"view-a-singular-historical-hunt-result\" style=\"position:relative;\"><a href=\"#view-a-singular-historical-hunt-result\" aria-label=\"view a singular historical hunt result permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>View a Singular Historical Hunt Result</h5>\n<p><span style=\"background-color: #abf7ab\">GET</span> <code class=\"language-text\">/v3/hunt/historical/results</code></p>\n<p><strong>Query Parameters</strong></p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">id</code></td>\n<td>integer</td>\n<td>true</td>\n<td><code class=\"language-text\">result_id</code> value to view single result.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X GET <span class=\"token string\">'https://api.polyswarm.network/v3/hunt/historical/results?id=75570120079919313'</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span></code></pre></div>\n<h5 id=\"delete-a-historical-hunt\" style=\"position:relative;\"><a href=\"#delete-a-historical-hunt\" aria-label=\"delete a historical hunt permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Delete a Historical Hunt</h5>\n<p><span style=\"background-color: #ffa3a3\">DELETE</span> <code class=\"language-text\">/v3/hunt/historical</code></p>\n<p><strong>Query Parameters</strong></p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">id</code></td>\n<td>integer</td>\n<td>true</td>\n<td>hunt id of the historical hunt to delete it.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X DELETE <span class=\"token string\">'https://api.polyswarm.network/v3/hunt/historical?id=1371741361996923'</span> -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span></code></pre></div>\n<h5 id=\"delete-historical-hunt-results\" style=\"position:relative;\"><a href=\"#delete-historical-hunt-results\" aria-label=\"delete historical hunt results permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Delete Historical Hunt Results</h5>\n<p><span style=\"background-color: #ffa3a3\">DELETE</span> <code class=\"language-text\">/v3/hunt/historical/results/live</code></p>\n<p><strong>Body Schema</strong>\n(application/json)</p>\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">result_ids</code></td>\n<td>integer</td>\n<td>true</td>\n<td><code class=\"language-text\">ruleset_id</code> of the historical hunt to delete results from it.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Query Sample</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -X DELETE -d <span class=\"token string\">'{\"result_ids\":[\"66625018770158663\"]}'</span>  -H <span class=\"token string\">\"Content-Type: application/json\"</span> https://api.polyswarm.network/v3/hunt/historical/results/list -H <span class=\"token string\">\"Authorization: <span class=\"token variable\">$API_KEY</span>\"</span></code></pre></div>","rawMarkdownBody":"\n# PolySwarm Rest API v3\n\nRest API Endpoints for interacting with version 3 of the PolySwarm Customer APIs.\n\n## Getting Started {#getting-started}\n\n### Using the API {#test}\nPolySwarm's API provides a RESTful interface for various PolySwarm features.\nIf you'd like to report an issue or provide feedback for this page, please contact customersuccess@polyswarm.io\n\nThe PolySwarm API is available at https://api.polyswarm.network/v3\n\nFor the rest of this document, the base API URL will not be included in any endpoints (e.g., the branch for search will be described as `/v3/search` rather than `https://api.polyswarm.network/v3/search)`. You will be responsible for adding the correct base API URL.\n\nThe overview of the API Endpoints will include required and optional parameters, with a curl example.\n\nCommunity (free) users have a limit of 60 calls per hour, Paying Enterprise Customers have a limit of 1000 calls per second.\nEach feature (i.e. Scanning) may have its own set monthly quota, and utilize a daily or monthly api limit too. See the team's usage page to better understand these numbers.\n\n### Authentication {#authentication}\nEvery API request must include an HTTP Authorization Header with an API key.\n\nLocate the `api_key` for the User/Team from [here](https://polyswarm.network/account/api-keys)\n\n| HTTP Header   | Value     |\n|---------------|-----------|\n| Authorization | `API Key` |\n\n**Example:**\n``` bash\ncurl -X GET -H \"Authorization: $API_KEY\" 'https://api.polyswarm.network/v3/search/url?url=https%3A%2F%2Fpolyswarm.io&community=default'\n```\n\n### Retrieve account information\n\n#### Account details\n\n`/v3/public/accounts/whois`\n\n**Query Sample**\n``` bash\ncurl https://api.polyswarm.network/v3/public/accounts/whois -H \"Authorization: $POLYSWARM_API_KEY\"\n```\n\n#### Account features and quotas\n\n`/v3/public/accounts`\n\n**Query Sample**\n``` bash\ncurl https://api.polyswarm.network/v3/public/accounts -H \"Authorization: $POLYSWARM_API_KEY\"\n```\n\n### Pagination and Offset Handling\n\nWhen interacting with paginated endpoints, each page of results consumes one quota unit.\n\n#### Key Points on Pagination:\n\n* The `has_more` flag indicates whether additional pages of results are available.\n* If `has_more=true`, the response will include an encrypted offset value.\n* For the first request, specify a `limit` parameter (e.g., `limit=50`). The server will return an `offset` value for the next page in the response.\n* For subsequent requests, include the `offset` value returned by the server in the previous response. The server will always provide the next `offset`, which must be sent back unmodified in subsequent calls.\n\n#### Example Initial Request\n\n``` bash\ncurl -H 'Authorization: <API_KEY>' 'https://api.polyswarm.network/v3/hunt/live/list?limit=50&timeout=30'\n```\n\nThe response will include an `offset` value for the next page.\n\n#### Example Subsequent Request\n\n``` bash\ncurl -H 'Authorization: <API_KEY>' 'https://api.polyswarm.network/v3/hunt/live/list?limit=50&timeout=30&offset=<OFFSET>'\n```\n\n> Note: The offset is an encrypted token generated by the server. Clients must use it as-is and not attempt to modify it.\n\n#### Hash Search and Collision Handling\n\nFor the Hash Search endpoint, the `has_more` flag will typically return `false`. However, consider the following:\n* A sha256 collision is highly unlikely, but not impossible.\n* Collisions are more probable with weaker hash algorithms like md5 or sha1.\n\nTo address potential risks:\n* Use the `has_more` flag to manage collisions, particularly when working with md5 or sha1.\n* Decide whether to rely on this flag based on your specific use case and risk tolerance.\n\n## Artifact Lookup {#lookup}\n\nTo retrieve the results of a scan or sandbox, you can do an artifact lookup. In the scanning/sandboxing sections we will remind you of this.\n\n<span style=\"background-color: #abf7ab\">GET</span> `/v3/consumer/submission/default/{artifact_id}`\n\nOnce the scan has completed the returned `window_closed` value will be `true`, if this value is `false` then the scan is still processing, so you will need to poll periodically.\nIf the value `failed` is `true` then the scan has failed.\n\n## Scanning Artifacts {#scanning}\n\nThe following are the 3 sequential steps in a Scanning operation:\n\n* <span style=\"background-color: #b5d5ff\">POST</span> Inform PolySwarm to start a scan, returns an `artifact_id` and pre signed AWS URL that the artifact can be uploaded to\n* <span style=\"background-color: #ffbd8c\">PUT</span> Upload the artifact to the AWS URL location\n* <span style=\"background-color: #ffbd8c\">PUT</span> Inform PolySwarm that the artifact is uploaded and to start the scan\n\nLastly, **lookup the artifact** for the verdict, follow this process [here](/customers/polyswarm-rest-api-v3/#lookup).\n\n### URL Scanning\n<span style=\"background-color: #b5d5ff\">POST</span> `/v3/instance`\n\n> Inform PolySwarm to start a scan, returns an `artifact_id` and pre signed AWS URL that the file/url can be uploaded to\n\n**Body Schema**\n(application/json)\n\n| Parameter       | Type    | Required | Description                                                                                                         |\n|-----------------|---------|----------|---------------------------------------------------------------------------------------------------------------------|\n| `artifact_name` | string  | true     | URL value to be scanned.                                                                                            |\n| `artifact_type` | string  | true     | Defines the type, should be `URL`.                                                                                  |\n| `scan_config`   | string  | false    | Allows additional time for the scan, default if not provided, `default`, `more-time`, `most-time`.                  |\n| `url-file`      | string  | false    | Path of the file containing a single line of the URL to be scanned.                                                 |\n| `community`     | string  | true     | Name of the Community. Simplest to use `default` for the public community, or `private` for your Private Community. |\n| `preprocessing` | object  | false    | Set to `{\"type\": \"qrcode\"}` if the URL is inside a QR Code image.                                                   |\n\n**Query Sample**\n``` bash\ncurl -X POST -d '{\n  \"artifact_name\": \"https://www.google.com\",\n  \"artifact_type\": \"URL\",\n  \"scan_config\": \"most-time\",\n  \"community\": \"default\"\n}' -H \"Content-Type: application/json\" -H \"Authorization: $API_KEY\"  https://api.polyswarm.network/v3/instance\n```\n\nHere is a sample of how to scan a URL that is inside a QR Code image:\n\n``` bash\ncurl -X POST -d '{\n  \"artifact_name\": \"qrcode.png\",\n  \"artifact_type\": \"URL\",\n  \"community\": \"default\",\n  \"preprocessing\": {\"type\": \"qrcode\"}\n}' -H \"Content-Type: application/json\" -H \"Authorization: $API_KEY\"  https://api.polyswarm.network/v3/instance\n```\n\n****\n\n<span style=\"background-color: #ffbd8c\">PUT</span> `https://s3.us-east-2.amazonaws.com/{PRE_SIGNED_AWS_URL}`\n\n> Provide the artifact to upload to the AWS URL.\n\n**Query Sample**\n``` bash\ncurl -X PUT '<PRE_SIGNED_AWS_URL>' -d 'content=www.google.com'\n```\n\n****\n\n<span style=\"background-color: #ffbd8c\">PUT</span> `/v3/instance`\n\n> Inform PolySwarm the upload is complete and to start the scan.\n\n**Query Parameters**\n\n| Parameter | Type     | Required | Description                                                       |\n|-----------|----------|----------|-------------------------------------------------------------------|\n| `id`      | string   | true     | `artifact_id` that has been returned by the first `POST` command. |\n\n**Query Sample**\n``` bash\ncurl -X PUT -H \"Content-Type: application/json\" https://api.polyswarm.network/v3/instance?id=49722305458696948 -H \"Authorization: $API_KEY\"\n```\n\nLastly, **lookup the artifact** for the verdict, follow this process [here](/customers/polyswarm-rest-api-v3/#lookup).\n\n### File Scanning\n<span style=\"background-color: #b5d5ff\">POST</span> `/v3/instance`\n\n> Inform PolySwarm to start a scan, returns an `artifact_id` and pre signed AWS url that the file needs to be placed into.\n\n**Body Schema**\n(application/json)\n\n| Parameter       | Type    | Required | Description                                                                                                          |\n|-----------------|---------|----------|----------------------------------------------------------------------------------------------------------------------|\n| `artifact_name` | string  | true     | Path of the File to be scanned.                                                                                      |\n| `artifact_type` | string  | true     | Defines the type, should be `FILE`.                                                                                  |\n| `preprocessing` | object  | false    | Preprocessing settings to be applied to the artifact. See schema table bellow.                                       |\n| `expiration_window` | int  | false    | Applies to Private Communities only and affects new uploads. After the configured number of days, the binary file is deleted, but the metadata remains available, so the hash can still be searched. Must be `30` or `180`.                                       |\n| `scan_config`   | string  | false    | Allows additional time for the scan, default if not provided, `default`, `more-time`, `most-time`.                   |\n| `community`     | string  | true     | Name of the Community. Simplest to use `default` for the public community, or `private` for your Private Community.  |\n\n**Body / Preprocessing Schema**\n(application/json)\n\n| Parameter  | Type   | Required | Description                                                                                                                                                                                                                                                                                                |\n|------------|--------|----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `type`     | string | true     | Either `zip`, `7zip`, `base64`, or`qrcode`, the first two mean the file is a zip that the server has to decompress to then scan the content (only one file inside allowed). \"qrcode\" means the file is a QR Code image with a URL as payload, and you want to scan the URL, not the actual file (artifact_type has to be \"URL\"). |\n| `password` | string | false    | Use this password to decompress the zip file.                                                                                                                                                                                                                                                              |\n|\n\n**Query Sample**\n\nScan a file `install.exe` example:\n\n``` bash\ncurl -X POST -d '{\n  \"artifact_name\": \"install.exe\",\n  \"artifact_type\": \"FILE\",\n  \"community\": \"default\"\n}' -H \"Content-Type: application/json\" -H \"Authorization: $API_KEY\" https://api.polyswarm.network/v3/instance\n```\n\nThe file to scan is inside an encrypted zip:\n\n``` bash\ncurl -X POST -d '{\n  \"artifact_name\": \"install.exe\",\n  \"artifact_type\": \"FILE\",\n  \"community\": \"default\",\n  \"preprocessing\": {\"type\": \"zip\", \"password\": \"password\"}\n}' -H \"Content-Type: application/json\" -H \"Authorization: $API_KEY\" https://api.polyswarm.network/v3/instance\n```\n\n****\n\n<span style=\"background-color: #ffbd8c\">PUT</span> `https://s3.us-east-2.amazonaws.com/{PRE_SIGNED_AWS_URL}`\n\n> Provide the artifact to upload to the AWS URL.\n\n**Query Sample**\n``` bash\ncurl --upload-file ./tests/eicar.yara \"<PRE_SIGNED_AWS_URL>\"\n```\n\n****\n\n<span style=\"background-color: #ffbd8c\">PUT</span> `/v3/instance`\n\n> Inform PolySwarm the upload is complete and to start the scan.\n\n**Query Parameters**\n\n| Parameter | Type     | Required | Description                                                       |\n|-----------|----------|----------|-------------------------------------------------------------------|\n| `id`      | string   | true     | `artifact_id` that has been returned by the first `POST` command. |\n\n**Query Sample**\n``` bash\ncurl -X PUT https://api.polyswarm.network/v3/instance?id=49722305458696948 -H \"Authorization: $API_KEY\"\n```\n\nLastly, **lookup the artifact** for the verdict, follow this process [here](/customers/polyswarm-rest-api-v3/#lookup).\n\n## Rescanning Artifacts {#rescanning}\n<span style=\"background-color: #b5d5ff\">POST</span> `/v3/consumer/submission/default/rescan/sha256/{sha256}`\n\n> Other Endpoints include: `/v3/consumer/submission/default/rescan/md5/{md5}` and `/v3/consumer/submission/default/rescan/sha1/{sha1}`\n\n> This endpoint can only be used to rescan files, for urls see rescan by id below. \n\n**Query Parameters**\n\n| Parameter     | Type     | Required | Description                                                                                                            |\n|---------------|----------|----------|------------------------------------------------------------------------------------------------------------------------|\n| `hash-type`   | string   | false    | Hash type to be searched on, default is `autodetect`.                                                                  |\n| `scan-config` | string   | false    | Configuration template to use, provides more time for the results to be returned, `default`, `more-time`, `most-time`. |\n| `community`   | string   | true     | Name of the Community. Simplest to use `default` for the public community, or `private` for your Private Community.    |\n\n**Query Sample**\n``` bash\ncurl -X POST 'https://api.polyswarm.network/v3/consumer/submission/default/rescan/sha256/5da5a1e3983982a92341953929d4c7726da65fe5125d264dd8932a870f2f154a?community=default&scan_config=more-time' -H \"Authorization: $API_KEY\"\n```\n\nLastly, **lookup the artifact** for the verdict, follow this process [here](/customers/polyswarm-rest-api-v3/#lookup).\n\n## Rescanning Artifacts by ID {#rescanning-by-id}\n<span style=\"background-color: #b5d5ff\">POST</span> `/v3/consumer/submission/{community}/rescan/{id}`\n\n> Rescan an existing artifact by its `artifact_id` (also referred to as `instance_id`) rather than by hash. The community (`default` or `private`) is specified as part of the URL path, include this. \n\n**Path Parameters**\n\n| Parameter   | Type     | Required | Description                                                                                                         |\n|-------------|----------|----------|---------------------------------------------------------------------------------------------------------------------|\n| `community` | string   | true     | Name of the Community in the URL path. Use `default` for the public community, or `private` for your Private Community. |\n| `id`        | integer  | true     | `artifact_id` of the artifact to rescan.                                                                            |\n\n**Query Parameters**\n\n| Parameter     | Type     | Required | Description                                                                                                            |\n|---------------|----------|----------|------------------------------------------------------------------------------------------------------------------------|\n| `scan-config` | string   | false    | Configuration template to use, provides more time for the results to be returned, `default`, `more-time`, `most-time`. |\n\n**Query Sample**\n``` bash\ncurl -X POST 'https://api.polyswarm.network/v3/consumer/submission/private/rescan/3147283219576984' -H \"Authorization: $API_KEY\"\n```\n\n**Query Sample with scan-config in private**\n``` bash\ncurl -X POST 'https://api.polyswarm.network/v3/consumer/submission/private/rescan/3147283219576984?scan_config=more-time' -H \"Authorization: $API_KEY\"\n```\n\nLastly, **lookup the artifact** for the verdict, follow this process [here](/customers/polyswarm-rest-api-v3/#lookup).\n\n## Downloading {#downloading}\n\n### Download an Artifact {#download-artifact}\n<span style=\"background-color: #abf7ab\">GET</span> `/v3/consumer/download/sha256/{sha256}`\n\n> Other Endpoints include: `/v3/consumer/download/sha256/{md5}` and `/v3/consumer/download/sha256/{sha1}`\n\n**Query Parameters**\n\n| Parameter     | Type     | Required | Description                                                                                                         |\n|---------------|----------|----------|---------------------------------------------------------------------------------------------------------------------|\n| `hash-type`   | string   | false    | Hash type to be searched on, default is `autodetect`.                                                               |\n| `destination` | string   | false    | Local Path where to store the downloaded files.                                                                     |\n| `community`   | string   | true     | Name of the Community. Simplest to use `default` for the public community, or `private` for your Private Community. |\n\n**Query Sample**\n``` bash\ncurl -X GET 'https://api.polyswarm.network/v3/consumer/download/sha256/5da5a1e3983982a92341953929d4c7726da65fe5125d264dd8932a870f2f154a?community=default' -H \"Authorization: $API_KEY\"\n```\n\n\n### Download via id {#download-id}\n<span style=\"background-color: #abf7ab\">GET</span> `/v3/instance/download`\n\n> Tip: Can be used to download reports and files from a sandbox detonation, see sandboxing sections to retrieve the `instance_id`.\n\n**Query Parameters**\n\n| Parameter     | Type      | Required | Description                                                                              |\n|---------------|-----------|----------|------------------------------------------------------------------------------------------|\n| `instance_id` | integer   | true     | `instance_id` of the item to download, often provided in the output of a previous query. |\n\n**Query Sample**\n``` bash\ncurl -X GET 'https://api.polyswarm.network/v3/instance/download?instance_id=84432173138232095' -H \"Authorization: $API_KEY\"\n```\n\n### Download Bundle\n\n##### Create the Bundle\n\n<span style=\"background-color: #b5d5ff\">POST</span> `/v3/bundle`\n\n**Body Schema**\n(application/json)\n\n| Parameter        | Type     | Required | Description\n|---------------|-----------|----------|--------------------------------------------------------|\n| `instance-ids` | string array   | true     | The ID's of an instance to include in the bundle archive. |\n| `preserve_filenames` | boolean   | false     | Preserve the names of the files in the bundle. |\n| `filename` | string   | false     | Name of the archive that will be created. |\n| `community`     | string  | true     | Define the community either `private` or `public`.              |\n\n**Query Sample**\n``` bash\ncurl -X POST \"https://api.polyswarm.network/v3/bundle\" \\\n  -H \"Authorization: $API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"instance_ids\": [\"51375268900310741\", \"58964500531258633\"], \"preserve_filenames\": true, \"filename\": \"output-archive.zip\"}' \\\n```\n\n****\n\n##### Check Status of Bundle\n\n<span style=\"background-color: #b5d5ff\">GET</span> `/v3/bundle`\n\n**Query Parameters**\n\n| Parameter     | Type      | Required | Description                                    |\n|---------------|-----------|----------|--------------------------------------------------------|\n| `id` | string   | true     | The Bundle Task ID Returned in step 1. |\n| `community`     | string  | true     | Define the community either `private` or `public`.              |\n\n**Query Sample**\n``` bash\ncurl -X GET \"https://api.polyswarm.network/v3/bundle?id=41476135624684596&community=private\" -H \"Authorization: $POLYSWARM_API_KEY\"\n```\n****\n\n##### Download the Bundle\n\n<span style=\"background-color: #abf7ab\">GET</span> `https://s3.us-east-2.amazonaws.com/{PRE_SIGNED_AWS_URL}`\n\n> Note: The previous GET command returns the `PRE_SIGNED_AWS_URL` once the report generation has been completed.\n\n**Query Sample**\n``` bash\ncurl -o output-archive.zip -X GET 'https://s3.us-east-2.amazonaws.com/{PRE_SIGNED_AWS_URL}'\n```\n\n## Reporting {#report}\n\n### Downloading Reports\n\nPolySwarm provides the ability to generate and download HTML/PDF reports for Scanning and Sandboxing, these are separate reports.\n\nThe following are the 3 sequential steps in a report generation operation:\n\n* <span style=\"background-color: #b5d5ff\">POST</span> Inform PolySwarm to start generating the report.\n* <span style=\"background-color: #abf7ab\">GET</span> Poll PolySwarm to understand when the report has finished generating.\n* <span style=\"background-color: #abf7ab\">GET</span> Download the report locally once generation is successful.\n\n****\n\n<span style=\"background-color: #b5d5ff\">POST</span> `/v3/reports`\n\n**Body Schema**\n(application/json)\n\n| Parameter           | Type    | Required | Description                                                                                                                                                                                                                                          |\n|---------------------|---------|----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `format`            | string  | true     | pdf, html or zip.                                                                                                                                                                                                                                         |\n| `type`              | string  | true     | `scan`, `sandbox`, or `sandbox_zip`.              |\n| `community`     | string  | true     | Define the community either `private` or `public`.              |\n| `template_metadata` | object  | false    | Choose what to include in the report or zip file, separated by commas. When choosing a PDF or HTML report the options are: analysis, detections, droppedFiles, extractedConfig, fileMetadata, network, summary. If not included in body, the default is all items. EXAMPLE: `{\"includes\":[\"summary\"]}`. When choosing a Sandbox ZIP file there are two optional values in the `template_metadata`, `zip_report_ids` and `sandbox_artifact_type`. The `zip_report_ids` are the ID's of the other reports already created to include in the zip file. The `sandbox_artifact_type` are a list of sandbox artifacts to include from: `report`,`raw_report`,`screenshot`,`recording`,`dropped_file`,`memory_dump`,`pcap` and `jarm`.|\n| `instance_id`       | integer | true     | Required if generating a scanning report, this is the `artifact_id`.                                                                                                                                                                                 |\n| `sandbox_task_id`   | integer | true     | Required if generating a sandboxing report or sandbox zip, this is the `sandbox_id`.                                                                                                                                                                                |\n\n**Query Sample Scan Report**\n``` bash\ncurl -X POST -d '{\"type\": \"scan\", \"format\": \"pdf\", \"template_metadata\": {\"includes\": [\"summary\", \"detections\"]}, \"instance_id\": \"97903321852386706\"}'  -H \"Content-Type: application/json\" -H \"Authorization: $API_KEY\"  https://api.polyswarm.network/v3/reports\n```\n\n**Query Sample Sandbox ZIP File**\n\nThe below example downloads the report json and the pcap files in a single zip file.\n\n``` bash\ncurl -X POST -d '{\"type\": \"sandbox_zip\", \"format\": \"zip\", \"template_metadata\": {\"sandbox_artifact_types\": [\"report\", \"pcap\"]}, \"sandbox_task_id\": \"97903321852386706\"}'  -H \"Content-Type: application/json\" -H \"Authorization: $API_KEY\"  https://api.polyswarm.network/v3/reports\n```\n\n****\n\n<span style=\"background-color: #abf7ab\">GET</span> `/v3/reports`\n\n**Query Parameters**\n\n| Parameter | Type     | Required | Description                                    |\n|-----------|----------|----------|------------------------------------------------|\n| `id`      | integer  | true     | `id` returned from the previous POST command.  |\n| `community`     | string  | true     | Define the community either `private` or `public`.              |\n\n**Query Sample**\n``` bash\ncurl -X GET 'https://api.polyswarm.network/v3/reports?id=59403308938961820' -H \"Authorization: $API_KEY\"\n```\n\n****\n\n<span style=\"background-color: #abf7ab\">GET</span> `https://s3.us-east-2.amazonaws.com/{PRE_SIGNED_AWS_URL}`\n\n> Note: The previous GET command returns the `PRE_SIGNED_AWS_URL` once the report generation has been completed.\n\n**Query Sample**\n``` bash\ncurl -o scan-97903321852386706.pdf -X GET 'https://s3.us-east-2.amazonaws.com/{PRE_SIGNED_AWS_URL}'\n```\n\n### Report Templates\n\n##### List templates\n<span style=\"background-color: #abf7ab\">GET</span> `/v3/reports/templates/list`\n\n**Query Sample**\n``` bash\ncurl -X GET 'https://api.polyswarm.network/v3/reports/templates/list' -H \"Authorization: $API_KEY\"\n```\n\n##### Create a template\n<span style=\"background-color: #b5d5ff\">POST</span> `/v3/reports/templates`\n\n**Body Schema**\n(application/json)\n\n| Parameter        | Type     | Required | Description                                                                                                                                                                |\n|------------------|----------|----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `template_name`  | string   | true     | Name for the template.                                                                                                                                                     |\n| `is_default`     | boolean  | false    | If `true` this template will be the default template for the team.                                                                                                         |\n| `primary_color`  | string   | false    | Six-character hex color code.                                                                                                                                              |\n| `footer_text`    | string   | false    | Text to be displayed in the footer of each page. Up to 100 characters are allowed.                                                                                         |\n| `last_page_text` | string   | false    | Text to be displayed on the last page. Up to 1000 characters are allowed.                                                                                                  |\n| `includes`       | string   | false    | Array list of sections to include in the report. Can be one or more of: \"analysis\", \"detections\", \"droppedFiles\", \"extractedConfig\", \"fileMetadata\", \"network\", \"summary\". |\n\n**Query Sample**\n``` bash\ncurl -X POST -d '{\"template_name\": \"temptest\", \"primary_color\": \"ff0000\", \"includes\": [\"summary\", \"detections\", \"fileMetadata\"]}'  -H \"Content-Type: application/json\" -H \"Authorization: $API_KEY\"  https://api.polyswarm.network/v3/reports/templates\n```\n\n##### Delete a templates\n\n<span style=\"background-color: #ffa3a3\">DELETE</span> `/v3/reports/templates`\n\n**Query Parameters**\n\n| Parameter | Type     | Required | Description                 |\n|-----------|----------|----------|-----------------------------|\n| `id`      | integer  | true     | `id` value of the template. |\n\n**Query Sample**\n``` bash\ncurl -X DELETE 'https://api.polyswarm.network/v3/reports/templates?id=10512439389909571' -H \"Authorization: $API_KEY\"\n```\n\n##### Get template details\n\n<span style=\"background-color: #abf7ab\">GET</span> `/v3/reports/templates`\n\n**Query Parameters**\n\n| Parameter | Type     | Required | Description                 |\n|-----------|----------|----------|-----------------------------|\n| `id`      | integer  | true     | `id` value of the template. |\n\n**Query Sample**\n``` bash\ncurl -X GET 'https://api.polyswarm.network/v3/reports/templates?id=89035259732911602' -H \"Authorization: $API_KEY\"\n```\n\n##### Update a template\n\n<span style=\"background-color: #ffbd8c\">PUT</span> `/v3/reports/templates`\n\nNOTE: despite being a `PUT` endpoint, only fields passed in the JSON body are updated, the remaining fields retain their values.\n**Query Parameters**\n\n| Parameter | Type      | Required | Description                 |\n|-----------|-----------|----------|-----------------------------|\n| `id`      | integer   | true     | `id` value of the template. |\n\n**Body Schema**\n(application/json)\n\n| Parameter        | Type     | Required | Description                                                                                                                                                                |\n|------------------|----------|----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `template_name`  | string   | true     | Name for the template.                                                                                                                                                     |\n| `is_default`     | boolean  | false    | If `true` this template will be the default template for the team.                                                                                                         |\n| `primary_color`  | string   | false    | Six-character hex color code.                                                                                                                                              |\n| `footer_text`    | string   | false    | Text to be displayed in the footer of each page. Up to 100 characters are allowed.                                                                                         |\n| `last_page_text` | string   | false    | Text to be displayed on the last page. Up to 1000 characters are allowed.                                                                                                  |\n| `includes`       | string   | false    | Array list of sections to include in the report. Can be one or more of: \"summary\", \"detections\", \"fileMetadata\", \"network\", \"droppedFiles\", \"extractedConfig\", \"analysis\". |\n\n**Query Sample**\n``` bash\ncurl -X PUT -d '{\"primary_color\": \"7bfa7f\", \"includes\": [\"summary\", \"detections\", \"fileMetadata\"]}' -H \"Content-Type: application/json\" -H \"Authorization: $API_KEY\" \"https://api.polyswarm.network/v3/reports/templates?id=89035259732911602\"\n```\n\n##### Upload template logo\n\n<span style=\"background-color: #ffbd8c\">PUT</span> `/v3/reports/templates/logo`\n\nA logo can be provided for an already created template. The image is only used in the first page of the PDF reports. Can be either a PNG or JPEG file, the max size allowed is 40 Kb, and the max resolution 960px x 960px.\n\n**Query Parameters**\n\n| Parameter | Type    | Required | Description                |\n|-----------|---------|----------|----------------------------|\n| `id`      | integer | true     | `id` value of the template |\n\n**Body Parameters**\n\nThe body has to be the binary data of the image. Max length allowed is 40 Kb.\n\n**Header Parameters**\n\n| Parameter       | Required | Description                        |\n|-----------------|----------|------------------------------------|\n| `Content-Type`  | true     | Either `image/png` or `image/jpeg` |\n\n**Query Sample**\n\nHaving a file `logo.jpg` in the same folder were `curl` is executed:\n\n``` bash\ncurl -X PUT 'https://api.polyswarm.network/v3/reports/templates/logo?id=89035259732911602' --data-binary @logo.jpg -H \"Content-Type: image/jpeg\" -H \"Authorization: $API_KEY\"\n```\n\n##### Delete template logo\n\n<span style=\"background-color: #ffa3a3\">DELETE</span> `v3/reports/templates/logo`\n\n**Query Parameters**\n\n| Parameter | Type      | Required | Description                 |\n|-----------|-----------|----------|-----------------------------|\n| `id`      | integer   | true     | `id` value of the template. |\n\n**Query Sample**\n``` bash\ncurl -X DELETE 'https://api.polyswarm.network/v3/reports/templates/logo?id=89035259732911602' -H \"Authorization: $API_KEY\"\n```\n\n##### Download template logo\n\n<span style=\"background-color: #abf7ab\">GET</span> `v3/reports/templates/logo`\n\n**Query Parameters**\n\n| Parameter | Type      | Required | Description                 |\n|-----------|-----------|----------|-----------------------------|\n| `id`      | integer   | true     | `id` value of the template. |\n\n**Query Sample**\n``` bash\ncurl -X GET 'https://api.polyswarm.network/v3/reports/templates/logo?id=89035259732911602' -H \"Authorization: $API_KEY\" --output /Users/John/Documents/logo.jpg\n```\n\n### LLM Reports\n\nLLM reports provide AI-generated analysis summaries for both scans and sandbox detonations using language models.\n\nFor this to work, the team plan must include access to `downloads`. This feature consumes one unit from the PolySwarm Intelligence quota per report generated, which covers both the create and download steps.\n\n##### Create LLM Report\n\n<span style=\"background-color: #b5d5ff\">POST</span> `/v3/reports/llm`\n\n> Creates an LLM report task that will generate an AI-powered analysis summary. The system automatically detects duplicate pending reports and returns the existing one instead of creating a duplicate.\n\n**Body Schema**\n(application/json)\n\n| Parameter               | Type    | Required | Description                                                                                                                                            |\n|-------------------------|---------|----------|--------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `instance_id`           | integer | false    | The `artifact_id` from a scan submission. Include to add scan results to the LLM report.                                                               |\n| `cape_sandbox_task_id`  | integer | false    | The task ID of a Cape sandbox detonation. Include to add Cape sandbox results to the LLM report.                                                       |\n| `triage_sandbox_task_id`| integer | false    | The task ID of a Triage sandbox detonation. Include to add Triage sandbox results to the LLM report.                                                   |\n| `community`       | string | true     | Name of the Community. Simplest to use `default` for the public community, or `private` for your Private Community. |\n\n\n> At least one of `instance_id`, `cape_sandbox_task_id`, or `triage_sandbox_task_id` is required. You may combine `cape_sandbox_task_id` and `triage_sandbox_task_id` together, optionally alongside `instance_id`, to generate a single unified report from multiple sources.\n\n**Query Sample for Scan Report**\n``` bash\ncurl -X POST -d '{\"instance_id\": \"97903321852386706\", \"community\": \"default\"}' -H \"Content-Type: application/json\" -H \"Authorization: $API_KEY\" https://api.polyswarm.network/v3/reports/llm\n```\n\n**Query Sample for Cape Sandbox Report**\n``` bash\ncurl -X POST -d '{\"cape_sandbox_task_id\": \"97903321852386706\"}' -H \"Content-Type: application/json\" -H \"Authorization: $API_KEY\" https://api.polyswarm.network/v3/reports/llm\n```\n\n**Query Sample for Triage Sandbox Report**\n``` bash\ncurl -X POST -d '{\"triage_sandbox_task_id\": \"97903321852386706\"}' -H \"Content-Type: application/json\" -H \"Authorization: $API_KEY\" https://api.polyswarm.network/v3/reports/llm\n```\n\n**Query Sample for Combined Cape + Triage Report**\n``` bash\ncurl -X POST -d '{\"cape_sandbox_task_id\": \"97903321852386706\", \"triage_sandbox_task_id\": \"12345678901234567\"}' -H \"Content-Type: application/json\" -H \"Authorization: $API_KEY\" https://api.polyswarm.network/v3/reports/llm\n```\n\n****\n\n##### Get LLM Report\n\n<span style=\"background-color: #abf7ab\">GET</span> `/v3/reports/llm`\n\n> Retrieve the status and details of an LLM report task. Use the `id` returned from the POST request.\n\n**Query Parameters**\n\n| Parameter | Type     | Required | Description                              |\n|-----------|----------|----------|------------------------------------------|\n| `id`      | integer  | true     | `id` returned from the LLM report POST.  |\n| `community` | string   | true     | Name of the Community. Simplest to use `default` for the public community, or `private` for your Private Community. |\n\n\n**Query Sample**\n``` bash\ncurl -X GET 'https://api.polyswarm.network/v3/reports/llm?id=12345678901234567&community=default' -H \"Authorization: $API_KEY\"\n```\n\n## Searching {#searching}\n\n### Hash Searching {#hash-search}\n<span style=\"background-color: #abf7ab\">GET</span> `/v3/search/hash/sha256`\n\n> Other Endpoints include: `/v3/search/hash/md5` and `/v3/search/hash/sha1`\n\n**Query Parameters**\n\n| Parameter   | Type     | Required | Description                                                                                                         |\n|-------------|----------|----------|---------------------------------------------------------------------------------------------------------------------|\n| `hash`      | string   | true     | Hash (sha256,md5 or sha1) value to be searched.                                                                     |\n| `community` | string   | true     | Name of the Community. Simplest to use `default` for the public community, or `private` for your Private Community. |\n| `hash-type` | string   | false    | Hash type to be searched on, default is `autodetect`.                                                               |\n\n**Query Sample**\n``` bash\ncurl -X GET 'https://api.polyswarm.network/v3/search/hash/sha256?hash=5da5a1e3983982a92341953929d4c7726da65fe5125d264dd8932a870f2f154a&community=default' -H \"Authorization: $API_KEY\"\n```\n\n### View Scan History\n<span style=\"background-color: #abf7ab\">GET</span> `/v3/search/instances`\n\n**Query Parameters**\n\n| Parameter   | Type     | Required | Description                                                                                                         |\n|-------------|----------|----------|---------------------------------------------------------------------------------------------------------------------|\n| `hash`      | string   | true     | Hash (sha256,md5 or sha1) value to be searched.                                                                     |\n| `community` | string   | true     | Name of the Community. Simplest to use `default` for the public community, or `private` for your Private Community. |\n\n**Query Sample**\n``` bash\ncurl -X GET 'https://api.polyswarm.network/v3/search/instances?hash=95531b268adee781f88c962f4b6d747ed82e1c1a58b636fdd925ca3ce31e9cf5&community=default' -H \"Authorization: $API_KEY\"\n```\n\n### URL Searching {#url-search}\n<span style=\"background-color: #abf7ab\">GET</span> `/v3/search/url`\n\n**Query Parameters**\n\n| Parameter   | Type     | Required | Description                                                                                                         |\n|-------------|----------|----------|---------------------------------------------------------------------------------------------------------------------|\n| `url`       | string   | true     | URL value to be searched.                                                                                           |\n| `community` | string   | true     | Name of the Community. Simplest to use `default` for the public community, or `private` for your Private Community. |\n\n**Query Sample**\n``` bash\ncurl -X GET 'https://api.polyswarm.network/v3/search/url?url=https%3A%2F%2Fpolyswarm.io&community=default' -H \"Authorization: $API_KEY\"\n```\n\n### Metadata Searching {#meta-search}\n<span style=\"background-color: #abf7ab\">GET</span> `/v3/search/metadata/query`\n\n> To understand how to build out a Metadata query see the [How-To Guide](/customers/polyswarm-customer-meta-query/#meta-getting-started).\n\n**Query Parameters**\n\n| Parameter   | Type     | Required | Description                                                                                                         |\n|-------------|----------|----------|---------------------------------------------------------------------------------------------------------------------|\n| `query`     | string   | true     | Metadata query to search on.                                                                                        |\n| `include`   | string   | false    | Metadata field to include in results.                                                                               |\n| `exclude`   | string   | false    | Metadata field to exclude in results.                                                                               |\n| `community` | string   | true     | Name of the Community. Simplest to use `default` for the public community, or `private` for your Private Community. |\n\n**Query Sample**\n``` bash\ncurl -X GET 'https://api.polyswarm.network/v3/search/metadata/query?query=artifact.sha256:5da5a1e3983982a92341953929d4c7726da65fe5125d264dd8932a870f2f154a' -H \"Authorization: $API_KEY\"\n```\n\n**Query Sample**\n\nThe below query searches for artifacts related to emotet and only return the Triage TTP values, making use of the `include` option.\n``` bash\ncurl -X GET 'https://api.polyswarm.network/v3/search/metadata/query?include=triage_sandbox_v0.ttp&query=polyunite.malware_family%3AEmotet&community=default' -H \"Authorization: $API_KEY\"\n```\n\n### IOC Searching {#ioc-search}\n\n- Searching for Associated IOCs related to a Hash: This returns IOCs that were observed by our sandbox during analysis. These IP's and Domains are classified as C2 or malicious.\n- Searching for Associated Hashes related to an IP, URL, imphash or MITRE TTP: This returns file hashes that were seen communicating with the specified IPs or domains in our sandbox — regardless of whether the communication was malicious or not.\n\n##### Search for Associated IOCs {#associated-iocs}\n<span style=\"background-color: #abf7ab\">GET</span> `/v3/ioc/sha256/{sha256}`\n\n> Other Endpoints include: `/v3/ioc/md5/{md5}` and `/v3/ioc/sha1/{sha1}`. Include the desired hash value in the endpoint to retrieve associated ip,domain, ttp and imphash results.\n\n**Query Parameters**\n\n| Parameter    | Type     | Required | Description                                                                                                         |\n|--------------|----------|----------|---------------------------------------------------------------------------------------------------------------------|\n| `community`  | string   | true     | Name of the Community. Simplest to use `default` for the public community, or `private` for your Private Community. |\n\n**Query Sample**\n``` bash\ncurl -X GET 'https://api.polyswarm.network/v3/ioc/sha256/2a85d68c1c503d9b6efcf124ac7d7afc0f3a8a0543f5d6790ebd978f4e8468bd?community=default' -H \"Authorization: $API_KEY\"\n```\n\n##### Search for Associated Hashes {#associated-hash}\n<span style=\"background-color: #abf7ab\">GET</span> `/v3/ioc/search`\n\n**Query Parameters**\n\n| Parameter    | Type     | Required | Description                                                                                                         |\n|--------------|----------|----------|---------------------------------------------------------------------------------------------------------------------|\n| `community`  | string   | true     | Name of the Community. Simplest to use `default` for the public community, or `private` for your Private Community. |\n| `imphash`    | string   | false    | imphash to see related hashes.                                                                                      |\n| `domain`     | string   | false    | domain to see related hashes.                                                                                       |\n| `ttp`        | string   | false    | MITRE ttp to see related hashes.                                                                                    |\n| `ip`         | string   | false    | IP to see related hashes.                                                                                           |\n\n> Requires at least one of the values imphash, domain, ttp or ip in the query.\n\n**Query Sample**\n``` bash\ncurl -X GET 'https://api.polyswarm.network/v3/ioc/search?ip=193.138.218.74&community=default' -H \"Authorization: $API_KEY\"\n```\n\n## Sandboxing {#sandboxing}\n\n### List Sandboxes\n<span style=\"background-color: #abf7ab\">GET</span> `/v3/sandbox/provider/list`\n\n> List the `provider_slug` and `vm_slug` values for sandboxing a file and/or artifact.\n\n**Query Sample**\n``` bash\ncurl -X GET 'https://api.polyswarm.network/v3/sandbox/provider/list' -H \"Authorization: $API_KEY\"\n```\n\n### Sandboxing a File/URL\n> Want to know what files types are supported? See [here](sandbox#file-types)\n\n<span style=\"background-color: #b5d5ff\">POST</span> `/v3/sandbox/sandboxtask/instance`\n\n> Inform PolySwarm to start a sandbox, returns an `id` value in the json and pre signed AWS url that the file needs to be placed into. This is the same process for Sandboxing a File and Sandboxing a URL, as the process for URL will be to upload a file with the URL inside it.\n\n**Body Schema**\n(application/json)\n\n| Parameter         | Type   | Required | Description                                                                                                         |\n|-------------------|--------|----------|---------------------------------------------------------------------------------------------------------------------|\n| `artifact_name`   | string | true     | Path to File of the artifact to be sandboxed or URL string.                                                         |\n| `artifact_type`   | string | true     | Defines the type, `FILE` to Sandbox a file, `URL` to Sandbox a URL.                                                 |\n| `preprocessing`   | object | false    | Preprocessing settings to be applied to the artifact. See schema table bellow.                                      |\n| `provider_slug`   | string | true     | Name of the sandbox to detonate on. For URL Sandboxing only Triage is Supported.                                    |\n| `community`       | string | true     | Name of the Community. Simplest to use `default` for the public community, or `private` for your Private Community. |\n| `vm_slug`         | string | true     | Slug name for the sandbox vm to use, for URL Sandboxing only Windows 10 on Triage is Supported.                     |\n| `browser`         | string | false    | Optional value to choose the browser for URL detonation, only `edge` supported.                                     |\n\n**Body / Preprocessing Schema**\n(application/json)\n\n| Parameter  | Type   | Required | Description                                                                                                                                                                                                                                                                                                      |\n|------------|--------|----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `type`     | string | true     | Either `zip` or `qrcode`, the first mean the file is a zip that the server has to decompress to then sandbox the content (only one file inside allowed). \"qrcode\" means the file is a QR Code image with a URL as payload, and you want to sandbox the URL, not the actual file (artifact_type has to be \"URL\"). |\n| `password` | string | false    | Use this password to decompress the zip file.                                                                                                                                                                                                                                                                    |\n\n**Query Sample**\n\nHere is a simple sandboxing POST request:\n\n``` bash\ncurl -X POST -d '{\n  \"artifact_name\": \"eicar.txt\",\n  \"artifact_type\": \"FILE\",\n  \"community\": \"default\",\n  \"sandbox\": \"cape\"\n}' -H \"Content-Type: application/json\" -H \"Authorization: $API_KEY\" https://api.polyswarm.network/v3/sandbox/sandboxtask/instance\n```\n\nHere is an example using the \"preprocessing\" argument to send an encrypted zip file:\n\n``` bash\ncurl -X POST -d '{\n  \"artifact_name\": \"target.zip\",\n  \"artifact_type\": \"FILE\",\n  \"community\": \"default\",\n  \"sandbox\": \"cape\",\n  \"preprocessing\": {\"type\": \"zip\", \"password\": \"password\"}\n}' -H \"Content-Type: application/json\" -H \"Authorization: $API_KEY\" https://api.polyswarm.network/v3/sandbox/sandboxtask/instance\n```\n\n****\n\n<span style=\"background-color: #ffbd8c\">PUT</span> `https://s3.us-east-2.amazonaws.com/{PRE_SIGNED_AWS_URL}`\n\n> Provide the file to upload to the AWS URL.\n\n**Query Sample**\n``` bash\ncurl --upload-file ./tests/eicar.txt \"<PRE_SIGNED_AWS_URL>\"\n```\n\n****\n\n<span style=\"background-color: #ffbd8c\">PUT</span> `/v3/sandbox/sandboxtask/instance`\n\n> Inform PolySwarm the upload is complete and to start the sandbox.\n\n**Query Parameters**\n\n| Parameter | Type     | Required | Description                                                       |\n|-----------|----------|----------|-------------------------------------------------------------------|\n| `id`      | string   | true     | `id` that has been returned by the first `POST` command. |\n| `community`      | string   | false     | `private` or `public` values for the community`|\n\n**Query Sample**\n``` bash\ncurl -X PUT 'https://api.polyswarm.network/v3/sandbox/sandboxtask/instance?id=49722305458696948' -H \"Authorization: $API_KEY\"\n```\n\n**Query Sample**\n``` bash\ncurl -X PUT 'https://api.polyswarm.network/v3/sandbox/sandboxtask/instance?id=49722305458696948&community=private' -H \"Authorization: $API_KEY\"\n```\n\nSandboxes have multiple returned statuses, these are listed below.\n\n| Status Name                          | API Status Name |              What is it for?                           |\n|--------------------------------------|-----------------|--------------------------------------------------------|\n| `Success`                            | `SUCCEEDED` |Finished processing correctly.                                           |\n| `Started`                            | `STARTED` | Sandbox session has started.                                             |\n| `Collecting Data`                    | `COLLECTING_DATA` | Sandbox session has been successful and data is being collected.         |\n| `Failed`                             | `FAILED` | Sandbox session has failed, this can be due to many reasons.             |\n| `Pending`                            | `PENDING` | Sandbox session is queued up and ready to start.                         |\n| `Timed out`                          | `TIMEDOUT` | Sandbox session has timed out and quota has not been reimbursed.         |\n| `Delayed`                            | `DELAYED` | Sandbox session has been delayed and will start soon.                    |\n| `Failed with Quota Reimbursement`    | `FAILED_REIMBURSED` | Finished processing but failed, quota will be reimbursed.                |\n| `Timed out with Quota Reimbursement` | `TIMEDOUT_REIMBURSED` |Delayed in the queue for too long, got timed out and then reimbursement. |\n\nQuery every 30 seconds to understand if the Sandbox session has been successful, see the [Lookup Sandbox Task](polyswarm-rest-api-v3#lookup-sandbox) section below.\n\n### Sandboxing an Existing Artifact\n<span style=\"background-color: #b5d5ff\">POST</span> `/v3/sandbox/sandboxtask`\n\nSend an existing artifact to be sandboxed by providing its artifact id, and the chosen Sandbox provider.\n\n**Body Schema**\n(application/json)\n\n| Parameter       | Type     | Required | Description                           |\n|-----------------|----------|----------|---------------------------------------|\n| `artifact_id`   | integer  | true     | `artifact_id` value for the artifact. |\n| `provider_slug` | string   | true     | Sandbox provider name.                |\n| `community` | string   | false     | `private` or `public` values for the community`                |\n| `network_enabled` | boolean   | false     | `true` or `false` defines if you want Internet on Sandbox Detonation. Default `true` for public communities and `false` for private ones.   |\n| `vm_slug`       | string   | false    | Slug name for the sandbox vm to use.  |\n\n**Query Sample**\n``` bash\ncurl -X POST -d '{\"artifact_id\": \"66885603025097785\", \"provider_slug\": \"cape\"}'  -H \"Content-Type: application/json\" -H \"Authorization: $API_KEY\" https://api.polyswarm.network/v3/sandbox/sandboxtask\n```\n\n### Lookup Sandbox Task {#lookup-sandbox}\n<span style=\"background-color: #abf7ab\">GET</span> `/v3/sandbox/sandboxtask`\n\nLookup the results from the specified sandbox task.\n\n**Query Parameters**\n\n| Parameter         | Type    | Required | Description                                                                                                         |\n|-------------------|---------|----------|---------------------------------------------------------------------------------------------------------------------|\n| `community`       | string  | true     | Name of the Community. Simplest to use `default` for the public community, or `private` for your Private Community. |\n| `sandbox_task_id` | integer | true     | sandbox task id value.                                                                                              |\n\n**Query Sample**\n``` bash\ncurl -X GET 'https://api.polyswarm.network/v3/sandbox/sandboxtask?community=default&sandbox_task_id=29603365297891589' -H \"Authorization: $API_KEY\"\n```\n\n### Lookup Latest Sandbox Task\n<span style=\"background-color: #abf7ab\">GET</span> `/v3/sandbox/sandboxtask/latest`\n\nLookup the results from the most recent sandbox task that was run on the provided sha256 in the provided sandbox.\n\n**Query Parameters**\n\n| Parameter   | Type     | Required | Description                                                                                                         |\n|-------------|----------|----------|---------------------------------------------------------------------------------------------------------------------|\n| `community` | string   | true     | Name of the Community. Simplest to use `default` for the public community, or `private` for your Private Community. |\n| `sha256`    | string   | true     | Hash value to lookup.                                                                                               |\n| `sandbox`   | string   | true     | Name of the Sandbox, e.g. `cape`, `triage`.                                                                         |\n\n**Query Sample**\n``` bash\ncurl -X GET 'https://api.polyswarm.network/v3/sandbox/sandboxtask/latest?community=default&sandbox=cape&sha256=5da5a1e3983982a92341953929d4c7726da65fe5125d264dd8932a870f2f154a' -H \"Authorization: $API_KEY\"\n```\n\n### Download Sandbox Artifact\n\nTo download Sandbox Artifacts like pcap, jarm or report files follow [this](/customers/polyswarm-rest-api-v3/#download-id) section to download via `instance_id`.\n\n> Each file (pcap,report etc) will have its own `instance_id`, these can be found by using the \"Lookup Sandbox Task\" (`/v3/sandbox/sandboxtask`) command, and each file name will have an `instance_id` listed beside it.\n\n### List my Sandbox Tasks\n<span style=\"background-color: #abf7ab\">GET</span> `/v3/sandbox/sandboxtask/my-tasks`\n\nFind all sandbox tasks that you or your team members have run in the chosen date range.\n\n**Query Parameters**\n\n| Parameter         | Type    | Required | Description                                                                                                         |\n|-------------------|---------|----------|---------------------------------------------------------------------------------------------------------------------|\n| `community`       | string  | true     | Name of the Community. Simplest to use `default` for the public community, or `private` for your Private Community. |\n| `sandbox`         | string  | false    | Name of the sandbox to search on.                                                                                   |\n| `start-date`      | string  | false    | Start date to search.                                                                                               |\n| `end-date`        | string  | false    | End date to search.                                                                                                 |\n| `user_account_id` | integer | false    | User account that created the sandbox task.                                                                         |\n\n**Query Sample**\n``` bash\ncurl -X GET 'https://api.polyswarm.network/v3/sandbox/sandboxtask/my-tasks?community=default' -H \"Authorization: $API_KEY\"\n```\n\n### Search Sandbox Tasks\n<span style=\"background-color: #abf7ab\">GET</span> `/v3/sandbox/sandboxtask/list`\n\nFind all sandbox tasks associated with a sha256 (i.e. each time that artifact was sandboxed).\n\n**Query Parameters**\n\n| Parameter    | Type    | Required | Description                                                |\n|--------------|---------|----------|------------------------------------------------------------|\n| `sha256`     | string  | true     | Hash value to find related tasks.                          |\n| `sandbox`    | string  | false    | Sandbox name to search.                                    |\n| `start_date` | string  | false    | Start date for the search, i.e. `2024-09-27` (ISO format). |\n| `end_date`   | string  | false    | End date for the search, i.e. `2024-09-27` (ISO format).   |\n| `status`     | string  | false    | Status of the sandbox task i.e. `PENDING`.                 |\n| `account_id` | integer | false    | Account that created the sandbox task.                     |\n\n**Query Sample**\n``` bash\ncurl -X GET 'https://api.polyswarm.network/v3/sandbox/sandboxtask/list?sha256=5da5a1e3983982a92341953929d4c7726da65fe5125d264dd8932a870f2f154a' -H \"Authorization: $API_KEY\"\n```\n\n## Notification Webhooks {#notification-webhooks}\n\nNotification webhooks allow you to receive real-time notifications for events in PolySwarm, such as when sandbox analysis completes.\n\n### Create a Notification Webhook\n\n<span style=\"background-color: #b5d5ff\">POST</span> `/v3/notification/webhook`\n\n**Body Schema**\n(application/json)\n\n| Parameter       | Type    | Required | Description                                                    |\n|-----------------|---------|----------|----------------------------------------------------------------|\n| `webhook_uri`   | string  | true     | The URI where notification webhook events should be sent.       |\n| `secret`        | string  | true     | The secret key used for HMAC signature verification.           |\n| `status`        | string  | false    | Notification webhook status: `enabled` or `disabled` (default: `enabled`)   |\n| `events`        | array   | false    | Event types to subscribe to (e.g., `['sandbox_done']`)         |\n\n**Query Sample**\n``` bash\ncurl -X POST -d '{\n  \"webhook_uri\": \"https://example.com/webhook\",\n  \"secret\": \"your-secret-key\",\n  \"status\": \"enabled\",\n  \"events\": [\"sandbox_done\"]\n}' -H \"Content-Type: application/json\" -H \"Authorization: $API_KEY\" https://api.polyswarm.network/v3/notification/webhook\n```\n\n### Get a Notification Webhook\n\n<span style=\"background-color: #abf7ab\">GET</span> `/v3/notification/webhook`\n\n**Query Parameters**\n\n| Parameter | Type    | Required | Description                |\n|-----------|---------|----------|----------------------------|\n| `id`      | integer | true     | The ID of the notification webhook.     |\n\n**Query Sample**\n``` bash\ncurl -X GET 'https://api.polyswarm.network/v3/notification/webhook?id=12345' -H \"Authorization: $API_KEY\"\n```\n\n### Update a Notification Webhook\n\n<span style=\"background-color: #ffbd8c\">PUT</span> `/v3/notification/webhook`\n\n**Query Parameters**\n\n| Parameter | Type    | Required | Description                |\n|-----------|---------|----------|----------------------------|\n| `id`      | integer | true     | The ID of the notification webhook.     |\n\n**Body Schema**\n(application/json)\n\n| Parameter       | Type    | Required | Description                                                  |\n|-----------------|---------|----------|--------------------------------------------------------------|\n| `webhook_uri`   | string  | false    | The new notification webhook URI.                            |\n| `secret`        | string  | false    | The new secret for HMAC signing.                             |\n| `status`        | string  | false    | The new status: `enabled` or `disabled`.                     |\n| `events`        | array   | false    | Event types to subscribe to.                                 |\n\n**Query Sample**\n``` bash\ncurl -X PUT -d '{\n  \"webhook_uri\": \"https://newexample.com/webhook\",\n  \"status\": \"disabled\"\n}' -H \"Content-Type: application/json\" -H \"Authorization: $API_KEY\" https://api.polyswarm.network/v3/notification/webhook?id=12345\n```\n\n### Delete a Notification Webhook\n\n<span style=\"background-color: #ffa3a3\">DELETE</span> `/v3/notification/webhook`\n\n**Query Parameters**\n\n| Parameter | Type    | Required | Description                |\n|-----------|---------|----------|----------------------------|\n| `id`      | integer | true     | The ID of the notification webhook.     |\n\n**Query Sample**\n``` bash\ncurl -X DELETE 'https://api.polyswarm.network/v3/notification/webhook?id=12345' -H \"Authorization: $API_KEY\"\n```\n\n### List All Notification Webhooks\n\n<span style=\"background-color: #abf7ab\">GET</span> `/v3/notification/webhook/list`\n\n**Query Parameters**\n\n| Parameter | Type    | Required | Description                                                                                                         |\n|-----------|---------|----------|---------------------------------------------------------------------------------------------------------------------|\n| `limit`   | integer | false    | Number of results per page (default: 50).                                                                           |\n| `offset`  | string  | false    | Pagination offset token returned by the server for the next page of results.                                        |\n\n**Query Sample**\n``` bash\ncurl -X GET 'https://api.polyswarm.network/v3/notification/webhook/list?limit=50' -H \"Authorization: $API_KEY\"\n```\n\n### Test a Notification Webhook\n\n<span style=\"background-color: #b5d5ff\">POST</span> `/v3/notification/webhook/test`\n\n**Query Parameters**\n\n| Parameter | Type    | Required | Description                |\n|-----------|---------|----------|----------------------------|\n| `id`      | integer | true     | The ID of the notification webhook.     |\n\n**Query Sample**\n``` bash\ncurl -X POST 'https://api.polyswarm.network/v3/notification/webhook/test?id=12345' -H \"Authorization: $API_KEY\"\n```\n\n> Note: When this endpoint is called, a success response is returned, this is a success  for the request, it does not mean the webhook url worked.\n\n## Hunting with Yara {#hunting}\n\n### Managing Yara Rulesets {#yara-hunt}\n\n##### Create Ruleset\n<span style=\"background-color: #b5d5ff\">POST</span> `/v3/hunt/rule`\n\nCreate a new ruleset.\n\n**Body Schema**\n(application/json)\n\n| Parameter     | Type     | Required | Description                    |\n|---------------|----------|----------|--------------------------------|\n| `yara`        | string   | true     | Yara values, escape the items. |\n| `name`        | string   | true     | Name of the ruleset.           |\n| `description` | string   | false    | Description for the ruleset.   |\n\n**Query Sample**\n``` bash\ncurl -X POST -d '{\"yara\": \"\\/*\\r\\n This Yara ruleset is under the GNU-GPLv2 license (http:\\/\\/www.gnu.org\\/licenses\\/gpl-2.0.html) and open to any user or organization, as long as you use it under this license.\\r\\n\\r\\n*\\/\\r\\n\\r\\nimport \\\"pe\\\"\\r\\n\\r\\nrule MirageStrings\\r\\n{\\r\\n meta:\\r\\n description = \\\"Mirage Identifying Strings\\\"\\r\\n author = \\\"Seth Hardy\\\"\\r\\n last_modified = \\\"2014-06-25\\\"\\r\\n \\r\\n strings:\\r\\n $ = \\\"Neo,welcome to the desert of real.\\\" wide ascii\\r\\n $ = \\\"\\/result?hl=en&id=%s\\\"\\r\\n \\r\\n condition:\\r\\n  any of them\\r\\n}\\r\\n\\r\\nrule Mirage\\r\\n{\\r\\n meta:\\r\\n description = \\\"Mirage\\\"\\r\\n author = \\\"Seth Hardy\\\"\\r\\n last_modified = \\\"2014-06-25\\\"\\r\\n \\r\\n condition:\\r\\n MirageStrings\\r\\n}\\r\\n\\r\\nrule Mirage_APT\\r\\n{\\r\\n meta:\\r\\n Author = \\\"Silas Cutler\\\"\\r\\n Date = \\\"yyyy\\/mm\\/dd\\\"\\r\\n Description = \\\"Malware related to APT campaign\\\"\\r\\n Reference  = \\\"Useful link\\\"\\r\\n \\r\\n strings:\\r\\n $a1 = \\\"welcome to the desert of the real\\\"\\r\\n $a2 = \\\"Mirage\\\"\\r\\n $b = \\\"Encoding: gzip\\\"\\r\\n $c = \\/\\\\\\/[A-Za-z]*\\\\?hl=en\\/\\r\\n\\r\\n condition: \\r\\n (($a1 or $a2) or $b) and $c\\r\\n}\", \"name\": \"test_rule\"}' -H \"Content-Type: application/json\" -H \"Authorization: $API_KEY\" https://api.polyswarm.network/v3/hunt/rule\n```\n\n##### View Ruleset\n<span style=\"background-color: #abf7ab\">GET</span> `/v3/hunt/rule`\n\nView the contents of the specified ruleset.\n\n**Query Parameters**\n\n| Parameter | Type      | Required | Description                              |\n|-----------|-----------|----------|------------------------------------------|\n| `id`      | integer   | true     | `ruleset id` value to view the contents. |\n\n**Query Sample**\n``` bash\ncurl -X GET 'https://api.polyswarm.network/v3/hunt/rule?id=15862162112430616' -H \"Authorization: $API_KEY\"\n```\n\n##### List Rulesets\n<span style=\"background-color: #abf7ab\">GET</span> `/v3/hunt/rule/list`\n\nList all rulesets in your account\n\n**Query Sample**\n``` bash\ncurl -X GET 'https://api.polyswarm.network/v3/hunt/rule/list' -H \"Authorization: $API_KEY\"\n```\n\n##### Update Ruleset\n<span style=\"background-color: #ffbd8c\">PUT</span> `/v3/hunt/rule`\n\n**Query Parameters**\n\n| Parameter | Type     | Required | Description                            |\n|-----------|----------|----------|----------------------------------------|\n| `id`      | integer  | true     | `ruleset_id` that needs to be updated. |\n\n**Body Schema**\n(application/json)\n\n| Parameter     | Type    | Required | Description                       |\n|---------------|---------|----------|-----------------------------------|\n| `name`        | string  | false    | New updated name for the ruleset. |\n| `file`        | string  | false    | New updated yara values, escaped. |\n| `description` | string  | false    | New updated description.          |\n\n**Query Sample**\n``` bash\ncurl -X PUT -d '{\"yara\": \"\\/*\\r\\n This Yara ruleset is under the GNU-GPLv2 license (http:\\/\\/www.gnu.org\\/licenses\\/gpl-2.0.html) and open to any user or organization, as long as you use it under this license.\\r\\n\\r\\n*\\/\\r\\n\\r\\nimport \\\"pe\\\"\\r\\n\\r\\nrule MirageStrings\\r\\n{\\r\\n meta:\\r\\n description = \\\"Mirage Identifying Strings\\\"\\r\\n author = \\\"Seth Hardy\\\"\\r\\n last_modified = \\\"2014-06-25\\\"\\r\\n \\r\\n strings:\\r\\n $ = \\\"Neo,welcome to the desert of real.\\\" wide ascii\\r\\n $ = \\\"\\/result?hl=en&id=%s\\\"\\r\\n \\r\\n condition:\\r\\n  any of them\\r\\n}\\r\\n\\r\\nrule Mirage\\r\\n{\\r\\n meta:\\r\\n description = \\\"Mirage\\\"\\r\\n author = \\\"Seth Hardy\\\"\\r\\n last_modified = \\\"2014-06-25\\\"\\r\\n \\r\\n condition:\\r\\n MirageStrings\\r\\n}\\r\\n\\r\\nrule Mirage_APT\\r\\n{\\r\\n meta:\\r\\n Author = \\\"Silas Cutler\\\"\\r\\n Date = \\\"yyyy\\/mm\\/dd\\\"\\r\\n Description = \\\"Malware related to APT campaign\\\"\\r\\n Reference  = \\\"Useful link\\\"\\r\\n \\r\\n strings:\\r\\n $a1 = \\\"welcome to the desert of the real\\\"\\r\\n $a2 = \\\"Mirage\\\"\\r\\n $b = \\\"Encoding: gzip\\\"\\r\\n $c = \\/\\\\\\/[A-Za-z]*\\\\?hl=en\\/\\r\\n\\r\\n condition: \\r\\n (($a1 or $a2) or $b) and $c\\r\\n}\", \"name\": \"yytest_rule4444\"}' -H \"Content-Type: application/json\" -H \"Authorization: $API_KEY\" https://api.polyswarm.network/v3/hunt/rule?id=15862162112430616\n```\n\n##### Delete Ruleset\n<span style=\"background-color: #ffa3a3\">DELETE</span> `/v3/hunt/rule`\n\nDelete the given ruleset.\n\n**Query Parameters**\n\n| Parameter | Type      | Required | Description                   |\n|-----------|-----------|----------|-------------------------------|\n| `id`      | integer   | true     | `ruleset_id` value to delete. |\n\n**Query Sample**\n``` bash\ncurl -X DELETE 'https://api.polyswarm.network/v3/hunt/rule?id=15862162112430616' -H \"Authorization: $API_KEY\"\n```\n\n### Live Hunts {#live-hunt}\n\n##### Start Live Hunt\n<span style=\"background-color: #b5d5ff\">POST</span> `/v3/hunt/rule/live`\n\nStart a Live Hunt using the given ruleset.\n\n**Body Schema**\n(application/json)\n\n| Parameter   | Type      | Required | Description                                    |\n|-------------|-----------|----------|------------------------------------------------|\n| `rule_id`   | integer   | true     | `rule_id` of the ruleset to start a live hunt. |\n\n**Query Sample**\n``` bash\ncurl -X POST -d '{\"rule_id\":\"6992666340481223\"}' -H \"Content-Type: application/json\" -H \"Authorization: $API_KEY\" https://api.polyswarm.network/v3/hunt/rule/live\n```\n\n##### Stop Live Hunt\n<span style=\"background-color: #ffa3a3\">DELETE</span> `/v3/hunt/rule/live`\n\nStop the Live Hunt on a given ruleset.\n\n**Body Schema**\n(application/json)\n\n| Parameter   | Type      | Required | Description                                   |\n|-------------|-----------|----------|-----------------------------------------------|\n| `rule_id`   | integer   | true     | `rule_id` of the ruleset to stop a live hunt/ |\n\n**Query Sample**\n``` bash\ncurl -X DELETE -d '{\"rule_id\":\"6992666340481223\"}' -H \"Content-Type: application/json\" -H \"Authorization: $API_KEY\" https://api.polyswarm.network/v3/hunt/rule/live\n```\n\n##### View Live Results of a Live Hunt\n<span style=\"background-color: #abf7ab\">GET</span> `/v3/hunt/live/list`\n\n**Query Parameters**\n\n| Parameter         | Type    | Required | Description                                                                   |\n|-------------------|---------|----------|-------------------------------------------------------------------------------|\n| `since`           | integer | false    | Time value (in seconds) for how far back to request results (default `1440`). |\n| `rule-name`       | integer | false    | Name of the ruleset being used in the hunt.                                   |\n| `family`          | string  | false    | Filter results based on the family name.                                      |\n| `community`       | string  | false    | Filter results based community.                                               |\n| `polyscore-lower` | string  | false    | Polyscore lower bound for the hunt results.                                   |\n| `polyscore-upper` | string  | false    | Polyscore upper bound for the hunt results.                                   |\n\n**Query Sample**\n``` bash\ncurl -X GET 'https://api.polyswarm.network/v3/hunt/live/list?polyscore-upper=0.99' -H \"Authorization: $API_KEY\"\n```\n\n##### View a Singular Result\n<span style=\"background-color: #abf7ab\">GET</span> `/v3/hunt/live`\n\n**Query Parameters**\n\n| Parameter | Type    | Required | Description                  |\n|-----------|---------|----------|------------------------------|\n| `id`      | integer | true     | Provide the result id value. |\n\n**Query Sample**\n``` bash\ncurl -X GET 'https://api.polyswarm.network/v3/hunt/live?id=75570120079919313' -H \"Authorization: $API_KEY\"\n```\n\n##### Delete Live Result\n<span style=\"background-color: #ffa3a3\">DELETE</span> `/v3/hunt/live/list`\n\n**Body Schema**\n(application/json)\n\n| Parameter    | Type    | Required | Description                                                    |\n|--------------|---------|----------|----------------------------------------------------------------|\n| `result_ids` | integer | true     | List of `ruleset_ids` for the live hunt results to be deleted. |\n\n**Query Sample**\n``` bash\ncurl -X DELETE -d '{\"result_ids\":[\"66625018770158663\"]}'  -H \"Content-Type: application/json\" -H \"Authorization: $API_KEY\" https://api.polyswarm.network/v3/hunt/live/list\n```\n\n### Historical Hunts {#hist-hunt}\n\n##### Start a Historical Hunt\n<span style=\"background-color: #b5d5ff\">POST</span> `/v3/hunt/historical`\n\nstart a new Historical Hunt using the provided yara rules or existing ruleset file.\n\n**Body Schema**\n(application/json)\n\n| Parameter | Type    | Required | Description                                          |\n|-----------|---------|----------|------------------------------------------------------|\n| `rule_id` | integer | true     | `rule_id` of the ruleset to start a historical hunt. |\n| `yara`    | string  | true     | Path of the yara file to start a historical hunt.    |\n\n> Either `rule_id` or `yara` is required in the call.\n\n**Query Parameters**\n\n| Parameter | Type   | Required | Description                                      |\n|-----------|--------|----------|--------------------------------------------------|\n| `name`    | string | false    | Name of the ruleset to start an historical hunt. |\n\n**Query Sample**\n``` bash\ncurl -X POST -d '{\"rule_id\":\"24285974317896172\"}'  -H \"Content-Type: application/json\" -H \"Authorization: $API_KEY\" https://api.polyswarm.network/v3/hunt/historical\n```\n\n##### Cancel an Historical Hunt\n<span style=\"background-color: #ffbd8c\">PUT</span> `/v3/hunt/historical`\n\nStop a Historical Hunt. If it's already running, it will stop at the next batch interval.\n\n**Query Parameters**\n\n| Parameter | Type    | Required | Description                        |\n|-----------|---------|----------|------------------------------------|\n| `id`      | integer | true     | id of the historical hunt to stop. |\n\n**Query Sample**\n``` bash\ncurl -X PUT 'https://api.polyswarm.network/v3/hunt/historical?' -H \"Authorization: $API_KEY\"\n```\n\n##### List Historical Hunts\n<span style=\"background-color: #abf7ab\">GET</span> `/v3/hunt/historical/list`\n\nList the Historical Hunts in your account.\n\n**Query Parameters**\n\n| Parameter | Type    | Required | Description                                    |\n|-----------|---------|----------|------------------------------------------------|\n| `since`   | integer | false    | Value in seconds to look for Historical Hunts. |\n\n**Query Sample**\n``` bash\ncurl -X GET 'https://api.polyswarm.network/v3/hunt/historical/list' -H \"Authorization: $API_KEY\"\n```\n\n##### View Historical Hunt Details for a Hunt\n<span style=\"background-color: #abf7ab\">GET</span> `/v3/hunt/historical`\n\n> Provides ability to download results as a csv file and see the ruleset contents.\n\n**Query Parameters**\n\n| Parameter | Type    | Required | Description                         |\n|-----------|---------|----------|-------------------------------------|\n| `id`      | integer | true     | historical hunt id to view details. |\n\n**Query Sample**\n``` bash\ncurl -X GET 'https://api.polyswarm.network/v3/hunt/historical?id=75570120079919313' -H \"Authorization: $API_KEY\"\n```\n\n##### View Historical Hunt Results\n<span style=\"background-color: #abf7ab\">GET</span> `/v3/hunt/historical/results/list`\n\n**Query Parameters**\n\n| Parameter         | Type    | Required | Description                            |\n|-------------------|---------|----------|----------------------------------------|\n| `id`              | integer | true     | Historical hunt id.                    |\n| `rule-name`       | integer | false    | Ruleset name to filter results.        |\n| `family`          | integer | false    | Family name to filter results.         |\n| `community`       | string  | false    | Filter results based community.        |\n| `polyscore-lower` | integer | false    | Polyscore lower bound for the results. |\n| `polyscore-upper` | integer | false    | Polyscore upper bound for the results. |\n\n**Query Sample**\n``` bash\ncurl -X GET 'https://api.polyswarm.network/v3/hunt/historical/results/list?id=75570120079919313' -H \"Authorization: $API_KEY\"\n```\n\n##### View a Singular Historical Hunt Result\n<span style=\"background-color: #abf7ab\">GET</span> `/v3/hunt/historical/results`\n\n**Query Parameters**\n\n| Parameter | Type    | Required | Description                              |\n|-----------|---------|----------|------------------------------------------|\n| `id`      | integer | true     | `result_id` value to view single result. |\n\n**Query Sample**\n``` bash\ncurl -X GET 'https://api.polyswarm.network/v3/hunt/historical/results?id=75570120079919313' -H \"Authorization: $API_KEY\"\n```\n\n##### Delete a Historical Hunt\n<span style=\"background-color: #ffa3a3\">DELETE</span> `/v3/hunt/historical`\n\n**Query Parameters**\n\n| Parameter | Type    | Required | Description                                  |\n|-----------|---------|----------|----------------------------------------------|\n| `id`      | integer | true     | hunt id of the historical hunt to delete it. |\n\n**Query Sample**\n``` bash\ncurl -X DELETE 'https://api.polyswarm.network/v3/hunt/historical?id=1371741361996923' -H \"Authorization: $API_KEY\"\n```\n\n##### Delete Historical Hunt Results\n<span style=\"background-color: #ffa3a3\">DELETE</span> `/v3/hunt/historical/results/live`\n\n**Body Schema**\n(application/json)\n\n| Parameter    | Type    | Required | Description                                                    |\n|--------------|---------|----------|----------------------------------------------------------------|\n| `result_ids` | integer | true     | `ruleset_id` of the historical hunt to delete results from it. |\n\n**Query Sample**\n``` bash\ncurl -X DELETE -d '{\"result_ids\":[\"66625018770158663\"]}'  -H \"Content-Type: application/json\" https://api.polyswarm.network/v3/hunt/historical/results/list -H \"Authorization: $API_KEY\"\n```\n"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/customers/command-line/polyswarm-customer-cli-v3.md","frontmatter":{"title":"PolySwarm Customer CLI v3","excerpt":"A CLI tool for interacting with version 3 PolySwarm Customer APIs..."},"html":"<h1 id=\"polyswarm-customer-cli-v3\" style=\"position:relative;\"><a href=\"#polyswarm-customer-cli-v3\" aria-label=\"polyswarm customer cli v3 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>PolySwarm Customer CLI v3</h1>\n<p>A Command Line Interface tool for interacting with version 3 of the PolySwarm Customer APIs.</p>\n<p>Supports Python 3.7 and later.</p>\n<h2 id=\"getting-started\" style=\"position:relative;\"><a href=\"#getting-started\" aria-label=\"getting started permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Getting Started</h2>\n<h3 id=\"installation\" style=\"position:relative;\"><a href=\"#installation\" aria-label=\"installation permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Installation</h3>\n<p>From PyPI:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ pip <span class=\"token function\">install</span> polyswarm</code></pre></div>\n<blockquote>\n<p>If you get an error about a missing package named <code class=\"language-text\">wheel</code>, that means your version of pip is too old.\nYou need pip version 19 or newer.\nTo update pip, run <code class=\"language-text\">pip install -U pip</code>.</p>\n</blockquote>\n<p>From source:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ python setup.py <span class=\"token function\">install</span></code></pre></div>\n<blockquote>\n<p>If you get an error about a missing package named <code class=\"language-text\">wheel</code>, that means your version of setuptools is too old.\nYou need setuptools version 40.8.0 or newer.\nTo update setuptools, run <code class=\"language-text\">pip install -U setuptools</code>.</p>\n</blockquote>\n<h3 id=\"upgrade\" style=\"position:relative;\"><a href=\"#upgrade\" aria-label=\"upgrade permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Upgrade</h3>\n<ol>\n<li>\n<p>Check the current version installed</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ pip3 list <span class=\"token operator\">|</span> <span class=\"token function\">grep</span> polyswarm</code></pre></div>\n<p><em>Response Example:</em>\n<code class=\"language-text\">polyswarm          3.1.0</code> and <code class=\"language-text\">polyswarm_api      3.1.1</code></p>\n</li>\n<li>\n<p>Upgrade the PolySwarm Package</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ pip3 <span class=\"token function\">install</span> -U polyswarm polyswarm_api</code></pre></div>\n</li>\n<li>\n<p>Confirm the upgraded version</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ pip3 list <span class=\"token operator\">|</span> <span class=\"token function\">grep</span> polyswarm</code></pre></div>\n<p><em>Response Example:</em>\n<code class=\"language-text\">polyswarm          3.9.0</code> and <code class=\"language-text\">polyswarm_api      3.11.0</code></p>\n</li>\n</ol>\n<h3 id=\"configuration\" style=\"position:relative;\"><a href=\"#configuration\" aria-label=\"configuration permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Configuration</h3>\n<p>Several parameters can be set up Globally in your environment instead of defining these with each command.</p>\n<p>Set your API key</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ <span class=\"token builtin class-name\">export</span> <span class=\"token assign-left variable\">POLYSWARM_API_KEY</span><span class=\"token operator\">=</span><span class=\"token operator\">&lt;</span>Your API key from polyswarm.network<span class=\"token operator\">></span></code></pre></div>\n<blockquote>\n<p>You will need to get your own API key from <a href=\"https://polyswarm.network/account/api-keys\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"><code class=\"language-text\">polyswarm.network/account/api-keys</code></a></p>\n</blockquote>\n<p>Set the community name: \"default\" is the default public community.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ <span class=\"token builtin class-name\">export</span> <span class=\"token assign-left variable\">POLYSWARM_COMMUNITY</span><span class=\"token operator\">=</span>default</code></pre></div>\n<blockquote>\n<p>You can define your own private community name replacing the default community above if you have this feature on your plan.</p>\n</blockquote>\n<p>Enable tab completion</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ <span class=\"token builtin class-name\">eval</span> <span class=\"token string\">\"<span class=\"token variable\"><span class=\"token variable\">$(</span><span class=\"token assign-left variable\">_POLYSWARM_COMPLETE</span><span class=\"token operator\">=</span>source polyswarm<span class=\"token variable\">)</span></span>\"</span></code></pre></div>\n<h2 id=\"usage\" style=\"position:relative;\"><a href=\"#usage\" aria-label=\"usage permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Using the PolySwarm CLI</h2>\n<h3 id=\"general-usage\" style=\"position:relative;\"><a href=\"#general-usage\" aria-label=\"general usage permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>General Usage</h3>\n<p>The <code class=\"language-text\">polyswarm</code> command has several sub-commands.\nYou can run the command or a sub-command by itself or use the <code class=\"language-text\">-h</code> option to get help output.</p>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm -h</code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">Usage: polyswarm [OPTIONS] COMMAND [ARGS]...\n\n  This is a PolySwarm CLI client, which allows you to interact directly with\n  the PolySwarm network to scan files, search hashes, and more.\n\nOptions:\n  -a, --api-key TEXT              Your API key for polyswarm.network\n                                  (required).  [env var: POLYSWARM_API_KEY]\n\n  -u, --api-uri TEXT              The API endpoint (ADVANCED).  [env var:\n                                  POLYSWARM_API_URI]\n\n  -o, --output-file FILENAME      Path to output file.\n  --output-format, --fmt [text|json|pretty-json|sha256|sha1|md5]\n                                  Output format. Human-readable text or JSON.\n  --color / --no-color            Use colored output in text mode.\n  -v, --verbose\n  -c, --community TEXT            Community to use.  [env var:\n                                  POLYSWARM_COMMUNITY]\n\n  --parallel INTEGER              Number of threads to be used in parallel\n                                  http requests.\n\n  --verify / --no-verify          Verify TLS connections.\n  --version                       Show the version and exit.\n  --api-version                   Show the version and exit.\n  -h, --help                      Show this message and exit.\n\nCommands:\n  account          Interact with Accounts in Polyswarm.\n  activity         Interact with Yara Rules stored in Polyswarm.\n  cat              Output artifact contents to stdout.\n  download         Download file(s).\n  download-id      Download file(s).\n  engine           Interact with engines.\n  family           Interact with Malware Families in Polyswarm.\n  historical       Interact with historical hunts.\n  known            Interact with known ioc api.\n  link             Interact with Tag links in Polyswarm.\n  live             Interact with live hunts.\n  lookup           Lookup a scan id(s).\n  metadata         Interact with Metadata in Polyswarm.\n  providers        List the names of available sandbox providers and VMs.\n  report           Interact with the Polyswarm reporting system.\n  report-template  Interact with the Polyswarm reporting templates system.\n  rescan           Rescan files(s) by hash.\n  rescan-id        Rescan by scan id.\n  rules            Interact with Yara Rules stored in Polyswarm.\n  sandbox          Interact with the Polyswarm sandbox system.\n  scan             Interact with Scans sent to Polyswarm.\n  search           Interact search api.\n  stream           Access the polyswarm file stream.\n  tag              Interact with Tags in Polyswarm.\n  wait             Wait for a  scan to finish.</code></pre></div>\n<h3 id=\"further-usage-details\" style=\"position:relative;\"><a href=\"#further-usage-details\" aria-label=\"further usage details permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Further Usage Details</h3>\n<p>The command line structure is split into several sections; further details for the most used options and arguments are listed below. '[OPTIONS]' can be used in combination with a number of [COMMANDS].</p>\n<p><code class=\"language-text\">polyswarm [OPTIONS] COMMAND [ARGS]...</code></p>\n<p><strong><code class=\"language-text\">[OPTIONS]</code></strong></p>\n<ul>\n<li><code class=\"language-text\">-a</code> api key, overrides the  global setting of the api key, useful for moving between the default public community and the private community.</li>\n<li><code class=\"language-text\">–fmt</code> Define an output format of the returned results; available outputs include <code class=\"language-text\">json</code>, <code class=\"language-text\">pretty-json</code> and <code class=\"language-text\">sha256</code> values. This –fmt is optional; if not defined, it defaults to the engine verdict and artifact details.</li>\n<li><code class=\"language-text\">-o</code> output the returned results of the command to a file path of choice</li>\n<li><code class=\"language-text\">-v</code> Verbose allows for debugging and viewing the API/HTTP request</li>\n</ul>\n<p><strong><code class=\"language-text\">[COMMANDS]</code></strong></p>\n<p>These will be listed in the following chapters but are hierarchical in structure. Each main command will have a sub-command most of the time; these sub-command options can be found with the command <code class=\"language-text\">polyswarm &lt;command> -h</code>.</p>\n<p>For example, <code class=\"language-text\">polyswarm search -h</code> will list the available sub-commands for the command <code class=\"language-text\">search</code></p>\n<p><strong><code class=\"language-text\">[ARGS]</code></strong></p>\n<p>Most commands require one or more Parameters; these could be IPs, URLs, Artifact ID, or a Hunt ID.</p>\n<p>Still, the possibilities are significant with commands like metadata, allowing the ability to search through many fields. The Searching Metadata section will review these in further detail.</p>\n<h3 id=\"retrieve-account-information\" style=\"position:relative;\"><a href=\"#retrieve-account-information\" aria-label=\"retrieve account information permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Retrieve account information</h3>\n<h4 id=\"account-details\" style=\"position:relative;\"><a href=\"#account-details\" aria-label=\"account details permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Account details</h4>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm account whois</code></p>\n<p><strong>Description:</strong> Command to show information for your account, this includes what teams you are part of and account numbers.</p>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm account whois</code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">Account Number: <span class=\"token number\">123456789</span>\nUser Account Number: <span class=\"token number\">987654321</span>\nAccount Name: PolySwarm Demo\nAccount Type: team\nTenant: polyswarm\nCommunities: pcdemo</code></pre></div>\n<h4 id=\"account-features-and-quotas\" style=\"position:relative;\"><a href=\"#account-features-and-quotas\" aria-label=\"account features and quotas permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Account features and quotas</h4>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm account features</code></p>\n<p><strong>Description:</strong> Command to show the features enabled and disabled for your account and team, quota usage and other details.</p>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm account features</code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span> Account Plan <span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span>\nAccount Number: <span class=\"token number\">123456789</span>\nUser Account Number: <span class=\"token number\">987654321</span>\nTenant: polyswarm\nAccount Plan Name: Enterprise\nPlan Period Start: <span class=\"token number\">2024</span>-01-02T10:54:51.631182+00:00\nPlan Period End: <span class=\"token number\">2026</span>-01-15T00:00:00+00:00\nWindow Start: <span class=\"token number\">2024</span>-07-30T10:54:51.631182+00:00\nWindow End: <span class=\"token number\">2024</span>-08-29T10:54:51.631182+00:00\nDaily API Limit: <span class=\"token number\">12,500</span>\nDaily API Remaining: <span class=\"token number\">11,000</span>\nHas Stream Access?: No\nIs Trial?: No\n\n<span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span> Account Features and Quota <span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span>\nName: Daily Api Limit\nTag: daily_api_limit\nValue: True\n---\n<span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span>.</code></pre></div>\n<h2 id=\"pc\" style=\"position:relative;\"><a href=\"#pc\" aria-label=\"pc permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Private Communities</h2>\n<p>PolySwarm offers a service called “Private Communities” that restricts artifacts submitted into a Private Community and any metadata from the artifact to be accessible only by members of the private community and not to the wider public PolySwarm community.</p>\n<p>Currently, once Private Communities has been enabled for your Team Account, it can be used via the API and CLI.</p>\n<p>While setting up the environment as highlighted in the section \"Configuration\", you can set the <code class=\"language-text\">API Key</code> and <code class=\"language-text\">Community</code> to relate to the Team and Private Community Name going forward.</p>\n<p>Alternatively, all cli commands discussed in this section support Private Communities, and to use this function, two options need to be fed into the <code class=\"language-text\">[OPTIONS]</code>.</p>\n<ul>\n<li><code class=\"language-text\">-a</code> - Define the Team API Key that has access to the Private Community, to get the key see <a href=\"https://polyswarm.network/account/api-keys\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">here</a></li>\n<li><code class=\"language-text\">--community</code> - Input the name of the Private Community, this will have been provided by the PolySwarm Team. If you omit the <code class=\"language-text\">--community</code> option from a CLI command, it will first look for the <code class=\"language-text\">POLYSWARM_COMMUNITY</code> variable in your environment, and if that is not defined, it will use the default public community.</li>\n</ul>\n<p><strong>Request Example</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">polyswarm -a <span class=\"token number\">1234123412341234123412341234</span> --community mypc --fmt sha256 search metadata <span class=\"token string\">'artifact.created:>now-1000d '</span></code></pre></div>\n<h2 id=\"scanning-artifacts\" style=\"position:relative;\"><a href=\"#scanning-artifacts\" aria-label=\"scanning artifacts permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Scanning an Artifact</h2>\n<h4 id=\"scan-a-file\" style=\"position:relative;\"><a href=\"#scan-a-file\" aria-label=\"scan a file permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Scan a File</h4>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm scan file &lt;file></code></p>\n<p><strong>Description:</strong> Command to scan a local file with PolySwarm to retrieve engine verdict details.</p>\n<p><strong>Options</strong></p>\n<table>\n<thead>\n<tr>\n<th>Option</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">-r</code>, <code class=\"language-text\">--recursive</code></td>\n<td>-</td>\n<td>false</td>\n<td>Scan directories recursively</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">-t</code>, <code class=\"language-text\">--timeout</code></td>\n<td>integer</td>\n<td>false</td>\n<td>How long to wait for results (default:900)</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">-z</code>, <code class=\"language-text\">--is-zip</code></td>\n<td>bool</td>\n<td>false</td>\n<td>Will handle the provided file as a zip and decompress server side.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">-p</code>, <code class=\"language-text\">--zip-password</code></td>\n<td>string</td>\n<td>false</td>\n<td>Used to provide a password to decompress the zip file with.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">-e</code>, <code class=\"language-text\">--expiration-window</code></td>\n<td>INTEGER</td>\n<td>false</td>\n<td>Applies to Private Communities only and affects new uploads. After the configured number of days, the binary file is deleted, but the metadata remains available, so the hash can still be searched. Must be <code class=\"language-text\">30</code> or <code class=\"language-text\">180</code>.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">-n</code>,  <code class=\"language-text\">--nowait</code></td>\n<td>-</td>\n<td>false</td>\n<td>Does not wait for the scan window to close</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">-b</code>, <code class=\"language-text\">--is-base64</code></td>\n<td>-</td>\n<td>false</td>\n<td>Will handle the provided file as containingbase64-encoded content to decode server-side.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">--is-7zip</code></td>\n<td>-</td>\n<td>false</td>\n<td>Will handle the provided file as a 7zip archive and decompress server-side.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">--sevenzip-password</code></td>\n<td>string</td>\n<td>false</td>\n<td>Will use this password to decompress the 7zip file. If provided, will handle the file as a 7zip.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">-s</code>, <code class=\"language-text\">--scan-config</code></td>\n<td>string</td>\n<td>false</td>\n<td>Template to be used in the scan i.e. default, more-time, most-time</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm scan <span class=\"token function\">file</span> /tmp/eicar</code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span> Artifact Instance <span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span>\nScan permalink: https://polyswarm.network/scan/results/file/89b7a034846a917f7f31a22778ffe04caa3c22136d0e12d1676cfd41a889b6bf\nDetections: <span class=\"token number\">6</span>/12 engines reported malicious\n\tQihoo <span class=\"token number\">360</span>: Malicious, metadata: <span class=\"token punctuation\">{</span><span class=\"token string\">\"malware_family\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"qex.eicar.gen.gen\"</span>, <span class=\"token string\">\"scanner\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token punctuation\">{</span><span class=\"token string\">\"environment\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token punctuation\">{</span><span class=\"token string\">\"architecture\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"AMD64\"</span>, <span class=\"token string\">\"operating_system\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"Windows\"</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">}</span>\n\tLionic: Clean\n\tXVirus: Clean\n\tNucleon: Clean\n\tVirusdie: Malicious, metadata: <span class=\"token punctuation\">{</span><span class=\"token string\">\"malware_family\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"EICAR.TEST\"</span>, <span class=\"token string\">\"scanner\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token punctuation\">{</span><span class=\"token string\">\"environment\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token punctuation\">{</span><span class=\"token string\">\"architecture\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"x86_64\"</span>, <span class=\"token string\">\"operating_system\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"Linux\"</span><span class=\"token punctuation\">}</span>, <span class=\"token string\">\"vendor_version\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"1.3.0\"</span>, <span class=\"token string\">\"version\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"0.3.0\"</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">}</span>\n\tIkarus: Malicious, metadata: <span class=\"token punctuation\">{</span><span class=\"token string\">\"malware_family\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"EICAR-Test-File\"</span>, <span class=\"token string\">\"scanner\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token punctuation\">{</span><span class=\"token string\">\"environment\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token punctuation\">{</span><span class=\"token string\">\"architecture\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"x86_64\"</span>, <span class=\"token string\">\"operating_system\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"Linux\"</span><span class=\"token punctuation\">}</span>, <span class=\"token string\">\"signatures_version\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"21.02.2020 13:15:46 (102417)\"</span>, <span class=\"token string\">\"vendor_version\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"5.2.9.0\"</span>, <span class=\"token string\">\"version\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"0.2.0\"</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">}</span>\n\tClamAV: Clean\n\tAlibaba: Clean\n\tK7: Malicious, metadata: <span class=\"token punctuation\">{</span><span class=\"token string\">\"malware_family\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"EICAR_Test_File\"</span>, <span class=\"token string\">\"scanner\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token punctuation\">{</span><span class=\"token string\">\"environment\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token punctuation\">{</span><span class=\"token string\">\"architecture\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"AMD64\"</span>, <span class=\"token string\">\"operating_system\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"Windows\"</span><span class=\"token punctuation\">}</span>, <span class=\"token string\">\"signatures_version\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"11.95.33362, 21-Feb-2020\"</span>, <span class=\"token string\">\"vendor_version\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"15.2.0.42\"</span>, <span class=\"token string\">\"version\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"0.2.0\"</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">}</span>\n\tNanoAV: Malicious, metadata: <span class=\"token punctuation\">{</span><span class=\"token string\">\"malware_family\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"Marker.Dos.EICAR-Test-File.dyb\"</span>, <span class=\"token string\">\"scanner\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token punctuation\">{</span><span class=\"token string\">\"environment\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token punctuation\">{</span><span class=\"token string\">\"architecture\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"AMD64\"</span>, <span class=\"token string\">\"operating_system\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"Windows\"</span><span class=\"token punctuation\">}</span>, <span class=\"token string\">\"signatures_version\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"0.14.33.17090\"</span>, <span class=\"token string\">\"vendor_version\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"1.0.134.90567\"</span>, <span class=\"token string\">\"version\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"0.1.0\"</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">}</span>\n\tVenusEye: Clean\n\tDrWeb: Malicious, metadata: <span class=\"token punctuation\">{</span><span class=\"token string\">\"malware_family\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"EICAR Test File (NOT a Virus!)\"</span>, <span class=\"token string\">\"scanner\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token punctuation\">{</span><span class=\"token string\">\"environment\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token punctuation\">{</span><span class=\"token string\">\"architecture\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"x86_64\"</span>, <span class=\"token string\">\"operating_system\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"Linux\"</span><span class=\"token punctuation\">}</span>, <span class=\"token string\">\"signatures_version\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"864BFD34E93FFC1BEFC260DAE804EFAF, 2020-Feb-21 16:59:42\"</span>, <span class=\"token string\">\"vendor_version\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"7.00.44.12030\"</span>, <span class=\"token string\">\"version\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"0.3.0\"</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">}</span>\nScan id: <span class=\"token number\">50446025732260182</span>\nSHA256: 89b7a034846a917f7f31a22778ffe04caa3c22136d0e12d1676cfd41a889b6bf\nSHA1: a33fb79e9c71f1b446607d437a1984602ed47d5c\nMD5: a6a57bf20416a4c712c4a1eabcaeb235\nFile type: mimetype: text/plain, extended_info: EICAR virus <span class=\"token builtin class-name\">test</span> files\nSSDEEP: <span class=\"token number\">3</span>:a+JraNvsgzsVqSwHqajaBFSdYSDQ1SBWfQdRXn:tJuOgzskCStDmidRX\nTLSH: ccc09b867e1dfda6530b44510171b5771829575d1de4053421d1f0f4dd677dc43741f8\nFirst seen: <span class=\"token number\">2020</span>-01-24 <span class=\"token number\">21</span>:56:21.456900\nLast seen: <span class=\"token number\">2020</span>-02-21 <span class=\"token number\">19</span>:21:59.196578\nStatus: Assertion window closed\nFilename: malicious.txt\nCommunity: lima\nCountry: US\nPolyScore: <span class=\"token number\">0.07193209420451106284</span></code></pre></div>\n<h4 id=\"scan-a-url\" style=\"position:relative;\"><a href=\"#scan-a-url\" aria-label=\"scan a url permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Scan a URL</h4>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm scan url &lt;URL></code></p>\n<blockquote>\n<p>When scanning a URL, you should always include the protocol (<code class=\"language-text\">http://</code> or <code class=\"language-text\">https://</code>).</p>\n</blockquote>\n<p><strong>Description:</strong> Command to scan a url with PolySwarm to retrieve engine verdict details. The command can be used to scan a qr code and extract the url from the code.</p>\n<p><strong>Options</strong></p>\n<table>\n<thead>\n<tr>\n<th>Option</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">-r</code> ,<code class=\"language-text\">--url-file</code></td>\n<td>string</td>\n<td>false</td>\n<td>Path of file that contains multiple URLs, one per line.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">--qrcode-file</code></td>\n<td>string</td>\n<td>false</td>\n<td>Path of a QR Code image file that contains an URL as a payload.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">-e</code>, <code class=\"language-text\">--expiration-window</code></td>\n<td>INTEGER</td>\n<td>false</td>\n<td>Applies to Private Communities only and affects new uploads. After the configured number of days, the binary file is deleted, but the metadata remains available, so the hash can still be searched. Must be <code class=\"language-text\">30</code> or <code class=\"language-text\">180</code>.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">-t</code>, <code class=\"language-text\">--timeout</code></td>\n<td>integer</td>\n<td>false</td>\n<td>How long to wait for results (default:900).</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">-n</code>, <code class=\"language-text\">--nowait</code></td>\n<td>-</td>\n<td>false</td>\n<td>Does not wait for the scan window to close.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">-s</code>, <code class=\"language-text\">--scan-config</code></td>\n<td>string</td>\n<td>false</td>\n<td>Template to be used in the scan i.e. default, more-time, most-time.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm scan url --scan-config most-time https://google.com</code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span> Artifact Instance <span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span>\nScan permalink: https://polyswarm.network/scan/results/file/05046f26c83e8c88b3ddab2eab63d0d16224ac1e564535fc75cdceee47a0938d\nDetections: <span class=\"token number\">0</span>/4 engines reported malicious\n\tCyRadar: Clean\n\tPhishtank: Clean\n\tNucleon: Clean\n\tVirusdie: Clean\nScan id: <span class=\"token number\">47022542941158297</span>\nSHA256: 05046f26c83e8c88b3ddab2eab63d0d16224ac1e564535fc75cdceee47a0938d\nSHA1: 72fe95c5576ec634e214814a32ab785568eda76a\nMD5: 99999ebcfdb78df077ad2727fd00969f\nFile type: mimetype: text/plain, extended_info: ASCII text, with no line terminators\nSSDEEP: <span class=\"token number\">3</span>:N8r3uK:2LuK\nTLSH:\nFirst seen: <span class=\"token number\">2019</span>-06-25 01:53:43.954091\nLast seen: <span class=\"token number\">2020</span>-02-21 <span class=\"token number\">19</span>:40:12.136225\nStatus: Assertion window closed\nFilename: https://google.com\nCommunity: lima\nCountry: US\nPolyScore: <span class=\"token number\">0.00000000000000000000</span></code></pre></div>\n<h2 id=\"rescanning-artifact\" style=\"position:relative;\"><a href=\"#rescanning-artifact\" aria-label=\"rescanning artifact permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Rescanning an Artifact</h2>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm rescan &lt;hash></code></p>\n<p><strong>Description:</strong> Rescans also triggered by referencing the <code class=\"language-text\">SHA256/SHA1/MD5</code> hash of the artifact. Rescan will submit the sample through the engines to retrieve an updated verdict.</p>\n<p><strong>Options</strong></p>\n<table>\n<thead>\n<tr>\n<th>Option</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">-r</code>, <code class=\"language-text\">--hash-file</code></td>\n<td>string</td>\n<td>false</td>\n<td>File path and name for file that contains hashes, one per line</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">-t</code>, <code class=\"language-text\">--timeout</code></td>\n<td>integer</td>\n<td>false</td>\n<td>How long to wait for results (default:900)</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">-n</code>, <code class=\"language-text\">--nowait</code></td>\n<td>-</td>\n<td>false</td>\n<td>Does not wait for the scan window to close</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">-s</code>, <code class=\"language-text\">--scan-config</code></td>\n<td>string</td>\n<td>false</td>\n<td>Template to be used in the scan i.e. default, more-time, most-time</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">--hash-type</code></td>\n<td>string</td>\n<td>false</td>\n<td>Hash type to search [default:autodetect, sha256, sha1, md5]</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm rescan 89b7a034846a917f7f31a22778ffe04caa3c22136d0e12d1676cfd41a889b6bf</code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span> Artifact Instance <span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span>\nScan permalink: https://polyswarm.network/scan/results/file/89b7a034846a917f7f31a22778ffe04caa3c22136d0e12d1676cfd41a889b6bf\nDetections: <span class=\"token number\">5</span>/11 engines reported malicious\n\tQihoo <span class=\"token number\">360</span>: Malicious, metadata: <span class=\"token punctuation\">{</span><span class=\"token string\">\"malware_family\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"qex.eicar.gen.gen\"</span>, <span class=\"token string\">\"scanner\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token punctuation\">{</span><span class=\"token string\">\"environment\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token punctuation\">{</span><span class=\"token string\">\"architecture\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"AMD64\"</span>, <span class=\"token string\">\"operating_system\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"Windows\"</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">}</span>\n\tClamAV: Clean\n\tIkarus: Malicious, metadata: <span class=\"token punctuation\">{</span><span class=\"token string\">\"malware_family\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"EICAR-Test-File\"</span>, <span class=\"token string\">\"scanner\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token punctuation\">{</span><span class=\"token string\">\"environment\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token punctuation\">{</span><span class=\"token string\">\"architecture\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"x86_64\"</span>, <span class=\"token string\">\"operating_system\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"Linux\"</span><span class=\"token punctuation\">}</span>, <span class=\"token string\">\"signatures_version\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"21.02.2020 13:15:46 (102417)\"</span>, <span class=\"token string\">\"vendor_version\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"5.2.9.0\"</span>, <span class=\"token string\">\"version\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"0.2.0\"</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">}</span>\n\tNucleon: Clean\n\tVenusEye: Clean\n\tK7: Malicious, metadata: <span class=\"token punctuation\">{</span><span class=\"token string\">\"malware_family\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"EICAR_Test_File\"</span>, <span class=\"token string\">\"scanner\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token punctuation\">{</span><span class=\"token string\">\"environment\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token punctuation\">{</span><span class=\"token string\">\"architecture\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"AMD64\"</span>, <span class=\"token string\">\"operating_system\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"Windows\"</span><span class=\"token punctuation\">}</span>, <span class=\"token string\">\"signatures_version\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"11.95.33362, 21-Feb-2020\"</span>, <span class=\"token string\">\"vendor_version\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"15.2.0.42\"</span>, <span class=\"token string\">\"version\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"0.2.0\"</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">}</span>\n\tLionic: Clean\n\tVirusdie: Malicious, metadata: <span class=\"token punctuation\">{</span><span class=\"token string\">\"malware_family\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"EICAR.TEST\"</span>, <span class=\"token string\">\"scanner\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token punctuation\">{</span><span class=\"token string\">\"environment\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token punctuation\">{</span><span class=\"token string\">\"architecture\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"x86_64\"</span>, <span class=\"token string\">\"operating_system\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"Linux\"</span><span class=\"token punctuation\">}</span>, <span class=\"token string\">\"vendor_version\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"1.3.0\"</span>, <span class=\"token string\">\"version\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"0.3.0\"</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">}</span>\n\tAlibaba: Clean\n\tDrWeb: Malicious, metadata: <span class=\"token punctuation\">{</span><span class=\"token string\">\"malware_family\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"EICAR Test File (NOT a Virus!)\"</span>, <span class=\"token string\">\"scanner\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token punctuation\">{</span><span class=\"token string\">\"environment\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token punctuation\">{</span><span class=\"token string\">\"architecture\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"x86_64\"</span>, <span class=\"token string\">\"operating_system\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"Linux\"</span><span class=\"token punctuation\">}</span>, <span class=\"token string\">\"signatures_version\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"0599371BD3AE76D460E15A9719E64059, 2020-Feb-21 18:06:10\"</span>, <span class=\"token string\">\"vendor_version\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"7.00.44.12030\"</span>, <span class=\"token string\">\"version\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"0.3.0\"</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">}</span>\n\tXVirus: Clean\nScan id: <span class=\"token number\">87555975730729927</span>\nSHA256: 89b7a034846a917f7f31a22778ffe04caa3c22136d0e12d1676cfd41a889b6bf\nSHA1: a33fb79e9c71f1b446607d437a1984602ed47d5c\nMD5: a6a57bf20416a4c712c4a1eabcaeb235\nFile type: mimetype: text/plain, extended_info: EICAR virus <span class=\"token builtin class-name\">test</span> files\nSSDEEP: <span class=\"token number\">3</span>:a+JraNvsgzsVqSwHqajaBFSdYSDQ1SBWfQdRXn:tJuOgzskCStDmidRX\nTLSH: ccc09b867e1dfda6530b44510171b5771829575d1de4053421d1f0f4dd677dc43741f8\nFirst seen: <span class=\"token number\">2020</span>-01-24 <span class=\"token number\">21</span>:56:21.456900\nLast seen: <span class=\"token number\">2020</span>-02-21 <span class=\"token number\">20</span>:03:30.398950\nStatus: Assertion window closed\nFilename: 89b7a034846a917f7f31a22778ffe04caa3c22136d0e12d1676cfd41a889b6bf\nCommunity: lima\nCountry: US\nPolyScore: <span class=\"token number\">0.08376258884586366971</span></code></pre></div>\n<h2 id=\"downloading-artifacts\" style=\"position:relative;\"><a href=\"#downloading-artifacts\" aria-label=\"downloading artifacts permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Downloading &#x26; Reporting</h2>\n<h4 id=\"downloading-artifacts\" style=\"position:relative;\"><a href=\"#downloading-artifacts\" aria-label=\"downloading artifacts permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Downloading Artifacts</h4>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm download &lt;hash></code></p>\n<p><strong>Description:</strong> Artifacts are downloaded by referencing their <code class=\"language-text\">SHA256/SHA1/MD5</code> hash and stored locally.</p>\n<p><strong>Options</strong></p>\n<table>\n<thead>\n<tr>\n<th>Option</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">-r</code>, <code class=\"language-text\">--hash-file</code></td>\n<td>string</td>\n<td>false</td>\n<td>File of hashes to download, one per line</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">-d</code>, <code class=\"language-text\">--destination</code></td>\n<td>string</td>\n<td>false</td>\n<td>Path where to store the downloaded files</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">--hash-type</code></td>\n<td>string</td>\n<td>false</td>\n<td>Hash type to search [default:autodetect, sha256, sha1, md5]</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm download 131f95c51cc819465fa1797f6ccacf9d494aaaff46fa3eac73ae63ffbdfd8267 test/</code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">Successfully downloaded artifact 131f95c51cc819465fa1797f6ccacf9d494aaaff46fa3eac73ae63ffbdfd8267 to /home/user/test/131f95c51cc819465fa1797f6ccacf9d494aaaff46fa3eac73ae63ffbdfd8267</code></pre></div>\n<h5 id=\"downloading-artifacts-via-id\" style=\"position:relative;\"><a href=\"#downloading-artifacts-via-id\" aria-label=\"downloading artifacts via id permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Downloading Artifacts via id</h5>\n<p>Commonly used to download sandbox artifacts, this command can be used to download artifacts directly via their <code class=\"language-text\">instance_id</code> see <a href=\"#download-id\">this</a> section for command.</p>\n<h4 id=\"downloading-bundles\" style=\"position:relative;\"><a href=\"#downloading-bundles\" aria-label=\"downloading bundles permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Downloading Bundles</h4>\n<p>This provides the ability to 'bundle' selected items together into a single zip file for easy collection. This is a three step process.</p>\n<ul>\n<li>Create the bundle</li>\n<li>Get the bundle status, wait for it to be built</li>\n<li>Download the bundle</li>\n</ul>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm bundle create -i &lt;instance_id></code></p>\n<p><strong>Description:</strong> Define the items that will be included in the bundle and create it.</p>\n<p><strong>Options</strong></p>\n<table>\n<thead>\n<tr>\n<th>Option</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">-i</code>, <code class=\"language-text\">--instance-id</code></td>\n<td>string</td>\n<td>true</td>\n<td>The ID of an instance to include in the bundle archive.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">-n</code>, <code class=\"language-text\">--archive-name</code></td>\n<td>string</td>\n<td>true</td>\n<td>Name of the archive that will be created.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">-p</code>, <code class=\"language-text\">--preserve-filenames</code></td>\n<td>string</td>\n<td>false</td>\n<td>Preserve the names of the files in the bundle.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm  bundle create -i <span class=\"token number\">71486732419112569</span> -i <span class=\"token number\">55884507474463461</span> --archive-name reports.zip</code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span> Sample Bundle <span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span>\nID: <span class=\"token number\">25716002001657474</span>\nCommunity: _public\nCreated: <span class=\"token number\">2025</span>-05-27T11:08:54.819102+00:00\nInstance IDs: <span class=\"token punctuation\">[</span><span class=\"token number\">71486732419112569</span>, <span class=\"token number\">55884507474463461</span><span class=\"token punctuation\">]</span>\nState: PENDING</code></pre></div>\n<hr>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm bundle get &lt;bundle_task_id></code></p>\n<p><strong>Description:</strong> Poll the status of the bundle creation get the id from step 1.</p>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm bundle get <span class=\"token number\">25716002001657474</span></code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span> Sample Bundle <span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span>\nID: <span class=\"token number\">25716002001657474</span>\nCommunity: _public\nCreated: <span class=\"token number\">2025</span>-05-27T11:08:54.819102+00:00\nInstance IDs: <span class=\"token punctuation\">[</span><span class=\"token number\">71486732419112569</span>, <span class=\"token number\">55884507474463461</span><span class=\"token punctuation\">]</span>\nState: SUCCEEDED\nURL: https:<span class=\"token operator\">&lt;</span>presigned-aws-link<span class=\"token operator\">></span></code></pre></div>\n<hr>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm bundle download &lt;bundle_task_id></code></p>\n<p><strong>Description:</strong> Download the bundle.</p>\n<p><strong>Options</strong></p>\n<table>\n<thead>\n<tr>\n<th>Option</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">-d</code>, <code class=\"language-text\">--destination</code></td>\n<td>string</td>\n<td>false</td>\n<td>Path where to store the downloaded file.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm bundle download <span class=\"token number\">25716002001657474</span></code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">Successfully downloaded artifact reports.zip to /Users/name/Documents/reports.zip</code></pre></div>\n<h4 id=\"reporting\" style=\"position:relative;\"><a href=\"#reporting\" aria-label=\"reporting permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Reporting</h4>\n<h5 id=\"downloading-reports-and-zip-files\" style=\"position:relative;\"><a href=\"#downloading-reports-and-zip-files\" aria-label=\"downloading reports and zip files permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Downloading reports and zip files</h5>\n<p>PolySwarm provides the reporting cli command, this provides the ability to generate and download HTML/PDF reports for Scanning and Sandboxing sessions, and download a ZIP file of which can contain the PDF report alongside other Sandbox artifacts like pcaps, reports and jarm files.</p>\n<p>The following are the 3 sequential steps in a report generation operation, that can be performed via the CLI one step at a time:</p>\n<ul>\n<li>Inform PolySwarm to start creating the report, or create and download the zip file. If only wanting the zip file there is no need to proceed with the next two steps.</li>\n<li>Poll PolySwarm to understand when the report has finished being created.</li>\n<li>Download the report locally once generation is successful.</li>\n</ul>\n<hr>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm report create [OPTIONS] &lt;html|pdf|zip> &lt;scan|sandbox> &lt;OBJECT_ID></code></p>\n<p><strong>Description:</strong> Start to generate the PolySwarm report, choose a PDF or HTML report for  Sandbox or a Scanning instance. Or create a zip file with Sandbox Artifacts to download directly.</p>\n<blockquote>\n<p>NOTE: If generating a Scanning report the <code class=\"language-text\">OBJECT_ID</code> will be the <code class=\"language-text\">artifact_id</code>, find this with the command: <code class=\"language-text\">polyswarm --fmt pretty-json search hash &lt;hash> | jq '.artifact_id'</code>.\nIf generating a Sandboxing report the <code class=\"language-text\">OBJECT_ID</code> will be the <code class=\"language-text\">sandbox_id</code>, find this with the command: <code class=\"language-text\">polyswarm sandbox search &lt;hash></code> then choose from the desired sandbox sessions.</p>\n</blockquote>\n<p><strong>Options</strong></p>\n<table>\n<thead>\n<tr>\n<th>Option</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">--includes</code></td>\n<td>string</td>\n<td>false</td>\n<td>Comma-separated list of sections to include in the report. Can be one or more of: summary, detections, fileMetadata, network, droppedFiles, extractedConfig, analysis</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">--sandbox_artifact_types</code></td>\n<td>string</td>\n<td>false</td>\n<td>Comma-separated list of sandbox artifact types to include in the downloaded zip. Can be one or more of: <code class=\"language-text\">report</code>, <code class=\"language-text\">raw_report</code>, <code class=\"language-text\">screenshot</code>, <code class=\"language-text\">recording</code>, <code class=\"language-text\">dropped_file</code>, <code class=\"language-text\">memory_dump</code>, <code class=\"language-text\">pcap</code>, <code class=\"language-text\">jarm</code>. Only applicable to zip type.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">--zip-report-ids</code></td>\n<td>string</td>\n<td>false</td>\n<td>Comma-separated list of report task ids to include in the zip. This only needs to be used if you require the PDF report to be included in the ZIP. Note that the PDF report must be generated first.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">--template-id</code></td>\n<td>integer</td>\n<td>false</td>\n<td>Provide the <code class=\"language-text\">id</code> for the template used</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Example 1 Request: Create a PDF Report</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm report create pdf scan <span class=\"token number\">97903321852386706</span></code></pre></div>\n<p><strong>Example 1 Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">Successfully downloaded artifact scan-97903321852386706.pdf to /Users/John/Documents/scan-97903321852386706.pdf\n<span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span> Report <span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span>\nID: <span class=\"token number\">59403308938961820</span>\nCommunity: _public\nCreated: <span class=\"token number\">2024</span>-06-11T10:19:48.211143\nType: scan\nFormat: pdf\nTemplate ID: <span class=\"token number\">95389624286242180</span>\nScan ID: <span class=\"token number\">97903321852386706</span>\nState: PENDING</code></pre></div>\n<p><strong>Example 2 Request: Download a ZIP file</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm report create --sandbox_artifact_types report,raw_report,pcap <span class=\"token function\">zip</span> sandbox <span class=\"token number\">97903321852386706</span></code></pre></div>\n<p><strong>Example 2 Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">Successfully downloaded artifact sandbox_zip-97903321852386706.zip to /Users/John/Documents/sandbox_zip-97903321852386706.zip</code></pre></div>\n<hr>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm report get &lt;REPORT_ID></code></p>\n<p><strong>Description:</strong> Retrieve the report's details to understand if the report generation has been successful and then retrieve the download link. <code class=\"language-text\">REPORT_ID</code> provided from the previous command.</p>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm report get <span class=\"token number\">59403308938961820</span></code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span> Report <span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span>\nID: <span class=\"token number\">59403308938961820</span>\nCommunity: _public\nCreated: <span class=\"token number\">2024</span>-06-11T10:19:48.211143\nType: scan\nFormat: pdf\nTemplate ID: <span class=\"token number\">95389624286242180</span>\nScan ID: <span class=\"token number\">97903321852386706</span>\nState: SUCCEEDED\nURL: https://s3.us-east-2.amazonaws.com/ps-storage-prod-reports/<span class=\"token punctuation\">{</span>AWS_LINK<span class=\"token punctuation\">}</span><span class=\"token punctuation\">..</span>.</code></pre></div>\n<hr>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm report download &lt;REPORT_ID></code></p>\n<p><strong>Description:</strong> Download the generated report locally.</p>\n<p><strong>Options</strong></p>\n<table>\n<thead>\n<tr>\n<th>Option</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">--destination</code></td>\n<td>string</td>\n<td>false</td>\n<td>Local path to store the downloaded file.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm report download <span class=\"token number\">59403308938961820</span></code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">Successfully downloaded artifact scan-97903321852386706.pdf to /Users/John/Documents/scan-97903321852386706.pdf</code></pre></div>\n<h5 id=\"llm-reports\" style=\"position:relative;\"><a href=\"#llm-reports\" aria-label=\"llm reports permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>LLM Reports</h5>\n<p>PolySwarm provides the ability to generate LLM-powered analysis reports for Scanning and Sandboxing sessions. These reports provide AI-generated summaries and insights for your submitted artifacts.</p>\n<p>The following are the 3 sequential steps in an LLM report generation operation:</p>\n<ul>\n<li>Inform PolySwarm to start creating the LLM report.</li>\n<li>Poll PolySwarm to understand when the report has finished being created.</li>\n<li>Download the report locally once generation is successful.</li>\n</ul>\n<hr>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm report llm-create [OPTIONS]</code></p>\n<p><strong>Description:</strong> Start to generate an LLM-powered analysis report for a Scanning or Sandboxing instance.</p>\n<p><strong>Options</strong></p>\n<table>\n<thead>\n<tr>\n<th>Option</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">-i</code>, <code class=\"language-text\">--instance-id</code></td>\n<td>string</td>\n<td>false</td>\n<td>Instance ID (from a scan) to include in the report.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">--cape-sandbox-task-id</code></td>\n<td>string</td>\n<td>false</td>\n<td>Cape Sandbox Task ID to include in the report.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">--triage-sandbox-task-id</code></td>\n<td>string</td>\n<td>false</td>\n<td>Triage Sandbox Task ID to include in the report.</td>\n</tr>\n</tbody>\n</table>\n<blockquote>\n<p>At least one of <code class=\"language-text\">--instance-id</code>, <code class=\"language-text\">--cape-sandbox-task-id</code>, or <code class=\"language-text\">--triage-sandbox-task-id</code> must be provided. You may combine <code class=\"language-text\">--cape-sandbox-task-id</code> and <code class=\"language-text\">--triage-sandbox-task-id</code> together, optionally alongside <code class=\"language-text\">--instance-id</code>, to generate a single unified report from multiple sources.</p>\n</blockquote>\n<p><strong>Example 1 Request: Create an LLM Report for a Scan</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm report llm-create --instance-id <span class=\"token number\">97903321852386706</span></code></pre></div>\n<p><strong>Example 1 Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span> LLM Report Task <span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span>\nID: <span class=\"token number\">45678901234567890</span>\nInstance ID: <span class=\"token number\">97903321852386706</span>\nCreated: <span class=\"token number\">2024</span>-12-15T14:32:10.123456\nState: PENDING</code></pre></div>\n<p><strong>Example 2 Request: Create an LLM Report for a Cape Sandbox Task</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm report llm-create --cape-sandbox-task-id <span class=\"token number\">76509232912518724</span></code></pre></div>\n<p><strong>Example 2 Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span> LLM Report Task <span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span>\nID: <span class=\"token number\">45678901234567891</span>\nCape Sandbox Task ID: <span class=\"token number\">76509232912518724</span>\nCreated: <span class=\"token number\">2024</span>-12-15T14:33:22.654321\nState: PENDING</code></pre></div>\n<p><strong>Example 3 Request: Create an LLM Report for a Triage Sandbox Task</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm report llm-create --triage-sandbox-task-id <span class=\"token number\">76509232912518724</span></code></pre></div>\n<p><strong>Example 3 Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span> LLM Report Task <span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span>\nID: <span class=\"token number\">45678901234567892</span>\nTriage Sandbox Task ID: <span class=\"token number\">76509232912518724</span>\nCreated: <span class=\"token number\">2024</span>-12-15T14:34:10.789012\nState: PENDING</code></pre></div>\n<p><strong>Example 4 Request: Create an LLM Report combining Cape and Triage results</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm report llm-create --cape-sandbox-task-id <span class=\"token number\">76509232912518724</span> --triage-sandbox-task-id <span class=\"token number\">12345678901234567</span></code></pre></div>\n<p><strong>Example 4 Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span> LLM Report Task <span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span>\nID: <span class=\"token number\">45678901234567893</span>\nCape Sandbox Task ID: <span class=\"token number\">76509232912518724</span>\nTriage Sandbox Task ID: <span class=\"token number\">12345678901234567</span>\nCreated: <span class=\"token number\">2024</span>-12-15T14:35:00.111222\nState: PENDING</code></pre></div>\n<hr>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm report llm-get &lt;REPORT_ID></code></p>\n<p><strong>Description:</strong> Retrieve the LLM report task details to understand if the report generation has been successful. Use the <code class=\"language-text\">REPORT_ID</code> from the llm-create command.</p>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm report llm-get <span class=\"token number\">45678901234567890</span></code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span> LLM Report Task <span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span>\nID: <span class=\"token number\">45678901234567890</span>\nInstance ID: <span class=\"token number\">97903321852386706</span>\nCreated: <span class=\"token number\">2024</span>-12-15T14:32:10.123456\nState: SUCCEEDED</code></pre></div>\n<hr>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm report llm-download &lt;REPORT_ID></code></p>\n<p><strong>Description:</strong> Download the generated LLM report locally.</p>\n<p><strong>Options</strong></p>\n<table>\n<thead>\n<tr>\n<th>Option</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">-d</code>, <code class=\"language-text\">--destination</code></td>\n<td>string</td>\n<td>false</td>\n<td>Local path to store the downloaded file.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm report llm-download <span class=\"token number\">45678901234567890</span></code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">Successfully downloaded artifact llm_report-97903321852386706.txt to /Users/John/Documents/llm_report-97903321852386706.txt</code></pre></div>\n<h5 id=\"llm-prompt-configurations\" style=\"position:relative;\"><a href=\"#llm-prompt-configurations\" aria-label=\"llm prompt configurations permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>LLM Prompt Configurations</h5>\n<p>PolySwarm provides the ability to manage LLM prompt configurations for customizing AI-generated analysis reports.</p>\n<h6 id=\"create-a-prompt-configuration\" style=\"position:relative;\"><a href=\"#create-a-prompt-configuration\" aria-label=\"create a prompt configuration permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Create a prompt configuration</h6>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm report prompt-config-create &lt;NAME> --system-prompt &lt;PROMPT></code></p>\n<p><strong>Description:</strong> Create a new LLM prompt configuration with customizable prompts for different analysis types.</p>\n<p><strong>Options</strong></p>\n<table>\n<thead>\n<tr>\n<th>Option</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">--system-prompt</code></td>\n<td>string</td>\n<td>true</td>\n<td>The system prompt text for the AI analysis.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">--is-active</code></td>\n<td>flag</td>\n<td>false</td>\n<td>Whether this should be the active prompt configuration.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">--cape-only-prompt</code></td>\n<td>string</td>\n<td>false</td>\n<td>Optional Cape sandbox-specific prompt text.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">--triage-only-prompt</code></td>\n<td>string</td>\n<td>false</td>\n<td>Optional Triage sandbox-specific prompt text.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">--scan-only-prompt</code></td>\n<td>string</td>\n<td>false</td>\n<td>Optional scan-specific prompt text.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm report prompt-config-create detailed_analysis <span class=\"token punctuation\">\\</span>\n  --system-prompt <span class=\"token string\">\"You are a cybersecurity expert analyzing malware samples.\"</span> <span class=\"token punctuation\">\\</span>\n  --is-active <span class=\"token punctuation\">\\</span>\n  --cape-only-prompt <span class=\"token string\">\"Focus on payload extraction.\"</span> <span class=\"token punctuation\">\\</span>\n  --scan-only-prompt <span class=\"token string\">\"Focus on detection results.\"</span></code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span> LLM Prompt Config <span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span>\nID: <span class=\"token number\">12345678901234567</span>\nName: detailed_analysis\nSystem Prompt: You are a cybersecurity expert analyzing malware samples.\nIs Active: True\nCreated: <span class=\"token number\">2024</span>-12-15T14:32:10.123456+00:00</code></pre></div>\n<h5 id=\"report-templates\" style=\"position:relative;\"><a href=\"#report-templates\" aria-label=\"report templates permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Report templates</h5>\n<p>PolySwarm provides the ability to manage the report templates, this can include uploading a new template, deleting a current template and managing the logo for each one.</p>\n<h6 id=\"list-templates\" style=\"position:relative;\"><a href=\"#list-templates\" aria-label=\"list templates permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>List templates</h6>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm report-template list</code></p>\n<p><strong>Description:</strong> List the available templates available to the team.</p>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm report-template list</code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span> Report Template <span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span>\nID: <span class=\"token number\">95389624286242180</span>\nTemplate Name: default\nCreated: <span class=\"token number\">2024</span>-06-05T19:33:03.232395\nPrimary Color: 6D3AEC\nIs Default: True</code></pre></div>\n<h6 id=\"create-a-template\" style=\"position:relative;\"><a href=\"#create-a-template\" aria-label=\"create a template permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Create a template</h6>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm report-template create &lt;TEMPLATE_NAME></code></p>\n<p><strong>Description:</strong> Create a new template with a number of option below.</p>\n<p><strong>Options</strong></p>\n<table>\n<thead>\n<tr>\n<th>Option</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">--is-default</code></td>\n<td>-</td>\n<td>false</td>\n<td>If declared this template will be the default template for the team.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">--primary-color</code></td>\n<td>string</td>\n<td>false</td>\n<td>Six-character hex color code.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">--last-page-text</code></td>\n<td>string</td>\n<td>false</td>\n<td>Text to be displayed on the last page of the template (cannot be used with <code class=\"language-text\">--last-page-text-file</code>).</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">--last-page-text-file</code></td>\n<td>string</td>\n<td>false</td>\n<td>File path to the document that contains the text for the last page text (cannot be used with <code class=\"language-text\">--last-page-text</code>).</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">--includes</code></td>\n<td>string</td>\n<td>false</td>\n<td>Comma-separated list of sections to include in the report. Can be one or more of: summary, detections, fileMetadata, network, droppedFiles, extractedConfig, analysis.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm report-template create --primary-color ec6560 --footer-text <span class=\"token string\">'Company A INC 2024'</span> --includes network,droppedFiles,extractedConfig snd_box_test</code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span> Report Template <span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span>\nID: <span class=\"token number\">60430384589833968</span>\nTemplate Name: sndboxtest\nCreated: <span class=\"token number\">2024</span>-06-11T12:42:45.950422\nPrimary Color: ec6560\nIncludes: network, droppedFiles, extractedConfig\nFooter Text: Company A INC <span class=\"token number\">2024</span></code></pre></div>\n<h6 id=\"delete-a-template\" style=\"position:relative;\"><a href=\"#delete-a-template\" aria-label=\"delete a template permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Delete a template</h6>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm report-template delete &lt;REPORT_ID></code></p>\n<p><strong>Description:</strong> Delete the template.</p>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm report-template delete <span class=\"token number\">60430384589833968</span></code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">Template Deleted</code></pre></div>\n<h6 id=\"get-template-details\" style=\"position:relative;\"><a href=\"#get-template-details\" aria-label=\"get template details permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Get template details</h6>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm report-template get &lt;REPORT_ID></code></p>\n<p><strong>Description:</strong> Get the details for s specific template.</p>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">polyswarm report-template get <span class=\"token number\">60430384589833968</span></code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span> Report Template <span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span>\nID: <span class=\"token number\">60430384589833968</span>\nTemplate Name: sndboxtest\nCreated: <span class=\"token number\">2024</span>-06-11T12:42:45.950422\nPrimary Color: ec6560\nIncludes: network, droppedFiles, extractedConfig\nFooter Text: Company A INC <span class=\"token number\">2024</span></code></pre></div>\n<h6 id=\"update-a-template\" style=\"position:relative;\"><a href=\"#update-a-template\" aria-label=\"update a template permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Update a template</h6>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm report-template update &lt;TEMPLATE_ID></code></p>\n<p><strong>Description:</strong> Update the template with new values and configuration.</p>\n<p><strong>Options</strong></p>\n<p>Only the passed options are updated, leaving the rest of the values untouched.\n| Option | Type | Required | Description |\n|------|------|----------|-------------|\n|<code class=\"language-text\">--is-default</code>| - | false    | If declared this template will be the default template for the team. |\n|<code class=\"language-text\">--primary-color</code>| string | false    | Six-character hex color code. |\n|<code class=\"language-text\">--last-page-text</code>| string | false    | Text to be displayed on the last page of the template. |\n|<code class=\"language-text\">--last-page-text-file</code>| string | false    | File path to the document that contains the text for the last page text. |\n|<code class=\"language-text\">--includes</code>| string | false    | Comma-separated list of sections to include in the report. Can be one or more of: summary, detections, fileMetadata, network, droppedFiles, extractedConfig, analysis. |</p>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm report-template update --primary-color 6D3AEC  <span class=\"token number\">98453877554394669</span></code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span> Report Template <span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span>\nID: <span class=\"token number\">98453877554394669</span>\nTemplate Name: <span class=\"token builtin class-name\">test</span>\nCreated: <span class=\"token number\">2024</span>-06-11T12:36:17.511289\nPrimary Color: 6D3AEC</code></pre></div>\n<h6 id=\"upload-template-logo\" style=\"position:relative;\"><a href=\"#upload-template-logo\" aria-label=\"upload template logo permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Upload template logo</h6>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm report-template logo-upload &lt;TEMPLATE_ID> &lt;PATH></code></p>\n<p><strong>Description:</strong> Upload a new logo for the template.</p>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">polyswarm report-template logo-upload <span class=\"token number\">98453877554394669</span> /Users/John/Downloads/Logo_Purple.png</code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span> Report Template <span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span>\nID: <span class=\"token number\">98453877554394669</span>\nTemplate Name: <span class=\"token builtin class-name\">test</span>\nCreated: <span class=\"token number\">2024</span>-06-11T12:36:17.511289\nPrimary Color: 6D3AEC\nLogo Content Length: <span class=\"token number\">6284</span>\nLogo Content Type: image/png\nLogo URL: https://api.polyswarm.network/v3/reports/templates/logo?id<span class=\"token operator\">=</span><span class=\"token number\">98453877554394669</span>\nLogo Height: <span class=\"token number\">42</span>\nLogo Width: <span class=\"token number\">250</span></code></pre></div>\n<h6 id=\"delete-template-logo\" style=\"position:relative;\"><a href=\"#delete-template-logo\" aria-label=\"delete template logo permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Delete template logo</h6>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm report-template logo-delete &lt;TEMPLATE_ID></code></p>\n<p><strong>Description:</strong> Delete the current logo for the template.</p>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">polyswarm report-template logo-delete <span class=\"token number\">98453877554394669</span></code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">Template logo deleted</code></pre></div>\n<h6 id=\"download-template-logo\" style=\"position:relative;\"><a href=\"#download-template-logo\" aria-label=\"download template logo permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Download template logo</h6>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm report-template logo-download &lt;TEMPLATE_ID></code></p>\n<p><strong>Description:</strong> Download the template logo locally.</p>\n<p><strong>Options</strong></p>\n<table>\n<thead>\n<tr>\n<th>Option</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">--destination</code></td>\n<td>string</td>\n<td>false</td>\n<td>Local path to store the downloaded file.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm report-template logo-download <span class=\"token number\">98453877554394669</span></code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">Successfully downloaded artifact logo to /Users/ruebenburrows/Documents/python/logo</code></pre></div>\n<h2 id=\"searching\" style=\"position:relative;\"><a href=\"#searching\" aria-label=\"searching permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Searching</h2>\n<h4 id=\"hash-searching\" style=\"position:relative;\"><a href=\"#hash-searching\" aria-label=\"hash searching permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Hash Searching</h4>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm search &lt;hash></code></p>\n<p><strong>Description:</strong> Artifacts are searched by referencing their <code class=\"language-text\">SHA256/SHA1/MD5</code>.</p>\n<p><strong>Options</strong></p>\n<table>\n<thead>\n<tr>\n<th>Option</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">-r</code>, <code class=\"language-text\">--hash-file</code></td>\n<td>string</td>\n<td>false</td>\n<td>File of hashes to search, one per line</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">--hash-type</code></td>\n<td>string</td>\n<td>false</td>\n<td>Hash type to search [default:autodetect, sha256, sha1, md5]</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm search <span class=\"token builtin class-name\">hash</span> 89b7a034846a917f7f31a22778ffe04caa3c22136d0e12d1676cfd41a889b6bf</code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span> Artifact Instance <span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span>\nScan permalink: https://polyswarm.network/scan/results/file/89b7a034846a917f7f31a22778ffe04caa3c22136d0e12d1676cfd41a889b6bf\nDetections: <span class=\"token number\">6</span>/12 engines reported malicious\n\tQihoo <span class=\"token number\">360</span>: Malicious, metadata: <span class=\"token punctuation\">{</span><span class=\"token string\">\"malware_family\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"qex.eicar.gen.gen\"</span>, <span class=\"token string\">\"scanner\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token punctuation\">{</span><span class=\"token string\">\"environment\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token punctuation\">{</span><span class=\"token string\">\"architecture\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"AMD64\"</span>, <span class=\"token string\">\"operating_system\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"Windows\"</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">}</span>\n\tLionic: Clean\n\tXVirus: Clean\n\tNucleon: Clean\n\tVirusdie: Malicious, metadata: <span class=\"token punctuation\">{</span><span class=\"token string\">\"malware_family\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"EICAR.TEST\"</span>, <span class=\"token string\">\"scanner\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token punctuation\">{</span><span class=\"token string\">\"environment\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token punctuation\">{</span><span class=\"token string\">\"architecture\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"x86_64\"</span>, <span class=\"token string\">\"operating_system\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"Linux\"</span><span class=\"token punctuation\">}</span>, <span class=\"token string\">\"vendor_version\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"1.3.0\"</span>, <span class=\"token string\">\"version\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"0.3.0\"</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">}</span>\n\tIkarus: Malicious, metadata: <span class=\"token punctuation\">{</span><span class=\"token string\">\"malware_family\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"EICAR-Test-File\"</span>, <span class=\"token string\">\"scanner\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token punctuation\">{</span><span class=\"token string\">\"environment\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token punctuation\">{</span><span class=\"token string\">\"architecture\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"x86_64\"</span>, <span class=\"token string\">\"operating_system\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"Linux\"</span><span class=\"token punctuation\">}</span>, <span class=\"token string\">\"signatures_version\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"21.02.2020 13:15:46 (102417)\"</span>, <span class=\"token string\">\"vendor_version\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"5.2.9.0\"</span>, <span class=\"token string\">\"version\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"0.2.0\"</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">}</span>\n\tClamAV: Clean\n\tAlibaba: Clean\n\tK7: Malicious, metadata: <span class=\"token punctuation\">{</span><span class=\"token string\">\"malware_family\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"EICAR_Test_File\"</span>, <span class=\"token string\">\"scanner\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token punctuation\">{</span><span class=\"token string\">\"environment\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token punctuation\">{</span><span class=\"token string\">\"architecture\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"AMD64\"</span>, <span class=\"token string\">\"operating_system\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"Windows\"</span><span class=\"token punctuation\">}</span>, <span class=\"token string\">\"signatures_version\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"11.95.33362, 21-Feb-2020\"</span>, <span class=\"token string\">\"vendor_version\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"15.2.0.42\"</span>, <span class=\"token string\">\"version\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"0.2.0\"</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">}</span>\n\tNanoAV: Malicious, metadata: <span class=\"token punctuation\">{</span><span class=\"token string\">\"malware_family\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"Marker.Dos.EICAR-Test-File.dyb\"</span>, <span class=\"token string\">\"scanner\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token punctuation\">{</span><span class=\"token string\">\"environment\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token punctuation\">{</span><span class=\"token string\">\"architecture\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"AMD64\"</span>, <span class=\"token string\">\"operating_system\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"Windows\"</span><span class=\"token punctuation\">}</span>, <span class=\"token string\">\"signatures_version\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"0.14.33.17090\"</span>, <span class=\"token string\">\"vendor_version\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"1.0.134.90567\"</span>, <span class=\"token string\">\"version\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"0.1.0\"</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">}</span>\n\tVenusEye: Clean\n\tDrWeb: Malicious, metadata: <span class=\"token punctuation\">{</span><span class=\"token string\">\"malware_family\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"EICAR Test File (NOT a Virus!)\"</span>, <span class=\"token string\">\"scanner\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token punctuation\">{</span><span class=\"token string\">\"environment\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token punctuation\">{</span><span class=\"token string\">\"architecture\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"x86_64\"</span>, <span class=\"token string\">\"operating_system\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"Linux\"</span><span class=\"token punctuation\">}</span>, <span class=\"token string\">\"signatures_version\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"864BFD34E93FFC1BEFC260DAE804EFAF, 2020-Feb-21 16:59:42\"</span>, <span class=\"token string\">\"vendor_version\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"7.00.44.12030\"</span>, <span class=\"token string\">\"version\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"0.3.0\"</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">}</span>\nScan id: <span class=\"token number\">50446025732260182</span>\nSHA256: 89b7a034846a917f7f31a22778ffe04caa3c22136d0e12d1676cfd41a889b6bf\nSHA1: a33fb79e9c71f1b446607d437a1984602ed47d5c\nMD5: a6a57bf20416a4c712c4a1eabcaeb235\nFile type: mimetype: text/plain, extended_info: EICAR virus <span class=\"token builtin class-name\">test</span> files\nSSDEEP: <span class=\"token number\">3</span>:a+JraNvsgzsVqSwHqajaBFSdYSDQ1SBWfQdRXn:tJuOgzskCStDmidRX\nTLSH: ccc09b867e1dfda6530b44510171b5771829575d1de4053421d1f0f4dd677dc43741f8\nFirst seen: <span class=\"token number\">2020</span>-01-24 <span class=\"token number\">21</span>:56:21.456900\nLast seen: <span class=\"token number\">2020</span>-02-21 <span class=\"token number\">19</span>:21:59.196578\nStatus: Assertion window closed\nFilename: malicious.txt\nCommunity: lima\nCountry: US\nPolyScore: <span class=\"token number\">0.07193209420451106284</span></code></pre></div>\n<h4 id=\"view-scan-history\" style=\"position:relative;\"><a href=\"#view-scan-history\" aria-label=\"view scan history permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>View Scan History</h4>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm search scans &lt;hash></code></p>\n<p><strong>Description:</strong> Search a hash to view previosu Scans that have been performed.</p>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm search scans 95531b268adee781f88c962f4b6d747ed82e1c1a58b636fdd925ca3ce31e9cf5</code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span> Artifact Instance <span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span>\nScan permalink: https://polyswarm.network/scan/results/file/95531b268adee781f88c962f4b6d747ed82e1c1a58b636fdd925ca3ce31e9cf5/30327221925404900\nDetections: No engines responded to this scan. You can trigger a rescan now.\nScan id: <span class=\"token number\">30327221925404900</span>\nSHA256: 95531b268adee781f88c962f4b6d747ed82e1c1a58b636fdd925ca3ce31e9cf5\nSHA1: 8169175b424034b0f93b433e6d7068c08e526199\nMD5: e6c0964ef7105869ef21379eebaefe12\nFile type: mimetype: application/x-dosexec, extended_info: PE32 executable <span class=\"token punctuation\">(</span>DLL<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">(</span>GUI<span class=\"token punctuation\">)</span> Intel <span class=\"token number\">80386</span>, <span class=\"token keyword\">for</span> MS Windows\nFirst seen: <span class=\"token number\">2024</span>-09-13 <span class=\"token number\">22</span>:48:48 UTC\nLast scanned: <span class=\"token number\">2024</span>-11-19 06:14:47 UTC\nLast seen: <span class=\"token number\">2024</span>-11-19 06:14:47 UTC\nStatus: Assertion window closed\nFilename: 95531b268adee781f88c962f4b6d747ed82e1c1a58b636fdd925ca3ce31e9cf5\nCommunity: mainnet1\nCountry: US\nPolyScore: <span class=\"token number\">0.99922532264464414276</span>\n\n<span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span> Artifact Instance <span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span>\nScan permalink: https://polyswarm.network/scan/results/file/95531b268adee781f88c962f4b6d747ed82e1c1a58b636fdd925ca3ce31e9cf5/79082986982481921\nDetections: No engines responded to this scan. You can trigger a rescan now.\nScan id: <span class=\"token number\">79082986982481921</span>\nSHA256: 95531b268adee781f88c962f4b6d747ed82e1c1a58b636fdd925ca3ce31e9cf5\nSHA1: 8169175b424034b0f93b433e6d7068c08e526199\nMD5: e6c0964ef7105869ef21379eebaefe12\nFile type: mimetype: application/x-dosexec, extended_info: PE32 executable <span class=\"token punctuation\">(</span>DLL<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">(</span>GUI<span class=\"token punctuation\">)</span> Intel <span class=\"token number\">80386</span>, <span class=\"token keyword\">for</span> MS Windows\nFirst seen: <span class=\"token number\">2024</span>-09-13 <span class=\"token number\">22</span>:48:48 UTC\nLast scanned: <span class=\"token number\">2024</span>-10-31 01:10:49 UTC\nLast seen: <span class=\"token number\">2024</span>-10-31 01:10:49 UTC\nStatus: Assertion window closed\n<span class=\"token punctuation\">..</span>\n<span class=\"token punctuation\">..</span></code></pre></div>\n<h4 id=\"url-searching\" style=\"position:relative;\"><a href=\"#url-searching\" aria-label=\"url searching permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>URL Searching</h4>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm search url &lt;URL></code></p>\n<p><strong>Description:</strong> Artifacts are searched by referencing their URL.</p>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm search url https://polyswarm.io</code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span> Artifact Instance <span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span>\nScan permalink: https://polyswarm.network/scan/results/file/078e6c2d6ba818466fb9944a8717e249b3820c13addc9b7ebf59e3ca79166541\nDetections: <span class=\"token number\">0</span>/6 engines reported malicious\n\tZeroCERT: Clean\n\tCyRadar: Clean\n\tQuttera: Clean\n\tNotmining: Clean\n\tVirusdie: Clean\n\tNucleon: Clean\nScan id: <span class=\"token number\">61118021570495545</span>\nSHA256: 078e6c2d6ba818466fb9944a8717e249b3820c13addc9b7ebf59e3ca79166541\nSHA1: 3a26c7a00fbeb54b49361457e99bb6cd59dcfe24\nMD5: e82f49f9ef02b6b517748be47ba0005a\nFile type: mimetype: text/plain, extended_info: ASCII text, with no line terminators\nSSDEEP: <span class=\"token number\">3</span>:N8OI+ILL:2OGLL\nTLSH:\nFirst seen: <span class=\"token number\">2019</span>-06-25 <span class=\"token number\">18</span>:04:48.248039\nLast seen: <span class=\"token number\">2020</span>-04-01 03:59:53.555767\nStatus: Assertion window closed\nURL: https://polyswarm.io\nCommunity: lima\nCountry: AU\nPolyScore: <span class=\"token number\">0.00000000000000000000</span></code></pre></div>\n<h4 id=\"metadata\" style=\"position:relative;\"><a href=\"#metadata\" aria-label=\"metadata permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Metadata Searching</h4>\n<p>PolySwarm's Metadata Search provides you with the functionality to search through PolySwarm’s dataset to find samples that relate to information you are interested in.</p>\n<p>To understand how to build out a Metadata query see the <a href=\"/customers/polyswarm-customer-meta-query/#meta-getting-started\">How-To Guide</a>.</p>\n<h5 id=\"searching-for-metadata-attributes\" style=\"position:relative;\"><a href=\"#searching-for-metadata-attributes\" aria-label=\"searching for metadata attributes permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Searching for Metadata Attributes</h5>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm search metadata &lt;metadata values></code></p>\n<p><strong>Description:</strong> Search for Artifact Metadata in the CLI, Add additional options like <code class=\"language-text\">–fmt</code> to allow for additional functionality see <a href=\"/customers/polyswarm-customer-cli-v3/#usage\">here</a>.</p>\n<p><strong>Options</strong></p>\n<table>\n<thead>\n<tr>\n<th>Option</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">-i</code>, <code class=\"language-text\">--include</code></td>\n<td>string</td>\n<td>false</td>\n<td>Field to be included in the result (* wildcards are accepted).</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">-x</code>, <code class=\"language-text\">--exclude</code></td>\n<td>string</td>\n<td>false</td>\n<td>Field to be excluded in the result (* wildcards are accepted).</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">-p</code> , <code class=\"language-text\">--ip</code></td>\n<td>string</td>\n<td>false</td>\n<td>IP address IOC to search.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">-d</code> ,<code class=\"language-text\">--domain</code></td>\n<td>string</td>\n<td>false</td>\n<td>Domain name IOC to search.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">-u</code> , <code class=\"language-text\">--url</code></td>\n<td>string</td>\n<td>false</td>\n<td>URL IOC to search.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm --fmt pretty-json search metadata <span class=\"token string\">\"scan.detections.malicious:>1\"</span></code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token punctuation\">{</span>\n    <span class=\"token string\">\"artifact\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token string\">\"created\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"2023-06-20T11:29:11.322959+00:00\"</span>,\n        <span class=\"token string\">\"id\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"3414327927829341\"</span>,\n        <span class=\"token string\">\"md5\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"6bf2025e7aa7b09d7044718c2a3f190d\"</span>,\n        <span class=\"token string\">\"sha1\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"5323a695a165e13a04a11d24e603ae4444463b08\"</span>,\n        <span class=\"token string\">\"sha256\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"2d1bbc2837559f5224076a833ec6e9cc6fe053b76a11bf500654ce0431b8993c\"</span>\n    <span class=\"token punctuation\">}</span>,\n    <span class=\"token string\">\"exiftool\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token string\">\"characterset\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"Unicode\"</span>,\n        <span class=\"token string\">\"codesize\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token number\">45056</span>,\n        <span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span></code></pre></div>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm search metadata -i triage_sandbox_v0.ttp <span class=\"token string\">'scan.detections.malicious:>1 AND polyunite.malware_family:Emotet'</span></code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span> Metadata <span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span>\nArtifact id: <span class=\"token number\">1368439839946634</span>\nCreated: <span class=\"token number\">2025</span>-02-14 09:41:05.568721+00:00\nSHA256: 687e603817c1c9de994763bcae0c531544a62b6f993071b8721004fd6e780841\nSHA1: 2377b6e51ddb690b2ca732a1045dec3e3c934601\nMD5: 3d10895e2f8bd8e2ab6735e3a4ebb70d\n\n<span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span> Metadata <span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span>\nArtifact id: <span class=\"token number\">51608922017858789</span>\nCreated: <span class=\"token number\">2025</span>-02-14 09:40:48.910620+00:00\nSHA256: ca7cfdc3fdca5c5d05fb85fcd1ff3c1190968f1cdc2bf159f232d08bb1f8e66d\nSHA1: 9feff541dec075bc5893745ecef9a16a016996b3\nMD5: fb59934c3c6305e9a5a08dcd082724f7\n<span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span>\n<span class=\"token builtin class-name\">.</span></code></pre></div>\n<h6 id=\"processing-attribute-results-with-jq\" style=\"position:relative;\"><a href=\"#processing-attribute-results-with-jq\" aria-label=\"processing attribute results with jq permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Processing Attribute Results with JQ</h6>\n<p><code class=\"language-text\">jq</code> is a command-line processor for json files, allowing the slicing of the json to filter out specific Attributes.</p>\n<p>When defining <code class=\"language-text\">--fmt</code> as <code class=\"language-text\">json</code> in the <code class=\"language-text\">polyswarm search metadata</code> CLI command, <code class=\"language-text\">jq</code> can be used to filter the output of the Attributes.</p>\n<p>Taking the command <code class=\"language-text\">polyswarm --fmt pretty-json search metadata -i artifact.sha256 \"scan.detections.malicious:>1\"</code> will produce a large json output that matches these criteria, to filter only md5 values, you can use <code class=\"language-text\">jq</code> to achieve this.</p>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm --fmt pretty-json search metadata -i artifact.sha256 <span class=\"token string\">\"scan.detections.malicious:>1\"</span> <span class=\"token operator\">|</span> jq .artifact.md5</code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token string\">\"8ce0d5b701fb084f14990fe0d425628781130c9da0b0b95f98f3a9e5eef755bb\"</span>\n<span class=\"token string\">\"19cb4f641750555e4a40460e03a07217306077585a7290ef480712d373e3b755\"</span>\n<span class=\"token string\">\"f2015c1e82f92c7d8a728eeb47adb52e877a3ab9ee2d7168cc311fae7b5bbfae\"</span>\n<span class=\"token string\">\"b0a1cc605d485e5e73e73aa8a0377a9d12a53d4042d711bd4bf99cd7b6961afa\"</span>\n<span class=\"token string\">\"9cb02c934c2aa8938b30aa52924798a6d2a12ca4e7d75a2d01390c01067b0a8b\"</span>\n<span class=\"token string\">\"6d7607445c3b71d707576d6424581cb0a0c6c39f11a67601811568cf30eba9ab\"</span>\n<span class=\"token string\">\"f665fa1373a7bb1b8085ad95866066f2164e25f79e3bf0dc45abc2ba690144ab\"</span>\n<span class=\"token string\">\"bf1e0bd5265619d33c89795d340fe05bf7e3a80935396e83cd52d3baa77b4902\"</span>\n<span class=\"token string\">\"07707539577a320e56805cd9458a3ffd9ace7fb31aca106bd1aad89d60354906\"</span>\n<span class=\"token string\">\"d47f64147c5ad65a9841813df44fce49e435e472874853d02a192689dd1f5007\"</span>\n<span class=\"token string\">\"d767ded5ba7377356f48351f9f03ada9de9c6eb156f08de0a9cce2ebe3ad4369\"</span></code></pre></div>\n<h6 id=\"mapping\" style=\"position:relative;\"><a href=\"#mapping\" aria-label=\"mapping permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Searching for Metadata Fields</h6>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm search mapping | grep &lt;value></code></p>\n<p><strong>Description:</strong> Search for fields that can be used in PolySwarm Metadata searching.</p>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm search mapping <span class=\"token operator\">|</span> <span class=\"token function\">grep</span> c2 <span class=\"token operator\">|</span> <span class=\"token function\">grep</span> <span class=\"token function\">ip</span></code></pre></div>\n<h4 id=\"ioc-searching\" style=\"position:relative;\"><a href=\"#ioc-searching\" aria-label=\"ioc searching permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>IOC Searching</h4>\n<p>IOC Searching can be split into three groups of commands, these are:</p>\n<ul>\n<li>Searching for Associated IOCs related to a Hash: This returns IOCs that were observed by our sandbox during analysis. These IP's and Domains are classified as C2 or malicious.</li>\n<li>Searching for Associated Hashes related to an IP, URL, imphash or MITRE TTP: This returns file hashes that were seen communicating with the specified IPs or domains in our sandbox — regardless of whether the communication was malicious or not.</li>\n<li>Check for known good domains and IPs</li>\n</ul>\n<h5 id=\"searching-for-associated-iocs\" style=\"position:relative;\"><a href=\"#searching-for-associated-iocs\" aria-label=\"searching for associated iocs permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Searching for Associated IOCs</h5>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm search ioc sha256 &lt;hash></code></p>\n<p><strong>Description:</strong> List associated IOCs to a Hash by referencing the hash value.</p>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm search ioc sha256 18e5b8fe65e8f73c3a4a637c258c02aeec8a6ab702b15b7ee73f5631a9879e40</code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span> IOCs <span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span>\nImpHash:\nIPs: <span class=\"token number\">1.2</span>.3.4, <span class=\"token number\">2.2</span>.2.2\nURLs: polyswarm.io\nTTPs: T1060, T1053</code></pre></div>\n<h5 id=\"searching-for-associated-hashes\" style=\"position:relative;\"><a href=\"#searching-for-associated-hashes\" aria-label=\"searching for associated hashes permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Searching for Associated Hashes</h5>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm search ioc ip &lt;IP></code></p>\n<blockquote>\n<p>Replace <code class=\"language-text\">ip</code> above with <code class=\"language-text\">domain</code>, <code class=\"language-text\">imphash</code>, <code class=\"language-text\">URL</code> or <code class=\"language-text\">MITRE TTP</code> e.g. <code class=\"language-text\">polyswarm search ioc domain &lt;url></code></p>\n</blockquote>\n<p><strong>Description:</strong> List associated Hashes to an IP, URL, imphash or MITRE TTP.</p>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm search ioc <span class=\"token function\">ip</span> <span class=\"token number\">1.2</span>.3.4</code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span> IOCs <span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span>\nSHA256: 18e5b8fe65e8f73c3a4a637c258c02aeec8a6ab702b15b7ee73f5631a9879e40\nSHA256: 275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0a</code></pre></div>\n<h5 id=\"searching-for-known-good-domains-and-ips\" style=\"position:relative;\"><a href=\"#searching-for-known-good-domains-and-ips\" aria-label=\"searching for known good domains and ips permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Searching for Known Good Domains and IPs</h5>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm search known -d &lt;DOMAIN> -p &lt;IP></code></p>\n<p><strong>Description:</strong> Known good checking allows you to check for known good domains and IPs. If any of the list of domain or IP parameters you provide match a record, then you'll get a result.</p>\n<p><strong>Options</strong></p>\n<table>\n<thead>\n<tr>\n<th>Option</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">-p</code>, <code class=\"language-text\">--ip</code></td>\n<td>string</td>\n<td>true</td>\n<td>IP to search on</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">-d</code>, <code class=\"language-text\">--domain</code></td>\n<td>string</td>\n<td>true</td>\n<td>Domain to search on</td>\n</tr>\n</tbody>\n</table>\n<blockquote>\n<p>Either <code class=\"language-text\">-p</code> or <code class=\"language-text\">-d</code> must be used in the command.</p>\n</blockquote>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm search known -d polyswarm.network</code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span> Known IOC <span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span>\nID: <span class=\"token number\">67</span>\ntype: domain\nhost: polyswarm.network\nsource: polyswarm\ngood: True</code></pre></div>\n<div class=\"danger\" markdown=\"1\">\n<blockquote>\n<p><strong>A word of caution with Known Good checking!</strong></p>\n<p>Our list of known good domains and IPs is not all-inclusive!\nOur goal for this feature is to provide an easy way to check the most common known good domains and IPs, so they can be excluded from analysis.</p>\n</blockquote>\n</div>\n<h2 id=\"tags-lists\" style=\"position:relative;\"><a href=\"#tags-lists\" aria-label=\"tags lists permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Tags/Lists/Families</h2>\n<p>PolySwarm researchers tag known malware samples with malware family names and attributes.</p>\n<p>Below are some examples of using malware Families and Tags to identify Emotet - another malware family that PolySwarm has been tracking.</p>\n<blockquote>\n<p>Emotet is a \"downloader\".\nBy itself, it usually just offers the attackers the ability to install additional malware on target machines.\nTrickBot (an info stealer) and Ryuk (ransomware) are commonly installed via initial Emotet infection.</p>\n</blockquote>\n<h4 id=\"using-tags\" style=\"position:relative;\"><a href=\"#using-tags\" aria-label=\"using tags permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Using Tags</h4>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm tag list</code></p>\n<p><strong>Description:</strong> PolySwarm tags are free-form attributes applied to known malware samples.</p>\n<blockquote>\n<p><code class=\"language-text\">tags</code> can describe attributes like malware family (e.g. <code class=\"language-text\">EventBot</code>), target operating system (e.g. <code class=\"language-text\">Android</code>), phishing campaign (e.g. <code class=\"language-text\">COVID-19</code>) and exploited vulnerabilities (e.g. <code class=\"language-text\">CVE-2017-11882</code>).</p>\n</blockquote>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm tag list</code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">Tag: Adware\nTag: AgentTesla\nTag: Android\nTag: Cerberus\nTag: COVID-19\nTag: CVE-2017-11882\nTag: Emotet\nTag: EventBot</code></pre></div>\n<h4 id=\"using-families\" style=\"position:relative;\"><a href=\"#using-families\" aria-label=\"using families permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Using Families</h4>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm family list</code></p>\n<p><strong>Description:</strong> PolySwarm <code class=\"language-text\">families</code> are malware family names applied to known samples from a given family.</p>\n<blockquote>\n<p>Families with an Emerging timestamp where listed on the PolySwarm homepage at the given time - these are particularly cutting edge or prominent in the news.</p>\n</blockquote>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm family list</code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">Family: Emotet\nEmerging: <span class=\"token number\">2020</span>-06-06 08:23:35.997775\n\nFamily: EventBot\nEmerging: <span class=\"token number\">2020</span>-06-10 <span class=\"token number\">17</span>:15:54.789337\n\nFamily: NetWalker\nEmerging: None</code></pre></div>\n<h4 id=\"using-links\" style=\"position:relative;\"><a href=\"#using-links\" aria-label=\"using links permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Using Links</h4>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm link list --family &lt;family></code></p>\n<p><strong>Description:</strong> Artifacts are linked to tags and families.</p>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm <span class=\"token function\">link</span> list --family Emotet</code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">SHA256: 8c8f9556b67c36cf23fea64e2f2086a5bbcddabd5c66b9847fac1c60c021eeba\nFirst seen: <span class=\"token number\">2023</span>-04-29 <span class=\"token number\">22</span>:17:41.507473\nTags: <span class=\"token punctuation\">[</span><span class=\"token string\">'Banker'</span>, <span class=\"token string\">'Unpacked'</span>, <span class=\"token string\">'Trojan'</span>, <span class=\"token string\">'PE32'</span>, <span class=\"token string\">'Windows'</span><span class=\"token punctuation\">]</span>\nFamilies: <span class=\"token punctuation\">[</span><span class=\"token string\">'Emotet'</span><span class=\"token punctuation\">]</span>\nEmerging: None\n\nSHA256: dd168d5499cfd09ac35b70656983a2b5600bfea09319df5a4aa4260e20745111\nFirst seen: <span class=\"token number\">2023</span>-04-29 <span class=\"token number\">14</span>:24:31.835017\nTags: <span class=\"token punctuation\">[</span><span class=\"token string\">'Banker'</span>, <span class=\"token string\">'Unpacked'</span>, <span class=\"token string\">'PE32'</span>, <span class=\"token string\">'Windows'</span>, <span class=\"token string\">'first_seen'</span><span class=\"token punctuation\">]</span>\nFamilies: <span class=\"token punctuation\">[</span><span class=\"token string\">'Emotet'</span><span class=\"token punctuation\">]</span>\nEmerging: <span class=\"token number\">2023</span>-05-08 <span class=\"token number\">18</span>:40:55.769796</code></pre></div>\n<blockquote>\n<p>Getting a list of SHA256 hashes for these artifacts is correspondingly as simple as: <code class=\"language-text\">polyswarm link list --family Emotet | grep SHA256</code>.</p>\n</blockquote>\n<h2 id=\"sandboxing\" style=\"position:relative;\"><a href=\"#sandboxing\" aria-label=\"sandboxing permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Sandboxing</h2>\n<p>Sandboxing in PolySwarm provides the ability to submit files directly to be sandboxed to either Cape or Triage, submit Artifacts already in PolySwarm to be sandboxed, and review what has been submitted to be sandboxed.</p>\n<h3 id=\"sandboxing-qa\" style=\"position:relative;\"><a href=\"#sandboxing-qa\" aria-label=\"sandboxing qa permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>General Sandbox Questions &#x26; Answers</h3>\n<p><strong>What is the difference between cape and triage. And when should they select one vs the other?</strong></p>\n<p><em>CAPE</em> sandbox is specifically designed to extract malware payload and configuration files, hence the name CAPE (Config and Payload Extraction). It attempts to unpack malware so yara signatures can be used to identify a specific malware family and if it is supported by the different config and payload extractors the sandbox has then those data can be extracted.\n<em>Triage</em> on the other hand is designed to scale and process as many malware as possible in a given day. They also support other malware types such as android. The sandbox is well versed in tackling malware that have anti-sandbox evasion techniques.</p>\n<p>If you want to gather more data from malware like a typical sandbox would and have a better chance of executing a malware regardless of whether it is using anti-analysis or anti-sandboxing techniques, Triage would be the best choice.\nIf the you want to get malware payload or config data that includes IPs and domains that were not used during the sandboxing session and is kept in the malware's back pocket, then CAPE is the sandbox of choice.</p>\n<p>URL Sandboxing is only supported using Triage as of today, we will update this section as further URL Sandboxing support is expanded.</p>\n<h4 id=\"sandbox-providers\" style=\"position:relative;\"><a href=\"#sandbox-providers\" aria-label=\"sandbox providers permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>List Sandbox Providers</h4>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm sandbox providers</code></p>\n<p><strong>Description:</strong> List the supported sandbox providers, to include: sandbox name, sandbox VMs, and version information.</p>\n<blockquote>\n<p>Note: For the <code class=\"language-text\">sandbox vm</code> parameter in the sandbox file and artifact commands, use the value of the <code class=\"language-text\">slug</code> field in the sandbox providers output.</p>\n</blockquote>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm sandbox providers</code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span> Provider <span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span>\nslug: cape\nname: cape\ntool: cape_sandbox_v2\n\t<span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span> VM <span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span>\n\tarchitecture: x64\n\tid: <span class=\"token number\">100</span>\n\tlanguage: English <span class=\"token punctuation\">(</span>United States<span class=\"token punctuation\">)</span>\n\tname: Microsoft Windows <span class=\"token number\">10</span> Pro Build <span class=\"token number\">19041</span>\n\tos_name: Microsoft Windows <span class=\"token number\">10</span> Pro\n\tos_version: <span class=\"token number\">10.0</span>.19041 Build <span class=\"token number\">19041</span>\n\tslug: win-10-build-19041\n<span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span> Provider <span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span>\nslug: triage\nname: triage\ntool: triage_sandbox_v0\n\t<span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span> VM <span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span>\n\tapi_level: <span class=\"token number\">30</span>\n\tarchitecture: x64\n\tid: <span class=\"token number\">201</span>\n\tlanguage: English <span class=\"token punctuation\">(</span>United States<span class=\"token punctuation\">)</span>\n\tname: android-11-x64\n\tos_name: Android <span class=\"token number\">11</span> x64\n\tprofile: droid\n\tslug: android-11-x64\n\t<span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span> VM <span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span>\n\tArchitecture: x64\n\tid: <span class=\"token number\">200</span>\n\tlanguage: English <span class=\"token punctuation\">(</span>United States<span class=\"token punctuation\">)</span>\n\tname: windows10-1703-x64\n\tos_name: Windows <span class=\"token number\">10</span> <span class=\"token number\">1703</span> x64\n\tos_version: <span class=\"token number\">10.0</span>.15063 Build <span class=\"token number\">15063</span>\n\tprofile: poly\n\tslug: win10-build-15063</code></pre></div>\n<h4 id=\"sandboxing-a-file\" style=\"position:relative;\"><a href=\"#sandboxing-a-file\" aria-label=\"sandboxing a file permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Sandboxing a File</h4>\n<blockquote>\n<p>Want to know what files types are supported? See <a href=\"sandbox#file-types\">here</a></p>\n</blockquote>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm sandbox file &lt;sandbox> &lt;file path> --vm_slug &lt;sandbox vm></code></p>\n<p><strong>Description:</strong> Submit a new File stored locally to be sandboxed, define the sandbox name, file path or the optional sandbox vm. Sandbox Analysis will take around 2-5 minutes before the results can be accessed.</p>\n<blockquote>\n<p>To find the <code class=\"language-text\">sandbox</code> name and <code class=\"language-text\">sandbox vm</code> see <a href=\"#sandbox-providers\">this</a> section.</p>\n</blockquote>\n<p><strong>Options</strong></p>\n<table>\n<thead>\n<tr>\n<th>Option</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">--vm_slug</code></td>\n<td>string</td>\n<td>false</td>\n<td>Define the Sandbox image to use.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">-z</code>, <code class=\"language-text\">--is-zip</code></td>\n<td>bool</td>\n<td>false</td>\n<td>Will handle the provided file as a zip and decompress server side.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">-p</code>, <code class=\"language-text\">--zip-password</code></td>\n<td>string</td>\n<td>false</td>\n<td>Used to provide a password to decompress the zip file with.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">--internet-disabled</code></td>\n<td>bool</td>\n<td>false</td>\n<td>Disable internet access in sandbox when processing the sample.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm sandbox <span class=\"token function\">file</span> triage ./tests/eicar.yara --vm_slug windows11-21h2-x64</code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span> Sandbox Task <span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span>\nid: <span class=\"token number\">30536618894625674</span>\nsha256: None\nsandbox: triage\ncreated: <span class=\"token number\">2023</span>-06-20T18:47:46.242045\ncommunity: pi\ninstance id: <span class=\"token number\">95454528418762552</span>\nstatus: PENDING</code></pre></div>\n<p>Sandboxes have multiple returned statuses, these are listed below.</p>\n<table>\n<thead>\n<tr>\n<th>Status</th>\n<th>What is it for?</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">Success</code></td>\n<td>Finished processing correctly.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">Started</code></td>\n<td>Sandbox session has started.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">Collecting Data</code></td>\n<td>Sandbox session has been successful and data is being collected.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">Failed</code></td>\n<td>Sandbox session has failed, this can be due to many reasons.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">Pending</code></td>\n<td>Sandbox session is queued up and ready to start.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">Timed out</code></td>\n<td>Sandbox session has timed out and quota has not been reimbursed.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">Delayed</code></td>\n<td>Sandbox session has been delayed and will start soon.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">Failed with Quota Reimbursement</code></td>\n<td>Finished processing but failed, quota will be reimbursed.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">Timed out with Quota Reimbursement</code></td>\n<td>Delayed in the queue for too long, got timed out and then reimbursement.</td>\n</tr>\n</tbody>\n</table>\n<h4 id=\"sandboxing-a-url-or-qr-code\" style=\"position:relative;\"><a href=\"#sandboxing-a-url-or-qr-code\" aria-label=\"sandboxing a url or qr code permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Sandboxing a URL or QR Code</h4>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm sandbox url &lt;PROVIDER> [URL]</code></p>\n<p><strong>Description:</strong> Submit a URL to be sandboxed, define the sandbox PROVIDER name (e.g. <code class=\"language-text\">triage</code> or <code class=\"language-text\">cape</code>), the URL (unless <code class=\"language-text\">--qrcode-file</code> is used), and the optional sandbox vm and browser arguments.</p>\n<blockquote>\n<p>To find the <code class=\"language-text\">sandbox</code> name and sandbox VMs see <a href=\"#sandbox-providers\">this</a> section.</p>\n</blockquote>\n<p><strong>Options</strong></p>\n<table>\n<thead>\n<tr>\n<th>Option</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">--vm_slug</code></td>\n<td>string</td>\n<td>false</td>\n<td>Define the Sandbox image to use.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">--browser</code></td>\n<td>string</td>\n<td>false</td>\n<td>Define a browser to detonate the url in, only <code class=\"language-text\">edge</code> supported.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">--qrcode-file</code></td>\n<td>string</td>\n<td>false</td>\n<td>Path of a QR Code image file that contains an URL as a payload.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm sandbox url triage www.polyswarm.io --vm_slug windows11-21h2-x64</code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span> Sandbox Task <span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span>\nid: <span class=\"token number\">20806200704232355</span>\nsha256: None\nsandbox: triage\ncreated: <span class=\"token number\">2024</span>-02-22T10:51:48.722414\ncommunity: mainnet1\ninstance id: <span class=\"token number\">7708689624900884</span>\nstatus: PENDING</code></pre></div>\n<h4 id=\"sandboxing-an-existing-artifact\" style=\"position:relative;\"><a href=\"#sandboxing-an-existing-artifact\" aria-label=\"sandboxing an existing artifact permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Sandboxing an Existing Artifact</h4>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm sandbox instance &lt;PROVIDER> &lt;atifact_id></code></p>\n<p><strong>Description:</strong> Submit an already-scanned artifact for processing by the sandboxes. The required arguments are the <code class=\"language-text\">Artifact id</code> and the <code class=\"language-text\">sandbox</code> name.</p>\n<blockquote>\n<p>To obtain the <code class=\"language-text\">artifact_id</code> required you can use the command <code class=\"language-text\">polyswarm --fmt pretty-json search hash &lt;hash> | jq '.artifact_id'</code> and for the <code class=\"language-text\">sandbox</code> and <code class=\"language-text\">--vm_slug</code> see <a href=\"#sandbox-providers\">here</a>.</p>\n</blockquote>\n<p><strong>Options</strong></p>\n<table>\n<thead>\n<tr>\n<th>Option</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">--vm_slug</code></td>\n<td>string</td>\n<td>false</td>\n<td>Define the Sandbox image to use.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">--internet-disabled</code></td>\n<td>bool</td>\n<td>false</td>\n<td>Disable internet access in sandbox when processing the sample.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm sandbox instance triage <span class=\"token number\">50667050680164455</span> --vm_slug windows11-21h2-x64</code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span> Sandbox Task <span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span>\nid: <span class=\"token number\">76509232912518724</span>\nsha256: e7dcfa7e44cfea923e8d1bde56a480ff3d18e2b7221c8d5e50bf753b1a5e876e\nsandbox: triage\ncreated: <span class=\"token number\">2023</span>-06-20T18:53:47.027083\ncommunity: pi\ninstance id: <span class=\"token number\">5821643847114768</span>\nstatus: PENDING</code></pre></div>\n<h4 id=\"lookup-sandbox-task\" style=\"position:relative;\"><a href=\"#lookup-sandbox-task\" aria-label=\"lookup sandbox task permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Lookup Sandbox Task</h4>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm sandbox lookup-id &lt;task_id></code></p>\n<p><strong>Description:</strong> Look up the status of a specific sandbox task with the ID.</p>\n<blockquote>\n<p>The ID can be found once a file, or existing artifact has been submitted. CLI commands like <code class=\"language-text\">sandbox search</code> and <code class=\"language-text\">sandbox my-tasks</code> also provide the ID.</p>\n</blockquote>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm sandbox lookup-id <span class=\"token number\">76509232912518724</span></code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span> Sandbox Task <span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span>\nid: <span class=\"token number\">76509232912518724</span>\nsha256: e7dcfa7e44cfea923e8d1bde56a480ff3d18e2b7221c8d5e50bf753b1a5e876e\nsandbox: triage\ncreated: <span class=\"token number\">2023</span>-06-20T18:53:47.027083\ncommunity: pi\ninstance id: <span class=\"token number\">5821643847114768</span>\nstatus: STARTED</code></pre></div>\n<h4 id=\"sandbox-lookup\" style=\"position:relative;\"><a href=\"#sandbox-lookup\" aria-label=\"sandbox lookup permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Lookup Latest Sandbox Task</h4>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm sandbox lookup &lt;PROVIDER> &lt;hash></code></p>\n<p><strong>Description:</strong> Look up the status of the latest sandbox task for a hash, including a list of files like pcap, jarm and report.</p>\n<blockquote>\n<p>Feed the <code class=\"language-text\">--fmt pretty-json</code> option into the command to view the full metadata set of information.</p>\n</blockquote>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm sandbox lookup triage e7dcfa7e44cfea923e8d1bde56a480ff3d18e2b7221c8d5e50bf753b1a5e876e</code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span> Sandbox Task <span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span>\nid: <span class=\"token number\">97818287069750641</span>\nsha256: 2345c426c584ec12f7a2106a52ce8ac4aeb144476d1a4e4b78c10addfddef920\nsandbox: triage\ncreated: <span class=\"token number\">2023</span>-06-26T15:21:30.054231\ncommunity: mainnet1\ninstance id: <span class=\"token number\">29588752444918666</span>\nstatus: SUCCEEDED\nsandbox artifacts:\n\tdropped_file: triage_dropped_file, PE32+ executable <span class=\"token punctuation\">(</span>GUI<span class=\"token punctuation\">)</span> x86-64, <span class=\"token keyword\">for</span> MS Windows, instance id: <span class=\"token number\">98765579577983166</span>\n\treport: triage_report.json, application/json, instance id: <span class=\"token number\">23250223674696404</span>\n\traw_report: triage_raw_report.json, application/json, instance id: <span class=\"token number\">70519139222788003</span>\n\tdropped_file: triage_dropped_file, PE32+ executable <span class=\"token punctuation\">(</span>DLL<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">(</span>console<span class=\"token punctuation\">)</span> x86-64, <span class=\"token keyword\">for</span> MS Windows, instance id: <span class=\"token number\">76909336038197831</span>\n<span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span></code></pre></div>\n<blockquote>\n<p>Note: Each file will have its own <code class=\"language-text\">instance_id</code> that will be required to download the artifact/file.</p>\n</blockquote>\n<h4 id=\"download-id\" style=\"position:relative;\"><a href=\"#download-id\" aria-label=\"download id permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Download Sandbox Artifacts</h4>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm download-id &lt;instance id></code></p>\n<p><strong>Description:</strong> Provides the ability to download Artifacts from the sandbox like the pcap, report and jarm files.</p>\n<blockquote>\n<p>Each file will have its own <code class=\"language-text\">instance_id</code>, meaning each <code class=\"language-text\">insatnce_id</code> needs to be defined. To find the <code class=\"language-text\">instance id</code> of the file to download, use the <code class=\"language-text\">polyswarm sandbox lookup</code> cli command <a href=\"#sandbox-lookup\">here</a>. When you submit a file to be sandboxed, you get a SandboxTask ID. When the sandboxing is done, you can get the results for that sandboxtask. If you look at the json output, it will contain a SandboxArtifacts section. Each item in the SandboxArtifacts has an artifact ID.</p>\n</blockquote>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm download-id <span class=\"token number\">76909336038197831</span></code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">Successfully downloaded artifact b1c52c16bd34314685b2147687d3d82d3032ad1066493538a9547a5b1cdf2254 to /Users/name/Desktop/b1c52c16bd34314685b2147687d3d82d3032ad1066493538a9547a5b1cdf2254</code></pre></div>\n<h4 id=\"list-my-sandbox-tasks\" style=\"position:relative;\"><a href=\"#list-my-sandbox-tasks\" aria-label=\"list my sandbox tasks permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>List my sandbox tasks</h4>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm sandbox my-tasks</code></p>\n<p><strong>Description:</strong> List all the sandbox tasks submitted by you or anyone in your team with the status of these.</p>\n<p><strong>Options</strong></p>\n<table>\n<thead>\n<tr>\n<th>Option</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">--provider</code></td>\n<td>string</td>\n<td>false</td>\n<td>Search on the sandbox name.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">--start-date</code></td>\n<td>string</td>\n<td>false</td>\n<td>Provide a start date for searching sandbox tasks.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">--end-date</code></td>\n<td>string</td>\n<td>false</td>\n<td>Provide a end date for searching sandbox tasks.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">--sha256</code></td>\n<td>string</td>\n<td>false</td>\n<td>Only list tasks with the SHA256 passed.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">--user-account-id</code></td>\n<td>integer</td>\n<td>false</td>\n<td>User account that created the sandbox task.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm sandbox my-tasks</code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span> Sandbox Task <span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span>\nid: <span class=\"token number\">76509232912518724</span>\nsha256: e7dcfa7e44cfea923e8d1bde56a480ff3d18e2b7221c8d5e50bf753b1a5e876e\nsandbox: triage\ncreated: <span class=\"token number\">2023</span>-06-20T18:53:47.027083\ncommunity: pi\ninstance id: <span class=\"token number\">5821643847114768</span>\nstatus: SUCCEEDED\naccount number: <span class=\"token number\">582193978313</span>\nteam account number: <span class=\"token number\">582193978313</span>\n\n<span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span> Sandbox Task <span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span>\nid: <span class=\"token number\">30536618894625674</span>\nsha256: 18e5b8fe65e8f73c3a4a637c258c02aeec8a6ab702b15b7ee73f5631a9879e40\nsandbox: triage\ncreated: <span class=\"token number\">2023</span>-06-20T18:47:46.242045\ncommunity: pi\ninstance id: <span class=\"token number\">95454528418762552</span>\nstatus: PENDING\naccount number: <span class=\"token number\">582193978313</span>\nteam account number: <span class=\"token number\">582193978313</span></code></pre></div>\n<h4 id=\"search-sandbox-tasks\" style=\"position:relative;\"><a href=\"#search-sandbox-tasks\" aria-label=\"search sandbox tasks permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Search Sandbox Tasks</h4>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm sandbox search &lt;HASH></code></p>\n<p><strong>Description:</strong> Search sandbox tasks by sha256, sandbox provider, status, start date and/or end date in order to filter out the results.</p>\n<p><strong>Options</strong></p>\n<table>\n<thead>\n<tr>\n<th>Option</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">--provider</code></td>\n<td>string</td>\n<td>false</td>\n<td>Search on the sandbox name.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">--status</code></td>\n<td>string</td>\n<td>false</td>\n<td>Filter by status i.e. pending.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">--start-date</code></td>\n<td>string</td>\n<td>false</td>\n<td>Provide a start date for searching sandbox tasks.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">--end-date</code></td>\n<td>string</td>\n<td>false</td>\n<td>Provide a end date for searching sandbox tasks.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">--account-id</code></td>\n<td>integer</td>\n<td>false</td>\n<td>Account that created the sandbox task.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm sandbox search 18e5b8fe65e8f73c3a4a637c258c02aeec8a6ab702b15b7ee73f5631a9879e40</code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span> Sandbox Task <span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span>\nid: <span class=\"token number\">30536618894625674</span>\nsha256: 18e5b8fe65e8f73c3a4a637c258c02aeec8a6ab702b15b7ee73f5631a9879e40\nsandbox: triage\ncreated: <span class=\"token number\">2023</span>-06-20T18:47:46.242045\ncommunity: pi\ninstance id: <span class=\"token number\">95454528418762552</span>\nstatus: PENDING</code></pre></div>\n<h2 id=\"hunting-yara\" style=\"position:relative;\"><a href=\"#hunting-yara\" aria-label=\"hunting yara permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Hunting with Yara</h2>\n<h4 id=\"managing-yara-rulesets\" style=\"position:relative;\"><a href=\"#managing-yara-rulesets\" aria-label=\"managing yara rulesets permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Managing Yara Rulesets</h4>\n<p>This section will walk through creating a Yara ruleset(s), viewing the ruleset contents, listing all rulesets, updating a ruleset and deleting a ruleset.</p>\n<h5 id=\"creating-a-ruleset\" style=\"position:relative;\"><a href=\"#creating-a-ruleset\" aria-label=\"creating a ruleset permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Creating a Ruleset</h5>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm rules create eicar &lt;file.yara></code></p>\n<p><strong>Description:</strong> The first step to hunting with Yara rules is to create your Yara ruleset(s).</p>\n<p><strong>Options</strong></p>\n<table>\n<thead>\n<tr>\n<th>Option</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">-d</code>, <code class=\"language-text\">--description</code></td>\n<td>string</td>\n<td>false</td>\n<td>Description of the ruleset.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm rules create eicar eicar.yara</code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">Ruleset Id: <span class=\"token number\">57611858371350090</span>\nName: eicar\nDescription: None\nCreated at: <span class=\"token number\">2022</span>-05-26 <span class=\"token number\">21</span>:00:09.401395\nModified at: <span class=\"token number\">2022</span>-05-26 <span class=\"token number\">21</span>:00:09.401395</code></pre></div>\n<h5 id=\"view-a-ruleset-list\" style=\"position:relative;\"><a href=\"#view-a-ruleset-list\" aria-label=\"view a ruleset list permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>View a Ruleset List</h5>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm rules list</code></p>\n<p><strong>Description:</strong> It is also possible to list all the rulesets that exist in your account.</p>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm rules list</code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">Ruleset Id: <span class=\"token number\">57611858371350090</span>\nName: eicar\nDescription: None\nCreated at: <span class=\"token number\">2022</span>-05-26 <span class=\"token number\">21</span>:00:09.401395\nModified at: <span class=\"token number\">2022</span>-05-26 <span class=\"token number\">21</span>:00:09.401395\n\nRuleset Id: <span class=\"token number\">6094816616323164</span>\nName: eicar\nDescription: None\nCreated at: <span class=\"token number\">2022</span>-05-26 <span class=\"token number\">18</span>:42:41.806803\nModified at: <span class=\"token number\">2022</span>-05-26 <span class=\"token number\">18</span>:45:04.864430</code></pre></div>\n<h5 id=\"inspect-a-yara-ruleset-contents\" style=\"position:relative;\"><a href=\"#inspect-a-yara-ruleset-contents\" aria-label=\"inspect a yara ruleset contents permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Inspect a Yara Ruleset Contents</h5>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm rules view &lt;Ruleset ID></code></p>\n<p><strong>Description:</strong> You can use the <code class=\"language-text\">Ruleset Id</code> to inspect the contents of the Yara ruleset you created.</p>\n<blockquote>\n<p>Find the Ruleset ID of the Ruleset with the command <code class=\"language-text\">polyswarm rules list</code></p>\n</blockquote>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm rules view <span class=\"token number\">57611858371350090</span></code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">Ruleset Id: <span class=\"token number\">57611858371350090</span>\nName: eicar\nDescription: None\nCreated at: <span class=\"token number\">2022</span>-05-26 <span class=\"token number\">21</span>:00:09.401395\nModified at: <span class=\"token number\">2022</span>-05-26 <span class=\"token number\">21</span>:00:09.401395\nRuleset Contents:\nrule eicar_av_test <span class=\"token punctuation\">{</span>\n    /*\n       Per standard, match only <span class=\"token keyword\">if</span> entire <span class=\"token function\">file</span> is EICAR string plus optional trailing whitespace.\n       The raw EICAR string to be matched is:\n       X5O<span class=\"token operator\">!</span>P%@AP<span class=\"token punctuation\">[</span><span class=\"token number\">4</span><span class=\"token punctuation\">\\</span>PZX54<span class=\"token punctuation\">(</span>P^<span class=\"token punctuation\">)</span>7CC<span class=\"token punctuation\">)</span><span class=\"token number\">7</span><span class=\"token punctuation\">}</span><span class=\"token variable\">$EICAR</span>-STANDARD-ANTIVIRUS-TEST-FILE<span class=\"token operator\">!</span><span class=\"token variable\">$H</span>+H*\n    */\n\n    meta:\n        description <span class=\"token operator\">=</span> <span class=\"token string\">\"This is a standard AV test, intended to verify that BinaryAlert is working correctly.\"</span>\n        author <span class=\"token operator\">=</span> <span class=\"token string\">\"Austin Byers | Airbnb CSIRT\"</span>\n        reference <span class=\"token operator\">=</span> <span class=\"token string\">\"http://www.eicar.org/86-0-Intended-use.html\"</span>\n\n    strings:\n        <span class=\"token variable\">$eicar_regex</span> <span class=\"token operator\">=</span> /^X5O<span class=\"token operator\">!</span>P%@AP<span class=\"token punctuation\">\\</span><span class=\"token punctuation\">[</span><span class=\"token number\">4</span><span class=\"token punctuation\">\\</span><span class=\"token punctuation\">\\</span>PZX54<span class=\"token punctuation\">\\</span><span class=\"token punctuation\">(</span>P<span class=\"token punctuation\">\\</span>^<span class=\"token punctuation\">\\</span><span class=\"token punctuation\">)</span>7CC<span class=\"token punctuation\">\\</span><span class=\"token punctuation\">)</span><span class=\"token number\">7</span><span class=\"token punctuation\">\\</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">\\</span><span class=\"token variable\">$EICAR</span>-STANDARD-ANTIVIRUS-TEST-FILE<span class=\"token operator\">!</span><span class=\"token punctuation\">\\</span><span class=\"token variable\">$H</span><span class=\"token punctuation\">\\</span>+H<span class=\"token punctuation\">\\</span>*<span class=\"token punctuation\">\\</span>s*$/\n\n    condition:\n        all of them\n<span class=\"token punctuation\">}</span>\n\nrule eicar_substring_test <span class=\"token punctuation\">{</span>\n    /*\n       More generic - match just the embedded EICAR string <span class=\"token punctuation\">(</span>e.g. <span class=\"token keyword\">in</span> packed executables, PDFs, etc<span class=\"token punctuation\">)</span>\n    */\n\n    meta:\n        description <span class=\"token operator\">=</span> <span class=\"token string\">\"Standard AV test, checking for an EICAR substring\"</span>\n        author <span class=\"token operator\">=</span> <span class=\"token string\">\"Austin Byers | Airbnb CSIRT\"</span>\n\n    strings:\n        <span class=\"token variable\">$eicar_substring</span> <span class=\"token operator\">=</span> <span class=\"token string\">\"<span class=\"token variable\">$EICAR</span>-STANDARD-ANTIVIRUS-TEST-FILE!\"</span>\n\n    condition:\n        all of them\n<span class=\"token punctuation\">}</span></code></pre></div>\n<h5 id=\"update-a-yara-ruleset\" style=\"position:relative;\"><a href=\"#update-a-yara-ruleset\" aria-label=\"update a yara ruleset permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Update a Yara Ruleset</h5>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm rules update &lt;ruleset id> --name &lt;NEW NAME> --file &lt;file.yara></code></p>\n<p><strong>Description:</strong> Update the ruleset using the <code class=\"language-text\">update</code> command or update the yara ruleset.</p>\n<p><strong>Options</strong></p>\n<table>\n<thead>\n<tr>\n<th>Option</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">-n</code>, <code class=\"language-text\">--name</code></td>\n<td>string</td>\n<td>false</td>\n<td>Name of the ruleset.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">-f</code>, <code class=\"language-text\">--file</code></td>\n<td>string</td>\n<td>false</td>\n<td>File containing yara rules.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">-d</code>, <code class=\"language-text\">--description</code></td>\n<td>string</td>\n<td>false</td>\n<td>Description of the ruleset.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm rules update <span class=\"token number\">57611858371350090</span> --name EiCaR</code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">Ruleset Id: <span class=\"token number\">57611858371350090</span>\nName: EiCaR\nDescription: None\nCreated at: <span class=\"token number\">2022</span>-05-26 <span class=\"token number\">21</span>:00:09.401395\nModified at: <span class=\"token number\">2022</span>-05-26 <span class=\"token number\">21</span>:03:09.500600</code></pre></div>\n<h5 id=\"deleting-a-yara-ruleset\" style=\"position:relative;\"><a href=\"#deleting-a-yara-ruleset\" aria-label=\"deleting a yara ruleset permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Deleting a YARA Ruleset</h5>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm rules delete &lt;Ruleset ID></code></p>\n<p><strong>Description:</strong>Delete a ruleset if <strong>there is not a live hunt running</strong> associated with it.</p>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm rules delete <span class=\"token number\">57611858371350090</span></code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">Ruleset Id: <span class=\"token number\">57611858371350090</span>\nName: EiCaR\nDescription: None\nCreated at: <span class=\"token number\">2022</span>-05-26 <span class=\"token number\">21</span>:00:09.401395\nModified at: <span class=\"token number\">2022</span>-05-26 <span class=\"token number\">21</span>:03:45.551115</code></pre></div>\n<h4 id=\"live-hunting\" style=\"position:relative;\"><a href=\"#live-hunting\" aria-label=\"live hunting permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Live Hunting</h4>\n<p>Live Hunting offers users the valuable capability to employ a YARA ruleset for matching against artifacts submitted in real time to PolySwarm's extensive dataset.</p>\n<h5 id=\"start-a-live-hunt\" style=\"position:relative;\"><a href=\"#start-a-live-hunt\" aria-label=\"start a live hunt permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Start a Live Hunt</h5>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm live start &lt;ruleset_id></code></p>\n<p><strong>Description:</strong> Start a live hunt, Every live hunt that is active must be associated with a Yara ruleset. Because of this, you need to provide the <code class=\"language-text\">rulset_id</code> when starting a live hunt.</p>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm live start <span class=\"token number\">57989886451857569</span></code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">Ruleset Id: <span class=\"token number\">57989886451857569</span>\nLive Hunt Id: <span class=\"token number\">86677820494666932</span>\nLive Hunt Created at: <span class=\"token number\">2022</span>-05-26T21:14:29.334580\nName: eicar\nDescription: None\nCreated at: <span class=\"token number\">2022</span>-05-26 <span class=\"token number\">18</span>:48:38.048514\nModified at: <span class=\"token number\">2022</span>-05-26 <span class=\"token number\">21</span>:14:29.207665</code></pre></div>\n<h5 id=\"stop-a-live-hunt\" style=\"position:relative;\"><a href=\"#stop-a-live-hunt\" aria-label=\"stop a live hunt permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Stop a Live Hunt</h5>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm live stop &lt;ruleset_id></code></p>\n<p><strong>Description:</strong> Similarly, you can stop a live hunt providing the <code class=\"language-text\">ruleset_id</code> it is associated with.\nWhen you start the live hunt for the same <code class=\"language-text\">ruleset_id</code>, a new <code class=\"language-text\">live_hunt_id</code> is generated.\nThe Ruleset <strong>cannot be deleted or modified</strong> while it has an active live hunt associated with it.</p>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm live stop <span class=\"token number\">57989886451857569</span></code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">Ruleset Id: <span class=\"token number\">57989886451857569</span>\nName: eicar\nDescription: None\nCreated at: <span class=\"token number\">2022</span>-05-26 <span class=\"token number\">18</span>:48:38.048514\nModified at: <span class=\"token number\">2022</span>-05-26 <span class=\"token number\">21</span>:17:29.079046</code></pre></div>\n<h5 id=\"view-live-results-of-a-live-hunt\" style=\"position:relative;\"><a href=\"#view-live-results-of-a-live-hunt\" aria-label=\"view live results of a live hunt permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>View Live Results of a Live Hunt</h5>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm live feed</code></p>\n<p><strong>Description:</strong> You can see all the live results generated from all the live hunts in your feed.\nThey are reverse chronologically ordered.</p>\n<p><strong>Options</strong></p>\n<table>\n<thead>\n<tr>\n<th>Option</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">-r</code>, <code class=\"language-text\">--rule-name</code></td>\n<td>string</td>\n<td>false</td>\n<td>Filter results on the rule name</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">-f</code>, <code class=\"language-text\">--family</code></td>\n<td>string</td>\n<td>false</td>\n<td>Filter hunt based on the family name</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">-p</code>, <code class=\"language-text\">--private</code></td>\n<td>string</td>\n<td>false</td>\n<td>Filter results to only your Private Community, if not defined results are shown from your Private Community and the Public Community.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">-u</code>, <code class=\"language-text\">--polyscore-upper</code></td>\n<td>string</td>\n<td>false</td>\n<td>Polyscore upper bound for the hunt results</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm live feed</code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">Id: <span class=\"token number\">32552275040389723</span>\nInstance Id: <span class=\"token number\">33280875575725264</span>\nCreated at: <span class=\"token number\">2022</span>-05-26 <span class=\"token number\">21</span>:15:27.507020\nSHA256: 275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f\nRule: eicar_substring_test\nPolyScore: <span class=\"token number\">0.23213458159978606066</span>\nDetections: <span class=\"token number\">1</span>/1 engines reported malicious\nTags: <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span>\n\nId: <span class=\"token number\">34271764645034598</span>\nInstance Id: <span class=\"token number\">33280875575725264</span>\nCreated at: <span class=\"token number\">2022</span>-05-26 <span class=\"token number\">21</span>:15:27.494428\nSHA256: 275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f\nRule: eicar_av_test\nPolyScore: <span class=\"token number\">0.23213458159978606066</span>\nDetections: <span class=\"token number\">1</span>/1 engines reported malicious\nTags: <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span></code></pre></div>\n<h5 id=\"view-a-singular-result\" style=\"position:relative;\"><a href=\"#view-a-singular-result\" aria-label=\"view a singular result permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>View a Singular Result</h5>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm live result &lt;instance_id></code></p>\n<p><strong>Description:</strong> You can inspect a particular result and get a download link using the <code class=\"language-text\">result</code> command.</p>\n<p><strong>Request></strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm live result <span class=\"token number\">32552275040389723</span></code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">Id: <span class=\"token number\">32552275040389723</span>\nInstance Id: <span class=\"token number\">33280875575725264</span>\nCreated at: <span class=\"token number\">2022</span>-05-26 <span class=\"token number\">21</span>:15:27.507020\nSHA256: 275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f\nRule: eicar_substring_test\nPolyScore: <span class=\"token number\">0.23213458159978606066</span>\nDetections: <span class=\"token number\">1</span>/1 engines reported malicious\nTags: <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span>\nDownload Url: http://minio:9000/cache-public/27/5a/02/275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f3395856ce81f2b7382dee72602f798b642f1414044d88612fea8a8f36de82e1278abb02f?response-content-disposition<span class=\"token operator\">=</span>attachment%3Bfilename%3Dinfected<span class=\"token operator\">&amp;</span>response-content-type<span class=\"token operator\">=</span>application%2Foctet-stream<span class=\"token operator\">&amp;</span>X-Amz-Algorithm<span class=\"token operator\">=</span>AWS4-HMAC-SHA256<span class=\"token operator\">&amp;</span>X-Amz-Credential<span class=\"token operator\">=</span>AKIAIOSFODNN7EXAMPLE%2F20220526%2Fus-east-1%2Fs3%2Faws4_request<span class=\"token operator\">&amp;</span>X-Amz-Date<span class=\"token operator\">=</span>20220526T211923Z<span class=\"token operator\">&amp;</span>X-Amz-Expires<span class=\"token operator\">=</span><span class=\"token number\">3600</span><span class=\"token operator\">&amp;</span>X-Amz-SignedHeaders<span class=\"token operator\">=</span>host<span class=\"token operator\">&amp;</span>X-Amz-Signature<span class=\"token operator\">=</span>52c1c289e0a9c86187224fbeeb6fa5122b8e9b0d196cc6440c00b665e168985c</code></pre></div>\n<h5 id=\"delete-a-result\" style=\"position:relative;\"><a href=\"#delete-a-result\" aria-label=\"delete a result permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Delete a Result</h5>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm live results-delete &lt;instance_id></code></p>\n<p><strong>Description:</strong> You can also delete results from this list that are not interesting.</p>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm live results-delete <span class=\"token number\">32552275040389723</span> <span class=\"token comment\"># you can provide more ids here, separated by space</span></code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">Id: <span class=\"token number\">32552275040389723</span>\nInstance Id: <span class=\"token number\">33280875575725264</span>\nCreated at: <span class=\"token number\">2022</span>-05-26 <span class=\"token number\">21</span>:15:27.507020\nSHA256: 275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f\nRule: eicar_substring_test\nPolyScore: <span class=\"token number\">0.23213458159978606066</span>\nDetections: <span class=\"token number\">1</span>/1 engines reported malicious\nTags: <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span></code></pre></div>\n<h4 id=\"historical-hunting\" style=\"position:relative;\"><a href=\"#historical-hunting\" aria-label=\"historical hunting permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Historical Hunting</h4>\n<p>Historical Hunting offers users the valuable capability to employ a YARA ruleset for matching against artifacts previously submitted in real time to PolySwarm's extensive dataset.</p>\n<h5 id=\"start-a-historical-hunt\" style=\"position:relative;\"><a href=\"#start-a-historical-hunt\" aria-label=\"start a historical hunt permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Start a Historical Hunt</h5>\n<p><strong>Format:</strong>\n<code class=\"language-text\">polyswarm historical start  &lt;file.yara></code></p>\n<p>OR</p>\n<p><code class=\"language-text\">polyswarm historical start -r &lt;ruleset_id></code></p>\n<blockquote>\n<p>Provide the Yara ruleset directly or provide the ruleset id of the Yara Ruleset.</p>\n</blockquote>\n<p><strong>Description:</strong> Start a new historical hunt providing the ruleset directly.</p>\n<p><strong>Options</strong></p>\n<table>\n<thead>\n<tr>\n<th>Option</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">-r</code>, <code class=\"language-text\">--rule-id</code></td>\n<td>integer</td>\n<td>false</td>\n<td>If provided, create this historical hunt from an existing ruleset.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">-n</code>, <code class=\"language-text\">--name</code></td>\n<td>string</td>\n<td>false</td>\n<td>Explicitly set the ruleset name for this hunt.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm historical start tests/eicar.yara</code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">Hunt Id: <span class=\"token number\">60834480310458457</span>\nStatus: PENDING\nCreated at: <span class=\"token number\">2022</span>-05-26 <span class=\"token number\">21</span>:24:20.712138\nRuleset Name: eicar.yara\nRuleset Contents:\nrule eicar_av_test <span class=\"token punctuation\">{</span>\n    /*\n       Per standard, match only <span class=\"token keyword\">if</span> entire <span class=\"token function\">file</span> is EICAR string plus optional trailing whitespace.\n       The raw EICAR string to be matched is:\n       X5O<span class=\"token operator\">!</span>P%@AP<span class=\"token punctuation\">[</span><span class=\"token number\">4</span><span class=\"token punctuation\">\\</span>PZX54<span class=\"token punctuation\">(</span>P^<span class=\"token punctuation\">)</span>7CC<span class=\"token punctuation\">)</span><span class=\"token number\">7</span><span class=\"token punctuation\">}</span><span class=\"token variable\">$EICAR</span>-STANDARD-ANTIVIRUS-TEST-FILE<span class=\"token operator\">!</span><span class=\"token variable\">$H</span>+H*\n    */\n\n    meta:\n        description <span class=\"token operator\">=</span> <span class=\"token string\">\"This is a standard AV test, intended to verify that BinaryAlert is working correctly.\"</span>\n        author <span class=\"token operator\">=</span> <span class=\"token string\">\"Austin Byers | Airbnb CSIRT\"</span>\n        reference <span class=\"token operator\">=</span> <span class=\"token string\">\"http://www.eicar.org/86-0-Intended-use.html\"</span>\n\n    strings:\n        <span class=\"token variable\">$eicar_regex</span> <span class=\"token operator\">=</span> /^X5O<span class=\"token operator\">!</span>P%@AP<span class=\"token punctuation\">\\</span><span class=\"token punctuation\">[</span><span class=\"token number\">4</span><span class=\"token punctuation\">\\</span><span class=\"token punctuation\">\\</span>PZX54<span class=\"token punctuation\">\\</span><span class=\"token punctuation\">(</span>P<span class=\"token punctuation\">\\</span>^<span class=\"token punctuation\">\\</span><span class=\"token punctuation\">)</span>7CC<span class=\"token punctuation\">\\</span><span class=\"token punctuation\">)</span><span class=\"token number\">7</span><span class=\"token punctuation\">\\</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">\\</span><span class=\"token variable\">$EICAR</span>-STANDARD-ANTIVIRUS-TEST-FILE<span class=\"token operator\">!</span><span class=\"token punctuation\">\\</span><span class=\"token variable\">$H</span><span class=\"token punctuation\">\\</span>+H<span class=\"token punctuation\">\\</span>*<span class=\"token punctuation\">\\</span>s*$/\n\n    condition:\n        all of them\n<span class=\"token punctuation\">}</span>\n\nrule eicar_substring_test <span class=\"token punctuation\">{</span>\n    /*\n       More generic - match just the embedded EICAR string <span class=\"token punctuation\">(</span>e.g. <span class=\"token keyword\">in</span> packed executables, PDFs, etc<span class=\"token punctuation\">)</span>\n    */\n\n    meta:\n        description <span class=\"token operator\">=</span> <span class=\"token string\">\"Standard AV test, checking for an EICAR substring\"</span>\n        author <span class=\"token operator\">=</span> <span class=\"token string\">\"Austin Byers | Airbnb CSIRT\"</span>\n\n    strings:\n        <span class=\"token variable\">$eicar_substring</span> <span class=\"token operator\">=</span> <span class=\"token string\">\"<span class=\"token variable\">$EICAR</span>-STANDARD-ANTIVIRUS-TEST-FILE!\"</span>\n\n    condition:\n        all of them\n<span class=\"token punctuation\">}</span></code></pre></div>\n<blockquote>\n<p>Historical hunt will activate upon creation. They are created in the <code class=\"language-text\">PENDING</code> state and\nare scheduled for execution during the next processing window.</p>\n</blockquote>\n<h5 id=\"view-a-historical-hunt-status\" style=\"position:relative;\"><a href=\"#view-a-historical-hunt-status\" aria-label=\"view a historical hunt status permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>View a Historical Hunt Status</h5>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm historical list</code></p>\n<p><strong>Description:</strong> You can see the state of your historical hunts when you use the <code class=\"language-text\">list</code> command.</p>\n<p><strong>Options</strong></p>\n<table>\n<thead>\n<tr>\n<th>Option</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">-s</code>, <code class=\"language-text\">--since</code></td>\n<td>integer</td>\n<td>false</td>\n<td>How far back in seconds to request results.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm historical list</code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">Hunt Id: <span class=\"token number\">86933257769414706</span>\nStatus: PENDING\nCreated at: <span class=\"token number\">2022</span>-05-26 <span class=\"token number\">21</span>:25:35.467834\nRuleset Name: eicar\n\nHunt Id: <span class=\"token number\">60834480310458457</span>\nStatus: PENDING\nCreated at: <span class=\"token number\">2022</span>-05-26 <span class=\"token number\">21</span>:24:20.712138\nRuleset Name: eicar.yara\n\nHunt Id: <span class=\"token number\">79157116618547376</span>\nStatus: PENDING\nCreated at: <span class=\"token number\">2022</span>-05-26 <span class=\"token number\">19</span>:07:25.339932\nRuleset Name: eicar.yara\n\nHunt Id: <span class=\"token number\">48011760326110718</span>\nStatus: LIMITED\nProgress: <span class=\"token number\">100.00</span>%\nCreated at: <span class=\"token number\">2022</span>-05-26 <span class=\"token number\">17</span>:53:07.832218\nTotal count: <span class=\"token number\">6</span>\n\teicar_av_test: <span class=\"token number\">3</span>\n\teicar_substring_test: <span class=\"token number\">3</span>\nRuleset Name: eicar.yara</code></pre></div>\n<h5 id=\"cancel-a-historical-hunt\" style=\"position:relative;\"><a href=\"#cancel-a-historical-hunt\" aria-label=\"cancel a historical hunt permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Cancel a Historical Hunt</h5>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm historical cancel &lt;hunt_id></code></p>\n<p><strong>Description:</strong> You can cancel a historical if you don't want it to finish by providing the hunt id. It will prevent further processing.</p>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm historical cancel <span class=\"token number\">86933257769414706</span></code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">Hunt Id: <span class=\"token number\">86933257769414706</span>\nStatus: CANCELED\nCreated at: <span class=\"token number\">2022</span>-05-26 <span class=\"token number\">21</span>:25:35.467834\nRuleset Name: eicar\nRuleset Contents:\nrule eicar_av_test <span class=\"token punctuation\">{</span>\n    /*\n       Per standard, match only <span class=\"token keyword\">if</span> entire <span class=\"token function\">file</span> is EICAR string plus optional trailing whitespace.\n       The raw EICAR string to be matched is:\n       X5O<span class=\"token operator\">!</span>P%@AP<span class=\"token punctuation\">[</span><span class=\"token number\">4</span><span class=\"token punctuation\">\\</span>PZX54<span class=\"token punctuation\">(</span>P^<span class=\"token punctuation\">)</span>7CC<span class=\"token punctuation\">)</span><span class=\"token number\">7</span><span class=\"token punctuation\">}</span><span class=\"token variable\">$EICAR</span>-STANDARD-ANTIVIRUS-TEST-FILE<span class=\"token operator\">!</span><span class=\"token variable\">$H</span>+H*\n    */\n\n    meta:\n        description <span class=\"token operator\">=</span> <span class=\"token string\">\"This is a standard AV test, intended to verify that BinaryAlert is working correctly.\"</span>\n        author <span class=\"token operator\">=</span> <span class=\"token string\">\"Austin Byers | Airbnb CSIRT\"</span>\n        reference <span class=\"token operator\">=</span> <span class=\"token string\">\"http://www.eicar.org/86-0-Intended-use.html\"</span>\n\n    strings:\n        <span class=\"token variable\">$eicar_regex</span> <span class=\"token operator\">=</span> /^X5O<span class=\"token operator\">!</span>P%@AP<span class=\"token punctuation\">\\</span><span class=\"token punctuation\">[</span><span class=\"token number\">4</span><span class=\"token punctuation\">\\</span><span class=\"token punctuation\">\\</span>PZX54<span class=\"token punctuation\">\\</span><span class=\"token punctuation\">(</span>P<span class=\"token punctuation\">\\</span>^<span class=\"token punctuation\">\\</span><span class=\"token punctuation\">)</span>7CC<span class=\"token punctuation\">\\</span><span class=\"token punctuation\">)</span><span class=\"token number\">7</span><span class=\"token punctuation\">\\</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">\\</span><span class=\"token variable\">$EICAR</span>-STANDARD-ANTIVIRUS-TEST-FILE<span class=\"token operator\">!</span><span class=\"token punctuation\">\\</span><span class=\"token variable\">$H</span><span class=\"token punctuation\">\\</span>+H<span class=\"token punctuation\">\\</span>*<span class=\"token punctuation\">\\</span>s*$/\n\n    condition:\n        all of them\n<span class=\"token punctuation\">}</span>\n\nrule eicar_substring_test <span class=\"token punctuation\">{</span>\n    /*\n       More generic - match just the embedded EICAR string <span class=\"token punctuation\">(</span>e.g. <span class=\"token keyword\">in</span> packed executables, PDFs, etc<span class=\"token punctuation\">)</span>\n    */\n\n    meta:\n        description <span class=\"token operator\">=</span> <span class=\"token string\">\"Standard AV test, checking for an EICAR substring\"</span>\n        author <span class=\"token operator\">=</span> <span class=\"token string\">\"Austin Byers | Airbnb CSIRT\"</span>\n\n    strings:\n        <span class=\"token variable\">$eicar_substring</span> <span class=\"token operator\">=</span> <span class=\"token string\">\"<span class=\"token variable\">$EICAR</span>-STANDARD-ANTIVIRUS-TEST-FILE!\"</span>\n\n    condition:\n        all of them\n<span class=\"token punctuation\">}</span></code></pre></div>\n<h5 id=\"delete-a-historical-hunt\" style=\"position:relative;\"><a href=\"#delete-a-historical-hunt\" aria-label=\"delete a historical hunt permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Delete a Historical Hunt</h5>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm historical delete &lt;hunt_id></code></p>\n<p><strong>Description:</strong> You can also delete a historical hunt. The results associated with it will also be removed.</p>\n<blockquote>\n<p>Since there can be a large number of results, this is an asynchronous task and might take a while to finish after it is requested.</p>\n</blockquote>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm historical delete <span class=\"token number\">86933257769414706</span></code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">Successfully deleted Hunt:\nHunt Id: <span class=\"token number\">86933257769414706</span>\nStatus: DELETING\nCreated at: <span class=\"token number\">2022</span>-05-26 <span class=\"token number\">21</span>:25:35.467834\nRuleset Name: eicar\nRuleset Contents:\nrule eicar_av_test <span class=\"token punctuation\">{</span>\n    /*\n       Per standard, match only <span class=\"token keyword\">if</span> entire <span class=\"token function\">file</span> is EICAR string plus optional trailing whitespace.\n       The raw EICAR string to be matched is:\n       X5O<span class=\"token operator\">!</span>P%@AP<span class=\"token punctuation\">[</span><span class=\"token number\">4</span><span class=\"token punctuation\">\\</span>PZX54<span class=\"token punctuation\">(</span>P^<span class=\"token punctuation\">)</span>7CC<span class=\"token punctuation\">)</span><span class=\"token number\">7</span><span class=\"token punctuation\">}</span><span class=\"token variable\">$EICAR</span>-STANDARD-ANTIVIRUS-TEST-FILE<span class=\"token operator\">!</span><span class=\"token variable\">$H</span>+H*\n    */\n\n    meta:\n        description <span class=\"token operator\">=</span> <span class=\"token string\">\"This is a standard AV test, intended to verify that BinaryAlert is working correctly.\"</span>\n        author <span class=\"token operator\">=</span> <span class=\"token string\">\"Austin Byers | Airbnb CSIRT\"</span>\n        reference <span class=\"token operator\">=</span> <span class=\"token string\">\"http://www.eicar.org/86-0-Intended-use.html\"</span>\n\n    strings:\n        <span class=\"token variable\">$eicar_regex</span> <span class=\"token operator\">=</span> /^X5O<span class=\"token operator\">!</span>P%@AP<span class=\"token punctuation\">\\</span><span class=\"token punctuation\">[</span><span class=\"token number\">4</span><span class=\"token punctuation\">\\</span><span class=\"token punctuation\">\\</span>PZX54<span class=\"token punctuation\">\\</span><span class=\"token punctuation\">(</span>P<span class=\"token punctuation\">\\</span>^<span class=\"token punctuation\">\\</span><span class=\"token punctuation\">)</span>7CC<span class=\"token punctuation\">\\</span><span class=\"token punctuation\">)</span><span class=\"token number\">7</span><span class=\"token punctuation\">\\</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">\\</span><span class=\"token variable\">$EICAR</span>-STANDARD-ANTIVIRUS-TEST-FILE<span class=\"token operator\">!</span><span class=\"token punctuation\">\\</span><span class=\"token variable\">$H</span><span class=\"token punctuation\">\\</span>+H<span class=\"token punctuation\">\\</span>*<span class=\"token punctuation\">\\</span>s*$/\n\n    condition:\n        all of them\n<span class=\"token punctuation\">}</span>\n\nrule eicar_substring_test <span class=\"token punctuation\">{</span>\n    /*\n       More generic - match just the embedded EICAR string <span class=\"token punctuation\">(</span>e.g. <span class=\"token keyword\">in</span> packed executables, PDFs, etc<span class=\"token punctuation\">)</span>\n    */\n\n    meta:\n        description <span class=\"token operator\">=</span> <span class=\"token string\">\"Standard AV test, checking for an EICAR substring\"</span>\n        author <span class=\"token operator\">=</span> <span class=\"token string\">\"Austin Byers | Airbnb CSIRT\"</span>\n\n    strings:\n        <span class=\"token variable\">$eicar_substring</span> <span class=\"token operator\">=</span> <span class=\"token string\">\"<span class=\"token variable\">$EICAR</span>-STANDARD-ANTIVIRUS-TEST-FILE!\"</span>\n\n    condition:\n        all of them\n<span class=\"token punctuation\">}</span></code></pre></div>\n<h5 id=\"view-or-download-historical-hunt-details\" style=\"position:relative;\"><a href=\"#view-or-download-historical-hunt-details\" aria-label=\"view or download historical hunt details permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>View or Download Historical Hunt Details</h5>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm historical view &lt;hunt_id></code></p>\n<p><strong>Description:</strong> You can view details about the historical hunt and download a summary csv using the <code class=\"language-text\">view</code> command.</p>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm historical view <span class=\"token number\">48011760326110718</span></code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">Hunt Id: <span class=\"token number\">48011760326110718</span>\nStatus: LIMITED\nProgress: <span class=\"token number\">100.00</span>%\nCreated at: <span class=\"token number\">2022</span>-05-26 <span class=\"token number\">17</span>:53:07.832218\nTotal count: <span class=\"token number\">6</span>\n\teicar_av_test: <span class=\"token number\">3</span>\n\teicar_substring_test: <span class=\"token number\">3</span>\nDownload Results CSV:\n\thttp://minio:9000/historical/72/48/e9/7248e979625acf9f527e3ab7c8c0125e72e9b0a30b9a308b1617d475c8bcbf6bf27d52363bf2cd7b2359c70c6aac1de2ddad7daebc660cb805c99b51d4e4ff9648fe7eb1?response-content-disposition<span class=\"token operator\">=</span>attachment%3Bfilename%3D48011760326110718.csv<span class=\"token operator\">&amp;</span>response-content-type<span class=\"token operator\">=</span>application%2Foctet-stream<span class=\"token operator\">&amp;</span>X-Amz-Algorithm<span class=\"token operator\">=</span>AWS4-HMAC-SHA256<span class=\"token operator\">&amp;</span>X-Amz-Credential<span class=\"token operator\">=</span>AKIAIOSFODNN7EXAMPLE%2F20220526%2Fus-east-1%2Fs3%2Faws4_request<span class=\"token operator\">&amp;</span>X-Amz-Date<span class=\"token operator\">=</span>20220526T213205Z<span class=\"token operator\">&amp;</span>X-Amz-Expires<span class=\"token operator\">=</span><span class=\"token number\">3600</span><span class=\"token operator\">&amp;</span>X-Amz-SignedHeaders<span class=\"token operator\">=</span>host<span class=\"token operator\">&amp;</span>X-Amz-Signature<span class=\"token operator\">=</span>df334159d7a2a334f6fb0deffd6edc334f6f9188f4d29777b15a0575600114ff\nRuleset Name: eicar.yara\nRuleset Contents:\nrule eicar_av_test <span class=\"token punctuation\">{</span>\n    /*\n       Per standard, match only <span class=\"token keyword\">if</span> entire <span class=\"token function\">file</span> is EICAR string plus optional trailing whitespace.\n       The raw EICAR string to be matched is:\n       X5O<span class=\"token operator\">!</span>P%@AP<span class=\"token punctuation\">[</span><span class=\"token number\">4</span><span class=\"token punctuation\">\\</span>PZX54<span class=\"token punctuation\">(</span>P^<span class=\"token punctuation\">)</span>7CC<span class=\"token punctuation\">)</span><span class=\"token number\">7</span><span class=\"token punctuation\">}</span><span class=\"token variable\">$EICAR</span>-STANDARD-ANTIVIRUS-TEST-FILE<span class=\"token operator\">!</span><span class=\"token variable\">$H</span>+H*\n    */\n\n    meta:\n        description <span class=\"token operator\">=</span> <span class=\"token string\">\"This is a standard AV test, intended to verify that BinaryAlert is working correctly.\"</span>\n        author <span class=\"token operator\">=</span> <span class=\"token string\">\"Austin Byers | Airbnb CSIRT\"</span>\n        reference <span class=\"token operator\">=</span> <span class=\"token string\">\"http://www.eicar.org/86-0-Intended-use.html\"</span>\n\n    strings:\n        <span class=\"token variable\">$eicar_regex</span> <span class=\"token operator\">=</span> /^X5O<span class=\"token operator\">!</span>P%@AP<span class=\"token punctuation\">\\</span><span class=\"token punctuation\">[</span><span class=\"token number\">4</span><span class=\"token punctuation\">\\</span><span class=\"token punctuation\">\\</span>PZX54<span class=\"token punctuation\">\\</span><span class=\"token punctuation\">(</span>P<span class=\"token punctuation\">\\</span>^<span class=\"token punctuation\">\\</span><span class=\"token punctuation\">)</span>7CC<span class=\"token punctuation\">\\</span><span class=\"token punctuation\">)</span><span class=\"token number\">7</span><span class=\"token punctuation\">\\</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">\\</span><span class=\"token variable\">$EICAR</span>-STANDARD-ANTIVIRUS-TEST-FILE<span class=\"token operator\">!</span><span class=\"token punctuation\">\\</span><span class=\"token variable\">$H</span><span class=\"token punctuation\">\\</span>+H<span class=\"token punctuation\">\\</span>*<span class=\"token punctuation\">\\</span>s*$/\n\n    condition:\n        all of them\n<span class=\"token punctuation\">}</span>\n\nrule eicar_substring_test <span class=\"token punctuation\">{</span>\n    /*\n       More generic - match just the embedded EICAR string <span class=\"token punctuation\">(</span>e.g. <span class=\"token keyword\">in</span> packed executables, PDFs, etc<span class=\"token punctuation\">)</span>\n    */\n\n    meta:\n        description <span class=\"token operator\">=</span> <span class=\"token string\">\"Standard AV test, checking for an EICAR substring\"</span>\n        author <span class=\"token operator\">=</span> <span class=\"token string\">\"Austin Byers | Airbnb CSIRT\"</span>\n\n    strings:\n        <span class=\"token variable\">$eicar_substring</span> <span class=\"token operator\">=</span> <span class=\"token string\">\"<span class=\"token variable\">$EICAR</span>-STANDARD-ANTIVIRUS-TEST-FILE!\"</span>\n\n    condition:\n        all of them\n<span class=\"token punctuation\">}</span></code></pre></div>\n<h5 id=\"view-results-of-a-historical-hunt\" style=\"position:relative;\"><a href=\"#view-results-of-a-historical-hunt\" aria-label=\"view results of a historical hunt permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>View Results of a Historical Hunt</h5>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm historical results &lt;hunt_id></code></p>\n<p><strong>Description:</strong> You can see the results of a particular hunt using its <code class=\"language-text\">hunt_id</code>.</p>\n<p><strong>Options</strong></p>\n<table>\n<thead>\n<tr>\n<th>Option</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">-r</code>, <code class=\"language-text\">--rule-name</code></td>\n<td>string</td>\n<td>false</td>\n<td>Filter results on the rule name</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">-f</code>, <code class=\"language-text\">--family</code></td>\n<td>string</td>\n<td>false</td>\n<td>Filter hunt based on the family name</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">-p</code>, <code class=\"language-text\">--private</code></td>\n<td>string</td>\n<td>false</td>\n<td>Filter results to only your Private Community, if not defined results are shown from your Private Community and the Public Community.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">-l</code>, <code class=\"language-text\">--polyscore-lower</code></td>\n<td>string</td>\n<td>false</td>\n<td>Polyscore lower bound for the hunt results</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">-u</code>, <code class=\"language-text\">--polyscore-upper</code></td>\n<td>string</td>\n<td>false</td>\n<td>Polyscore upper bound for the hunt results</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm historical results <span class=\"token number\">48011760326110718</span></code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">Id: <span class=\"token number\">34417123788028549</span>\nInstance Id: <span class=\"token number\">72401552809848506</span>\nCreated at: <span class=\"token number\">2022</span>-05-26 <span class=\"token number\">17</span>:54:56.489448\nSHA256: 275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f\nRule: eicar_substring_test\nPolyScore: <span class=\"token number\">0.23213458159978606066</span>\nDetections: <span class=\"token number\">1</span>/1 engines reported malicious\nTags: <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span>\n\nId: <span class=\"token number\">89734617019442134</span>\nInstance Id: <span class=\"token number\">72401552809848506</span>\nCreated at: <span class=\"token number\">2022</span>-05-26 <span class=\"token number\">17</span>:54:56.489448\nSHA256: 275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f\nRule: eicar_av_test\nPolyScore: <span class=\"token number\">0.23213458159978606066</span>\nDetections: <span class=\"token number\">1</span>/1 engines reported malicious\nTags: <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span>\n\nId: <span class=\"token number\">55984849350345511</span>\nInstance Id: <span class=\"token number\">72401552809848506</span>\nCreated at: <span class=\"token number\">2022</span>-05-26 <span class=\"token number\">17</span>:54:56.489448\nSHA256: 275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f\nRule: eicar_substring_test\nPolyScore: <span class=\"token number\">0.23213458159978606066</span>\nDetections: <span class=\"token number\">1</span>/1 engines reported malicious\nTags: <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span></code></pre></div>\n<h5 id=\"view-or-download-a-single-result-of-a-historical-hunt\" style=\"position:relative;\"><a href=\"#view-or-download-a-single-result-of-a-historical-hunt\" aria-label=\"view or download a single result of a historical hunt permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>View or Download a Single Result of a Historical Hunt</h5>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm historical result &lt;id></code></p>\n<p><strong>Description:</strong> You can inspect details and download the file for a result with the <code class=\"language-text\">result</code> command. You will need the ID which you can find with the <code class=\"language-text\">polyswarm historical view &lt;hunt_id></code> command.</p>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm historical result <span class=\"token number\">34417123788028549</span></code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">Id: <span class=\"token number\">34417123788028549</span>\nInstance Id: <span class=\"token number\">72401552809848506</span>\nCreated at: <span class=\"token number\">2022</span>-05-26 <span class=\"token number\">17</span>:54:56.489448\nSHA256: 275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f\nRule: eicar_substring_test\nPolyScore: <span class=\"token number\">0.23213458159978606066</span>\nDetections: <span class=\"token number\">1</span>/1 engines reported malicious\nTags: <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span>\nDownload Url: http://minio:9000/cache-public/27/5a/02/275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f3395856ce81f2b7382dee72602f798b642f1414044d88612fea8a8f36de82e1278abb02f?response-content-disposition<span class=\"token operator\">=</span>attachment%3Bfilename%3Dinfected<span class=\"token operator\">&amp;</span>response-content-type<span class=\"token operator\">=</span>application%2Foctet-stream<span class=\"token operator\">&amp;</span>X-Amz-Algorithm<span class=\"token operator\">=</span>AWS4-HMAC-SHA256<span class=\"token operator\">&amp;</span>X-Amz-Credential<span class=\"token operator\">=</span>AKIAIOSFODNN7EXAMPLE%2F20220526%2Fus-east-1%2Fs3%2Faws4_request<span class=\"token operator\">&amp;</span>X-Amz-Date<span class=\"token operator\">=</span>20220526T213355Z<span class=\"token operator\">&amp;</span>X-Amz-Expires<span class=\"token operator\">=</span><span class=\"token number\">3600</span><span class=\"token operator\">&amp;</span>X-Amz-SignedHeaders<span class=\"token operator\">=</span>host<span class=\"token operator\">&amp;</span>X-Amz-Signature<span class=\"token operator\">=</span>bdd77765df45c068cd8f0d16580363003f9490ead7f4ff758aeada39bdcf9f96</code></pre></div>\n<h5 id=\"delete-historical-hunt-results\" style=\"position:relative;\"><a href=\"#delete-historical-hunt-results\" aria-label=\"delete historical hunt results permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Delete Historical Hunt Results</h5>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm historical results-delete &lt;id></code></p>\n<p><strong>Description:</strong> You can delete an undesirable result by providing the ID or a list of ID's.</p>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm historical results-delete <span class=\"token number\">34417123788028549</span> <span class=\"token comment\"># you can provide a list of ids here, space separated</span></code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">Id: <span class=\"token number\">34417123788028549</span>\nInstance Id: <span class=\"token number\">72401552809848506</span>\nCreated at: <span class=\"token number\">2022</span>-05-26 <span class=\"token number\">17</span>:54:56.489448\nSHA256: 275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f\nRule: eicar_substring_test\nPolyScore: <span class=\"token number\">0.23213458159978606066</span>\nDetections: <span class=\"token number\">1</span>/1 engines reported malicious\nTags: <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span></code></pre></div>\n<h2 id=\"cat-artifacts\" style=\"position:relative;\"><a href=\"#cat-artifacts\" aria-label=\"cat artifacts permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Cat Artifacts</h2>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm cat &lt;hash> |hexdump -C</code></p>\n<p><strong>Description:</strong> Cat artifact to stdout. Perform feature extraction from artifact without downloading.</p>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ <span class=\"token comment\"># Get C&amp;C from malware config</span>\n$ polyswarm <span class=\"token function\">cat</span> 3b08ce97c512c695c0258c2d0fce86648a28cceb1ce98e0456413e339c7908e8 <span class=\"token operator\">|</span>hexdump -C</code></pre></div>\n<p><strong>>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">00000000  c3 3e <span class=\"token number\">34</span> <span class=\"token number\">65</span> 04 b3 00 00  00 00 00 00 00 00 00 00  <span class=\"token operator\">|</span>.<span class=\"token operator\">></span>4e<span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token operator\">|</span>\n00000010  6c f7 <span class=\"token number\">51</span> 3a 6b 01 00 00  1e 00 02 00 e8 03 00 00  <span class=\"token operator\">|</span>l.Q:k<span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span>.<span class=\"token operator\">|</span>\n00000020  <span class=\"token number\">10</span> <span class=\"token number\">27</span> 00 00 c0 d4 01 00  c0 d4 01 00 e0 <span class=\"token number\">93</span> 04 00  <span class=\"token operator\">|</span><span class=\"token builtin class-name\">.</span><span class=\"token string\">'..............|\n00000030  c0 27 09 00 10 27 00 00                           |.'</span><span class=\"token punctuation\">..</span>.<span class=\"token string\">'..|\n00000038\n$ polyswarm cat 3b08ce97c512c695c0258c2d0fce86648a28cceb1ce98e0456413e339c7908e8 |od -An -t u1 -N 4|sed '</span>s/^ //<span class=\"token punctuation\">;</span>s/<span class=\"token punctuation\">\\</span>s<span class=\"token punctuation\">\\</span><span class=\"token punctuation\">{</span><span class=\"token number\">1</span>,<span class=\"token punctuation\">\\</span><span class=\"token punctuation\">}</span>/./g'\n<span class=\"token number\">195.62</span>.52.101</code></pre></div>\n<h2 id=\"chain-commands\" style=\"position:relative;\"><a href=\"#chain-commands\" aria-label=\"chain commands permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Chain commands</h2>\n<p>Some commands in the CLI are composable using the <code class=\"language-text\">sha256</code> format option and the unix pipe character <code class=\"language-text\">|</code>.\nFor instance, if we wanted to download all the results matching a metadata query:</p>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm --fmt sha256 search metadata <span class=\"token string\">'strings.domains:malicious.com'</span> <span class=\"token operator\">|</span> polyswarm download malicious -r -</code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">Successfully downloaded artifact 131f95c51cc819465fa1797f6ccacf9d494aaaff46fa3eac73ae63ffbdfd8267 to /home/user/malicious/131f95c51cc819465fa1797f6ccacf9d494aaaff46fa3eac73ae63ffbdfd8267</code></pre></div>\n<p>Or we may want to download the last new samples matched in Live Hunting for the last 1 hour:</p>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm --fmt sha256 live feed -s <span class=\"token number\">3600</span> <span class=\"token operator\">|</span> polyswarm download /tmp/download -r -</code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">Successfully downloaded artifact 513c197e7a88299b217dccc8fa16489c83d0abb06367eb2b14ef3a74102d7831 to /tmp/download/513c197e7a88299b217dccc8fa16489c83d0abb06367eb2b14ef3a74102d7831\nSuccessfully downloaded artifact 7aba0a7ff6e263591e33c5c5c644e0fa6a70d299beced8705983189ded448724 to /tmp/download/7aba0a7ff6e263591e33c5c5c644e0fa6a70d299beced8705983189ded448724\nSuccessfully downloaded artifact 2f4a9ef2071ee896674e3da1a870d4efab4bb16e2e26ea3d7543d98b614ceab9 to /tmp/download/2f4a9ef2071ee896674e3da1a870d4efab4bb16e2e26ea3d7543d98b614ceab9\nSuccessfully downloaded artifact a82dd93585094aeba4363c5aeedd1a85ef72c60a03738b25d452a5d895313875 to /tmp/download/a82dd93585094aeba4363c5aeedd1a85ef72c60a03738b25d452a5d895313875\nSuccessfully downloaded artifact b2d29bb9350a0df93d0918c0208af081f917129ee46544508f2e1cf30aa4f4ce to /tmp/download/b2d29bb9350a0df93d0918c0208af081f917129ee46544508f2e1cf30aa4f4ce\nSuccessfully downloaded artifact bf2cdd1dc2e20c42d2451c83b8280490879b3515aa6c15ab297419990e017142 to /tmp/download/bf2cdd1dc2e20c42d2451c83b8280490879b3515aa6c15ab297419990e017142\nSuccessfully downloaded artifact ba04eacaa80bb5da6b02e1e7fdf3775cf5a44a6179b2c142605e089d78a2f5b6 to /tmp/download/ba04eacaa80bb5da6b02e1e7fdf3775cf5a44a6179b2c142605e089d78a2f5b6\nSuccessfully downloaded artifact a7656ccba0946d25a4efd96f4f4576494d5f1e23e6ad2acc16d2e684656a2d4f to /tmp/download/a7656ccba0946d25a4efd96f4f4576494d5f1e23e6ad2acc16d2e684656a2d4f</code></pre></div>\n<h2 id=\"lookup-uuids\" style=\"position:relative;\"><a href=\"#lookup-uuids\" aria-label=\"lookup uuids permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Lookup UUIDs</h2>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm rules create eicar &lt;file.yara></code></p>\n<p><strong>Description:</strong> Scan results are referenced by their Submission UUID.</p>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$  polyswarm -vvv -o /tmp/test.json --fmt json lookup <span class=\"token number\">50446025732260182</span></code></pre></div>\n<blockquote>\n<p>In this example, we demonstrate the <code class=\"language-text\">--fmt json</code> option, which saves the output in json format.</p>\n</blockquote>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">info <span class=\"token punctuation\">[</span>polyswarm.base<span class=\"token punctuation\">]</span>: Running polyswarm-cli version <span class=\"token number\">2.0</span>.0 with polyswarm_api version <span class=\"token number\">2.0</span>.0\ndebug <span class=\"token punctuation\">[</span>polyswarm_api.api<span class=\"token punctuation\">]</span>: Creating PolyswarmAPI instance: api_key: cc2fdb7efa803cefcebd3c9750aab0ee, api_uri: https://api.polyswarm.network/v2, community: default\ndebug <span class=\"token punctuation\">[</span>polyswarm_api.http<span class=\"token punctuation\">]</span>: Creating PolyswarmHTTP instance\ndebug <span class=\"token punctuation\">[</span>polyswarm_api.endpoint<span class=\"token punctuation\">]</span>: Creating PolyswarmRequestGenerator instance\ndebug <span class=\"token punctuation\">[</span>polyswarm_api.endpoint<span class=\"token punctuation\">]</span>: Creating PolyswarmRequest instance.\ndebug <span class=\"token punctuation\">[</span>polyswarm_api.endpoint<span class=\"token punctuation\">]</span>: Request parameters: <span class=\"token punctuation\">{</span><span class=\"token string\">'method'</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">'GET'</span>, <span class=\"token string\">'url'</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">'https://api.polyswarm.network/v2/consumer/submission/default/50446025732260182'</span><span class=\"token punctuation\">}</span>\ndebug <span class=\"token punctuation\">[</span>polyswarm_api.endpoint<span class=\"token punctuation\">]</span>: Result parser: ArtifactInstance\ndebug <span class=\"token punctuation\">[</span>polyswarm_api.endpoint<span class=\"token punctuation\">]</span>: Executing request.\ndebug <span class=\"token punctuation\">[</span>urllib3.connectionpool<span class=\"token punctuation\">]</span>: Starting new HTTPS connection <span class=\"token punctuation\">(</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span>: api.polyswarm.network:443\ndebug <span class=\"token punctuation\">[</span>urllib3.connectionpool<span class=\"token punctuation\">]</span>: https://api.polyswarm.network:443 <span class=\"token string\">\"GET /v2/consumer/submission/default/50446025732260182 HTTP/1.1\"</span> <span class=\"token number\">200</span> None\ndebug <span class=\"token punctuation\">[</span>polyswarm_api.endpoint<span class=\"token punctuation\">]</span>: Request returned code <span class=\"token number\">200</span> with content:\ndebug <span class=\"token punctuation\">[</span>polyswarm_api.endpoint<span class=\"token punctuation\">]</span>: b<span class=\"token string\">'{\"result\":{\"artifact_id\":\"79510820469876527\",\"assertions\":[{\"author\":\"0x45b94B4AFE4E4B5Bd7f70B84919fba20f1FAfB3f\",\"author_name\":\"Qihoo 360\",\"bid\":\"1000000000000000000\",\"engine\":{\"description\":null,\"name\":\"Qihoo 360\"},\"mask\":true,\"metadata\":{\"malware_family\":\"qex.eicar.gen.gen\",\"scanner\":{\"environment\":{\"architecture\":\"AMD64\",\"operating_system\":\"Windows\"}}},\"verdict\":true},{\"author\":\"0xbec683492f5D509e119fB1B60543A1Ca595e0Df9\",\"author_name\":\"Lionic\",\"bid\":\"1000000000000000000\",\"engine\":{\"description\":null,\"name\":\"Lionic\"},\"mask\":true,\"metadata\":{\"malware_family\":\"\",\"scanner\":{\"environment\":{\"architecture\":\"AMD64\",\"operating_system\":\"Windows\"}}},\"verdict\":false},{\"author\":\"0x162675F361F6ff8D6F91e4833f4BA94587AF3655\",\"author_name\":\"XVirus\",\"bid\":\"812500000000000000\",\"engine\":{\"description\":null,\"name\":\"XVirus\"},\"mask\":true,\"metadata\":{\"malware_family\":\"\",\"scanner\":{\"environment\":{\"architecture\":\"AMD64\",\"operating_system\":\"Windows\"},\"vendor_version\":\"3.0.2.0\",\"version\":\"0.2.0\"}},\"verdict\":false},{\"author\":\"0x80Ed773972d8BA0A4FacF2401Aca5CEba52F76dc\",\"author_name\":\"Nucleon\",\"bid\":\"1000000000000000000\",\"engine\":{\"description\":\"Nucleon, The only provider that guarantees 0% false positive. using Nucleon unique offering organizations can reduce thier TCO dramtically and enjoy cyber intelligence like governments have.\",\"name\":\"Nucleon\"},\"mask\":true,\"metadata\":{\"malware_family\":\"\",\"scanner\":{\"environment\":{\"architecture\":\"x86_64\",\"operating_system\":\"Linux\"},\"vendor_version\":\"\",\"version\":\"0.1.0\"}},\"verdict\":false},{\"author\":\"0x8d80CEe474b9004949Cf7e4BfA28460AC8e370a1\",\"author_name\":\"Virusdie\",\"bid\":\"1000000000000000000\",\"engine\":{\"description\":null,\"name\":\"Virusdie\"},\"mask\":true,\"metadata\":{\"malware_family\":\"EICAR.TEST\",\"scanner\":{\"environment\":{\"architecture\":\"x86_64\",\"operating_system\":\"Linux\"},\"vendor_version\":\"1.3.0\",\"version\":\"0.3.0\"}},\"verdict\":true},{\"author\":\"0x7839aB10854505aBb712F10D1F66d45F359e6c89\",\"author_name\":\"Ikarus\",\"bid\":\"1000000000000000000\",\"engine\":{\"description\":null,\"name\":\"Ikarus\"},\"mask\":true,\"metadata\":{\"malware_family\":\"EICAR-Test-File\",\"scanner\":{\"environment\":{\"architecture\":\"x86_64\",\"operating_system\":\"Linux\"},\"signatures_version\":\"21.02.2020 13:15:46 (102417)\",\"vendor_version\":\"5.2.9.0\",\"version\":\"0.2.0\"}},\"verdict\":true},{\"author\":\"0x3750266F07E0590aA16e55c32e08e48878010f8f\",\"author_name\":\"ClamAV\",\"bid\":\"1000000000000000000\",\"engine\":{\"description\":null,\"name\":\"ClamAV\"},\"mask\":true,\"metadata\":{\"malware_family\":\"\",\"scanner\":{\"environment\":{\"architecture\":\"x86_64\",\"operating_system\":\"Linux\"},\"vendor_version\":\"ClamAV 0.101.4/25730/Fri Feb 21 12:08:06 2020\"}},\"verdict\":false},{\"author\":\"0x10A9eE8552f2c6b2787B240CeBeFc4A4BcB96f27\",\"author_name\":\"Alibaba\",\"bid\":\"1000000000000000000\",\"engine\":{\"description\":null,\"name\":\"Alibaba\"},\"mask\":true,\"metadata\":{\"malware_family\":\"\",\"scanner\":{\"environment\":{\"architecture\":\"AMD64\",\"operating_system\":\"Windows\"}},\"type\":\"eicar\"},\"verdict\":false},{\"author\":\"0xbE0B3ec289aaf9206659F8214c49D083Dc1a9E17\",\"author_name\":\"K7\",\"bid\":\"1000000000000000000\",\"engine\":{\"description\":null,\"name\":\"K7\"},\"mask\":true,\"metadata\":{\"malware_family\":\"EICAR_Test_File\",\"scanner\":{\"environment\":{\"architecture\":\"AMD64\",\"operating_system\":\"Windows\"},\"signatures_version\":\"11.95.33362, 21-Feb-2020\",\"vendor_version\":\"15.2.0.42\",\"version\":\"0.2.0\"}},\"verdict\":true},{\"author\":\"0x2b4C240B376E5406C5e2559C27789d776AE97EFD\",\"author_name\":\"NanoAV\",\"bid\":\"1000000000000000000\",\"engine\":{\"description\":null,\"name\":\"NanoAV\"},\"mask\":true,\"metadata\":{\"malware_family\":\"Marker.Dos.EICAR-Test-File.dyb\",\"scanner\":{\"environment\":{\"architecture\":\"AMD64\",\"operating_system\":\"Windows\"},\"signatures_version\":\"0.14.33.17090\",\"vendor_version\":\"1.0.134.90567\",\"version\":\"0.1.0\"}},\"verdict\":true},{\"author\":\"0xb9b1FA288F7b1867AEF6C044CDE12ab2De252113\",\"author_name\":\"VenusEye\",\"bid\":\"812500000000000000\",\"engine\":{\"description\":null,\"name\":\"VenusEye\"},\"mask\":true,\"metadata\":{\"malware_family\":\"\",\"scanner\":{\"environment\":{\"architecture\":\"x86_64\",\"operating_system\":\"Linux\"},\"version\":\"0.1.0\"}},\"verdict\":false},{\"author\":\"0xBAFcaF4504FCB3608686b40eB1AEe09Ae1dd2bc3\",\"author_name\":\"DrWeb\",\"bid\":\"1000000000000000000\",\"engine\":{\"description\":null,\"name\":\"DrWeb\"},\"mask\":true,\"metadata\":{\"malware_family\":\"EICAR Test File (NOT a Virus!)\",\"scanner\":{\"environment\":{\"architecture\":\"x86_64\",\"operating_system\":\"Linux\"},\"signatures_version\":\"864BFD34E93FFC1BEFC260DAE804EFAF, 2020-Feb-21 16:59:42\",\"vendor_version\":\"7.00.44.12030\",\"version\":\"0.3.0\"}},\"verdict\":true}],\"community\":\"lima\",\"country\":\"US\",\"created\":\"2020-02-21T19:21:59.196578\",\"extended_type\":\"EICAR virus test files\",\"failed\":false,\"filename\":\"malicious.txt\",\"first_seen\":\"2020-01-24T21:56:21.456900\",\"id\":\"50446025732260182\",\"last_seen\":\"2020-02-21T19:21:59.196578\",\"md5\":\"a6a57bf20416a4c712c4a1eabcaeb235\",\"metadata\":[{\"created\":\"2020-02-20T22:29:45.801434\",\"tool\":\"strings\",\"tool_metadata\":{\"domains\":[],\"ipv4\":[],\"ipv6\":[],\"urls\":[]}},{\"created\":\"2020-02-20T22:29:45.675692\",\"tool\":\"hash\",\"tool_metadata\":{\"md5\":\"a6a57bf20416a4c712c4a1eabcaeb235\",\"sha1\":\"a33fb79e9c71f1b446607d437a1984602ed47d5c\",\"sha256\":\"89b7a034846a917f7f31a22778ffe04caa3c22136d0e12d1676cfd41a889b6bf\",\"sha3_256\":\"ab1256000f634456fac4fe42bbc0bf39256e4bab954dc8c8f241433d07895fad\",\"sha3_512\":\"737ec00fa15de1defdca9993c7d95058c2f30b658ef66c8b978287c1042d7ba7283d8d1130c356fbb8058bd739c5e349169ad93f4f428a830720ee107c6df288\",\"sha512\":\"2f79598bc355b385be7c7b785ec74073bf4b59b8095c1b1f7291e0dd04e5e140f700bcc583809ec63d6d98991698273c1678bd3399ec0b1b8ba9f60be151ec3b\",\"ssdeep\":\"3:a+JraNvsgzsVqSwHqajaBFSdYSDQ1SBWfQdRXn:tJuOgzskCStDmidRX\",\"tlsh\":\"ccc09b867e1dfda6530b44510171b5771829575d1de4053421d1f0f4dd677dc43741f8\"}}],\"mimetype\":\"text/plain\",\"polyscore\":0.07193209420451106,\"result\":null,\"sha1\":\"a33fb79e9c71f1b446607d437a1984602ed47d5c\",\"sha256\":\"89b7a034846a917f7f31a22778ffe04caa3c22136d0e12d1676cfd41a889b6bf\",\"size\":132,\"type\":\"FILE\",\"votes\":[{\"arbiter\":\"0xB63cD054D7E63D9Ce8AbB403a0dfa11b26A1fB89\",\"vote\":false},{\"arbiter\":\"0xd8b48Da78188312c5fC079E532afd48De973767E\",\"vote\":true},{\"arbiter\":\"0xdC6a0F9C3AF726Ba05AaC14605Ac9B3b958512d7\",\"vote\":false}],\"window_closed\":true},\"status\":\"OK\"}\\n'</span>\ndebug <span class=\"token punctuation\">[</span>polyswarm_api.endpoint<span class=\"token punctuation\">]</span>: Parsing request results.\ndebug <span class=\"token punctuation\">[</span>polyswarm_api.types.base<span class=\"token punctuation\">]</span>: Parsing resource ArtifactInstance</code></pre></div>\n<p>For information regarding the JSON format of a result object, please see <a href=\"https://github.com/polyswarm/polyswarm-api/blob/master/API.md#json-format\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">polyswarm_api's API.md</a>.</p>\n<h2 id=\"notification-webhooks\" style=\"position:relative;\"><a href=\"#notification-webhooks\" aria-label=\"notification webhooks permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Notification Webhooks</h2>\n<p>Notification webhooks allow you to receive real-time notifications for events in PolySwarm, such as when sandbox analysis completes.</p>\n<h3 id=\"create-a-notification-webhook\" style=\"position:relative;\"><a href=\"#create-a-notification-webhook\" aria-label=\"create a notification webhook permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Create a Notification Webhook</h3>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm webhook create &lt;WEBHOOK_URI> &lt;SECRET></code></p>\n<p><strong>Description:</strong> Create a new notification webhook to receive notifications from PolySwarm events.</p>\n<p><strong>Options</strong></p>\n<table>\n<thead>\n<tr>\n<th>Option</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">--status</code></td>\n<td>string</td>\n<td>false</td>\n<td>Notification webhook status: 'enabled' or 'disabled' (default: enabled)</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">--events</code></td>\n<td>string</td>\n<td>false</td>\n<td>Event types to subscribe to (can be specified multiple times)</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm webhook create https://example.com/webhook your-secret-key --status enabled --events sandbox_done</code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span> Notification Webhook <span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span>\nID: <span class=\"token number\">12345</span>\nWebhook URI: https://example.com/webhook\nStatus: enabled\nEvents: sandbox_done\nCreated: <span class=\"token number\">2024</span>-01-15T10:30:00+00:00</code></pre></div>\n<h3 id=\"get-a-notification-webhook\" style=\"position:relative;\"><a href=\"#get-a-notification-webhook\" aria-label=\"get a notification webhook permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Get a Notification Webhook</h3>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm webhook get &lt;WEBHOOK_ID></code></p>\n<p><strong>Description:</strong> Retrieve details about a specific notification webhook by its ID.</p>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm webhook get <span class=\"token number\">12345</span></code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span> Notification Webhook <span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span>\nID: <span class=\"token number\">12345</span>\nWebhook URI: https://example.com/webhook\nStatus: enabled\nEvents: sandbox_done\nCreated: <span class=\"token number\">2024</span>-01-15T10:30:00+00:00</code></pre></div>\n<h3 id=\"update-a-notification-webhook\" style=\"position:relative;\"><a href=\"#update-a-notification-webhook\" aria-label=\"update a notification webhook permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Update a Notification Webhook</h3>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm webhook update &lt;WEBHOOK_ID> [OPTIONS]</code></p>\n<p><strong>Description:</strong> Update an existing notification webhook’s configuration.</p>\n<p><strong>Options</strong></p>\n<table>\n<thead>\n<tr>\n<th>Option</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">--webhook-uri</code></td>\n<td>string</td>\n<td>false</td>\n<td>The new notification webhook URI</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">--secret</code></td>\n<td>string</td>\n<td>false</td>\n<td>The new secret for HMAC signing</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">--status</code></td>\n<td>string</td>\n<td>false</td>\n<td>The new status: 'enabled' or 'disabled'</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">--events</code></td>\n<td>string</td>\n<td>false</td>\n<td>Event types to subscribe to (can be specified multiple times)</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm webhook update <span class=\"token number\">12345</span> --webhook-uri https://newexample.com/webhook --status disabled</code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span> Notification Webhook <span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span>\nID: <span class=\"token number\">12345</span>\nWebhook URI: https://newexample.com/webhook\nStatus: disabled\nEvents: sandbox_done\nCreated: <span class=\"token number\">2024</span>-01-15T10:30:00+00:00</code></pre></div>\n<h3 id=\"delete-a-notification-webhook\" style=\"position:relative;\"><a href=\"#delete-a-notification-webhook\" aria-label=\"delete a notification webhook permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Delete a Notification Webhook</h3>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm webhook delete &lt;WEBHOOK_ID></code></p>\n<p><strong>Description:</strong> Delete a notification webhook permanently.</p>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm webhook delete <span class=\"token number\">12345</span></code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">Webhook <span class=\"token number\">12345</span> deleted successfully</code></pre></div>\n<h3 id=\"list-all-notification-webhooks\" style=\"position:relative;\"><a href=\"#list-all-notification-webhooks\" aria-label=\"list all notification webhooks permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>List All Notification Webhooks</h3>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm webhook list</code></p>\n<p><strong>Description:</strong> List all notification webhooks configured for the current account.</p>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm webhook list</code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span> Notification Webhook <span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span>\nID: <span class=\"token number\">12345</span>\nWebhook URI: https://example.com/webhook\nStatus: enabled\nEvents: sandbox_done\nCreated: <span class=\"token number\">2024</span>-01-15T10:30:00+00:00\n\n<span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span> Notification Webhook <span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">==</span><span class=\"token operator\">=</span>\nID: <span class=\"token number\">67890</span>\nWebhook URI: https://another-example.com/webhook\nStatus: enabled\nEvents: sandbox_done\nCreated: <span class=\"token number\">2024</span>-01-16T14:22:00+00:00</code></pre></div>\n<h3 id=\"test-a-notification-webhook\" style=\"position:relative;\"><a href=\"#test-a-notification-webhook\" aria-label=\"test a notification webhook permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Test a Notification Webhook</h3>\n<p><strong>Format:</strong> <code class=\"language-text\">polyswarm webhook test &lt;WEBHOOK_ID></code></p>\n<p><strong>Description:</strong> Test a notification webhook by sending a test payload to verify it's working correctly.</p>\n<p><strong>Request</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ polyswarm webhook <span class=\"token builtin class-name\">test</span> <span class=\"token number\">12345</span></code></pre></div>\n<p><strong>Response</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">Test payload sent to webhook <span class=\"token number\">12345</span></code></pre></div>\n<h2 id=\"changelog\" style=\"position:relative;\"><a href=\"#changelog\" aria-label=\"changelog permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Changelog</h2>\n<h4 id=\"version-3150\" style=\"position:relative;\"><a href=\"#version-3150\" aria-label=\"version 3150 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Version 3.15.0</h4>\n<p><strong>Release Date:</strong> 2026-01-28\n<strong>Breaking Changes:</strong> N/A</p>\n<table>\n<thead>\n<tr>\n<th>Item</th>\n<th>Topic</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1.0</td>\n<td>Notification Webhooks</td>\n<td>New endpoint <code class=\"language-text\">notification webhook</code> for creating a notification webhook.</td>\n</tr>\n<tr>\n<td>2.0</td>\n<td>llm reports</td>\n<td>New endpoints for creating llm reports: <code class=\"language-text\">llm-create</code>, <code class=\"language-text\">llm-download</code> and <code class=\"language-text\">llm-get</code></td>\n</tr>\n<tr>\n<td>3.0</td>\n<td>Private Community Expire</td>\n<td>New Options for Scan, to Expire files in a Private Community on Upload, <code class=\"language-text\">--expiration-window</code>.</td>\n</tr>\n</tbody>\n</table>\n<h4 id=\"version-3110\" style=\"position:relative;\"><a href=\"#version-3110\" aria-label=\"version 3110 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Version 3.11.0</h4>\n<p><strong>Release Date:</strong> 2025-06-02\n<strong>Breaking Changes:</strong> N/A</p>\n<table>\n<thead>\n<tr>\n<th>Item</th>\n<th>Topic</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1.0</td>\n<td>New Param for Sandbox File</td>\n<td>New <code class=\"language-text\">--arguments</code> for <code class=\"language-text\">sandbox file</code></td>\n</tr>\n</tbody>\n</table>\n<h4 id=\"version-3100\" style=\"position:relative;\"><a href=\"#version-3100\" aria-label=\"version 3100 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Version 3.10.0</h4>\n<p><strong>Release Date:</strong> 2025-05-20\n<strong>Breaking Changes:</strong> N/A</p>\n<table>\n<thead>\n<tr>\n<th>Item</th>\n<th>Topic</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1.0</td>\n<td>New Argument for Sandbox my-tasks</td>\n<td><code class=\"language-text\">sandbox my-tasks</code> supports <code class=\"language-text\">--user-account-id</code> argument</td>\n</tr>\n<tr>\n<td>2.0</td>\n<td>New Feature, Download Sample Bundle Zips</td>\n<td>Ability to bundle files into a single zip to download, via <code class=\"language-text\">bundle create</code></td>\n</tr>\n<tr>\n<td>3.0</td>\n<td>New Feature, Download artifacts created by a Sandbox Task</td>\n<td>Ability to download files like Sandbox Tasks report files, via <code class=\"language-text\">download-sandbox-artifact SANDBOX_TASK_ID [INSTANCE_ID]...</code></td>\n</tr>\n</tbody>\n</table>\n<h4 id=\"version-390\" style=\"position:relative;\"><a href=\"#version-390\" aria-label=\"version 390 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Version 3.9.0</h4>\n<p><strong>Release Date:</strong> 2024-12-09\n<strong>Breaking Changes:</strong> N/A</p>\n<table>\n<thead>\n<tr>\n<th>Item</th>\n<th>Topic</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1.0</td>\n<td>\"Backing Feature\" field</td>\n<td>Show in the features details the new field if it's set when executing <code class=\"language-text\">polyswarm account features</code>.</td>\n</tr>\n<tr>\n<td>2.0</td>\n<td>Bug Fix errors</td>\n<td>Fix errors when serializing some API responses.</td>\n</tr>\n</tbody>\n</table>\n<h4 id=\"version-381\" style=\"position:relative;\"><a href=\"#version-381\" aria-label=\"version 381 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Version 3.8.1</h4>\n<p><strong>Release Date:</strong> 2024-09-24\n<strong>Breaking Changes:</strong> N/A</p>\n<table>\n<thead>\n<tr>\n<th>Item</th>\n<th>Topic</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1.0</td>\n<td>Updated Validation URL</td>\n<td>Less strict validation on URLs provided as an argument when scanning and sandboxing.</td>\n</tr>\n<tr>\n<td>2.0</td>\n<td>Error Reporting</td>\n<td>Scans and Sandboxing now shows the Faliure Reason if applicable in the cli response.</td>\n</tr>\n<tr>\n<td>3.0</td>\n<td>Bug Fix Sandbox</td>\n<td>Fixed exception when sandbox doesn't have the <code class=\"language-text\">config.artifact_type</code> field set.</td>\n</tr>\n</tbody>\n</table>\n<h4 id=\"version-380\" style=\"position:relative;\"><a href=\"#version-380\" aria-label=\"version 380 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Version 3.8.0</h4>\n<p><strong>Release Date:</strong> 2024-08-07</p>\n<p><strong>Breaking Changes:</strong> Item 5.0</p>\n<table>\n<thead>\n<tr>\n<th>Item</th>\n<th>Topic</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1.0</td>\n<td>Submit URL from QR Code images</td>\n<td>New arg <code class=\"language-text\">--qrcode-file</code> in <code class=\"language-text\">polyswarm scan url</code> and <code class=\"language-text\">polyswarm sandbox url</code></td>\n</tr>\n<tr>\n<td>2.0</td>\n<td>Get basic account's information</td>\n<td>New command <code class=\"language-text\">polyswarm account whois</code>.</td>\n</tr>\n<tr>\n<td>3.0</td>\n<td>Get account's features and quota available</td>\n<td>New command <code class=\"language-text\">polyswarm account features</code>.</td>\n</tr>\n<tr>\n<td>4.0</td>\n<td>New options to create zip reports</td>\n<td><code class=\"language-text\">polyswarm report create [--sandbox_artifact_types --zip-report-ids]</code></td>\n</tr>\n<tr>\n<td>5.0</td>\n<td>Rename command argument</td>\n<td><code class=\"language-text\">--sandbox</code> argument is renamed to <code class=\"language-text\">--provider</code>.</td>\n</tr>\n</tbody>\n</table>\n<h4 id=\"version-370\" style=\"position:relative;\"><a href=\"#version-370\" aria-label=\"version 370 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Version 3.7.0</h4>\n<p><strong>Release Date:</strong> 2024-06-27</p>\n<p><strong>Breaking Changes:</strong> N/A</p>\n<table>\n<thead>\n<tr>\n<th>Item</th>\n<th>Topic</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1.0</td>\n<td>Wait and download reports</td>\n<td>New <code class=\"language-text\">--nowait</code>, <code class=\"language-text\">--timeout</code> and <code class=\"language-text\">--destination</code> arguments in the <code class=\"language-text\">report</code> command.</td>\n</tr>\n<tr>\n<td>2.0</td>\n<td>Support zip file submissions</td>\n<td>New <code class=\"language-text\">--is-zip</code> and <code class=\"language-text\">--zip-password</code> arguments in <code class=\"language-text\">scan</code> and <code class=\"language-text\">sandbox</code> commands.</td>\n</tr>\n</tbody>\n</table>\n<h4 id=\"version-360\" style=\"position:relative;\"><a href=\"#version-360\" aria-label=\"version 360 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Version 3.6.0</h4>\n<p><strong>Release Date:</strong> 2024-05-20</p>\n<p><strong>Breaking Changes:</strong> Item 3.0</p>\n<table>\n<thead>\n<tr>\n<th>Item</th>\n<th>Topic</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1.0</td>\n<td>Reports Generation</td>\n<td>Introduction of reports generation via the <code class=\"language-text\">report</code> CLI command.</td>\n</tr>\n<tr>\n<td>2.0</td>\n<td>Reports Templates</td>\n<td>Introduction of reports templates management via the <code class=\"language-text\">report-template</code> CLI command.</td>\n</tr>\n<tr>\n<td>3.0</td>\n<td>Python versions supported</td>\n<td>Minimal Python version supported is 3.7.</td>\n</tr>\n</tbody>\n</table>\n<h4 id=\"version-352\" style=\"position:relative;\"><a href=\"#version-352\" aria-label=\"version 352 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Version 3.5.2</h4>\n<p><strong>Release Date:</strong> 2024-02-22</p>\n<p><strong>Breaking Changes:</strong> N/A</p>\n<table>\n<thead>\n<tr>\n<th>Item</th>\n<th>Topic</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1.0</td>\n<td>URL Sandboxing</td>\n<td>Introduction of URL Sandboxing via the <code class=\"language-text\">sandbox url</code> cli command.</td>\n</tr>\n</tbody>\n</table>\n<h4 id=\"version-351\" style=\"position:relative;\"><a href=\"#version-351\" aria-label=\"version 351 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Version 3.5.1</h4>\n<p><strong>Release Date:</strong> 2023-12-06</p>\n<p><strong>Breaking Changes:</strong> 1.0</p>\n<table>\n<thead>\n<tr>\n<th>Item</th>\n<th>Topic</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1.0</td>\n<td>IOC Search - Hash</td>\n<td>Previously ioc search by hash returned a Generator, which was not correct. This fix has resolved this issue, to prevent the <code class=\"language-text\">has_more</code> flag being returned.</td>\n</tr>\n</tbody>\n</table>\n<h4 id=\"version-341\" style=\"position:relative;\"><a href=\"#version-341\" aria-label=\"version 341 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Version 3.4.1</h4>\n<p><strong>Release Date:</strong> 2023-09-20</p>\n<p><strong>Breaking Changes:</strong> N/A</p>\n<table>\n<thead>\n<tr>\n<th>Item</th>\n<th>Topic</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1.0</td>\n<td>Added Private Parameter to Live Results</td>\n<td>Added parameter <code class=\"language-text\">--private</code> to <code class=\"language-text\">polyswarm live feed</code> to allow you to see results from a private community.</td>\n</tr>\n<tr>\n<td>2.0</td>\n<td>Added Private Parameter to Historical Results</td>\n<td>Added parameter <code class=\"language-text\">--private</code> to <code class=\"language-text\">polyswarm historical results</code> to allow you to see results from a private community.</td>\n</tr>\n<tr>\n<td>3.0</td>\n<td>New Permalink Structure</td>\n<td>New Permalink Structure</td>\n</tr>\n</tbody>\n</table>\n<h4 id=\"version-340\" style=\"position:relative;\"><a href=\"#version-340\" aria-label=\"version 340 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Version 3.4.0</h4>\n<p><strong>Release Date:</strong> 2023-07-12</p>\n<p><strong>Breaking Changes:</strong> N/A</p>\n<table>\n<thead>\n<tr>\n<th>Item</th>\n<th>Topic</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1.0</td>\n<td><code class=\"language-text\">polyswarm sandbox providers</code></td>\n<td>New output with provider and slug information.</td>\n</tr>\n<tr>\n<td>2.0</td>\n<td>Update to <code class=\"language-text\">polyswarm sandbox file</code></td>\n<td>Added new config arguments <code class=\"language-text\">provider_slug</code> and <code class=\"language-text\">vm_slug</code>.</td>\n</tr>\n<tr>\n<td>3.0</td>\n<td>Update to <code class=\"language-text\">polyswarm sandbox instance</code></td>\n<td>Added new config arguments <code class=\"language-text\">provider_slug</code> and <code class=\"language-text\">vm_slug</code>.</td>\n</tr>\n</tbody>\n</table>\n<h4 id=\"version-330\" style=\"position:relative;\"><a href=\"#version-330\" aria-label=\"version 330 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Version 3.3.0</h4>\n<p><strong>Release Date:</strong> 2023-06-20</p>\n<p><strong>Breaking Changes:</strong> Item 2.0</p>\n<table>\n<thead>\n<tr>\n<th>Item</th>\n<th>Topic</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1.0</td>\n<td>Dropping python 2.7 support</td>\n<td>-</td>\n</tr>\n<tr>\n<td>2.0</td>\n<td>polyswarm sandbox submit changes</td>\n<td>Change <code class=\"language-text\">polyswarm sandbox submit</code> to <code class=\"language-text\">polyswarm sandbox instance</code>.</td>\n</tr>\n<tr>\n<td>3.0</td>\n<td>polyswarm sandbox list changes</td>\n<td>Change <code class=\"language-text\">polyswarm sandbox list</code> to <code class=\"language-text\">polyswarm sandbox providers</code>.</td>\n</tr>\n<tr>\n<td>4.0</td>\n<td>Additional Sub-Commands for Sandbox</td>\n<td>lookup, lookup-id, search, file, my-tasks.</td>\n</tr>\n</tbody>\n</table>\n<h4 id=\"version-321\" style=\"position:relative;\"><a href=\"#version-321\" aria-label=\"version 321 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Version 3.2.1</h4>\n<p><strong>Release Date:</strong> 2023-05-29</p>\n<p><strong>Breaking Changes:</strong> N/A</p>\n<table>\n<thead>\n<tr>\n<th>Item</th>\n<th>Topic</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1.0</td>\n<td>Bug fix for <code class=\"language-text\">search ioc</code></td>\n<td>Fix an issue with results not displaying with the <code class=\"language-text\">polyswarm search ioc</code> command.</td>\n</tr>\n</tbody>\n</table>","rawMarkdownBody":"\n# PolySwarm Customer CLI v3\n\nA Command Line Interface tool for interacting with version 3 of the PolySwarm Customer APIs.\n\nSupports Python 3.7 and later.\n\n## Getting Started {#getting-started}\n\n### Installation\n\nFrom PyPI:\n\n```bash\n$ pip install polyswarm\n```\n\n> If you get an error about a missing package named `wheel`, that means your version of pip is too old.\n> You need pip version 19 or newer.\n> To update pip, run `pip install -U pip`.\n\nFrom source:\n\n```bash\n$ python setup.py install\n```\n\n> If you get an error about a missing package named `wheel`, that means your version of setuptools is too old.\n> You need setuptools version 40.8.0 or newer.\n> To update setuptools, run `pip install -U setuptools`.\n\n### Upgrade\n\n1. Check the current version installed\n```bash\n$ pip3 list | grep polyswarm\n```\n*Response Example:*\n``` polyswarm          3.1.0``` and ``` polyswarm_api      3.1.1 ```\n\n2. Upgrade the PolySwarm Package\n```bash\n$ pip3 install -U polyswarm polyswarm_api\n```\n\n3. Confirm the upgraded version\n```bash\n$ pip3 list | grep polyswarm\n```\n*Response Example:*\n``` polyswarm          3.9.0``` and ```polyswarm_api      3.11.0```\n\n### Configuration\n\nSeveral parameters can be set up Globally in your environment instead of defining these with each command.\n\nSet your API key\n```bash\n$ export POLYSWARM_API_KEY=<Your API key from polyswarm.network>\n```\n> You will need to get your own API key from [`polyswarm.network/account/api-keys`](https://polyswarm.network/account/api-keys)\n\nSet the community name: \"default\" is the default public community.\n```bash\n$ export POLYSWARM_COMMUNITY=default\n```\n> You can define your own private community name replacing the default community above if you have this feature on your plan.\n\nEnable tab completion\n```bash\n$ eval \"$(_POLYSWARM_COMPLETE=source polyswarm)\"\n```\n\n## Using the PolySwarm CLI {#usage}\n\n### General Usage\n\nThe `polyswarm` command has several sub-commands.\nYou can run the command or a sub-command by itself or use the `-h` option to get help output.\n\n**Request**\n``` bash\n$ polyswarm -h\n```\n\n**Response**\n```\nUsage: polyswarm [OPTIONS] COMMAND [ARGS]...\n\n  This is a PolySwarm CLI client, which allows you to interact directly with\n  the PolySwarm network to scan files, search hashes, and more.\n\nOptions:\n  -a, --api-key TEXT              Your API key for polyswarm.network\n                                  (required).  [env var: POLYSWARM_API_KEY]\n\n  -u, --api-uri TEXT              The API endpoint (ADVANCED).  [env var:\n                                  POLYSWARM_API_URI]\n\n  -o, --output-file FILENAME      Path to output file.\n  --output-format, --fmt [text|json|pretty-json|sha256|sha1|md5]\n                                  Output format. Human-readable text or JSON.\n  --color / --no-color            Use colored output in text mode.\n  -v, --verbose\n  -c, --community TEXT            Community to use.  [env var:\n                                  POLYSWARM_COMMUNITY]\n\n  --parallel INTEGER              Number of threads to be used in parallel\n                                  http requests.\n\n  --verify / --no-verify          Verify TLS connections.\n  --version                       Show the version and exit.\n  --api-version                   Show the version and exit.\n  -h, --help                      Show this message and exit.\n\nCommands:\n  account          Interact with Accounts in Polyswarm.\n  activity         Interact with Yara Rules stored in Polyswarm.\n  cat              Output artifact contents to stdout.\n  download         Download file(s).\n  download-id      Download file(s).\n  engine           Interact with engines.\n  family           Interact with Malware Families in Polyswarm.\n  historical       Interact with historical hunts.\n  known            Interact with known ioc api.\n  link             Interact with Tag links in Polyswarm.\n  live             Interact with live hunts.\n  lookup           Lookup a scan id(s).\n  metadata         Interact with Metadata in Polyswarm.\n  providers        List the names of available sandbox providers and VMs.\n  report           Interact with the Polyswarm reporting system.\n  report-template  Interact with the Polyswarm reporting templates system.\n  rescan           Rescan files(s) by hash.\n  rescan-id        Rescan by scan id.\n  rules            Interact with Yara Rules stored in Polyswarm.\n  sandbox          Interact with the Polyswarm sandbox system.\n  scan             Interact with Scans sent to Polyswarm.\n  search           Interact search api.\n  stream           Access the polyswarm file stream.\n  tag              Interact with Tags in Polyswarm.\n  wait             Wait for a  scan to finish.\n```\n### Further Usage Details\n\nThe command line structure is split into several sections; further details for the most used options and arguments are listed below. '[OPTIONS]' can be used in combination with a number of [COMMANDS].\n\n``polyswarm [OPTIONS] COMMAND [ARGS]...``\n\n**``[OPTIONS] ``**\n* `-a` api key, overrides the  global setting of the api key, useful for moving between the default public community and the private community.\n* `–fmt` Define an output format of the returned results; available outputs include `json`, `pretty-json` and `sha256` values. This –fmt is optional; if not defined, it defaults to the engine verdict and artifact details.\n* `-o` output the returned results of the command to a file path of choice\n* `-v` Verbose allows for debugging and viewing the API/HTTP request\n\n**``[COMMANDS]``**\n\nThese will be listed in the following chapters but are hierarchical in structure. Each main command will have a sub-command most of the time; these sub-command options can be found with the command `polyswarm <command> -h`.\n\nFor example, `polyswarm search -h` will list the available sub-commands for the command `search`\n\n**``[ARGS] ``**\n\nMost commands require one or more Parameters; these could be IPs, URLs, Artifact ID, or a Hunt ID.\n\nStill, the possibilities are significant with commands like metadata, allowing the ability to search through many fields. The Searching Metadata section will review these in further detail.\n\n### Retrieve account information\n\n#### Account details\n\n**Format:** ```polyswarm account whois```\n\n**Description:** Command to show information for your account, this includes what teams you are part of and account numbers.\n\n**Request**\n```bash\n$ polyswarm account whois\n```\n\n**Response**\n```bash\nAccount Number: 123456789\nUser Account Number: 987654321\nAccount Name: PolySwarm Demo\nAccount Type: team\nTenant: polyswarm\nCommunities: pcdemo\n```\n\n#### Account features and quotas\n\n**Format:** ```polyswarm account features```\n\n**Description:** Command to show the features enabled and disabled for your account and team, quota usage and other details.\n\n**Request**\n```bash\n$ polyswarm account features\n```\n\n**Response**\n```bash\n========================= Account Plan =========================\nAccount Number: 123456789\nUser Account Number: 987654321\nTenant: polyswarm\nAccount Plan Name: Enterprise\nPlan Period Start: 2024-01-02T10:54:51.631182+00:00\nPlan Period End: 2026-01-15T00:00:00+00:00\nWindow Start: 2024-07-30T10:54:51.631182+00:00\nWindow End: 2024-08-29T10:54:51.631182+00:00\nDaily API Limit: 12,500\nDaily API Remaining: 11,000\nHas Stream Access?: No\nIs Trial?: No\n\n================== Account Features and Quota ==================\nName: Daily Api Limit\nTag: daily_api_limit\nValue: True\n---\n.......\n```\n\n## Private Communities {#pc}\nPolySwarm offers a service called “Private Communities” that restricts artifacts submitted into a Private Community and any metadata from the artifact to be accessible only by members of the private community and not to the wider public PolySwarm community.\n\nCurrently, once Private Communities has been enabled for your Team Account, it can be used via the API and CLI.\n\nWhile setting up the environment as highlighted in the section \"Configuration\", you can set the `API Key` and `Community` to relate to the Team and Private Community Name going forward.\n\nAlternatively, all cli commands discussed in this section support Private Communities, and to use this function, two options need to be fed into the `[OPTIONS]`.\n\n* `-a` - Define the Team API Key that has access to the Private Community, to get the key see [here](https://polyswarm.network/account/api-keys)\n* `--community` - Input the name of the Private Community, this will have been provided by the PolySwarm Team. If you omit the `--community` option from a CLI command, it will first look for the `POLYSWARM_COMMUNITY` variable in your environment, and if that is not defined, it will use the default public community.\n\n**Request Example**\n``` bash\npolyswarm -a 1234123412341234123412341234 --community mypc --fmt sha256 search metadata 'artifact.created:>now-1000d '\n```\n\n## Scanning an Artifact {#scanning-artifacts}\n\n#### Scan a File\n\n**Format:** ```polyswarm scan file <file>```\n\n**Description:** Command to scan a local file with PolySwarm to retrieve engine verdict details.\n\n**Options**\n\n| Option                 | Type    | Required | Description                                                        |\n|------------------------|---------|----------|--------------------------------------------------------------------|\n| `-r`, `--recursive`    | -       | false    | Scan directories recursively                                       |\n| `-t`, `--timeout`      | integer | false    | How long to wait for results (default:900)                         |\n| `-z`, `--is-zip`       | bool    | false    | Will handle the provided file as a zip and decompress server side. |\n| `-p`, `--zip-password` | string  | false    | Used to provide a password to decompress the zip file with.        |\n| `-e`, `--expiration-window` | INTEGER  | false    | Applies to Private Communities only and affects new uploads. After the configured number of days, the binary file is deleted, but the metadata remains available, so the hash can still be searched. Must be `30` or `180`. |\n| `-n`,  `--nowait`      | -       | false    | Does not wait for the scan window to close                         |\n| `-b`, `--is-base64`    | -       | false    | Will handle the provided file as containingbase64-encoded content to decode server-side. |\n| `--is-7zip`       | -       | false    |   Will handle the provided file as a 7zip archive and decompress server-side.   |\n| `--sevenzip-password`      | string       | false    | Will use this password to decompress the 7zip file. If provided, will handle the file as a 7zip.  |\n| `-s`, `--scan-config`  | string  | false    | Template to be used in the scan i.e. default, more-time, most-time |\n\n**Request**\n```bash\n$ polyswarm scan file /tmp/eicar\n```\n**Response**\n```bash\n============================= Artifact Instance =============================\nScan permalink: https://polyswarm.network/scan/results/file/89b7a034846a917f7f31a22778ffe04caa3c22136d0e12d1676cfd41a889b6bf\nDetections: 6/12 engines reported malicious\n\tQihoo 360: Malicious, metadata: {\"malware_family\": \"qex.eicar.gen.gen\", \"scanner\": {\"environment\": {\"architecture\": \"AMD64\", \"operating_system\": \"Windows\"}}}\n\tLionic: Clean\n\tXVirus: Clean\n\tNucleon: Clean\n\tVirusdie: Malicious, metadata: {\"malware_family\": \"EICAR.TEST\", \"scanner\": {\"environment\": {\"architecture\": \"x86_64\", \"operating_system\": \"Linux\"}, \"vendor_version\": \"1.3.0\", \"version\": \"0.3.0\"}}\n\tIkarus: Malicious, metadata: {\"malware_family\": \"EICAR-Test-File\", \"scanner\": {\"environment\": {\"architecture\": \"x86_64\", \"operating_system\": \"Linux\"}, \"signatures_version\": \"21.02.2020 13:15:46 (102417)\", \"vendor_version\": \"5.2.9.0\", \"version\": \"0.2.0\"}}\n\tClamAV: Clean\n\tAlibaba: Clean\n\tK7: Malicious, metadata: {\"malware_family\": \"EICAR_Test_File\", \"scanner\": {\"environment\": {\"architecture\": \"AMD64\", \"operating_system\": \"Windows\"}, \"signatures_version\": \"11.95.33362, 21-Feb-2020\", \"vendor_version\": \"15.2.0.42\", \"version\": \"0.2.0\"}}\n\tNanoAV: Malicious, metadata: {\"malware_family\": \"Marker.Dos.EICAR-Test-File.dyb\", \"scanner\": {\"environment\": {\"architecture\": \"AMD64\", \"operating_system\": \"Windows\"}, \"signatures_version\": \"0.14.33.17090\", \"vendor_version\": \"1.0.134.90567\", \"version\": \"0.1.0\"}}\n\tVenusEye: Clean\n\tDrWeb: Malicious, metadata: {\"malware_family\": \"EICAR Test File (NOT a Virus!)\", \"scanner\": {\"environment\": {\"architecture\": \"x86_64\", \"operating_system\": \"Linux\"}, \"signatures_version\": \"864BFD34E93FFC1BEFC260DAE804EFAF, 2020-Feb-21 16:59:42\", \"vendor_version\": \"7.00.44.12030\", \"version\": \"0.3.0\"}}\nScan id: 50446025732260182\nSHA256: 89b7a034846a917f7f31a22778ffe04caa3c22136d0e12d1676cfd41a889b6bf\nSHA1: a33fb79e9c71f1b446607d437a1984602ed47d5c\nMD5: a6a57bf20416a4c712c4a1eabcaeb235\nFile type: mimetype: text/plain, extended_info: EICAR virus test files\nSSDEEP: 3:a+JraNvsgzsVqSwHqajaBFSdYSDQ1SBWfQdRXn:tJuOgzskCStDmidRX\nTLSH: ccc09b867e1dfda6530b44510171b5771829575d1de4053421d1f0f4dd677dc43741f8\nFirst seen: 2020-01-24 21:56:21.456900\nLast seen: 2020-02-21 19:21:59.196578\nStatus: Assertion window closed\nFilename: malicious.txt\nCommunity: lima\nCountry: US\nPolyScore: 0.07193209420451106284\n```\n\n#### Scan a URL\n\n**Format:** ```polyswarm scan url <URL>```\n>When scanning a URL, you should always include the protocol (`http://` or `https://`).\n\n**Description:** Command to scan a url with PolySwarm to retrieve engine verdict details. The command can be used to scan a qr code and extract the url from the code.\n\n**Options**\n\n| Option                | Type     | Required | Description                                                         |\n|-----------------------|----------|----------|---------------------------------------------------------------------|\n| `-r` ,`--url-file`    | string   | false    | Path of file that contains multiple URLs, one per line.             |\n| `--qrcode-file`       | string   | false    | Path of a QR Code image file that contains an URL as a payload.     |\n| `-e`, `--expiration-window` | INTEGER  | false    | Applies to Private Communities only and affects new uploads. After the configured number of days, the binary file is deleted, but the metadata remains available, so the hash can still be searched. Must be `30` or `180`. |\n| `-t`, `--timeout`     | integer  | false    | How long to wait for results (default:900).                         |\n| `-n`, `--nowait`      | -        | false    | Does not wait for the scan window to close.                         |\n| `-s`, `--scan-config` | string   | false    | Template to be used in the scan i.e. default, more-time, most-time. |\n\n**Request**\n```bash\n$ polyswarm scan url --scan-config most-time https://google.com\n```\n**Response**\n```bash\n============================= Artifact Instance =============================\nScan permalink: https://polyswarm.network/scan/results/file/05046f26c83e8c88b3ddab2eab63d0d16224ac1e564535fc75cdceee47a0938d\nDetections: 0/4 engines reported malicious\n\tCyRadar: Clean\n\tPhishtank: Clean\n\tNucleon: Clean\n\tVirusdie: Clean\nScan id: 47022542941158297\nSHA256: 05046f26c83e8c88b3ddab2eab63d0d16224ac1e564535fc75cdceee47a0938d\nSHA1: 72fe95c5576ec634e214814a32ab785568eda76a\nMD5: 99999ebcfdb78df077ad2727fd00969f\nFile type: mimetype: text/plain, extended_info: ASCII text, with no line terminators\nSSDEEP: 3:N8r3uK:2LuK\nTLSH:\nFirst seen: 2019-06-25 01:53:43.954091\nLast seen: 2020-02-21 19:40:12.136225\nStatus: Assertion window closed\nFilename: https://google.com\nCommunity: lima\nCountry: US\nPolyScore: 0.00000000000000000000\n```\n\n## Rescanning an Artifact {#rescanning-artifact}\n\n**Format:** ```polyswarm rescan <hash>```\n\n**Description:** Rescans also triggered by referencing the `SHA256/SHA1/MD5` hash of the artifact. Rescan will submit the sample through the engines to retrieve an updated verdict.\n\n**Options**\n\n| Option                 | Type     | Required | Description                                                        |\n|------------------------|----------|----------|--------------------------------------------------------------------|\n| `-r`, `--hash-file`    | string   | false    | File path and name for file that contains hashes, one per line     |\n| `-t`, `--timeout`      | integer  | false    | How long to wait for results (default:900)                         |\n| `-n`, `--nowait`       | -        | false    | Does not wait for the scan window to close                         |\n| `-s`, `--scan-config`  | string   | false    | Template to be used in the scan i.e. default, more-time, most-time |\n| `--hash-type`          | string   | false    | Hash type to search [default:autodetect, sha256, sha1, md5]        |\n\n**Request**\n```bash\n$ polyswarm rescan 89b7a034846a917f7f31a22778ffe04caa3c22136d0e12d1676cfd41a889b6bf\n```\n\n**Response**\n```bash\n============================= Artifact Instance =============================\nScan permalink: https://polyswarm.network/scan/results/file/89b7a034846a917f7f31a22778ffe04caa3c22136d0e12d1676cfd41a889b6bf\nDetections: 5/11 engines reported malicious\n\tQihoo 360: Malicious, metadata: {\"malware_family\": \"qex.eicar.gen.gen\", \"scanner\": {\"environment\": {\"architecture\": \"AMD64\", \"operating_system\": \"Windows\"}}}\n\tClamAV: Clean\n\tIkarus: Malicious, metadata: {\"malware_family\": \"EICAR-Test-File\", \"scanner\": {\"environment\": {\"architecture\": \"x86_64\", \"operating_system\": \"Linux\"}, \"signatures_version\": \"21.02.2020 13:15:46 (102417)\", \"vendor_version\": \"5.2.9.0\", \"version\": \"0.2.0\"}}\n\tNucleon: Clean\n\tVenusEye: Clean\n\tK7: Malicious, metadata: {\"malware_family\": \"EICAR_Test_File\", \"scanner\": {\"environment\": {\"architecture\": \"AMD64\", \"operating_system\": \"Windows\"}, \"signatures_version\": \"11.95.33362, 21-Feb-2020\", \"vendor_version\": \"15.2.0.42\", \"version\": \"0.2.0\"}}\n\tLionic: Clean\n\tVirusdie: Malicious, metadata: {\"malware_family\": \"EICAR.TEST\", \"scanner\": {\"environment\": {\"architecture\": \"x86_64\", \"operating_system\": \"Linux\"}, \"vendor_version\": \"1.3.0\", \"version\": \"0.3.0\"}}\n\tAlibaba: Clean\n\tDrWeb: Malicious, metadata: {\"malware_family\": \"EICAR Test File (NOT a Virus!)\", \"scanner\": {\"environment\": {\"architecture\": \"x86_64\", \"operating_system\": \"Linux\"}, \"signatures_version\": \"0599371BD3AE76D460E15A9719E64059, 2020-Feb-21 18:06:10\", \"vendor_version\": \"7.00.44.12030\", \"version\": \"0.3.0\"}}\n\tXVirus: Clean\nScan id: 87555975730729927\nSHA256: 89b7a034846a917f7f31a22778ffe04caa3c22136d0e12d1676cfd41a889b6bf\nSHA1: a33fb79e9c71f1b446607d437a1984602ed47d5c\nMD5: a6a57bf20416a4c712c4a1eabcaeb235\nFile type: mimetype: text/plain, extended_info: EICAR virus test files\nSSDEEP: 3:a+JraNvsgzsVqSwHqajaBFSdYSDQ1SBWfQdRXn:tJuOgzskCStDmidRX\nTLSH: ccc09b867e1dfda6530b44510171b5771829575d1de4053421d1f0f4dd677dc43741f8\nFirst seen: 2020-01-24 21:56:21.456900\nLast seen: 2020-02-21 20:03:30.398950\nStatus: Assertion window closed\nFilename: 89b7a034846a917f7f31a22778ffe04caa3c22136d0e12d1676cfd41a889b6bf\nCommunity: lima\nCountry: US\nPolyScore: 0.08376258884586366971\n```\n\n## Downloading & Reporting {#downloading-artifacts}\n\n#### Downloading Artifacts\n\n**Format:** ```polyswarm download <hash>```\n\n**Description:** Artifacts are downloaded by referencing their `SHA256/SHA1/MD5` hash and stored locally.\n\n**Options**\n\n| Option                | Type    | Required | Description                                                  |\n|-----------------------|---------|----------|--------------------------------------------------------------|\n| `-r`, `--hash-file`   | string  | false    | File of hashes to download, one per line                     |\n| `-d`, `--destination` | string  | false    | Path where to store the downloaded files                     |\n| `--hash-type`         | string  | false    | Hash type to search [default:autodetect, sha256, sha1, md5]  |\n\n**Request**\n```bash\n$ polyswarm download 131f95c51cc819465fa1797f6ccacf9d494aaaff46fa3eac73ae63ffbdfd8267 test/\n```\n\n**Response**\n```bash\nSuccessfully downloaded artifact 131f95c51cc819465fa1797f6ccacf9d494aaaff46fa3eac73ae63ffbdfd8267 to /home/user/test/131f95c51cc819465fa1797f6ccacf9d494aaaff46fa3eac73ae63ffbdfd8267\n```\n\n##### Downloading Artifacts via id\n\nCommonly used to download sandbox artifacts, this command can be used to download artifacts directly via their `instance_id` see [this](#download-id) section for command.\n\n#### Downloading Bundles\n\nThis provides the ability to 'bundle' selected items together into a single zip file for easy collection. This is a three step process.\n\n* Create the bundle\n* Get the bundle status, wait for it to be built\n* Download the bundle\n\n**Format:** ```polyswarm bundle create -i <instance_id> ```\n\n**Description:** Define the items that will be included in the bundle and create it.\n\n**Options**\n\n| Option                | Type    | Required | Description                                                  |\n|-----------------------|---------|----------|--------------------------------------------------------------|\n| `-i`, `--instance-id`   | string  | true    |  The ID of an instance to include in the bundle archive.                     |\n| `-n`, `--archive-name` | string  | true    | Name of the archive that will be created.                    |\n| `-p`, `--preserve-filenames`         | string  | false    | Preserve the names of the files in the bundle. |\n\n**Request**\n```bash\n$ polyswarm  bundle create -i 71486732419112569 -i 55884507474463461 --archive-name reports.zip\n```\n\n**Response**\n```bash\n============================= Sample Bundle =============================\nID: 25716002001657474\nCommunity: _public\nCreated: 2025-05-27T11:08:54.819102+00:00\nInstance IDs: [71486732419112569, 55884507474463461]\nState: PENDING\n```\n\n****\n\n**Format:** ```polyswarm bundle get <bundle_task_id> ```\n\n**Description:** Poll the status of the bundle creation get the id from step 1.\n\n**Request**\n```bash\n$ polyswarm bundle get 25716002001657474\n```\n\n**Response**\n```bash\n============================= Sample Bundle =============================\nID: 25716002001657474\nCommunity: _public\nCreated: 2025-05-27T11:08:54.819102+00:00\nInstance IDs: [71486732419112569, 55884507474463461]\nState: SUCCEEDED\nURL: https:<presigned-aws-link>\n```\n\n****\n\n**Format:** ```polyswarm bundle download <bundle_task_id> ```\n\n**Description:** Download the bundle.\n\n**Options**\n\n| Option                | Type    | Required | Description                                                  |\n|-----------------------|---------|----------|--------------------------------------------------------------|\n| `-d`, `--destination`   | string  | false    |  Path where to store the downloaded file.                     |\n\n**Request**\n```bash\n$ polyswarm bundle download 25716002001657474\n```\n\n**Response**\n```bash\nSuccessfully downloaded artifact reports.zip to /Users/name/Documents/reports.zip\n```\n\n#### Reporting {#reporting}\n\n##### Downloading reports and zip files\nPolySwarm provides the reporting cli command, this provides the ability to generate and download HTML/PDF reports for Scanning and Sandboxing sessions, and download a ZIP file of which can contain the PDF report alongside other Sandbox artifacts like pcaps, reports and jarm files.\n\nThe following are the 3 sequential steps in a report generation operation, that can be performed via the CLI one step at a time:\n\n* Inform PolySwarm to start creating the report, or create and download the zip file. If only wanting the zip file there is no need to proceed with the next two steps.\n* Poll PolySwarm to understand when the report has finished being created.\n* Download the report locally once generation is successful.\n\n****\n\n**Format:** ```polyswarm report create [OPTIONS] <html|pdf|zip> <scan|sandbox> <OBJECT_ID>```\n\n**Description:** Start to generate the PolySwarm report, choose a PDF or HTML report for  Sandbox or a Scanning instance. Or create a zip file with Sandbox Artifacts to download directly.\n\n> NOTE: If generating a Scanning report the `OBJECT_ID` will be the `artifact_id`, find this with the command: `polyswarm --fmt pretty-json search hash <hash> | jq '.artifact_id'`.\nIf generating a Sandboxing report the `OBJECT_ID` will be the `sandbox_id`, find this with the command: `polyswarm sandbox search <hash>` then choose from the desired sandbox sessions.\n\n**Options**\n\n| Option          | Type     | Required | Description |\n|-----------------|----------|----------|-------------|\n| `--includes`    | string   | false    | Comma-separated list of sections to include in the report. Can be one or more of: summary, detections, fileMetadata, network, droppedFiles, extractedConfig, analysis|\n| `--sandbox_artifact_types`| string | false | Comma-separated list of sandbox artifact types to include in the downloaded zip. Can be one or more of: `report`, `raw_report`, `screenshot`, `recording`, `dropped_file`, `memory_dump`, `pcap`, `jarm`. Only applicable to zip type.|\n| `--zip-report-ids` | string | false | Comma-separated list of report task ids to include in the zip. This only needs to be used if you require the PDF report to be included in the ZIP. Note that the PDF report must be generated first. |\n| `--template-id` | integer  | false    | Provide the `id` for the template used|\n\n\n**Example 1 Request: Create a PDF Report**\n```bash\n$ polyswarm report create pdf scan 97903321852386706\n```\n\n**Example 1 Response**\n\n```bash\nSuccessfully downloaded artifact scan-97903321852386706.pdf to /Users/John/Documents/scan-97903321852386706.pdf\n============================= Report =============================\nID: 59403308938961820\nCommunity: _public\nCreated: 2024-06-11T10:19:48.211143\nType: scan\nFormat: pdf\nTemplate ID: 95389624286242180\nScan ID: 97903321852386706\nState: PENDING\n```\n\n**Example 2 Request: Download a ZIP file**\n\n```bash\n$ polyswarm report create --sandbox_artifact_types report,raw_report,pcap zip sandbox 97903321852386706\n```\n\n**Example 2 Response**\n```bash\nSuccessfully downloaded artifact sandbox_zip-97903321852386706.zip to /Users/John/Documents/sandbox_zip-97903321852386706.zip\n```\n\n****\n\n**Format:** ```polyswarm report get <REPORT_ID>```\n\n**Description:** Retrieve the report's details to understand if the report generation has been successful and then retrieve the download link. `REPORT_ID` provided from the previous command.\n\n**Request**\n```bash\n$ polyswarm report get 59403308938961820\n```\n\n**Response**\n```bash\n============================= Report =============================\nID: 59403308938961820\nCommunity: _public\nCreated: 2024-06-11T10:19:48.211143\nType: scan\nFormat: pdf\nTemplate ID: 95389624286242180\nScan ID: 97903321852386706\nState: SUCCEEDED\nURL: https://s3.us-east-2.amazonaws.com/ps-storage-prod-reports/{AWS_LINK}...\n```\n\n****\n\n**Format:** ```polyswarm report download <REPORT_ID>```\n\n**Description:** Download the generated report locally.\n\n**Options**\n\n| Option           | Type     | Required | Description                               |\n|------------------|----------|----------|-------------------------------------------|\n| `--destination`  | string   | false    | Local path to store the downloaded file.  |\n\n\n**Request**\n```bash\n$ polyswarm report download 59403308938961820\n```\n\n**Response**\n```bash\nSuccessfully downloaded artifact scan-97903321852386706.pdf to /Users/John/Documents/scan-97903321852386706.pdf\n```\n\n##### LLM Reports\n\nPolySwarm provides the ability to generate LLM-powered analysis reports for Scanning and Sandboxing sessions. These reports provide AI-generated summaries and insights for your submitted artifacts.\n\nThe following are the 3 sequential steps in an LLM report generation operation:\n\n* Inform PolySwarm to start creating the LLM report.\n* Poll PolySwarm to understand when the report has finished being created.\n* Download the report locally once generation is successful.\n\n****\n\n**Format:** ```polyswarm report llm-create [OPTIONS]```\n\n**Description:** Start to generate an LLM-powered analysis report for a Scanning or Sandboxing instance.\n\n**Options**\n\n| Option                           | Type     | Required | Description |\n|----------------------------------|----------|----------|-------------|\n| `-i`, `--instance-id`            | string   | false    | Instance ID (from a scan) to include in the report. |\n| `--cape-sandbox-task-id`         | string   | false    | Cape Sandbox Task ID to include in the report. |\n| `--triage-sandbox-task-id`       | string   | false    | Triage Sandbox Task ID to include in the report. |\n\n> At least one of `--instance-id`, `--cape-sandbox-task-id`, or `--triage-sandbox-task-id` must be provided. You may combine `--cape-sandbox-task-id` and `--triage-sandbox-task-id` together, optionally alongside `--instance-id`, to generate a single unified report from multiple sources.\n\n**Example 1 Request: Create an LLM Report for a Scan**\n```bash\n$ polyswarm report llm-create --instance-id 97903321852386706\n```\n\n**Example 1 Response**\n\n```bash\n============================= LLM Report Task =============================\nID: 45678901234567890\nInstance ID: 97903321852386706\nCreated: 2024-12-15T14:32:10.123456\nState: PENDING\n```\n\n**Example 2 Request: Create an LLM Report for a Cape Sandbox Task**\n\n```bash\n$ polyswarm report llm-create --cape-sandbox-task-id 76509232912518724\n```\n\n**Example 2 Response**\n```bash\n============================= LLM Report Task =============================\nID: 45678901234567891\nCape Sandbox Task ID: 76509232912518724\nCreated: 2024-12-15T14:33:22.654321\nState: PENDING\n```\n\n**Example 3 Request: Create an LLM Report for a Triage Sandbox Task**\n\n```bash\n$ polyswarm report llm-create --triage-sandbox-task-id 76509232912518724\n```\n\n**Example 3 Response**\n```bash\n============================= LLM Report Task =============================\nID: 45678901234567892\nTriage Sandbox Task ID: 76509232912518724\nCreated: 2024-12-15T14:34:10.789012\nState: PENDING\n```\n\n**Example 4 Request: Create an LLM Report combining Cape and Triage results**\n\n```bash\n$ polyswarm report llm-create --cape-sandbox-task-id 76509232912518724 --triage-sandbox-task-id 12345678901234567\n```\n\n**Example 4 Response**\n```bash\n============================= LLM Report Task =============================\nID: 45678901234567893\nCape Sandbox Task ID: 76509232912518724\nTriage Sandbox Task ID: 12345678901234567\nCreated: 2024-12-15T14:35:00.111222\nState: PENDING\n```\n\n****\n\n**Format:** ```polyswarm report llm-get <REPORT_ID>```\n\n**Description:** Retrieve the LLM report task details to understand if the report generation has been successful. Use the `REPORT_ID` from the llm-create command.\n\n**Request**\n```bash\n$ polyswarm report llm-get 45678901234567890\n```\n\n**Response**\n```bash\n============================= LLM Report Task =============================\nID: 45678901234567890\nInstance ID: 97903321852386706\nCreated: 2024-12-15T14:32:10.123456\nState: SUCCEEDED\n```\n\n****\n\n**Format:** ```polyswarm report llm-download <REPORT_ID>```\n\n**Description:** Download the generated LLM report locally.\n\n**Options**\n\n| Option           | Type     | Required | Description                               |\n|------------------|----------|----------|-------------------------------------------|\n| `-d`, `--destination` | string | false    | Local path to store the downloaded file.  |\n\n**Request**\n```bash\n$ polyswarm report llm-download 45678901234567890\n```\n\n**Response**\n```bash\nSuccessfully downloaded artifact llm_report-97903321852386706.txt to /Users/John/Documents/llm_report-97903321852386706.txt\n```\n\n\n##### LLM Prompt Configurations\n\nPolySwarm provides the ability to manage LLM prompt configurations for customizing AI-generated analysis reports.\n\n###### Create a prompt configuration\n\n**Format:** ```polyswarm report prompt-config-create <NAME> --system-prompt <PROMPT>```\n\n**Description:** Create a new LLM prompt configuration with customizable prompts for different analysis types.\n\n**Options**\n\n| Option                     | Type    | Required | Description                                                              |\n|----------------------------|---------|----------|--------------------------------------------------------------------------|\n| `--system-prompt`          | string  | true     | The system prompt text for the AI analysis.                              |\n| `--is-active`              | flag    | false    | Whether this should be the active prompt configuration.                  |\n| `--cape-only-prompt`       | string  | false    | Optional Cape sandbox-specific prompt text.                              |\n| `--triage-only-prompt`     | string  | false    | Optional Triage sandbox-specific prompt text.                            |\n| `--scan-only-prompt`       | string  | false    | Optional scan-specific prompt text.                                      |\n\n**Request**\n```bash\n$ polyswarm report prompt-config-create detailed_analysis \\\n  --system-prompt \"You are a cybersecurity expert analyzing malware samples.\" \\\n  --is-active \\\n  --cape-only-prompt \"Focus on payload extraction.\" \\\n  --scan-only-prompt \"Focus on detection results.\"\n```\n\n**Response**\n```bash\n============================= LLM Prompt Config =============================\nID: 12345678901234567\nName: detailed_analysis\nSystem Prompt: You are a cybersecurity expert analyzing malware samples.\nIs Active: True\nCreated: 2024-12-15T14:32:10.123456+00:00\n```\n\n##### Report templates\nPolySwarm provides the ability to manage the report templates, this can include uploading a new template, deleting a current template and managing the logo for each one.\n\n###### List templates\n**Format:** ```polyswarm report-template list```\n\n**Description:** List the available templates available to the team.\n\n**Request**\n```bash\n$ polyswarm report-template list\n```\n\n**Response**\n```bash\n============================= Report Template =============================\nID: 95389624286242180\nTemplate Name: default\nCreated: 2024-06-05T19:33:03.232395\nPrimary Color: 6D3AEC\nIs Default: True\n```\n\n###### Create a template\n\n**Format:** ```polyswarm report-template create <TEMPLATE_NAME>```\n\n**Description:** Create a new template with a number of option below.\n\n**Options**\n\n| Option                  | Type   | Required | Description |\n|-------------------------|--------|----------|-------------|\n| `--is-default`          | -      | false    | If declared this template will be the default template for the team. |\n| `--primary-color`       | string | false    | Six-character hex color code. |\n| `--last-page-text`      | string | false    | Text to be displayed on the last page of the template (cannot be used with `--last-page-text-file`). |\n| `--last-page-text-file` | string | false    | File path to the document that contains the text for the last page text (cannot be used with `--last-page-text`). |\n| `--includes`            | string | false    | Comma-separated list of sections to include in the report. Can be one or more of: summary, detections, fileMetadata, network, droppedFiles, extractedConfig, analysis. |\n\n**Request**\n```bash\n$ polyswarm report-template create --primary-color ec6560 --footer-text 'Company A INC 2024' --includes network,droppedFiles,extractedConfig snd_box_test\n```\n\n**Response**\n```bash\n============================= Report Template =============================\nID: 60430384589833968\nTemplate Name: sndboxtest\nCreated: 2024-06-11T12:42:45.950422\nPrimary Color: ec6560\nIncludes: network, droppedFiles, extractedConfig\nFooter Text: Company A INC 2024\n```\n\n###### Delete a template\n\n**Format:** ```polyswarm report-template delete <REPORT_ID>```\n\n**Description:** Delete the template.\n\n**Request**\n```bash\n$ polyswarm report-template delete 60430384589833968\n```\n\n**Response**\n```bash\nTemplate Deleted\n```\n\n###### Get template details\n\n**Format:** ```polyswarm report-template get <REPORT_ID>```\n\n**Description:** Get the details for s specific template.\n\n**Request**\n```bash\npolyswarm report-template get 60430384589833968\n```\n\n**Response**\n```bash\n============================= Report Template =============================\nID: 60430384589833968\nTemplate Name: sndboxtest\nCreated: 2024-06-11T12:42:45.950422\nPrimary Color: ec6560\nIncludes: network, droppedFiles, extractedConfig\nFooter Text: Company A INC 2024\n```\n\n###### Update a template\n\n**Format:** ```polyswarm report-template update <TEMPLATE_ID>```\n\n**Description:** Update the template with new values and configuration.\n\n**Options**\n\nOnly the passed options are updated, leaving the rest of the values untouched.\n| Option | Type | Required | Description |\n|------|------|----------|-------------|\n|`--is-default`| - | false    | If declared this template will be the default template for the team. |\n|`--primary-color`| string | false    | Six-character hex color code. |\n|`--last-page-text`| string | false    | Text to be displayed on the last page of the template. |\n|`--last-page-text-file`| string | false    | File path to the document that contains the text for the last page text. |\n|`--includes`| string | false    | Comma-separated list of sections to include in the report. Can be one or more of: summary, detections, fileMetadata, network, droppedFiles, extractedConfig, analysis. |\n\n**Request**\n```bash\n$ polyswarm report-template update --primary-color 6D3AEC  98453877554394669\n```\n\n**Response**\n```bash\n============================= Report Template =============================\nID: 98453877554394669\nTemplate Name: test\nCreated: 2024-06-11T12:36:17.511289\nPrimary Color: 6D3AEC\n```\n\n###### Upload template logo\n\n**Format:** ```polyswarm report-template logo-upload <TEMPLATE_ID> <PATH>```\n\n**Description:** Upload a new logo for the template.\n\n**Request**\n```bash\npolyswarm report-template logo-upload 98453877554394669 /Users/John/Downloads/Logo_Purple.png\n```\n\n**Response**\n```bash\n============================= Report Template =============================\nID: 98453877554394669\nTemplate Name: test\nCreated: 2024-06-11T12:36:17.511289\nPrimary Color: 6D3AEC\nLogo Content Length: 6284\nLogo Content Type: image/png\nLogo URL: https://api.polyswarm.network/v3/reports/templates/logo?id=98453877554394669\nLogo Height: 42\nLogo Width: 250\n```\n\n###### Delete template logo\n\n**Format:** ```polyswarm report-template logo-delete <TEMPLATE_ID>```\n\n**Description:** Delete the current logo for the template.\n\n**Request**\n```bash\npolyswarm report-template logo-delete 98453877554394669\n\n```\n\n**Response**\n```bash\nTemplate logo deleted\n```\n\n###### Download template logo\n\n**Format:** ```polyswarm report-template logo-download <TEMPLATE_ID>```\n\n**Description:** Download the template logo locally.\n\n**Options**\n\n| Option           | Type   | Required | Description                               |\n|------------------|--------|----------|-------------------------------------------|\n| `--destination`  | string | false    | Local path to store the downloaded file.  |\n\n\n**Request**\n```bash\n$ polyswarm report-template logo-download 98453877554394669\n```\n\n**Response**\n```bash\nSuccessfully downloaded artifact logo to /Users/ruebenburrows/Documents/python/logo\n```\n\n## Searching {#searching}\n\n#### Hash Searching\n\n**Format:** ```polyswarm search <hash>```\n\n**Description:** Artifacts are searched by referencing their `SHA256/SHA1/MD5`.\n\n**Options**\n\n| Option               | Type    | Required | Description                                                 |\n|----------------------|---------|----------|-------------------------------------------------------------|\n| `-r`, `--hash-file`  | string  | false    | File of hashes to search, one per line                      |\n| `--hash-type`        | string  | false    | Hash type to search [default:autodetect, sha256, sha1, md5] |\n\n**Request**\n```bash\n$ polyswarm search hash 89b7a034846a917f7f31a22778ffe04caa3c22136d0e12d1676cfd41a889b6bf\n```\n\n**Response**\n```bash\n============================= Artifact Instance =============================\nScan permalink: https://polyswarm.network/scan/results/file/89b7a034846a917f7f31a22778ffe04caa3c22136d0e12d1676cfd41a889b6bf\nDetections: 6/12 engines reported malicious\n\tQihoo 360: Malicious, metadata: {\"malware_family\": \"qex.eicar.gen.gen\", \"scanner\": {\"environment\": {\"architecture\": \"AMD64\", \"operating_system\": \"Windows\"}}}\n\tLionic: Clean\n\tXVirus: Clean\n\tNucleon: Clean\n\tVirusdie: Malicious, metadata: {\"malware_family\": \"EICAR.TEST\", \"scanner\": {\"environment\": {\"architecture\": \"x86_64\", \"operating_system\": \"Linux\"}, \"vendor_version\": \"1.3.0\", \"version\": \"0.3.0\"}}\n\tIkarus: Malicious, metadata: {\"malware_family\": \"EICAR-Test-File\", \"scanner\": {\"environment\": {\"architecture\": \"x86_64\", \"operating_system\": \"Linux\"}, \"signatures_version\": \"21.02.2020 13:15:46 (102417)\", \"vendor_version\": \"5.2.9.0\", \"version\": \"0.2.0\"}}\n\tClamAV: Clean\n\tAlibaba: Clean\n\tK7: Malicious, metadata: {\"malware_family\": \"EICAR_Test_File\", \"scanner\": {\"environment\": {\"architecture\": \"AMD64\", \"operating_system\": \"Windows\"}, \"signatures_version\": \"11.95.33362, 21-Feb-2020\", \"vendor_version\": \"15.2.0.42\", \"version\": \"0.2.0\"}}\n\tNanoAV: Malicious, metadata: {\"malware_family\": \"Marker.Dos.EICAR-Test-File.dyb\", \"scanner\": {\"environment\": {\"architecture\": \"AMD64\", \"operating_system\": \"Windows\"}, \"signatures_version\": \"0.14.33.17090\", \"vendor_version\": \"1.0.134.90567\", \"version\": \"0.1.0\"}}\n\tVenusEye: Clean\n\tDrWeb: Malicious, metadata: {\"malware_family\": \"EICAR Test File (NOT a Virus!)\", \"scanner\": {\"environment\": {\"architecture\": \"x86_64\", \"operating_system\": \"Linux\"}, \"signatures_version\": \"864BFD34E93FFC1BEFC260DAE804EFAF, 2020-Feb-21 16:59:42\", \"vendor_version\": \"7.00.44.12030\", \"version\": \"0.3.0\"}}\nScan id: 50446025732260182\nSHA256: 89b7a034846a917f7f31a22778ffe04caa3c22136d0e12d1676cfd41a889b6bf\nSHA1: a33fb79e9c71f1b446607d437a1984602ed47d5c\nMD5: a6a57bf20416a4c712c4a1eabcaeb235\nFile type: mimetype: text/plain, extended_info: EICAR virus test files\nSSDEEP: 3:a+JraNvsgzsVqSwHqajaBFSdYSDQ1SBWfQdRXn:tJuOgzskCStDmidRX\nTLSH: ccc09b867e1dfda6530b44510171b5771829575d1de4053421d1f0f4dd677dc43741f8\nFirst seen: 2020-01-24 21:56:21.456900\nLast seen: 2020-02-21 19:21:59.196578\nStatus: Assertion window closed\nFilename: malicious.txt\nCommunity: lima\nCountry: US\nPolyScore: 0.07193209420451106284\n```\n\n#### View Scan History\n\n**Format:** ```polyswarm search scans <hash>```\n\n**Description:** Search a hash to view previosu Scans that have been performed.\n\n**Request**\n```bash\n$ polyswarm search scans 95531b268adee781f88c962f4b6d747ed82e1c1a58b636fdd925ca3ce31e9cf5\n```\n\n**Response**\n```bash\n============================= Artifact Instance =============================\nScan permalink: https://polyswarm.network/scan/results/file/95531b268adee781f88c962f4b6d747ed82e1c1a58b636fdd925ca3ce31e9cf5/30327221925404900\nDetections: No engines responded to this scan. You can trigger a rescan now.\nScan id: 30327221925404900\nSHA256: 95531b268adee781f88c962f4b6d747ed82e1c1a58b636fdd925ca3ce31e9cf5\nSHA1: 8169175b424034b0f93b433e6d7068c08e526199\nMD5: e6c0964ef7105869ef21379eebaefe12\nFile type: mimetype: application/x-dosexec, extended_info: PE32 executable (DLL) (GUI) Intel 80386, for MS Windows\nFirst seen: 2024-09-13 22:48:48 UTC\nLast scanned: 2024-11-19 06:14:47 UTC\nLast seen: 2024-11-19 06:14:47 UTC\nStatus: Assertion window closed\nFilename: 95531b268adee781f88c962f4b6d747ed82e1c1a58b636fdd925ca3ce31e9cf5\nCommunity: mainnet1\nCountry: US\nPolyScore: 0.99922532264464414276\n\n============================= Artifact Instance =============================\nScan permalink: https://polyswarm.network/scan/results/file/95531b268adee781f88c962f4b6d747ed82e1c1a58b636fdd925ca3ce31e9cf5/79082986982481921\nDetections: No engines responded to this scan. You can trigger a rescan now.\nScan id: 79082986982481921\nSHA256: 95531b268adee781f88c962f4b6d747ed82e1c1a58b636fdd925ca3ce31e9cf5\nSHA1: 8169175b424034b0f93b433e6d7068c08e526199\nMD5: e6c0964ef7105869ef21379eebaefe12\nFile type: mimetype: application/x-dosexec, extended_info: PE32 executable (DLL) (GUI) Intel 80386, for MS Windows\nFirst seen: 2024-09-13 22:48:48 UTC\nLast scanned: 2024-10-31 01:10:49 UTC\nLast seen: 2024-10-31 01:10:49 UTC\nStatus: Assertion window closed\n..\n..\n```\n\n#### URL Searching\n\n**Format:** ```polyswarm search url <URL>```\n\n**Description:** Artifacts are searched by referencing their URL.\n\n**Request**\n```bash\n$ polyswarm search url https://polyswarm.io\n```\n\n**Response**\n```bash\n============================= Artifact Instance =============================\nScan permalink: https://polyswarm.network/scan/results/file/078e6c2d6ba818466fb9944a8717e249b3820c13addc9b7ebf59e3ca79166541\nDetections: 0/6 engines reported malicious\n\tZeroCERT: Clean\n\tCyRadar: Clean\n\tQuttera: Clean\n\tNotmining: Clean\n\tVirusdie: Clean\n\tNucleon: Clean\nScan id: 61118021570495545\nSHA256: 078e6c2d6ba818466fb9944a8717e249b3820c13addc9b7ebf59e3ca79166541\nSHA1: 3a26c7a00fbeb54b49361457e99bb6cd59dcfe24\nMD5: e82f49f9ef02b6b517748be47ba0005a\nFile type: mimetype: text/plain, extended_info: ASCII text, with no line terminators\nSSDEEP: 3:N8OI+ILL:2OGLL\nTLSH:\nFirst seen: 2019-06-25 18:04:48.248039\nLast seen: 2020-04-01 03:59:53.555767\nStatus: Assertion window closed\nURL: https://polyswarm.io\nCommunity: lima\nCountry: AU\nPolyScore: 0.00000000000000000000\n\n```\n#### Metadata Searching {#metadata}\nPolySwarm's Metadata Search provides you with the functionality to search through PolySwarm’s dataset to find samples that relate to information you are interested in.\n\nTo understand how to build out a Metadata query see the [How-To Guide](/customers/polyswarm-customer-meta-query/#meta-getting-started).\n\n##### Searching for Metadata Attributes\n\n**Format:** ```polyswarm search metadata <metadata values>```\n\n**Description:** Search for Artifact Metadata in the CLI, Add additional options like `–fmt` to allow for additional functionality see [here](/customers/polyswarm-customer-cli-v3/#usage).\n\n**Options**\n\n| Option             | Type   | Required | Description                                                    |\n|--------------------|--------|----------|----------------------------------------------------------------|\n| `-i`, `--include`  | string | false    | Field to be included in the result (* wildcards are accepted). |\n| `-x`, `--exclude`  | string | false    | Field to be excluded in the result (* wildcards are accepted). |\n| `-p` , `--ip` | string | false    | IP address IOC to search. |\n| `-d` ,`--domain`  | string | false    | Domain name IOC to search. |\n| `-u` , `--url`| string | false    | URL IOC to search. |\n\n**Request**\n```bash\n$ polyswarm --fmt pretty-json search metadata \"scan.detections.malicious:>1\"\n```\n\n**Response**\n```bash\n{\n    \"artifact\": {\n        \"created\": \"2023-06-20T11:29:11.322959+00:00\",\n        \"id\": \"3414327927829341\",\n        \"md5\": \"6bf2025e7aa7b09d7044718c2a3f190d\",\n        \"sha1\": \"5323a695a165e13a04a11d24e603ae4444463b08\",\n        \"sha256\": \"2d1bbc2837559f5224076a833ec6e9cc6fe053b76a11bf500654ce0431b8993c\"\n    },\n    \"exiftool\": {\n        \"characterset\": \"Unicode\",\n        \"codesize\": 45056,\n        ..............\n```\n\n**Request**\n```bash\n$ polyswarm search metadata -i triage_sandbox_v0.ttp 'scan.detections.malicious:>1 AND polyunite.malware_family:Emotet'\n```\n\n**Response**\n```bash\n============================= Metadata =============================\nArtifact id: 1368439839946634\nCreated: 2025-02-14 09:41:05.568721+00:00\nSHA256: 687e603817c1c9de994763bcae0c531544a62b6f993071b8721004fd6e780841\nSHA1: 2377b6e51ddb690b2ca732a1045dec3e3c934601\nMD5: 3d10895e2f8bd8e2ab6735e3a4ebb70d\n\n============================= Metadata =============================\nArtifact id: 51608922017858789\nCreated: 2025-02-14 09:40:48.910620+00:00\nSHA256: ca7cfdc3fdca5c5d05fb85fcd1ff3c1190968f1cdc2bf159f232d08bb1f8e66d\nSHA1: 9feff541dec075bc5893745ecef9a16a016996b3\nMD5: fb59934c3c6305e9a5a08dcd082724f7\n....\n.\n```\n\n###### Processing Attribute Results with JQ\n\n`jq` is a command-line processor for json files, allowing the slicing of the json to filter out specific Attributes.\n\nWhen defining `--fmt` as `json` in the `polyswarm search metadata` CLI command, `jq` can be used to filter the output of the Attributes.\n\nTaking the command `polyswarm --fmt pretty-json search metadata -i artifact.sha256 \"scan.detections.malicious:>1\"` will produce a large json output that matches these criteria, to filter only md5 values, you can use `jq` to achieve this.\n\n**Request**\n``` bash\n$ polyswarm --fmt pretty-json search metadata -i artifact.sha256 \"scan.detections.malicious:>1\" | jq .artifact.md5\n```\n\n**Response**\n```bash\n\"8ce0d5b701fb084f14990fe0d425628781130c9da0b0b95f98f3a9e5eef755bb\"\n\"19cb4f641750555e4a40460e03a07217306077585a7290ef480712d373e3b755\"\n\"f2015c1e82f92c7d8a728eeb47adb52e877a3ab9ee2d7168cc311fae7b5bbfae\"\n\"b0a1cc605d485e5e73e73aa8a0377a9d12a53d4042d711bd4bf99cd7b6961afa\"\n\"9cb02c934c2aa8938b30aa52924798a6d2a12ca4e7d75a2d01390c01067b0a8b\"\n\"6d7607445c3b71d707576d6424581cb0a0c6c39f11a67601811568cf30eba9ab\"\n\"f665fa1373a7bb1b8085ad95866066f2164e25f79e3bf0dc45abc2ba690144ab\"\n\"bf1e0bd5265619d33c89795d340fe05bf7e3a80935396e83cd52d3baa77b4902\"\n\"07707539577a320e56805cd9458a3ffd9ace7fb31aca106bd1aad89d60354906\"\n\"d47f64147c5ad65a9841813df44fce49e435e472874853d02a192689dd1f5007\"\n\"d767ded5ba7377356f48351f9f03ada9de9c6eb156f08de0a9cce2ebe3ad4369\"\n```\n\n###### Searching for Metadata Fields {#mapping}\n\n**Format:** ```polyswarm search mapping | grep <value>```\n\n**Description:** Search for fields that can be used in PolySwarm Metadata searching.\n\n**Request**\n```bash\n$ polyswarm search mapping | grep c2 | grep ip\n```\n\n#### IOC Searching\n\nIOC Searching can be split into three groups of commands, these are:\n\n- Searching for Associated IOCs related to a Hash: This returns IOCs that were observed by our sandbox during analysis. These IP's and Domains are classified as C2 or malicious.\n- Searching for Associated Hashes related to an IP, URL, imphash or MITRE TTP: This returns file hashes that were seen communicating with the specified IPs or domains in our sandbox — regardless of whether the communication was malicious or not.\n- Check for known good domains and IPs\n\n##### Searching for Associated IOCs\n\n**Format:** ```polyswarm search ioc sha256 <hash>```\n\n**Description:** List associated IOCs to a Hash by referencing the hash value.\n\n**Request**\n```bash\n$ polyswarm search ioc sha256 18e5b8fe65e8f73c3a4a637c258c02aeec8a6ab702b15b7ee73f5631a9879e40\n```\n\n**Response**\n\n```bash\n============================= IOCs =============================\nImpHash:\nIPs: 1.2.3.4, 2.2.2.2\nURLs: polyswarm.io\nTTPs: T1060, T1053\n```\n\n##### Searching for Associated Hashes\n\n**Format:** ```polyswarm search ioc ip <IP>```\n> Replace `ip` above with `domain`, `imphash`, `URL` or `MITRE TTP` e.g. `polyswarm search ioc domain <url>`\n\n**Description:** List associated Hashes to an IP, URL, imphash or MITRE TTP.\n\n**Request**\n```bash\n$ polyswarm search ioc ip 1.2.3.4\n```\n\n**Response**\n```bash\n============================= IOCs =============================\nSHA256: 18e5b8fe65e8f73c3a4a637c258c02aeec8a6ab702b15b7ee73f5631a9879e40\nSHA256: 275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0a\n```\n\n##### Searching for Known Good Domains and IPs\n\n**Format:** ```polyswarm search known -d <DOMAIN> -p <IP>```\n\n**Description:** Known good checking allows you to check for known good domains and IPs. If any of the list of domain or IP parameters you provide match a record, then you'll get a result.\n\n**Options**\n\n| Option | Type | Required | Description |\n|------|------|----------|-------------|\n|`-p`, `--ip`| string | true    | IP to search on|\n|`-d`, `--domain`| string | true    | Domain to search on|\n\n> Either `-p` or `-d` must be used in the command.\n\n**Request**\n```bash\n$ polyswarm search known -d polyswarm.network\n```\n\n**Response**\n```bash\n============================= Known IOC =============================\nID: 67\ntype: domain\nhost: polyswarm.network\nsource: polyswarm\ngood: True\n```\n\n<div class=\"danger\" markdown=\"1\">\n\n> **A word of caution with Known Good checking!**\n>\n> Our list of known good domains and IPs is not all-inclusive!\n> Our goal for this feature is to provide an easy way to check the most common known good domains and IPs, so they can be excluded from analysis.\n\n</div>\n\n## Tags/Lists/Families {#tags-lists}\n\nPolySwarm researchers tag known malware samples with malware family names and attributes.\n\nBelow are some examples of using malware Families and Tags to identify Emotet - another malware family that PolySwarm has been tracking.\n\n>Emotet is a \"downloader\".\n>By itself, it usually just offers the attackers the ability to install additional malware on target machines.\n>TrickBot (an info stealer) and Ryuk (ransomware) are commonly installed via initial Emotet infection.\n\n#### Using Tags {#using-tags}\n\n**Format:** ```polyswarm tag list```\n\n**Description:** PolySwarm tags are free-form attributes applied to known malware samples.\n>`tags` can describe attributes like malware family (e.g. `EventBot`), target operating system (e.g. `Android`), phishing campaign (e.g. `COVID-19`) and exploited vulnerabilities (e.g. `CVE-2017-11882`).\n\n**Request**\n```bash\n$ polyswarm tag list\n```\n\n**Response**\n```bash\nTag: Adware\nTag: AgentTesla\nTag: Android\nTag: Cerberus\nTag: COVID-19\nTag: CVE-2017-11882\nTag: Emotet\nTag: EventBot\n```\n\n#### Using Families\n\n**Format:** ```polyswarm family list```\n\n**Description:** PolySwarm `families` are malware family names applied to known samples from a given family.\n>Families with an Emerging timestamp where listed on the PolySwarm homepage at the given time - these are particularly cutting edge or prominent in the news.\n\n**Request**\n```bash\n$ polyswarm family list\n```\n\n**Response**\n```bash\nFamily: Emotet\nEmerging: 2020-06-06 08:23:35.997775\n\nFamily: EventBot\nEmerging: 2020-06-10 17:15:54.789337\n\nFamily: NetWalker\nEmerging: None\n```\n\n#### Using Links\n\n**Format:** ```polyswarm link list --family <family>```\n\n**Description:** Artifacts are linked to tags and families.\n\n**Request**\n```bash\n$ polyswarm link list --family Emotet\n```\n\n**Response**\n```bash\nSHA256: 8c8f9556b67c36cf23fea64e2f2086a5bbcddabd5c66b9847fac1c60c021eeba\nFirst seen: 2023-04-29 22:17:41.507473\nTags: ['Banker', 'Unpacked', 'Trojan', 'PE32', 'Windows']\nFamilies: ['Emotet']\nEmerging: None\n\nSHA256: dd168d5499cfd09ac35b70656983a2b5600bfea09319df5a4aa4260e20745111\nFirst seen: 2023-04-29 14:24:31.835017\nTags: ['Banker', 'Unpacked', 'PE32', 'Windows', 'first_seen']\nFamilies: ['Emotet']\nEmerging: 2023-05-08 18:40:55.769796\n```\n>Getting a list of SHA256 hashes for these artifacts is correspondingly as simple as: `polyswarm link list --family Emotet | grep SHA256`.\n\n## Sandboxing {#sandboxing}\n\nSandboxing in PolySwarm provides the ability to submit files directly to be sandboxed to either Cape or Triage, submit Artifacts already in PolySwarm to be sandboxed, and review what has been submitted to be sandboxed.\n\n### General Sandbox Questions & Answers {#sandboxing-qa}\n\n**What is the difference between cape and triage. And when should they select one vs the other?**\n\n*CAPE* sandbox is specifically designed to extract malware payload and configuration files, hence the name CAPE (Config and Payload Extraction). It attempts to unpack malware so yara signatures can be used to identify a specific malware family and if it is supported by the different config and payload extractors the sandbox has then those data can be extracted.\n*Triage* on the other hand is designed to scale and process as many malware as possible in a given day. They also support other malware types such as android. The sandbox is well versed in tackling malware that have anti-sandbox evasion techniques.\n\nIf you want to gather more data from malware like a typical sandbox would and have a better chance of executing a malware regardless of whether it is using anti-analysis or anti-sandboxing techniques, Triage would be the best choice.\nIf the you want to get malware payload or config data that includes IPs and domains that were not used during the sandboxing session and is kept in the malware's back pocket, then CAPE is the sandbox of choice.\n\nURL Sandboxing is only supported using Triage as of today, we will update this section as further URL Sandboxing support is expanded.\n\n#### List Sandbox Providers {#sandbox-providers}\n\n**Format:** ```polyswarm sandbox providers```\n\n**Description:** List the supported sandbox providers, to include: sandbox name, sandbox VMs, and version information.\n\n> Note: For the `sandbox vm` parameter in the sandbox file and artifact commands, use the value of the `slug` field in the sandbox providers output.\n\n**Request**\n```bash\n$ polyswarm sandbox providers\n```\n**Response**\n```bash\n============================= Provider =============================\nslug: cape\nname: cape\ntool: cape_sandbox_v2\n\t============================= VM =============================\n\tarchitecture: x64\n\tid: 100\n\tlanguage: English (United States)\n\tname: Microsoft Windows 10 Pro Build 19041\n\tos_name: Microsoft Windows 10 Pro\n\tos_version: 10.0.19041 Build 19041\n\tslug: win-10-build-19041\n============================= Provider =============================\nslug: triage\nname: triage\ntool: triage_sandbox_v0\n\t============================= VM =============================\n\tapi_level: 30\n\tarchitecture: x64\n\tid: 201\n\tlanguage: English (United States)\n\tname: android-11-x64\n\tos_name: Android 11 x64\n\tprofile: droid\n\tslug: android-11-x64\n\t============================= VM =============================\n\tArchitecture: x64\n\tid: 200\n\tlanguage: English (United States)\n\tname: windows10-1703-x64\n\tos_name: Windows 10 1703 x64\n\tos_version: 10.0.15063 Build 15063\n\tprofile: poly\n\tslug: win10-build-15063\n```\n\n#### Sandboxing a File\n\n> Want to know what files types are supported? See [here](sandbox#file-types)\n\n**Format:** ```polyswarm sandbox file <sandbox> <file path> --vm_slug <sandbox vm>```\n\n**Description:** Submit a new File stored locally to be sandboxed, define the sandbox name, file path or the optional sandbox vm. Sandbox Analysis will take around 2-5 minutes before the results can be accessed.\n\n> To find the `sandbox` name and `sandbox vm` see [this](#sandbox-providers) section.\n\n**Options**\n\n| Option                 | Type   | Required | Description                                                        |\n|------------------------|--------|----------|--------------------------------------------------------------------|\n| `--vm_slug`            | string | false    | Define the Sandbox image to use.                                   |\n| `-z`, `--is-zip`       | bool   | false    | Will handle the provided file as a zip and decompress server side. |\n| `-p`, `--zip-password` | string | false    | Used to provide a password to decompress the zip file with.        |\n| `--internet-disabled`  | bool   | false    | Disable internet access in sandbox when processing the sample.     |\n\n**Request**\n```bash\n$ polyswarm sandbox file triage ./tests/eicar.yara --vm_slug windows11-21h2-x64\n```\n\n**Response**\n```bash\n============================= Sandbox Task =============================\nid: 30536618894625674\nsha256: None\nsandbox: triage\ncreated: 2023-06-20T18:47:46.242045\ncommunity: pi\ninstance id: 95454528418762552\nstatus: PENDING\n```\n\nSandboxes have multiple returned statuses, these are listed below.\n\n| Status                               | What is it for?                                                          |\n|--------------------------------------|--------------------------------------------------------------------------|\n| `Success`                            | Finished processing correctly.                                           |\n| `Started`                            | Sandbox session has started.                                             |\n| `Collecting Data`                    | Sandbox session has been successful and data is being collected.         |\n| `Failed`                             | Sandbox session has failed, this can be due to many reasons.             |\n| `Pending`                            | Sandbox session is queued up and ready to start.                         |\n| `Timed out`                          | Sandbox session has timed out and quota has not been reimbursed.         |\n| `Delayed`                            | Sandbox session has been delayed and will start soon.                    |\n| `Failed with Quota Reimbursement`    | Finished processing but failed, quota will be reimbursed.                |\n| `Timed out with Quota Reimbursement` | Delayed in the queue for too long, got timed out and then reimbursement. |\n\n#### Sandboxing a URL or QR Code\n\n**Format:** ```polyswarm sandbox url <PROVIDER> [URL]```\n\n**Description:** Submit a URL to be sandboxed, define the sandbox PROVIDER name (e.g. `triage` or `cape`), the URL (unless `--qrcode-file` is used), and the optional sandbox vm and browser arguments.\n\n> To find the `sandbox` name and sandbox VMs see [this](#sandbox-providers) section.\n\n**Options**\n\n| Option          | Type   | Required | Description                                                     |\n|-----------------|--------|----------|-----------------------------------------------------------------|\n| `--vm_slug`     | string | false    | Define the Sandbox image to use.                                |\n| `--browser`     | string | false    | Define a browser to detonate the url in, only `edge` supported. |\n| `--qrcode-file` | string | false    | Path of a QR Code image file that contains an URL as a payload. |\n\n**Request**\n```bash\n$ polyswarm sandbox url triage www.polyswarm.io --vm_slug windows11-21h2-x64\n```\n\n**Response**\n```bash\n============================= Sandbox Task =============================\nid: 20806200704232355\nsha256: None\nsandbox: triage\ncreated: 2024-02-22T10:51:48.722414\ncommunity: mainnet1\ninstance id: 7708689624900884\nstatus: PENDING\n```\n\n#### Sandboxing an Existing Artifact\n\n**Format:** ```polyswarm sandbox instance <PROVIDER> <atifact_id>```\n\n**Description:** Submit an already-scanned artifact for processing by the sandboxes. The required arguments are the `Artifact id` and the `sandbox` name.\n\n>To obtain the `artifact_id` required you can use the command `polyswarm --fmt pretty-json search hash <hash> | jq '.artifact_id'` and for the `sandbox` and `--vm_slug` see [here](#sandbox-providers).\n\n**Options**\n\n| Option                | Type   | Required | Description                                                    |\n|-----------------------|--------|----------|----------------------------------------------------------------|\n| `--vm_slug`           | string | false    | Define the Sandbox image to use.                               |\n| `--internet-disabled` | bool   | false    | Disable internet access in sandbox when processing the sample. |\n\n**Request**\n```bash\n$ polyswarm sandbox instance triage 50667050680164455 --vm_slug windows11-21h2-x64\n```\n\n**Response**\n```bash\n============================= Sandbox Task =============================\nid: 76509232912518724\nsha256: e7dcfa7e44cfea923e8d1bde56a480ff3d18e2b7221c8d5e50bf753b1a5e876e\nsandbox: triage\ncreated: 2023-06-20T18:53:47.027083\ncommunity: pi\ninstance id: 5821643847114768\nstatus: PENDING\n```\n\n#### Lookup Sandbox Task\n\n**Format:** ```polyswarm sandbox lookup-id <task_id>```\n\n**Description:** Look up the status of a specific sandbox task with the ID.\n>The ID can be found once a file, or existing artifact has been submitted. CLI commands like `sandbox search` and `sandbox my-tasks` also provide the ID.\n\n**Request**\n```bash\n$ polyswarm sandbox lookup-id 76509232912518724\n```\n**Response**\n``` bash\n============================= Sandbox Task =============================\nid: 76509232912518724\nsha256: e7dcfa7e44cfea923e8d1bde56a480ff3d18e2b7221c8d5e50bf753b1a5e876e\nsandbox: triage\ncreated: 2023-06-20T18:53:47.027083\ncommunity: pi\ninstance id: 5821643847114768\nstatus: STARTED\n```\n\n#### Lookup Latest Sandbox Task {#sandbox-lookup}\n\n**Format:** ```polyswarm sandbox lookup <PROVIDER> <hash>```\n\n**Description:** Look up the status of the latest sandbox task for a hash, including a list of files like pcap, jarm and report.\n\n> Feed the `--fmt pretty-json` option into the command to view the full metadata set of information.\n\n**Request**\n```bash\n$ polyswarm sandbox lookup triage e7dcfa7e44cfea923e8d1bde56a480ff3d18e2b7221c8d5e50bf753b1a5e876e\n```\n**Response**\n``` bash\n============================= Sandbox Task =============================\nid: 97818287069750641\nsha256: 2345c426c584ec12f7a2106a52ce8ac4aeb144476d1a4e4b78c10addfddef920\nsandbox: triage\ncreated: 2023-06-26T15:21:30.054231\ncommunity: mainnet1\ninstance id: 29588752444918666\nstatus: SUCCEEDED\nsandbox artifacts:\n\tdropped_file: triage_dropped_file, PE32+ executable (GUI) x86-64, for MS Windows, instance id: 98765579577983166\n\treport: triage_report.json, application/json, instance id: 23250223674696404\n\traw_report: triage_raw_report.json, application/json, instance id: 70519139222788003\n\tdropped_file: triage_dropped_file, PE32+ executable (DLL) (console) x86-64, for MS Windows, instance id: 76909336038197831\n....\n```\n\n> Note: Each file will have its own `instance_id` that will be required to download the artifact/file.\n\n#### Download Sandbox Artifacts {#download-id}\n\n**Format:** ```polyswarm download-id <instance id>```\n\n**Description:** Provides the ability to download Artifacts from the sandbox like the pcap, report and jarm files.\n\n> Each file will have its own `instance_id`, meaning each `insatnce_id` needs to be defined. To find the `instance id` of the file to download, use the `polyswarm sandbox lookup` cli command [here](#sandbox-lookup). When you submit a file to be sandboxed, you get a SandboxTask ID. When the sandboxing is done, you can get the results for that sandboxtask. If you look at the json output, it will contain a SandboxArtifacts section. Each item in the SandboxArtifacts has an artifact ID.\n\n**Request**\n```bash\n$ polyswarm download-id 76909336038197831\n```\n**Response**\n``` bash\nSuccessfully downloaded artifact b1c52c16bd34314685b2147687d3d82d3032ad1066493538a9547a5b1cdf2254 to /Users/name/Desktop/b1c52c16bd34314685b2147687d3d82d3032ad1066493538a9547a5b1cdf2254\n```\n\n#### List my sandbox tasks\n\n**Format:** ```polyswarm sandbox my-tasks```\n\n**Description:** List all the sandbox tasks submitted by you or anyone in your team with the status of these.\n\n**Options**\n\n| Option              | Type    | Required | Description                                       |\n|---------------------|---------|----------|---------------------------------------------------|\n| `--provider`        | string  | false    | Search on the sandbox name.                       |\n| `--start-date`      | string  | false    | Provide a start date for searching sandbox tasks. |\n| `--end-date`        | string  | false    | Provide a end date for searching sandbox tasks.   |\n| `--sha256`          | string  | false    | Only list tasks with the SHA256 passed.           |\n| `--user-account-id` | integer | false    | User account that created the sandbox task.       |\n\n**Request**\n```bash\n$ polyswarm sandbox my-tasks\n```\n**Response**\n``` bash\n============================= Sandbox Task =============================\nid: 76509232912518724\nsha256: e7dcfa7e44cfea923e8d1bde56a480ff3d18e2b7221c8d5e50bf753b1a5e876e\nsandbox: triage\ncreated: 2023-06-20T18:53:47.027083\ncommunity: pi\ninstance id: 5821643847114768\nstatus: SUCCEEDED\naccount number: 582193978313\nteam account number: 582193978313\n\n============================= Sandbox Task =============================\nid: 30536618894625674\nsha256: 18e5b8fe65e8f73c3a4a637c258c02aeec8a6ab702b15b7ee73f5631a9879e40\nsandbox: triage\ncreated: 2023-06-20T18:47:46.242045\ncommunity: pi\ninstance id: 95454528418762552\nstatus: PENDING\naccount number: 582193978313\nteam account number: 582193978313\n```\n\n#### Search Sandbox Tasks\n\n**Format:** ```polyswarm sandbox search <HASH>```\n\n**Description:** Search sandbox tasks by sha256, sandbox provider, status, start date and/or end date in order to filter out the results.\n\n**Options**\n\n| Option         | Type    | Required | Description                                       |\n|----------------|---------|----------|---------------------------------------------------|\n| `--provider`   | string  | false    | Search on the sandbox name.                       |\n| `--status`     | string  | false    | Filter by status i.e. pending.                    |\n| `--start-date` | string  | false    | Provide a start date for searching sandbox tasks. |\n| `--end-date`   | string  | false    | Provide a end date for searching sandbox tasks.   |\n| `--account-id` | integer | false    | Account that created the sandbox task.            |\n\n**Request**\n```bash\n$ polyswarm sandbox search 18e5b8fe65e8f73c3a4a637c258c02aeec8a6ab702b15b7ee73f5631a9879e40\n```\n**Response**\n``` bash\n============================= Sandbox Task =============================\nid: 30536618894625674\nsha256: 18e5b8fe65e8f73c3a4a637c258c02aeec8a6ab702b15b7ee73f5631a9879e40\nsandbox: triage\ncreated: 2023-06-20T18:47:46.242045\ncommunity: pi\ninstance id: 95454528418762552\nstatus: PENDING\n```\n## Hunting with Yara {#hunting-yara}\n\n#### Managing Yara Rulesets\nThis section will walk through creating a Yara ruleset(s), viewing the ruleset contents, listing all rulesets, updating a ruleset and deleting a ruleset.\n\n##### Creating a Ruleset\n\n**Format:** ```polyswarm rules create eicar <file.yara>```\n\n**Description:** The first step to hunting with Yara rules is to create your Yara ruleset(s).\n\n**Options**\n\n| Option                 | Type   | Required | Description                 |\n|------------------------|--------|----------|-----------------------------|\n| `-d`, `--description`  | string | false    | Description of the ruleset. |\n\n**Request**\n```bash\n$ polyswarm rules create eicar eicar.yara\n```\n\n**Response**\n```bash\nRuleset Id: 57611858371350090\nName: eicar\nDescription: None\nCreated at: 2022-05-26 21:00:09.401395\nModified at: 2022-05-26 21:00:09.401395\n```\n\n##### View a Ruleset List\n\n**Format:** ```polyswarm rules list```\n\n**Description:** It is also possible to list all the rulesets that exist in your account.\n\n**Request**\n```bash\n$ polyswarm rules list\n```\n\n**Response**\n```bash\nRuleset Id: 57611858371350090\nName: eicar\nDescription: None\nCreated at: 2022-05-26 21:00:09.401395\nModified at: 2022-05-26 21:00:09.401395\n\nRuleset Id: 6094816616323164\nName: eicar\nDescription: None\nCreated at: 2022-05-26 18:42:41.806803\nModified at: 2022-05-26 18:45:04.864430\n```\n\n##### Inspect a Yara Ruleset Contents\n\n**Format:** ```polyswarm rules view <Ruleset ID>```\n\n**Description:** You can use the `Ruleset Id` to inspect the contents of the Yara ruleset you created.\n>Find the Ruleset ID of the Ruleset with the command `polyswarm rules list`\n\n**Request**\n```bash\n$ polyswarm rules view 57611858371350090\n```\n\n**Response**\n```bash\nRuleset Id: 57611858371350090\nName: eicar\nDescription: None\nCreated at: 2022-05-26 21:00:09.401395\nModified at: 2022-05-26 21:00:09.401395\nRuleset Contents:\nrule eicar_av_test {\n    /*\n       Per standard, match only if entire file is EICAR string plus optional trailing whitespace.\n       The raw EICAR string to be matched is:\n       X5O!P%@AP[4\\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*\n    */\n\n    meta:\n        description = \"This is a standard AV test, intended to verify that BinaryAlert is working correctly.\"\n        author = \"Austin Byers | Airbnb CSIRT\"\n        reference = \"http://www.eicar.org/86-0-Intended-use.html\"\n\n    strings:\n        $eicar_regex = /^X5O!P%@AP\\[4\\\\PZX54\\(P\\^\\)7CC\\)7\\}\\$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!\\$H\\+H\\*\\s*$/\n\n    condition:\n        all of them\n}\n\nrule eicar_substring_test {\n    /*\n       More generic - match just the embedded EICAR string (e.g. in packed executables, PDFs, etc)\n    */\n\n    meta:\n        description = \"Standard AV test, checking for an EICAR substring\"\n        author = \"Austin Byers | Airbnb CSIRT\"\n\n    strings:\n        $eicar_substring = \"$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!\"\n\n    condition:\n        all of them\n}\n```\n##### Update a Yara Ruleset\n\n**Format:** ```polyswarm rules update <ruleset id> --name <NEW NAME> --file <file.yara>```\n\n**Description:** Update the ruleset using the `update` command or update the yara ruleset.\n\n**Options**\n\n| Option                | Type   | Required | Description                 |\n|-----------------------|--------|----------|-----------------------------|\n| `-n`, `--name`        | string | false    | Name of the ruleset.        |\n| `-f`, `--file`        | string | false    | File containing yara rules. |\n| `-d`, `--description` | string | false    | Description of the ruleset. |\n\n**Request**\n```bash\n$ polyswarm rules update 57611858371350090 --name EiCaR\n```\n\n**Response**\n```bash\nRuleset Id: 57611858371350090\nName: EiCaR\nDescription: None\nCreated at: 2022-05-26 21:00:09.401395\nModified at: 2022-05-26 21:03:09.500600\n```\n##### Deleting a YARA Ruleset\n\n**Format:** ```polyswarm rules delete <Ruleset ID>```\n\n**Description:**Delete a ruleset if **there is not a live hunt running** associated with it.\n\n**Request**\n```bash\n$ polyswarm rules delete 57611858371350090\n```\n\n**Response**\n```bash\nRuleset Id: 57611858371350090\nName: EiCaR\nDescription: None\nCreated at: 2022-05-26 21:00:09.401395\nModified at: 2022-05-26 21:03:45.551115\n```\n\n#### Live Hunting\nLive Hunting offers users the valuable capability to employ a YARA ruleset for matching against artifacts submitted in real time to PolySwarm's extensive dataset.\n\n##### Start a Live Hunt\n**Format:** ```polyswarm live start <ruleset_id>```\n\n**Description:** Start a live hunt, Every live hunt that is active must be associated with a Yara ruleset. Because of this, you need to provide the `rulset_id` when starting a live hunt.\n\n**Request**\n```bash\n$ polyswarm live start 57989886451857569\n```\n\n**Response**\n\n```bash\nRuleset Id: 57989886451857569\nLive Hunt Id: 86677820494666932\nLive Hunt Created at: 2022-05-26T21:14:29.334580\nName: eicar\nDescription: None\nCreated at: 2022-05-26 18:48:38.048514\nModified at: 2022-05-26 21:14:29.207665\n```\n\n##### Stop a Live Hunt\n**Format:** ```polyswarm live stop <ruleset_id>```\n\n**Description:** Similarly, you can stop a live hunt providing the `ruleset_id` it is associated with.\nWhen you start the live hunt for the same `ruleset_id`, a new `live_hunt_id` is generated.\nThe Ruleset **cannot be deleted or modified** while it has an active live hunt associated with it.\n\n**Request**\n```bash\n$ polyswarm live stop 57989886451857569\n```\n\n**Response**\n\n```bash\nRuleset Id: 57989886451857569\nName: eicar\nDescription: None\nCreated at: 2022-05-26 18:48:38.048514\nModified at: 2022-05-26 21:17:29.079046\n```\n\n##### View Live Results of a Live Hunt\n**Format:** ```polyswarm live feed```\n\n**Description:** You can see all the live results generated from all the live hunts in your feed.\nThey are reverse chronologically ordered.\n\n**Options**\n\n| Option                    | Type   | Required | Description |\n|---------------------------|--------|----------|-------------|\n| `-r`, `--rule-name`       | string | false    | Filter results on the rule name|\n| `-f`, `--family`          | string | false    | Filter hunt based on the family name|\n| `-p`, `--private`         | string | false    | Filter results to only your Private Community, if not defined results are shown from your Private Community and the Public Community.||`-l`, `--polyscore-lower`| string | false    | Polyscore lower bound for the hunt results|\n| `-u`, `--polyscore-upper` | string | false    | Polyscore upper bound for the hunt results|\n\n**Request**\n```bash\n$ polyswarm live feed\n```\n\n**Response**\n\n```bash\nId: 32552275040389723\nInstance Id: 33280875575725264\nCreated at: 2022-05-26 21:15:27.507020\nSHA256: 275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f\nRule: eicar_substring_test\nPolyScore: 0.23213458159978606066\nDetections: 1/1 engines reported malicious\nTags: {}\n\nId: 34271764645034598\nInstance Id: 33280875575725264\nCreated at: 2022-05-26 21:15:27.494428\nSHA256: 275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f\nRule: eicar_av_test\nPolyScore: 0.23213458159978606066\nDetections: 1/1 engines reported malicious\nTags: {}\n```\n\n##### View a Singular Result\n**Format:** ```polyswarm live result <instance_id>```\n\n**Description:** You can inspect a particular result and get a download link using the `result` command.\n\n**Request>**\n```bash\n$ polyswarm live result 32552275040389723\n```\n\n**Response**\n\n```bash\nId: 32552275040389723\nInstance Id: 33280875575725264\nCreated at: 2022-05-26 21:15:27.507020\nSHA256: 275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f\nRule: eicar_substring_test\nPolyScore: 0.23213458159978606066\nDetections: 1/1 engines reported malicious\nTags: {}\nDownload Url: http://minio:9000/cache-public/27/5a/02/275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f3395856ce81f2b7382dee72602f798b642f1414044d88612fea8a8f36de82e1278abb02f?response-content-disposition=attachment%3Bfilename%3Dinfected&response-content-type=application%2Foctet-stream&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIOSFODNN7EXAMPLE%2F20220526%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20220526T211923Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=52c1c289e0a9c86187224fbeeb6fa5122b8e9b0d196cc6440c00b665e168985c\n```\n\n##### Delete a Result\n**Format:** ```polyswarm live results-delete <instance_id>```\n\n**Description:** You can also delete results from this list that are not interesting.\n\n**Request**\n```bash\n$ polyswarm live results-delete 32552275040389723 # you can provide more ids here, separated by space\n```\n\n**Response**\n\n```bash\nId: 32552275040389723\nInstance Id: 33280875575725264\nCreated at: 2022-05-26 21:15:27.507020\nSHA256: 275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f\nRule: eicar_substring_test\nPolyScore: 0.23213458159978606066\nDetections: 1/1 engines reported malicious\nTags: {}\n```\n\n#### Historical Hunting\nHistorical Hunting offers users the valuable capability to employ a YARA ruleset for matching against artifacts previously submitted in real time to PolySwarm's extensive dataset.\n\n##### Start a Historical Hunt\n**Format:**\n```polyswarm historical start  <file.yara>```\n\nOR\n\n```polyswarm historical start -r <ruleset_id>```\n\n>Provide the Yara ruleset directly or provide the ruleset id of the Yara Ruleset.\n\n**Description:** Start a new historical hunt providing the ruleset directly.\n\n**Options**\n\n| Option             | Type    | Required | Description                                                        |\n|--------------------|---------|----------|--------------------------------------------------------------------|\n| `-r`, `--rule-id`  | integer | false    | If provided, create this historical hunt from an existing ruleset. |\n| `-n`, `--name`     | string  | false    | Explicitly set the ruleset name for this hunt.                     |\n\n**Request**\n```bash\n$ polyswarm historical start tests/eicar.yara\n```\n\n**Response**\n\n```bash\nHunt Id: 60834480310458457\nStatus: PENDING\nCreated at: 2022-05-26 21:24:20.712138\nRuleset Name: eicar.yara\nRuleset Contents:\nrule eicar_av_test {\n    /*\n       Per standard, match only if entire file is EICAR string plus optional trailing whitespace.\n       The raw EICAR string to be matched is:\n       X5O!P%@AP[4\\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*\n    */\n\n    meta:\n        description = \"This is a standard AV test, intended to verify that BinaryAlert is working correctly.\"\n        author = \"Austin Byers | Airbnb CSIRT\"\n        reference = \"http://www.eicar.org/86-0-Intended-use.html\"\n\n    strings:\n        $eicar_regex = /^X5O!P%@AP\\[4\\\\PZX54\\(P\\^\\)7CC\\)7\\}\\$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!\\$H\\+H\\*\\s*$/\n\n    condition:\n        all of them\n}\n\nrule eicar_substring_test {\n    /*\n       More generic - match just the embedded EICAR string (e.g. in packed executables, PDFs, etc)\n    */\n\n    meta:\n        description = \"Standard AV test, checking for an EICAR substring\"\n        author = \"Austin Byers | Airbnb CSIRT\"\n\n    strings:\n        $eicar_substring = \"$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!\"\n\n    condition:\n        all of them\n}\n```\n\n>Historical hunt will activate upon creation. They are created in the `PENDING` state and\nare scheduled for execution during the next processing window.\n\n##### View a Historical Hunt Status\n**Format:** ```polyswarm historical list```\n\n**Description:** You can see the state of your historical hunts when you use the `list` command.\n\n**Options**\n\n| Option           | Type    | Required | Description                                 |\n|------------------|---------|----------|---------------------------------------------|\n| `-s`, `--since`  | integer | false    | How far back in seconds to request results. |\n\n**Request**\n```bash\n$ polyswarm historical list\n```\n\n**Response**\n\n```bash\nHunt Id: 86933257769414706\nStatus: PENDING\nCreated at: 2022-05-26 21:25:35.467834\nRuleset Name: eicar\n\nHunt Id: 60834480310458457\nStatus: PENDING\nCreated at: 2022-05-26 21:24:20.712138\nRuleset Name: eicar.yara\n\nHunt Id: 79157116618547376\nStatus: PENDING\nCreated at: 2022-05-26 19:07:25.339932\nRuleset Name: eicar.yara\n\nHunt Id: 48011760326110718\nStatus: LIMITED\nProgress: 100.00%\nCreated at: 2022-05-26 17:53:07.832218\nTotal count: 6\n\teicar_av_test: 3\n\teicar_substring_test: 3\nRuleset Name: eicar.yara\n```\n\n##### Cancel a Historical Hunt\n**Format:** ```polyswarm historical cancel <hunt_id>```\n\n**Description:** You can cancel a historical if you don't want it to finish by providing the hunt id. It will prevent further processing.\n\n**Request**\n```bash\n$ polyswarm historical cancel 86933257769414706\n```\n\n**Response**\n\n```bash\nHunt Id: 86933257769414706\nStatus: CANCELED\nCreated at: 2022-05-26 21:25:35.467834\nRuleset Name: eicar\nRuleset Contents:\nrule eicar_av_test {\n    /*\n       Per standard, match only if entire file is EICAR string plus optional trailing whitespace.\n       The raw EICAR string to be matched is:\n       X5O!P%@AP[4\\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*\n    */\n\n    meta:\n        description = \"This is a standard AV test, intended to verify that BinaryAlert is working correctly.\"\n        author = \"Austin Byers | Airbnb CSIRT\"\n        reference = \"http://www.eicar.org/86-0-Intended-use.html\"\n\n    strings:\n        $eicar_regex = /^X5O!P%@AP\\[4\\\\PZX54\\(P\\^\\)7CC\\)7\\}\\$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!\\$H\\+H\\*\\s*$/\n\n    condition:\n        all of them\n}\n\nrule eicar_substring_test {\n    /*\n       More generic - match just the embedded EICAR string (e.g. in packed executables, PDFs, etc)\n    */\n\n    meta:\n        description = \"Standard AV test, checking for an EICAR substring\"\n        author = \"Austin Byers | Airbnb CSIRT\"\n\n    strings:\n        $eicar_substring = \"$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!\"\n\n    condition:\n        all of them\n}\n```\n\n##### Delete a Historical Hunt\n**Format:** ```polyswarm historical delete <hunt_id>```\n\n**Description:** You can also delete a historical hunt. The results associated with it will also be removed.\n>Since there can be a large number of results, this is an asynchronous task and might take a while to finish after it is requested.\n\n**Request**\n```bash\n$ polyswarm historical delete 86933257769414706\n```\n\n**Response**\n\n```bash\nSuccessfully deleted Hunt:\nHunt Id: 86933257769414706\nStatus: DELETING\nCreated at: 2022-05-26 21:25:35.467834\nRuleset Name: eicar\nRuleset Contents:\nrule eicar_av_test {\n    /*\n       Per standard, match only if entire file is EICAR string plus optional trailing whitespace.\n       The raw EICAR string to be matched is:\n       X5O!P%@AP[4\\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*\n    */\n\n    meta:\n        description = \"This is a standard AV test, intended to verify that BinaryAlert is working correctly.\"\n        author = \"Austin Byers | Airbnb CSIRT\"\n        reference = \"http://www.eicar.org/86-0-Intended-use.html\"\n\n    strings:\n        $eicar_regex = /^X5O!P%@AP\\[4\\\\PZX54\\(P\\^\\)7CC\\)7\\}\\$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!\\$H\\+H\\*\\s*$/\n\n    condition:\n        all of them\n}\n\nrule eicar_substring_test {\n    /*\n       More generic - match just the embedded EICAR string (e.g. in packed executables, PDFs, etc)\n    */\n\n    meta:\n        description = \"Standard AV test, checking for an EICAR substring\"\n        author = \"Austin Byers | Airbnb CSIRT\"\n\n    strings:\n        $eicar_substring = \"$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!\"\n\n    condition:\n        all of them\n}\n```\n\n##### View or Download Historical Hunt Details\n**Format:** ```polyswarm historical view <hunt_id>```\n\n**Description:** You can view details about the historical hunt and download a summary csv using the `view` command.\n\n**Request**\n```bash\n$ polyswarm historical view 48011760326110718\n```\n\n**Response**\n\n```bash\nHunt Id: 48011760326110718\nStatus: LIMITED\nProgress: 100.00%\nCreated at: 2022-05-26 17:53:07.832218\nTotal count: 6\n\teicar_av_test: 3\n\teicar_substring_test: 3\nDownload Results CSV:\n\thttp://minio:9000/historical/72/48/e9/7248e979625acf9f527e3ab7c8c0125e72e9b0a30b9a308b1617d475c8bcbf6bf27d52363bf2cd7b2359c70c6aac1de2ddad7daebc660cb805c99b51d4e4ff9648fe7eb1?response-content-disposition=attachment%3Bfilename%3D48011760326110718.csv&response-content-type=application%2Foctet-stream&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIOSFODNN7EXAMPLE%2F20220526%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20220526T213205Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=df334159d7a2a334f6fb0deffd6edc334f6f9188f4d29777b15a0575600114ff\nRuleset Name: eicar.yara\nRuleset Contents:\nrule eicar_av_test {\n    /*\n       Per standard, match only if entire file is EICAR string plus optional trailing whitespace.\n       The raw EICAR string to be matched is:\n       X5O!P%@AP[4\\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*\n    */\n\n    meta:\n        description = \"This is a standard AV test, intended to verify that BinaryAlert is working correctly.\"\n        author = \"Austin Byers | Airbnb CSIRT\"\n        reference = \"http://www.eicar.org/86-0-Intended-use.html\"\n\n    strings:\n        $eicar_regex = /^X5O!P%@AP\\[4\\\\PZX54\\(P\\^\\)7CC\\)7\\}\\$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!\\$H\\+H\\*\\s*$/\n\n    condition:\n        all of them\n}\n\nrule eicar_substring_test {\n    /*\n       More generic - match just the embedded EICAR string (e.g. in packed executables, PDFs, etc)\n    */\n\n    meta:\n        description = \"Standard AV test, checking for an EICAR substring\"\n        author = \"Austin Byers | Airbnb CSIRT\"\n\n    strings:\n        $eicar_substring = \"$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!\"\n\n    condition:\n        all of them\n}\n```\n\n##### View Results of a Historical Hunt\n**Format:** ```polyswarm historical results <hunt_id>```\n\n**Description:** You can see the results of a particular hunt using its `hunt_id`.\n\n**Options**\n\n| Option | Type | Required | Description |\n|------|------|----------|-------------|\n|`-r`, `--rule-name`| string | false    | Filter results on the rule name|\n|`-f`, `--family`| string | false    | Filter hunt based on the family name|\n|`-p`, `--private`| string | false    | Filter results to only your Private Community, if not defined results are shown from your Private Community and the Public Community.|\n|`-l`, `--polyscore-lower`| string | false    | Polyscore lower bound for the hunt results|\n|`-u`, `--polyscore-upper`| string | false    | Polyscore upper bound for the hunt results|\n\n**Request**\n```bash\n$ polyswarm historical results 48011760326110718\n```\n\n**Response**\n\n```bash\nId: 34417123788028549\nInstance Id: 72401552809848506\nCreated at: 2022-05-26 17:54:56.489448\nSHA256: 275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f\nRule: eicar_substring_test\nPolyScore: 0.23213458159978606066\nDetections: 1/1 engines reported malicious\nTags: {}\n\nId: 89734617019442134\nInstance Id: 72401552809848506\nCreated at: 2022-05-26 17:54:56.489448\nSHA256: 275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f\nRule: eicar_av_test\nPolyScore: 0.23213458159978606066\nDetections: 1/1 engines reported malicious\nTags: {}\n\nId: 55984849350345511\nInstance Id: 72401552809848506\nCreated at: 2022-05-26 17:54:56.489448\nSHA256: 275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f\nRule: eicar_substring_test\nPolyScore: 0.23213458159978606066\nDetections: 1/1 engines reported malicious\nTags: {}\n```\n\n##### View or Download a Single Result of a Historical Hunt\n**Format:** ```polyswarm historical result <id>```\n\n**Description:** You can inspect details and download the file for a result with the `result` command. You will need the ID which you can find with the `polyswarm historical view <hunt_id>` command.\n\n**Request**\n```bash\n$ polyswarm historical result 34417123788028549\n```\n\n**Response**\n\n```bash\nId: 34417123788028549\nInstance Id: 72401552809848506\nCreated at: 2022-05-26 17:54:56.489448\nSHA256: 275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f\nRule: eicar_substring_test\nPolyScore: 0.23213458159978606066\nDetections: 1/1 engines reported malicious\nTags: {}\nDownload Url: http://minio:9000/cache-public/27/5a/02/275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f3395856ce81f2b7382dee72602f798b642f1414044d88612fea8a8f36de82e1278abb02f?response-content-disposition=attachment%3Bfilename%3Dinfected&response-content-type=application%2Foctet-stream&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIOSFODNN7EXAMPLE%2F20220526%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20220526T213355Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=bdd77765df45c068cd8f0d16580363003f9490ead7f4ff758aeada39bdcf9f96\n```\n\n##### Delete Historical Hunt Results\n**Format:** ```polyswarm historical results-delete <id>```\n\n**Description:** You can delete an undesirable result by providing the ID or a list of ID's.\n\n**Request**\n```bash\n$ polyswarm historical results-delete 34417123788028549 # you can provide a list of ids here, space separated\n```\n\n**Response**\n\n```bash\nId: 34417123788028549\nInstance Id: 72401552809848506\nCreated at: 2022-05-26 17:54:56.489448\nSHA256: 275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f\nRule: eicar_substring_test\nPolyScore: 0.23213458159978606066\nDetections: 1/1 engines reported malicious\nTags: {}\n```\n## Cat Artifacts {#cat-artifacts}\n\n**Format:** ```polyswarm cat <hash> |hexdump -C```\n\n**Description:** Cat artifact to stdout. Perform feature extraction from artifact without downloading.\n\n**Request**\n```bash\n$ # Get C&C from malware config\n$ polyswarm cat 3b08ce97c512c695c0258c2d0fce86648a28cceb1ce98e0456413e339c7908e8 |hexdump -C\n```\n\n**>Response**\n```bash\n00000000  c3 3e 34 65 04 b3 00 00  00 00 00 00 00 00 00 00  |.>4e............|\n00000010  6c f7 51 3a 6b 01 00 00  1e 00 02 00 e8 03 00 00  |l.Q:k...........|\n00000020  10 27 00 00 c0 d4 01 00  c0 d4 01 00 e0 93 04 00  |.'..............|\n00000030  c0 27 09 00 10 27 00 00                           |.'...'..|\n00000038\n$ polyswarm cat 3b08ce97c512c695c0258c2d0fce86648a28cceb1ce98e0456413e339c7908e8 |od -An -t u1 -N 4|sed 's/^ //;s/\\s\\{1,\\}/./g'\n195.62.52.101\n```\n## Chain commands {#chain-commands}\n\nSome commands in the CLI are composable using the `sha256` format option and the unix pipe character `|`.\nFor instance, if we wanted to download all the results matching a metadata query:\n\n**Request**\n```bash\n$ polyswarm --fmt sha256 search metadata 'strings.domains:malicious.com' | polyswarm download malicious -r -\n```\n**Response**\n```bash\nSuccessfully downloaded artifact 131f95c51cc819465fa1797f6ccacf9d494aaaff46fa3eac73ae63ffbdfd8267 to /home/user/malicious/131f95c51cc819465fa1797f6ccacf9d494aaaff46fa3eac73ae63ffbdfd8267\n```\nOr we may want to download the last new samples matched in Live Hunting for the last 1 hour:\n\n**Request**\n```bash\n$ polyswarm --fmt sha256 live feed -s 3600 | polyswarm download /tmp/download -r -\n```\n\n**Response**\n```bash\nSuccessfully downloaded artifact 513c197e7a88299b217dccc8fa16489c83d0abb06367eb2b14ef3a74102d7831 to /tmp/download/513c197e7a88299b217dccc8fa16489c83d0abb06367eb2b14ef3a74102d7831\nSuccessfully downloaded artifact 7aba0a7ff6e263591e33c5c5c644e0fa6a70d299beced8705983189ded448724 to /tmp/download/7aba0a7ff6e263591e33c5c5c644e0fa6a70d299beced8705983189ded448724\nSuccessfully downloaded artifact 2f4a9ef2071ee896674e3da1a870d4efab4bb16e2e26ea3d7543d98b614ceab9 to /tmp/download/2f4a9ef2071ee896674e3da1a870d4efab4bb16e2e26ea3d7543d98b614ceab9\nSuccessfully downloaded artifact a82dd93585094aeba4363c5aeedd1a85ef72c60a03738b25d452a5d895313875 to /tmp/download/a82dd93585094aeba4363c5aeedd1a85ef72c60a03738b25d452a5d895313875\nSuccessfully downloaded artifact b2d29bb9350a0df93d0918c0208af081f917129ee46544508f2e1cf30aa4f4ce to /tmp/download/b2d29bb9350a0df93d0918c0208af081f917129ee46544508f2e1cf30aa4f4ce\nSuccessfully downloaded artifact bf2cdd1dc2e20c42d2451c83b8280490879b3515aa6c15ab297419990e017142 to /tmp/download/bf2cdd1dc2e20c42d2451c83b8280490879b3515aa6c15ab297419990e017142\nSuccessfully downloaded artifact ba04eacaa80bb5da6b02e1e7fdf3775cf5a44a6179b2c142605e089d78a2f5b6 to /tmp/download/ba04eacaa80bb5da6b02e1e7fdf3775cf5a44a6179b2c142605e089d78a2f5b6\nSuccessfully downloaded artifact a7656ccba0946d25a4efd96f4f4576494d5f1e23e6ad2acc16d2e684656a2d4f to /tmp/download/a7656ccba0946d25a4efd96f4f4576494d5f1e23e6ad2acc16d2e684656a2d4f\n```\n## Lookup UUIDs {#lookup-uuids}\n\n**Format:** ```polyswarm rules create eicar <file.yara>```\n\n**Description:** Scan results are referenced by their Submission UUID.\n\n**Request**\n```bash\n$  polyswarm -vvv -o /tmp/test.json --fmt json lookup 50446025732260182\n```\n>In this example, we demonstrate the `--fmt json` option, which saves the output in json format.\n\n**Response**\n```bash\ninfo [polyswarm.base]: Running polyswarm-cli version 2.0.0 with polyswarm_api version 2.0.0\ndebug [polyswarm_api.api]: Creating PolyswarmAPI instance: api_key: cc2fdb7efa803cefcebd3c9750aab0ee, api_uri: https://api.polyswarm.network/v2, community: default\ndebug [polyswarm_api.http]: Creating PolyswarmHTTP instance\ndebug [polyswarm_api.endpoint]: Creating PolyswarmRequestGenerator instance\ndebug [polyswarm_api.endpoint]: Creating PolyswarmRequest instance.\ndebug [polyswarm_api.endpoint]: Request parameters: {'method': 'GET', 'url': 'https://api.polyswarm.network/v2/consumer/submission/default/50446025732260182'}\ndebug [polyswarm_api.endpoint]: Result parser: ArtifactInstance\ndebug [polyswarm_api.endpoint]: Executing request.\ndebug [urllib3.connectionpool]: Starting new HTTPS connection (1): api.polyswarm.network:443\ndebug [urllib3.connectionpool]: https://api.polyswarm.network:443 \"GET /v2/consumer/submission/default/50446025732260182 HTTP/1.1\" 200 None\ndebug [polyswarm_api.endpoint]: Request returned code 200 with content:\ndebug [polyswarm_api.endpoint]: b'{\"result\":{\"artifact_id\":\"79510820469876527\",\"assertions\":[{\"author\":\"0x45b94B4AFE4E4B5Bd7f70B84919fba20f1FAfB3f\",\"author_name\":\"Qihoo 360\",\"bid\":\"1000000000000000000\",\"engine\":{\"description\":null,\"name\":\"Qihoo 360\"},\"mask\":true,\"metadata\":{\"malware_family\":\"qex.eicar.gen.gen\",\"scanner\":{\"environment\":{\"architecture\":\"AMD64\",\"operating_system\":\"Windows\"}}},\"verdict\":true},{\"author\":\"0xbec683492f5D509e119fB1B60543A1Ca595e0Df9\",\"author_name\":\"Lionic\",\"bid\":\"1000000000000000000\",\"engine\":{\"description\":null,\"name\":\"Lionic\"},\"mask\":true,\"metadata\":{\"malware_family\":\"\",\"scanner\":{\"environment\":{\"architecture\":\"AMD64\",\"operating_system\":\"Windows\"}}},\"verdict\":false},{\"author\":\"0x162675F361F6ff8D6F91e4833f4BA94587AF3655\",\"author_name\":\"XVirus\",\"bid\":\"812500000000000000\",\"engine\":{\"description\":null,\"name\":\"XVirus\"},\"mask\":true,\"metadata\":{\"malware_family\":\"\",\"scanner\":{\"environment\":{\"architecture\":\"AMD64\",\"operating_system\":\"Windows\"},\"vendor_version\":\"3.0.2.0\",\"version\":\"0.2.0\"}},\"verdict\":false},{\"author\":\"0x80Ed773972d8BA0A4FacF2401Aca5CEba52F76dc\",\"author_name\":\"Nucleon\",\"bid\":\"1000000000000000000\",\"engine\":{\"description\":\"Nucleon, The only provider that guarantees 0% false positive. using Nucleon unique offering organizations can reduce thier TCO dramtically and enjoy cyber intelligence like governments have.\",\"name\":\"Nucleon\"},\"mask\":true,\"metadata\":{\"malware_family\":\"\",\"scanner\":{\"environment\":{\"architecture\":\"x86_64\",\"operating_system\":\"Linux\"},\"vendor_version\":\"\",\"version\":\"0.1.0\"}},\"verdict\":false},{\"author\":\"0x8d80CEe474b9004949Cf7e4BfA28460AC8e370a1\",\"author_name\":\"Virusdie\",\"bid\":\"1000000000000000000\",\"engine\":{\"description\":null,\"name\":\"Virusdie\"},\"mask\":true,\"metadata\":{\"malware_family\":\"EICAR.TEST\",\"scanner\":{\"environment\":{\"architecture\":\"x86_64\",\"operating_system\":\"Linux\"},\"vendor_version\":\"1.3.0\",\"version\":\"0.3.0\"}},\"verdict\":true},{\"author\":\"0x7839aB10854505aBb712F10D1F66d45F359e6c89\",\"author_name\":\"Ikarus\",\"bid\":\"1000000000000000000\",\"engine\":{\"description\":null,\"name\":\"Ikarus\"},\"mask\":true,\"metadata\":{\"malware_family\":\"EICAR-Test-File\",\"scanner\":{\"environment\":{\"architecture\":\"x86_64\",\"operating_system\":\"Linux\"},\"signatures_version\":\"21.02.2020 13:15:46 (102417)\",\"vendor_version\":\"5.2.9.0\",\"version\":\"0.2.0\"}},\"verdict\":true},{\"author\":\"0x3750266F07E0590aA16e55c32e08e48878010f8f\",\"author_name\":\"ClamAV\",\"bid\":\"1000000000000000000\",\"engine\":{\"description\":null,\"name\":\"ClamAV\"},\"mask\":true,\"metadata\":{\"malware_family\":\"\",\"scanner\":{\"environment\":{\"architecture\":\"x86_64\",\"operating_system\":\"Linux\"},\"vendor_version\":\"ClamAV 0.101.4/25730/Fri Feb 21 12:08:06 2020\"}},\"verdict\":false},{\"author\":\"0x10A9eE8552f2c6b2787B240CeBeFc4A4BcB96f27\",\"author_name\":\"Alibaba\",\"bid\":\"1000000000000000000\",\"engine\":{\"description\":null,\"name\":\"Alibaba\"},\"mask\":true,\"metadata\":{\"malware_family\":\"\",\"scanner\":{\"environment\":{\"architecture\":\"AMD64\",\"operating_system\":\"Windows\"}},\"type\":\"eicar\"},\"verdict\":false},{\"author\":\"0xbE0B3ec289aaf9206659F8214c49D083Dc1a9E17\",\"author_name\":\"K7\",\"bid\":\"1000000000000000000\",\"engine\":{\"description\":null,\"name\":\"K7\"},\"mask\":true,\"metadata\":{\"malware_family\":\"EICAR_Test_File\",\"scanner\":{\"environment\":{\"architecture\":\"AMD64\",\"operating_system\":\"Windows\"},\"signatures_version\":\"11.95.33362, 21-Feb-2020\",\"vendor_version\":\"15.2.0.42\",\"version\":\"0.2.0\"}},\"verdict\":true},{\"author\":\"0x2b4C240B376E5406C5e2559C27789d776AE97EFD\",\"author_name\":\"NanoAV\",\"bid\":\"1000000000000000000\",\"engine\":{\"description\":null,\"name\":\"NanoAV\"},\"mask\":true,\"metadata\":{\"malware_family\":\"Marker.Dos.EICAR-Test-File.dyb\",\"scanner\":{\"environment\":{\"architecture\":\"AMD64\",\"operating_system\":\"Windows\"},\"signatures_version\":\"0.14.33.17090\",\"vendor_version\":\"1.0.134.90567\",\"version\":\"0.1.0\"}},\"verdict\":true},{\"author\":\"0xb9b1FA288F7b1867AEF6C044CDE12ab2De252113\",\"author_name\":\"VenusEye\",\"bid\":\"812500000000000000\",\"engine\":{\"description\":null,\"name\":\"VenusEye\"},\"mask\":true,\"metadata\":{\"malware_family\":\"\",\"scanner\":{\"environment\":{\"architecture\":\"x86_64\",\"operating_system\":\"Linux\"},\"version\":\"0.1.0\"}},\"verdict\":false},{\"author\":\"0xBAFcaF4504FCB3608686b40eB1AEe09Ae1dd2bc3\",\"author_name\":\"DrWeb\",\"bid\":\"1000000000000000000\",\"engine\":{\"description\":null,\"name\":\"DrWeb\"},\"mask\":true,\"metadata\":{\"malware_family\":\"EICAR Test File (NOT a Virus!)\",\"scanner\":{\"environment\":{\"architecture\":\"x86_64\",\"operating_system\":\"Linux\"},\"signatures_version\":\"864BFD34E93FFC1BEFC260DAE804EFAF, 2020-Feb-21 16:59:42\",\"vendor_version\":\"7.00.44.12030\",\"version\":\"0.3.0\"}},\"verdict\":true}],\"community\":\"lima\",\"country\":\"US\",\"created\":\"2020-02-21T19:21:59.196578\",\"extended_type\":\"EICAR virus test files\",\"failed\":false,\"filename\":\"malicious.txt\",\"first_seen\":\"2020-01-24T21:56:21.456900\",\"id\":\"50446025732260182\",\"last_seen\":\"2020-02-21T19:21:59.196578\",\"md5\":\"a6a57bf20416a4c712c4a1eabcaeb235\",\"metadata\":[{\"created\":\"2020-02-20T22:29:45.801434\",\"tool\":\"strings\",\"tool_metadata\":{\"domains\":[],\"ipv4\":[],\"ipv6\":[],\"urls\":[]}},{\"created\":\"2020-02-20T22:29:45.675692\",\"tool\":\"hash\",\"tool_metadata\":{\"md5\":\"a6a57bf20416a4c712c4a1eabcaeb235\",\"sha1\":\"a33fb79e9c71f1b446607d437a1984602ed47d5c\",\"sha256\":\"89b7a034846a917f7f31a22778ffe04caa3c22136d0e12d1676cfd41a889b6bf\",\"sha3_256\":\"ab1256000f634456fac4fe42bbc0bf39256e4bab954dc8c8f241433d07895fad\",\"sha3_512\":\"737ec00fa15de1defdca9993c7d95058c2f30b658ef66c8b978287c1042d7ba7283d8d1130c356fbb8058bd739c5e349169ad93f4f428a830720ee107c6df288\",\"sha512\":\"2f79598bc355b385be7c7b785ec74073bf4b59b8095c1b1f7291e0dd04e5e140f700bcc583809ec63d6d98991698273c1678bd3399ec0b1b8ba9f60be151ec3b\",\"ssdeep\":\"3:a+JraNvsgzsVqSwHqajaBFSdYSDQ1SBWfQdRXn:tJuOgzskCStDmidRX\",\"tlsh\":\"ccc09b867e1dfda6530b44510171b5771829575d1de4053421d1f0f4dd677dc43741f8\"}}],\"mimetype\":\"text/plain\",\"polyscore\":0.07193209420451106,\"result\":null,\"sha1\":\"a33fb79e9c71f1b446607d437a1984602ed47d5c\",\"sha256\":\"89b7a034846a917f7f31a22778ffe04caa3c22136d0e12d1676cfd41a889b6bf\",\"size\":132,\"type\":\"FILE\",\"votes\":[{\"arbiter\":\"0xB63cD054D7E63D9Ce8AbB403a0dfa11b26A1fB89\",\"vote\":false},{\"arbiter\":\"0xd8b48Da78188312c5fC079E532afd48De973767E\",\"vote\":true},{\"arbiter\":\"0xdC6a0F9C3AF726Ba05AaC14605Ac9B3b958512d7\",\"vote\":false}],\"window_closed\":true},\"status\":\"OK\"}\\n'\ndebug [polyswarm_api.endpoint]: Parsing request results.\ndebug [polyswarm_api.types.base]: Parsing resource ArtifactInstance\n\n```\n\nFor information regarding the JSON format of a result object, please see [polyswarm_api's API.md](https://github.com/polyswarm/polyswarm-api/blob/master/API.md#json-format).\n\n## Notification Webhooks {#notification-webhooks}\n\nNotification webhooks allow you to receive real-time notifications for events in PolySwarm, such as when sandbox analysis completes.\n\n### Create a Notification Webhook\n\n**Format:** ```polyswarm webhook create <WEBHOOK_URI> <SECRET>```\n\n**Description:** Create a new notification webhook to receive notifications from PolySwarm events.\n\n**Options**\n\n| Option          | Type   | Required | Description                                                         |\n|-----------------|--------|----------|---------------------------------------------------------------------|\n| `--status`      | string | false    | Notification webhook status: 'enabled' or 'disabled' (default: enabled)         |\n| `--events`      | string | false    | Event types to subscribe to (can be specified multiple times)      |\n\n**Request**\n```bash\n$ polyswarm webhook create https://example.com/webhook your-secret-key --status enabled --events sandbox_done\n```\n\n**Response**\n```bash\n============================= Notification Webhook =============================\nID: 12345\nWebhook URI: https://example.com/webhook\nStatus: enabled\nEvents: sandbox_done\nCreated: 2024-01-15T10:30:00+00:00\n```\n\n### Get a Notification Webhook\n\n**Format:** ```polyswarm webhook get <WEBHOOK_ID>```\n\n**Description:** Retrieve details about a specific notification webhook by its ID.\n\n**Request**\n```bash\n$ polyswarm webhook get 12345\n```\n\n**Response**\n```bash\n============================= Notification Webhook =============================\nID: 12345\nWebhook URI: https://example.com/webhook\nStatus: enabled\nEvents: sandbox_done\nCreated: 2024-01-15T10:30:00+00:00\n```\n\n### Update a Notification Webhook\n\n**Format:** ```polyswarm webhook update <WEBHOOK_ID> [OPTIONS]```\n\n**Description:** Update an existing notification webhook’s configuration.\n\n**Options**\n\n| Option          | Type   | Required | Description                                                         |\n|-----------------|--------|----------|---------------------------------------------------------------------|\n| `--webhook-uri` | string | false    | The new notification webhook URI                                   |\n| `--secret`      | string | false    | The new secret for HMAC signing                                   |\n| `--status`      | string | false    | The new status: 'enabled' or 'disabled'                           |\n| `--events`      | string | false    | Event types to subscribe to (can be specified multiple times)      |\n\n**Request**\n```bash\n$ polyswarm webhook update 12345 --webhook-uri https://newexample.com/webhook --status disabled\n```\n\n**Response**\n```bash\n============================= Notification Webhook =============================\nID: 12345\nWebhook URI: https://newexample.com/webhook\nStatus: disabled\nEvents: sandbox_done\nCreated: 2024-01-15T10:30:00+00:00\n```\n\n### Delete a Notification Webhook\n\n**Format:** ```polyswarm webhook delete <WEBHOOK_ID>```\n\n**Description:** Delete a notification webhook permanently.\n\n**Request**\n```bash\n$ polyswarm webhook delete 12345\n```\n\n**Response**\n```bash\nWebhook 12345 deleted successfully\n```\n\n### List All Notification Webhooks\n\n**Format:** ```polyswarm webhook list```\n\n**Description:** List all notification webhooks configured for the current account.\n\n**Request**\n```bash\n$ polyswarm webhook list\n```\n\n**Response**\n```bash\n============================= Notification Webhook =============================\nID: 12345\nWebhook URI: https://example.com/webhook\nStatus: enabled\nEvents: sandbox_done\nCreated: 2024-01-15T10:30:00+00:00\n\n============================= Notification Webhook =============================\nID: 67890\nWebhook URI: https://another-example.com/webhook\nStatus: enabled\nEvents: sandbox_done\nCreated: 2024-01-16T14:22:00+00:00\n```\n\n### Test a Notification Webhook\n\n**Format:** ```polyswarm webhook test <WEBHOOK_ID>```\n\n**Description:** Test a notification webhook by sending a test payload to verify it's working correctly.\n\n**Request**\n```bash\n$ polyswarm webhook test 12345\n```\n\n**Response**\n```bash\nTest payload sent to webhook 12345\n```\n\n## Changelog {#changelog}\n\n#### Version 3.15.0\n**Release Date:** 2026-01-28\n**Breaking Changes:** N/A\n\n| Item | Topic                   | Description                                                                                         |\n|------|-------------------------|-----------------------------------------------------------------------------------------------------|\n| 1.0  | Notification Webhooks | New endpoint `notification webhook` for creating a notification webhook. |\n| 2.0  | llm reports | New endpoints for creating llm reports: `llm-create`, `llm-download` and `llm-get` |\n| 3.0  | Private Community Expire | New Options for Scan, to Expire files in a Private Community on Upload, `--expiration-window`. |\n\n#### Version 3.11.0\n**Release Date:** 2025-06-02\n**Breaking Changes:** N/A\n\n| Item | Topic                   | Description                                                                                         |\n|------|-------------------------|-----------------------------------------------------------------------------------------------------|\n| 1.0  | New Param for Sandbox File | New `--arguments` for `sandbox file` |\n\n#### Version 3.10.0\n**Release Date:** 2025-05-20\n**Breaking Changes:** N/A\n\n| Item | Topic                   | Description                                                                                         |\n|------|-------------------------|-----------------------------------------------------------------------------------------------------|\n| 1.0  | New Argument for Sandbox my-tasks | `sandbox my-tasks` supports `--user-account-id` argument |\n| 2.0  | New Feature, Download Sample Bundle Zips | Ability to bundle files into a single zip to download, via `bundle create` |\n| 3.0  | New Feature, Download artifacts created by a Sandbox Task | Ability to download files like Sandbox Tasks report files, via `download-sandbox-artifact SANDBOX_TASK_ID [INSTANCE_ID]...` |\n\n#### Version 3.9.0\n**Release Date:** 2024-12-09\n**Breaking Changes:** N/A\n\n| Item | Topic                   | Description                                                                                         |\n|------|-------------------------|-----------------------------------------------------------------------------------------------------|\n| 1.0  | \"Backing Feature\" field | Show in the features details the new field if it's set when executing `polyswarm account features`. |\n| 2.0  | Bug Fix errors          | Fix errors when serializing some API responses.                                                     |\n\n#### Version 3.8.1\n**Release Date:** 2024-09-24\n**Breaking Changes:** N/A\n\n| Item | Topic                  | Description                                                                          |\n|------|------------------------|--------------------------------------------------------------------------------------|\n| 1.0  | Updated Validation URL | Less strict validation on URLs provided as an argument when scanning and sandboxing. |\n| 2.0  | Error Reporting        | Scans and Sandboxing now shows the Faliure Reason if applicable in the cli response. |\n| 3.0  | Bug Fix Sandbox        | Fixed exception when sandbox doesn't have the `config.artifact_type` field set.      |\n\n\n#### Version 3.8.0\n\n**Release Date:** 2024-08-07\n\n**Breaking Changes:** Item 5.0\n\n| Item | Topic                                      | Description                                                                 |\n|------|--------------------------------------------|-----------------------------------------------------------------------------|\n| 1.0  | Submit URL from QR Code images             | New arg `--qrcode-file` in `polyswarm scan url` and `polyswarm sandbox url` |\n| 2.0  | Get basic account's information            | New command `polyswarm account whois`.                                      |\n| 3.0  | Get account's features and quota available | New command `polyswarm account features`.                                   |\n| 4.0  | New options to create zip reports          | `polyswarm report create [--sandbox_artifact_types --zip-report-ids]`       |\n| 5.0  | Rename command argument                    | `--sandbox` argument is renamed to `--provider`.                            |\n\n#### Version 3.7.0\n\n**Release Date:** 2024-06-27\n\n**Breaking Changes:** N/A\n\n| Item | Topic                        | Description                                                                        |\n|------|------------------------------|------------------------------------------------------------------------------------|\n| 1.0  | Wait and download reports    | New `--nowait`, `--timeout` and `--destination` arguments in the `report` command. |\n| 2.0  | Support zip file submissions | New `--is-zip` and `--zip-password` arguments in `scan` and `sandbox` commands.    |\n\n#### Version 3.6.0\n\n**Release Date:** 2024-05-20\n\n**Breaking Changes:** Item 3.0\n\n| Item | Topic                     | Description                                                                         |\n|------|---------------------------|-------------------------------------------------------------------------------------|\n| 1.0  | Reports Generation        | Introduction of reports generation via the `report` CLI command.                    |\n| 2.0  | Reports Templates         | Introduction of reports templates management via the `report-template` CLI command. |\n| 3.0  | Python versions supported | Minimal Python version supported is 3.7.                                            |\n\n\n#### Version 3.5.2\n**Release Date:** 2024-02-22\n\n**Breaking Changes:** N/A\n\n| Item | Topic          | Description                                                       |\n|------|----------------|-------------------------------------------------------------------|\n| 1.0  | URL Sandboxing | Introduction of URL Sandboxing via the `sandbox url` cli command. |\n\n#### Version 3.5.1\n**Release Date:** 2023-12-06\n\n**Breaking Changes:** 1.0\n\n| Item | Topic              | Description |\n|------|--------------------|-------------|\n|1.0   | IOC Search - Hash  | Previously ioc search by hash returned a Generator, which was not correct. This fix has resolved this issue, to prevent the `has_more` flag being returned.  |\n\n#### Version 3.4.1\n**Release Date:** 2023-09-20\n\n**Breaking Changes:** N/A\n\n| Item | Topic                                         | Description |\n|------|-----------------------------------------------|-------------|\n| 1.0  | Added Private Parameter to Live Results       | Added parameter `--private` to `polyswarm live feed` to allow you to see results from a private community.|\n| 2.0  | Added Private Parameter to Historical Results | Added parameter `--private` to `polyswarm historical results` to allow you to see results from a private community. |\n| 3.0  | New Permalink Structure                       |New Permalink Structure|\n\n#### Version 3.4.0\n**Release Date:** 2023-07-12\n\n**Breaking Changes:** N/A\n\n| Item | Topic                                  | Description                                               |\n|------|----------------------------------------|-----------------------------------------------------------|\n| 1.0  | `polyswarm sandbox providers`          | New output with provider and slug information.            |\n| 2.0  | Update to `polyswarm sandbox file`     | Added new config arguments `provider_slug` and `vm_slug`. |\n| 3.0  | Update to `polyswarm sandbox instance` | Added new config arguments `provider_slug` and `vm_slug`. |\n\n#### Version 3.3.0\n**Release Date:** 2023-06-20\n\n**Breaking Changes:** Item 2.0\n\n| Item | Topic                               | Description                                                        |\n|------|-------------------------------------|--------------------------------------------------------------------|\n| 1.0  | Dropping python 2.7 support         | -                                                                  |\n| 2.0  | polyswarm sandbox submit changes    | Change `polyswarm sandbox submit` to `polyswarm sandbox instance`. |\n| 3.0  | polyswarm sandbox list changes      | Change `polyswarm sandbox list` to `polyswarm sandbox providers`.  |\n| 4.0  | Additional Sub-Commands for Sandbox | lookup, lookup-id, search, file, my-tasks.                         |\n\n#### Version 3.2.1\n**Release Date:** 2023-05-29\n\n**Breaking Changes:** N/A\n\n| Item | Topic                    | Description                                                                       |\n|------|--------------------------|-----------------------------------------------------------------------------------|\n| 1.0  | Bug fix for `search ioc` | Fix an issue with results not displaying with the `polyswarm search ioc` command. |\n"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/engines/reference/examples.md","frontmatter":{"title":"Examples","excerpt":"Working patterns and sample implementations you can copy and adapt."},"html":"<h1 id=\"examples\" style=\"position:relative;\"><a href=\"#examples\" aria-label=\"examples permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Examples</h1>\n<p>These examples show how an Engine works end to end, from receiving a bounty to returning an analysis. Use them as references, then replace the analyzer logic with your own detection tooling.</p>\n<h2 id=\"recommended-learning-path\" style=\"position:relative;\"><a href=\"#recommended-learning-path\" aria-label=\"recommended learning path permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Recommended learning path</h2>\n<p>If you are new to building a PolySwarm Engine, follow this order. Each page builds on the previous one:</p>\n<ol>\n<li><strong>Quickstart</strong>: run the reference EICAR Engine locally and confirm you can return valid results</li>\n<li><strong>Build your Engine</strong>: replace the template analyzer with your own detection logic</li>\n<li><strong>Testing your Engine</strong>: run unit and local integration tests before marketplace testing</li>\n<li><strong>Run your Engine as an engine webhook service</strong>: run the web server and worker so PolySwarm can deliver bounties</li>\n<li><strong>End-to-end testing in the Development Community</strong>: validate real bounty flow in a safe environment</li>\n</ol>\n<p>Once you complete the path above, use the examples below as patterns you can copy and adapt.</p>\n<h2 id=\"example-1---eicar-engine-template\" style=\"position:relative;\"><a href=\"#example-1---eicar-engine-template\" aria-label=\"example 1   eicar engine template permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Example 1 - EICAR Engine (template)</h2>\n<p>Best for learning the basics and validating protocols.</p>\n<p>The <code class=\"language-text\">microengine-webhooks-py</code> repository is the recommended starting point. It is a working Engine that detects EICAR and includes a web server, worker, and tests.</p>\n<p>What it demonstrates:</p>\n<ul>\n<li>registering an analyzer (<code class=\"language-text\">@engine.register_analyzer</code>)</li>\n<li>fetching an artifact safely</li>\n<li>returning an Analysis (verdict, bid, metadata)</li>\n<li>handling unsupported artifact types safely (UNKNOWN)</li>\n</ul>\n<p>Typical analyzer shape:</p>\n<div class=\"gatsby-highlight\" data-language=\"py\"><pre class=\"language-py\"><code class=\"language-py\"><span class=\"token decorator annotation punctuation\">@engine<span class=\"token punctuation\">.</span>register_analyzer</span>\n<span class=\"token keyword\">def</span> <span class=\"token function\">analyze</span><span class=\"token punctuation\">(</span>bounty<span class=\"token punctuation\">:</span> ps<span class=\"token punctuation\">.</span>Bounty<span class=\"token punctuation\">)</span> <span class=\"token operator\">-</span><span class=\"token operator\">></span> ps<span class=\"token punctuation\">.</span>Analysis<span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">if</span> <span class=\"token keyword\">not</span> ps<span class=\"token punctuation\">.</span>is_file_artifact<span class=\"token punctuation\">(</span>bounty<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">return</span> ps<span class=\"token punctuation\">.</span>UNSUPPORTED\n\n    content <span class=\"token operator\">=</span> ps<span class=\"token punctuation\">.</span>get_artifact_bytes<span class=\"token punctuation\">(</span>bounty<span class=\"token punctuation\">)</span>\n\n    <span class=\"token keyword\">if</span> EICAR_STRING <span class=\"token keyword\">in</span> content<span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">return</span> <span class=\"token punctuation\">{</span>\n            <span class=\"token string\">\"verdict\"</span><span class=\"token punctuation\">:</span> ps<span class=\"token punctuation\">.</span>MALICIOUS<span class=\"token punctuation\">,</span>\n            <span class=\"token string\">\"bid\"</span><span class=\"token punctuation\">:</span> ps<span class=\"token punctuation\">.</span>bid_max<span class=\"token punctuation\">(</span>bounty<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n            <span class=\"token string\">\"metadata\"</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">{</span><span class=\"token string\">\"malware_family\"</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"EICAR\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"confidence\"</span><span class=\"token punctuation\">:</span> <span class=\"token number\">1.0</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">}</span>\n\n    <span class=\"token keyword\">return</span> <span class=\"token punctuation\">{</span><span class=\"token string\">\"verdict\"</span><span class=\"token punctuation\">:</span> ps<span class=\"token punctuation\">.</span>BENIGN<span class=\"token punctuation\">,</span> <span class=\"token string\">\"bid\"</span><span class=\"token punctuation\">:</span> ps<span class=\"token punctuation\">.</span>bid_max<span class=\"token punctuation\">(</span>bounty<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"metadata\"</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">}</span></code></pre></div>\n<p>Quick local checks:</p>\n<ul>\n<li>empty bounties</li>\n<li>EICAR for file engines</li>\n<li>WICAR for URL engines</li>\n<li>unsupported types return UNKNOWN</li>\n</ul>\n<h2 id=\"example-2---external-scanner-integration-pattern-clamav-style\" style=\"position:relative;\"><a href=\"#example-2---external-scanner-integration-pattern-clamav-style\" aria-label=\"example 2   external scanner integration pattern clamav style permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Example 2 - External Scanner Integration Pattern (ClamAV style)</h2>\n<p>Best for integrating an existing scanner that expects file paths or runs as a service.</p>\n<p>This pattern:</p>\n<ul>\n<li>downloads the artifact to a temp file</li>\n<li>runs a scanner tool</li>\n<li>maps tool output into verdict and metadata</li>\n</ul>\n<p>Key ideas:</p>\n<ul>\n<li>enforce timeouts, treat timeouts as UNKNOWN</li>\n<li>keep malware family output stable and meaningful</li>\n<li>run scanning in a worker, not in the engine webhook request thread</li>\n</ul>\n<p>Example pattern:</p>\n<div class=\"gatsby-highlight\" data-language=\"py\"><pre class=\"language-py\"><code class=\"language-py\"><span class=\"token decorator annotation punctuation\">@engine<span class=\"token punctuation\">.</span>register_analyzer</span>\n<span class=\"token keyword\">def</span> <span class=\"token function\">analyze</span><span class=\"token punctuation\">(</span>bounty<span class=\"token punctuation\">:</span> ps<span class=\"token punctuation\">.</span>Bounty<span class=\"token punctuation\">)</span> <span class=\"token operator\">-</span><span class=\"token operator\">></span> ps<span class=\"token punctuation\">.</span>Analysis<span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">if</span> <span class=\"token keyword\">not</span> ps<span class=\"token punctuation\">.</span>is_file_artifact<span class=\"token punctuation\">(</span>bounty<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">return</span> ps<span class=\"token punctuation\">.</span>UNSUPPORTED\n\n    <span class=\"token keyword\">with</span> ps<span class=\"token punctuation\">.</span>ArtifactTempfile<span class=\"token punctuation\">(</span>bounty<span class=\"token punctuation\">)</span> <span class=\"token keyword\">as</span> path<span class=\"token punctuation\">:</span>\n        result <span class=\"token operator\">=</span> scan_with_tool<span class=\"token punctuation\">(</span>path<span class=\"token punctuation\">)</span>\n\n    <span class=\"token keyword\">if</span> result<span class=\"token punctuation\">.</span>malicious<span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">return</span> <span class=\"token punctuation\">{</span>\n            <span class=\"token string\">\"verdict\"</span><span class=\"token punctuation\">:</span> ps<span class=\"token punctuation\">.</span>MALICIOUS<span class=\"token punctuation\">,</span>\n            <span class=\"token string\">\"bid\"</span><span class=\"token punctuation\">:</span> ps<span class=\"token punctuation\">.</span>bid_max<span class=\"token punctuation\">(</span>bounty<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n            <span class=\"token string\">\"metadata\"</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">{</span><span class=\"token string\">\"malware_family\"</span><span class=\"token punctuation\">:</span> result<span class=\"token punctuation\">.</span>family<span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">}</span>\n\n    <span class=\"token keyword\">return</span> <span class=\"token punctuation\">{</span><span class=\"token string\">\"verdict\"</span><span class=\"token punctuation\">:</span> ps<span class=\"token punctuation\">.</span>BENIGN<span class=\"token punctuation\">,</span> <span class=\"token string\">\"bid\"</span><span class=\"token punctuation\">:</span> ps<span class=\"token punctuation\">.</span>bid_max<span class=\"token punctuation\">(</span>bounty<span class=\"token punctuation\">)</span><span class=\"token punctuation\">}</span></code></pre></div>\n<h2 id=\"which-example-to-start-with\" style=\"position:relative;\"><a href=\"#which-example-to-start-with\" aria-label=\"which example to start with permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Which example to start with</h2>\n<p>Use the EICAR template if you want:</p>\n<ul>\n<li>the fastest path to a working Engine</li>\n<li>a stable reference for protocols and expected behaviour</li>\n<li>a clear place to replace scanning logic (<code class=\"language-text\">analyze</code>)</li>\n</ul>\n<p>Use the external scanner pattern if you want:</p>\n<ul>\n<li>a model for integrating external tools safely</li>\n<li>a clean file-based workflow for CLI scanners</li>\n<li>a repeatable mapping from tool output to a stable verdict</li>\n</ul>","rawMarkdownBody":"\n# Examples\n\nThese examples show how an Engine works end to end, from receiving a bounty to returning an analysis. Use them as references, then replace the analyzer logic with your own detection tooling.\n\n## Recommended learning path\n\nIf you are new to building a PolySwarm Engine, follow this order. Each page builds on the previous one:\n\n1. **Quickstart**: run the reference EICAR Engine locally and confirm you can return valid results\n2. **Build your Engine**: replace the template analyzer with your own detection logic\n3. **Testing your Engine**: run unit and local integration tests before marketplace testing\n4. **Run your Engine as an engine webhook service**: run the web server and worker so PolySwarm can deliver bounties\n5. **End-to-end testing in the Development Community**: validate real bounty flow in a safe environment\n\nOnce you complete the path above, use the examples below as patterns you can copy and adapt.\n\n## Example 1 - EICAR Engine (template)\n\nBest for learning the basics and validating protocols.\n\nThe `microengine-webhooks-py` repository is the recommended starting point. It is a working Engine that detects EICAR and includes a web server, worker, and tests.\n\nWhat it demonstrates:\n- registering an analyzer (`@engine.register_analyzer`)\n- fetching an artifact safely\n- returning an Analysis (verdict, bid, metadata)\n- handling unsupported artifact types safely (UNKNOWN)\n\nTypical analyzer shape:\n\n```py\n@engine.register_analyzer\ndef analyze(bounty: ps.Bounty) -> ps.Analysis:\n    if not ps.is_file_artifact(bounty):\n        return ps.UNSUPPORTED\n\n    content = ps.get_artifact_bytes(bounty)\n\n    if EICAR_STRING in content:\n        return {\n            \"verdict\": ps.MALICIOUS,\n            \"bid\": ps.bid_max(bounty),\n            \"metadata\": {\"malware_family\": \"EICAR\", \"confidence\": 1.0},\n        }\n\n    return {\"verdict\": ps.BENIGN, \"bid\": ps.bid_max(bounty), \"metadata\": {}}\n```\n\nQuick local checks:\n- empty bounties\n- EICAR for file engines\n- WICAR for URL engines\n- unsupported types return UNKNOWN\n\n## Example 2 - External Scanner Integration Pattern (ClamAV style)\n\nBest for integrating an existing scanner that expects file paths or runs as a service.\n\nThis pattern:\n- downloads the artifact to a temp file\n- runs a scanner tool\n- maps tool output into verdict and metadata\n\nKey ideas:\n- enforce timeouts, treat timeouts as UNKNOWN\n- keep malware family output stable and meaningful\n- run scanning in a worker, not in the engine webhook request thread\n\nExample pattern:\n\n```py\n@engine.register_analyzer\ndef analyze(bounty: ps.Bounty) -> ps.Analysis:\n    if not ps.is_file_artifact(bounty):\n        return ps.UNSUPPORTED\n\n    with ps.ArtifactTempfile(bounty) as path:\n        result = scan_with_tool(path)\n\n    if result.malicious:\n        return {\n            \"verdict\": ps.MALICIOUS,\n            \"bid\": ps.bid_max(bounty),\n            \"metadata\": {\"malware_family\": result.family},\n        }\n\n    return {\"verdict\": ps.BENIGN, \"bid\": ps.bid_max(bounty)}\n```\n\n## Which example to start with\n\nUse the EICAR template if you want:\n- the fastest path to a working Engine\n- a stable reference for protocols and expected behaviour\n- a clear place to replace scanning logic (`analyze`)\n\nUse the external scanner pattern if you want:\n- a model for integrating external tools safely\n- a clean file-based workflow for CLI scanners\n- a repeatable mapping from tool output to a stable verdict\n\n"}},{"node":{"fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/engines/proposal-and-account-setup/onboarding.md","frontmatter":{"title":"Onboarding","excerpt":"What PolySwarm collects and provisions after approval, including agreement, KYC, and technical setup details."},"html":"<h1 id=\"onboarding\" style=\"position:relative;\"><a href=\"#onboarding\" aria-label=\"onboarding permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Onboarding</h1>\n<p>When approved, PolySwarm will require a <strong>Know Your Customer (KYC)</strong> check so we understand who owns and operates the Engine. </p>\n<p>You will be asked to submit:</p>\n<ul>\n<li>Personal identification information</li>\n<li>A government-issued ID (passport preferred)</li>\n</ul>\n<p>You will also receive an <strong>Engine Provider Agreement</strong> for signature. We must have a signed agreement in place before we can proceed to provisioning.</p>\n<h2 id=\"onboarding-checklist\" style=\"position:relative;\"><a href=\"#onboarding-checklist\" aria-label=\"onboarding checklist permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Onboarding checklist</h2>\n<ul>\n<li class=\"task-list-item\"><input type=\"checkbox\" disabled> KYC completed</li>\n<li class=\"task-list-item\"><input type=\"checkbox\" disabled> Engine Provider Agreement signed</li>\n<li class=\"task-list-item\"><input type=\"checkbox\" disabled> Deployment model confirmed (PolySwarm-hosted or Partner-hosted)</li>\n<li class=\"task-list-item\"><input type=\"checkbox\" disabled> Technical details provided (see below)</li>\n</ul>\n<h2 id=\"technical-information\" style=\"position:relative;\"><a href=\"#technical-information\" aria-label=\"technical information permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Technical information</h2>\n<h3 id=\"polyswarm-hosted-engines\" style=\"position:relative;\"><a href=\"#polyswarm-hosted-engines\" aria-label=\"polyswarm hosted engines permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>PolySwarm-hosted Engines</h3>\n<p>If you have chosen to deploy your Engine through PolySwarm, and allow us to host it we will need additional technical information: </p>\n<ul>\n<li>Is the Engine containerized, what is the image size, and how can we access the image?</li>\n<li>What is the update mechanism, and how often does it update?</li>\n<li>Does it require internet access?</li>\n<li>What resources are required (memory, CPU, disk)?</li>\n<li>If it is Windows-based, can it run under Wine?</li>\n</ul>\n<h3 id=\"partner-hosted-engines\" style=\"position:relative;\"><a href=\"#partner-hosted-engines\" aria-label=\"partner hosted engines permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Partner-hosted Engines</h3>\n<p>If you choose to host the Engine yourself, then the process is: </p>\n<ol>\n<li>PolySwarm creates the Engine in a development state until verification is complete</li>\n<li>You create engine webhooks in your team account, connect an engine webhook to the Engine to begin testing.</li>\n<li>Test in the Development Community: Send test bounties to confirm the Engine processes artifacts and responds correctly</li>\n<li>Request verification: When ready, request verification from the My Engines tab in your Team.</li>\n</ol>\n<h2 id=\"verification-failure-reasons\" style=\"position:relative;\"><a href=\"#verification-failure-reasons\" aria-label=\"verification failure reasons permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Verification Failure Reasons</h2>\n<p>During verification testing, common issues include:</p>\n<ul>\n<li>Slow or inconsistent responses</li>\n<li>Incorrect verdict formatting or missing required fields</li>\n<li>Accuracy problems across benign and malicious samples</li>\n<li>Unexpected errors during bounty processing</li>\n<li>If verification fails, fix the issues, re-test in the Development Community, then request verification again.</li>\n</ul>","rawMarkdownBody":"\n# Onboarding \n\nWhen approved, PolySwarm will require a **Know Your Customer (KYC)** check so we understand who owns and operates the Engine. \n\nYou will be asked to submit:\n\n* Personal identification information\n* A government-issued ID (passport preferred)\n\nYou will also receive an **Engine Provider Agreement** for signature. We must have a signed agreement in place before we can proceed to provisioning.\n\n## Onboarding checklist\n- [ ] KYC completed\n- [ ] Engine Provider Agreement signed\n- [ ] Deployment model confirmed (PolySwarm-hosted or Partner-hosted)\n- [ ] Technical details provided (see below)\n\n## Technical information \n\n### PolySwarm-hosted Engines\n\nIf you have chosen to deploy your Engine through PolySwarm, and allow us to host it we will need additional technical information: \n\n* Is the Engine containerized, what is the image size, and how can we access the image?\n* What is the update mechanism, and how often does it update?\n* Does it require internet access?\n* What resources are required (memory, CPU, disk)?\n* If it is Windows-based, can it run under Wine?\n\n### Partner-hosted Engines\n\nIf you choose to host the Engine yourself, then the process is: \n\n1. PolySwarm creates the Engine in a development state until verification is complete\n2. You create engine webhooks in your team account, connect an engine webhook to the Engine to begin testing.\n3. Test in the Development Community: Send test bounties to confirm the Engine processes artifacts and responds correctly\n4. Request verification: When ready, request verification from the My Engines tab in your Team.\n\n## Verification Failure Reasons \n\nDuring verification testing, common issues include:\n\n* Slow or inconsistent responses\n* Incorrect verdict formatting or missing required fields\n* Accuracy problems across benign and malicious samples\n* Unexpected errors during bounty processing\n* If verification fails, fix the issues, re-test in the Development Community, then request verification again.\n\n"}}]},"allYaml":{"edges":[{"node":{"nav":{"categories":[{"slug":"polyswarm-ui","translationKey":"nav.customers.polyswarmUI","items":[{"slug":"/","translationKey":"nav.customers.gettingStartedui","items":[{"slug":"#log-in-sign-up","translationKey":"nav.customers.logIn"},{"slug":"#started-accounts","translationKey":"nav.customers.userAccount"},{"slug":"#context-menu","translationKey":"nav.customers.contextMenu"},{"slug":"#emerging-threats","translationKey":"nav.customers.emergingThreats"},{"slug":"#private-community","translationKey":"nav.customers.private"}]},{"slug":"settings","translationKey":"nav.customers.settings","items":[{"slug":"settings#profile","translationKey":"nav.customers.profile"},{"slug":"settings#members","translationKey":"nav.customers.members"},{"slug":"settings#invitations","translationKey":"nav.customers.invitations"},{"slug":"settings#api-key","translationKey":"nav.customers.apiKeys"},{"slug":"settings#integrations","translationKey":"nav.customers.integrations"},{"slug":"settings#webhooks","translationKey":"nav.customers.webhooksUI"},{"slug":"settings#wallet","translationKey":"nav.customers.walletUI"},{"slug":"settings#rewards","translationKey":"nav.customers.rewardsUI"},{"slug":"settings#usage","translationKey":"nav.customers.usageUI"},{"slug":"settings#activity","translationKey":"nav.customers.activityUI"},{"slug":"settings#advanced","translationKey":"nav.customers.advanced"}]},{"slug":"scanning","translationKey":"nav.customers.scanning","items":[{"slug":"scanning#scan-a-file","translationKey":"nav.customers.scanAFile"},{"slug":"scanning#scan-url-domain-or-ip","translationKey":"nav.customers.scanAUrl"}]},{"slug":"searching","translationKey":"nav.customers.searching","items":[{"slug":"searching#hash-searching","translationKey":"nav.customers.hashSearching"},{"slug":"searching#metadata-searching","translationKey":"nav.customers.metadataSearching"},{"slug":"searching#ioc-searching","translationKey":"nav.customers.iocSearching"}]},{"slug":"sandbox","translationKey":"nav.customers.sandbox","items":[{"slug":"sandbox#submit-sandbox","translationKey":"nav.customers.submitSandbox"},{"slug":"sandbox#my-sandboxing","translationKey":"nav.customers.mySandbox"},{"slug":"sandbox#all-sandbox","translationKey":"nav.customers.allSandboxing"}]},{"slug":"hunting","translationKey":"nav.customers.hunting","items":[{"slug":"hunting#yara-rules","translationKey":"nav.customers.yaraRules"},{"slug":"hunting#live-hunting","translationKey":"nav.customers.liveHunting"},{"slug":"hunting#historical-hunting","translationKey":"nav.customers.historicalHunting"}]},{"slug":"engines","translationKey":"nav.customers.engines","items":[{"slug":"engines#general","translationKey":"nav.customers.enginesGeneral"},{"slug":"engines#all-engines","translationKey":"nav.customers.allEngines"},{"slug":"engines#my-engines","translationKey":"nav.customers.myEngines"},{"slug":"engines-configuration","translationKey":"nav.customers.enginesConfiguration"}]}]},{"slug":"command-line","translationKey":"nav.customers.commandLine","items":[{"slug":"polyswarm-customer-cli-v3","translationKey":"nav.customers.v3.polySwarmCustomerCli","items":[{"slug":"polyswarm-customer-cli-v3#getting-started","translationKey":"nav.customers.v3.gettingStartedCustomerCli"},{"slug":"polyswarm-customer-cli-v3#usage","translationKey":"nav.customers.v3.usingPolyswarmCliCustomerCli"},{"slug":"polyswarm-customer-cli-v3#pc","translationKey":"nav.customers.v3.pcCustomerCli"},{"slug":"polyswarm-customer-cli-v3#scanning-artifacts","translationKey":"nav.customers.v3.scansCustomerCli"},{"slug":"polyswarm-customer-cli-v3#rescanning-artifact","translationKey":"nav.customers.v3.rescanCustomerCli"},{"slug":"polyswarm-customer-cli-v3#downloading-artifacts","translationKey":"nav.customers.v3.downloadCustomerCli"},{"slug":"polyswarm-customer-cli-v3#searching","translationKey":"nav.customers.v3.searchCustomerCli"},{"slug":"polyswarm-customer-cli-v3#tags-lists","translationKey":"nav.customers.v3.tagsListsFamiliesCustomerCli"},{"slug":"polyswarm-customer-cli-v3#sandboxing","translationKey":"nav.customers.v3.sandboxCustomerCli"},{"slug":"polyswarm-customer-cli-v3#hunting-yara","translationKey":"nav.customers.v3.huntCustomerCliV3"},{"slug":"polyswarm-customer-cli-v3#cat-artifacts","translationKey":"nav.customers.v3.catCustomerCli"},{"slug":"polyswarm-customer-cli-v3#chain-commands","translationKey":"nav.customers.v3.chainCommandsCustomerCli"},{"slug":"polyswarm-customer-cli-v3#lookup-uuids","translationKey":"nav.customers.v3.uuidsCustomerCli"},{"slug":"polyswarm-customer-cli-v3#notification-webhooks","translationKey":"nav.customers.v3.notificationWebhooksCustomerApi"},{"slug":"polyswarm-customer-cli-v3#changelog","translationKey":"nav.customers.v3.changelogCustomerCli"}]}]},{"slug":"api","translationKey":"nav.customers.api","items":[{"slug":"polyswarm-customer-api-v3","translationKey":"nav.customers.v3.polySwarmCustomerApi","items":[{"slug":"polyswarm-customer-api-v3#getting-started","translationKey":"nav.customers.v3.gettingStartedCustomerApi"},{"slug":"polyswarm-customer-api-v3#scanning-artifact","translationKey":"nav.customers.v3.scanCustomerApi"},{"slug":"polyswarm-customer-api-v3#rescanning-artifacts","translationKey":"nav.customers.v3.rescanCustomerApi"},{"slug":"polyswarm-customer-api-v3#downloading-artifacts","translationKey":"nav.customers.v3.downloadCustomerApi"},{"slug":"polyswarm-customer-api-v3#report","translationKey":"nav.customers.v3.reportCustomerApi"},{"slug":"polyswarm-customer-api-v3#hash-searching","translationKey":"nav.customers.v3.hashCustomerApi"},{"slug":"polyswarm-customer-api-v3#metadata-searching","translationKey":"nav.customers.v3.metadataCustomerApi"},{"slug":"polyswarm-customer-api-v3#ioc-searching","translationKey":"nav.customers.v3.iocSearchCustomerApi"},{"slug":"polyswarm-customer-api-v3#sandboxing","translationKey":"nav.customers.v3.sandboxCustomerApi"},{"slug":"polyswarm-customer-api-v3#hunting-yara","translationKey":"nav.customers.v3.huntCustomerApi"},{"slug":"polyswarm-customer-api-v3#get-a-stream","translationKey":"nav.customers.v3.streamCustomerAPI"},{"slug":"polyswarm-customer-api-v3#notification-webhooks","translationKey":"nav.customers.v3.notificationWebhooksCustomerApi"},{"slug":"polyswarm-customer-api-v3#changelog","translationKey":"nav.customers.v3.changelogCustomerApi"}]},{"slug":"polyswarm-rest-api-v3","translationKey":"nav.customers.v3.polySwarmRestApi","items":[{"slug":"polyswarm-rest-api-v3#getting-started","translationKey":"nav.customers.v3.gettingStartedRestApi"},{"slug":"polyswarm-rest-api-v3#lookup","translationKey":"nav.customers.v3.lookupRestApi"},{"slug":"polyswarm-rest-api-v3#scanning","translationKey":"nav.customers.v3.scanningRestApi"},{"slug":"polyswarm-rest-api-v3#rescanning","translationKey":"nav.customers.v3.rescanningRestApi"},{"slug":"polyswarm-rest-api-v3#downloading","translationKey":"nav.customers.v3.downloadingRestApi"},{"slug":"polyswarm-rest-api-v3#report","translationKey":"nav.customers.v3.reportRestApi"},{"slug":"polyswarm-rest-api-v3#searching","translationKey":"nav.customers.v3.searchingRestApi"},{"slug":"polyswarm-rest-api-v3#sandboxing","translationKey":"nav.customers.v3.sandboxingRestApi"},{"slug":"polyswarm-rest-api-v3#hunting","translationKey":"nav.customers.v3.huntingRestApi"},{"slug":"polyswarm-rest-api-v3#notification-webhooks","translationKey":"nav.customers.v3.notificationWebhooksCustomerApi"}]}]},{"slug":"stix-taxii","translationKey":"nav.customers.stixTaxii","items":[{"slug":"use-stix-taxii","translationKey":"nav.customers.stixTaxiiApi","items":[{"slug":"use-stix-taxii#getting-started","translationKey":"nav.customers.gettingStartedStixTaxii"},{"slug":"use-stix-taxii#stix-int","translationKey":"nav.customers.intStixTaxii"},{"slug":"use-stix-taxii#stix-api","translationKey":"nav.customers.apiStixTaxii"},{"slug":"use-stix-taxii#stix-mapping","translationKey":"nav.customers.mappingStixTaxii"}]}]},{"slug":"how-to-guide","translationKey":"nav.customers.howToGuide","items":[{"slug":"polyswarm-customer-meta-query","translationKey":"nav.customers.howToGuideMeta","items":[{"slug":"polyswarm-customer-meta-query#searchable-fields","translationKey":"nav.customers.howToGuideMetaFindFields"},{"slug":"polyswarm-customer-meta-query#meta-example","translationKey":"nav.customers.howToGuideMetaExamples"}]},{"slug":"metadata-fields-reference","translationKey":"nav.customers.howToGuideMetadataFieldsReference","items":[{"slug":"metadata-fields-reference#searchable-fields","translationKey":"nav.customers.howToGuideMetadataFieldsList"}]}]},{"slug":"tutorials","translationKey":"nav.customers.tutorials","items":[{"slug":"polyswarm-customer-tutorials-syrian-android","translationKey":"nav.customers.tutorialsSyrianAndroid","items":null},{"slug":"polyswarm-customer-tutorials-iran-nation","translationKey":"nav.customers.tutorialsIranState","items":null},{"slug":"polyswarm-customer-tutorials-zoom","translationKey":"nav.customers.tutorialsZoom","items":null}]},{"slug":"whats-new","translationKey":"nav.customers.whatsNew","items":[{"slug":"polyswarm-customer-new-26","translationKey":"nav.customers.whatsNewSix","items":null},{"slug":"polyswarm-customer-new-25","translationKey":"nav.customers.whatsNewFive","items":null},{"slug":"polyswarm-customer-new-24","translationKey":"nav.customers.whatsNewFour","items":null},{"slug":"polyswarm-customer-new-23","translationKey":"nav.customers.whatsNewThree","items":null}]}]}}}]}},"pageContext":{"locale":"en-US","section":"customers","category":"how-to","fileAbsolutePath":"/opt/buildhome/repo/locale/en-US/customers/how-to/metadata-fields-reference.md"}},"staticQueryHashes":["1558713946"]}