# Discovered Asset Search

POST /easm/discovery/assets/search: Searches discovered assets (candidates found by discovery rules) and their state.

Source: https://docs.deepinfo.com/reference/easm/discovered-asset-search/

Last updated: 2026-09-27

---
`POST https://api.deepinfo.com/v1/easm/discovery/assets/search`

Searches discovered assets (candidates found by discovery rules) and their state.

## Authentication

Send your API key in the `apikey` request header.

## Query Parameters

| Parameter | Required | Description | Example |
|---|---|---|---|
| `page_size` | Optional | Min `25`, max `100`. Default `100`. | `25` |
| `page` | Optional | Min `1`, max `800`. Default `1`. | `1` |

## Request Body

| Parameter | Type | Required | Description |
|---|---|---|---|
| `filters` | object | Optional | See [Filtering](#ref-filtering) below |
| `sort` | array | Optional | List of `{field, order}` |

```json
{}
```

## Filtering

Example body:

```json
{
  "filters": {
    "must": [
      {
        "name": "state",
        "type": "eq",
        "value": "<value>"
      }
    ]
  },
  "sort": [
    {
      "field": "asset",
      "order": "desc"
    }
  ]
}
```

See [Getting Started → Search & Filters](/getting-started/search-and-filters/) for the operators.

The Request Template example holds this body with every filter of this endpoint, one entry per field, each with an operator the field accepts and a placeholder value. Copy it, keep the filters you need and set their values.

### Searchable Fields

Grouped by the operators they accept (measured against the API; sending another operator returns 400).

Operators: `eq`, `in`, `startswith`, `endswith`, `wildcard`, `fuzzy`, `contains_any`, `contains_all`, `exists`

| Field | Description |
|---|---|
| `asset` | The discovered asset's name: a domain, subdomain or IP address, or for a website asset `host:port`. |
| `discovery_history.id` | The ID of a discovery rule that found the asset, a 32-character hex string; the Discovery page's rule name filter sends this ID. |
| `discovery_history.seed_value` | The seed value a rule started from when it found the asset, such as an IP address, a certificate fingerprint, a phone number or an organization name. |
| `organization_name` | An organization name recorded for the discovered asset; in the samples it is set only on some domains and holds WHOIS-style values such as `redacted for privacy`. |

Operators: `eq`, `in`, `gte`, `lte`, `exists`

| Field | Description |
|---|---|
| `last_discovery_date` | When a rule last found the asset, shown as the discovery date in Discovery (UTC date-time). |
| `ignore_date` | When the asset was ignored in Discovery (UTC date-time); empty unless it is ignored. |
| `approve_date` | When the asset was approved into your inventory (UTC date-time); empty unless it is approved. |

Operators: `eq`, `in`, `exists`

| Field | Description |
|---|---|
| `asset_type` | The discovered asset's type: `domain`, `subdomain`, `ip` or `website`. |
| `state` | The review state: `in_review` (found by a rule, waiting for a decision), `approved` (added to your inventory) or `ignored` (dismissed; it stays out of your inventory). |

### Sortable Fields

| Field | Description |
|---|---|
| `asset` | The discovered asset's name: a domain, subdomain or IP address, or for a website asset `host:port`. |
| `state` | The review state: `in_review` (found by a rule, waiting for a decision), `approved` (added to your inventory) or `ignored` (dismissed; it stays out of your inventory). |
| `discovery_history` | The rule matches that found the asset, each with the rule ID, rule name, rule type (`smart_discovery`, `smart_monitoring` or `custom`), seed value and discovery date. |
| `last_discovery_date` | When a rule last found the asset, shown as the discovery date in Discovery (UTC date-time). |
| `organization_name` | An organization name recorded for the discovered asset; in the samples it is set only on some domains and holds WHOIS-style values such as `redacted for privacy`. |
| `ignore_date` | When the asset was ignored in Discovery (UTC date-time); empty unless it is ignored. |
| `approve_date` | When the asset was approved into your inventory (UTC date-time); empty unless it is approved. |

## Response Fields

| Field | Type | Description |
|---|---|---|
| `page` | integer |  |
| `page_size` | integer |  |
| `result_count` | integer |  |
| `results` | array of object |  |
| `results[].id` | string |  |
| `results[].asset` | string |  |
| `results[].asset_unicode` | string |  |
| `results[].state` | string | One of `in_review`, `approved`, `ignored` |
| `results[].asset_type` | string | One of `domain`, `subdomain`, `ip`, `website` |
| `results[].discovery_history` | array of object |  |
| `results[].last_discovery_date` | string | date-time |
| `results[].organization_name` | string |  |
| `results[].ignore_date` | string | date-time |
| `results[].approve_date` | string | date-time |

Paginated. See [Getting Started → Pagination](/getting-started/pagination/).

## Response Schema

_Inferred from examples._ Built from the saved 2xx example response: the fields it contains, with the types seen there. It is not a contract.

| Field | Type |
|---|---|
| `page` | number |
| `page_size` | number |
| `result_count` | number |
| `results` | array<object> |
| `results[].id` | string |
| `results[].asset` | string |
| `results[].asset_unicode` | string |
| `results[].state` | string |
| `results[].asset_type` | string |
| `results[].discovery_history` | array<object> |
| `results[].discovery_history[].id` | string |
| `results[].discovery_history[].rule` | string |
| `results[].discovery_history[].rule_type` | string |
| `results[].discovery_history[].enabled` | boolean |
| `results[].discovery_history[].deleted` | boolean |
| `results[].discovery_history[].seed_value` | string |
| `results[].discovery_history[].description` | null |
| `results[].discovery_history[].discovery_date` | string |
| `results[].last_discovery_date` | string |
| `results[].organization_name` | null |
| `results[].ignore_date` | null |
| `results[].approve_date` | null |

## Examples

### 200 · OK

```bash
curl -X POST 'https://api.deepinfo.com/v1/easm/discovery/assets/search?page_size=25' \
  -H 'apikey: YOUR_API_KEY' \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{}'
```

`Content-Type: application/json` · `deepinfo-request-id: 00000000-0000-4000-8000-0000356d0001`

```json
{
  "page": 1,
  "page_size": 25,
  "result_count": 21,
  "results": [
    {
      "id": "00000000000000000000000ea4f90001",
      "asset": "acme.example",
      "asset_unicode": "acme.example",
      "state": "in_review",
      "asset_type": "domain",
      "discovery_history": [
        {
          "id": "00000000000000000000000e56420001",
          "rule": "Main domains",
          "rule_type": "smart_monitoring",
          "enabled": true,
          "deleted": false,
          "seed_value": "acme.example",
          "description": null,
          "discovery_date": "2025-06-01T08:00:00Z"
        }
      ],
      "last_discovery_date": "2025-06-01T08:00:00Z",
      "organization_name": null,
      "ignore_date": null,
      "approve_date": null
    },
    {
      "id": "00000000000000000000000ea4f90002",
      "asset": "fernhill.example",
      "asset_unicode": "fernhill.example",
      "state": "in_review",
      "asset_type": "domain",
      "discovery_history": [
        {
          "id": "00000000000000000000000e56420004",
          "rule": "Brand keywords",
          "rule_type": "smart_discovery",
          "enabled": true,
          "deleted": false,
          "seed_value": "192.0.2.13",
          "description": null,
          "discovery_date": "2025-05-11T08:00:00Z"
        }
      ],
      "last_discovery_date": "2025-05-25T08:00:00Z",
      "organization_name": null,
      "ignore_date": null,
      "approve_date": null
    }
  ]
}
```

### 400 · Invalid Parameter (invalid page=0)

```bash
curl -X POST 'https://api.deepinfo.com/v1/easm/discovery/assets/search?page=0' \
  -H 'apikey: YOUR_API_KEY' \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{}'
```

`Content-Type: application/json` · `deepinfo-request-id: 00000000-0000-4000-8000-0000356d0001`

```json
{
  "code": 10400,
  "parameters": [
    {
      "param": "page",
      "details": [
        "Ensure this value is greater than or equal to 1."
      ]
    }
  ],
  "solution": "https://docs.deepinfo.com/reference/"
}
```

### Request Template

The request only: a request template has no response.

```bash
curl -X POST 'https://api.deepinfo.com/v1/easm/discovery/assets/search?page_size=25' \
  -H 'apikey: YOUR_API_KEY' \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "filters": {
    "must": [
      {
        "name": "asset",
        "type": "eq",
        "value": "<value>"
      },
      {
        "name": "discovery_history.id",
        "type": "eq",
        "value": "<value>"
      },
      {
        "name": "discovery_history.seed_value",
        "type": "eq",
        "value": "<value>"
      },
      {
        "name": "organization_name",
        "type": "eq",
        "value": "<value>"
      },
      {
        "name": "last_discovery_date",
        "type": "eq",
        "value": "<date-time>"
      },
      {
        "name": "ignore_date",
        "type": "eq",
        "value": "<date-time>"
      },
      {
        "name": "approve_date",
        "type": "eq",
        "value": "<date-time>"
      },
      {
        "name": "asset_type",
        "type": "eq",
        "value": "<value>"
      },
      {
        "name": "state",
        "type": "eq",
        "value": "<value>"
      }
    ]
  },
  "sort": [
    {
      "field": "asset",
      "order": "desc"
    }
  ]
}'
```
