> For the complete documentation index, see [llms.txt](https://apidoc.solidityscan.com/solidityscan-security-api/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://apidoc.solidityscan.com/solidityscan-security-api/getting-started/apis/threatscore-rpc.md).

# ThreatScore RPC

JSON-RPC 2.0 method for running a ThreatScore quick scan via QuickNode.

## Endpoint

<mark style="color:red;">`POST`</mark> `https://YOUR_QUICKNODE_ENDPOINT_HERE.com`

Your QuickNode endpoint handles authentication (URL key or headers). Replace `YOUR_QUICKNODE_ENDPOINT_HERE.com` with your provisioned endpoint.

## Request schema (JSON-RPC 2.0)

| Field     | Type            | Required | Value                                       |
| --------- | --------------- | -------- | ------------------------------------------- |
| `jsonrpc` | string          | Yes      | `2.0`                                       |
| `method`  | string          | Yes      | `ss_quickscan`                              |
| `params`  | array (ordered) | Yes      | `[contract_address, chain_id, explorer_id]` |
| `id`      | string / number | Yes      | Any client-chosen identifier (e.g., `1`)    |

**Params order**

| Param              | Type   | Description                                                      |
| ------------------ | ------ | ---------------------------------------------------------------- |
| `contract_address` | string | Target contract address (checksummed or hex).                    |
| `chain_id`         | string | EVM chain ID (e.g., `"1"` for Ethereum mainnet).                 |
| `explorer_id`      | string | Explorer/provider identifier your backend expects (e.g., `"1"`). |

## Examples

{% tabs %}
{% tab title="cURL" %}

```bash
curl https://YOUR_QUICKNODE_ENDPOINT_HERE.com \
  -X POST \
  -H "Content-Type: application/json" \
  --data '{
    "method": "ss_quickscan",
    "params": ["0x3A32c2BB167BCC7f5E7fE891526e97079Da4ce88", "1", "1"],
    "id": 1,
    "jsonrpc": "2.0"
  }'
```

{% endtab %}

{% tab title="Python (requests)" %}

```python
import requests

endpoint = "https://YOUR_QUICKNODE_ENDPOINT_HERE.com"
headers = {"Content-Type": "application/json"}
payload = {
    "jsonrpc": "2.0",
    "method": "ss_quickscan",
    "params": [
        "0x3A32c2BB167BCC7f5E7fE891526e97079Da4ce88",
        "1",
        "1"
    ],
    "id": 1,
}

resp = requests.post(endpoint, headers=headers, json=payload, timeout=20)
print(resp.status_code, resp.text)
```

{% endtab %}
{% endtabs %}

## Responses

{% tabs %}
{% tab title="Success" %}

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "...": "scan details"
  }
}
```

{% endtab %}

{% tab title="Error" %}

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "error": {
    "code": -32000,
    "message": "error message"
  }
}
```

{% endtab %}
{% endtabs %}

## Notes

* Keep `params` exactly in order: `[contract_address, chain_id, explorer_id]`.
* Auth is handled by your QuickNode endpoint (URL key or headers).
* Use string values for `chain_id` and `explorer_id`.
