# Report Search

POST /platform/reports/search: Searches reports.

Source: https://docs.deepinfo.com/reference/platform/report-search/

Last updated: 2026-09-27

---
`POST https://api.deepinfo.com/v1/platform/reports/search`

Searches reports. **Different filter format:** `filters.type` is required, other filters use operators like `{"name": {"contains": "…"}}`.

## 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 | Required | See [Filtering](#ref-filtering) below |
| `sort` | object | Optional | One `{field, order}` object |

```json
{
  "filters": {
    "type": "easm_executive_summary"
  }
}
```

## Filtering

This search takes `filters` as an object with one key per field, not as a `must` list. Each field takes the operators of its filter type as keys, and fields combine with AND. `sort` is one `{field, order}` object, not a list. Example body:

```json
{
  "filters": {
    "name": {
      "equals": "<value>"
    }
  },
  "sort": {
    "field": "name",
    "order": "desc"
  }
}
```

Operators by field:

| Field | Operators |
|---|---|
| `name` | `equals`, `not_equals`, `contains` |
| `type` | a plain value: `easm_executive_summary`, `easm_weekly_progress`, `easm_asset_detail`, `easm_vulnerability_detail`, `easm_vulnerability_overview`, `easm_issue_overview`, `easm_issue_detail`, `cti_email_breach_summary` |
| `type_context` | `equals`, `not_equals` |
| `description` | `contains` |
| `creation_date` | `gt`, `gte`, `lt`, `lte` |
| `creation_method` | a plain value: `instant`, `scheduled` |
| `rule_id` | a plain string value |

### Searchable Fields

| Field | Description |
|---|---|
| `name` | The report's name, such as `executive-summary-2025-06-01-08:00`. |
| `type` | **Required.** The report type to search, such as `easm_executive_summary`, `easm_asset_detail` or `cti_email_breach_summary`. One search covers one type. |
| `type_context` | The options the report was made with (for example, which asset an asset detail report covers), an object compared as a whole. |
| `description` | The report's description. |
| `creation_date` | When the report was created (ISO 8601 date-time). |
| `creation_method` | How the report was made: `instant` (on demand) or `scheduled` (by a scheduled report rule). |
| `rule_id` | The ID of the scheduled report rule that made the report; `null` in the response for instant reports. |

### Sortable Fields

| Field | Description |
|---|---|
| `name` | The report's name, such as `executive-summary-2025-06-01-08:00`. |
| `description` | The report's description. |
| `creation_date` | When the report was created (ISO 8601 date-time). |
| `creation_method` | How the report was made: `instant` (on demand) or `scheduled` (by a scheduled report rule). |

## Response Fields

| Field | Type | Description |
|---|---|---|
| `page` | integer |  |
| `page_size` | integer |  |
| `result_count` | integer |  |
| `results` | array of object |  |
| `results[].id` | string |  |
| `results[].name` | string |  |
| `results[].description` | string |  |
| `results[].creation_date` | string | date-time |
| `results[].creation_method` | string | One of `instant`, `scheduled` |
| `results[].rule_id` | string |  |

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[].name` | string |
| `results[].description` | string \| null |
| `results[].creation_date` | string |
| `results[].creation_method` | string |
| `results[].rule_id` | null |

## Examples

### 200 · OK

```bash
curl -X POST 'https://api.deepinfo.com/v1/platform/reports/search?page_size=25' \
  -H 'apikey: YOUR_API_KEY' \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "filters": {
    "type": "easm_executive_summary"
  }
}'
```

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

```json
{
  "page": 1,
  "page_size": 25,
  "result_count": 21,
  "results": [
    {
      "id": "000000000000000eab510001",
      "name": "Executive summary",
      "description": "A PDF report of your attack surface.",
      "creation_date": "2025-06-01T08:00:00Z",
      "creation_method": "instant",
      "rule_id": null
    },
    {
      "id": "000000000000000eab510002",
      "name": "Vulnerability report",
      "description": null,
      "creation_date": "2025-05-25T08:00:00Z",
      "creation_method": "instant",
      "rule_id": null
    }
  ]
}
```

### 400 · Validation Error (empty body {})

```bash
curl -X POST 'https://api.deepinfo.com/v1/platform/reports/search' \
  -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": "filters",
      "details": [
        "This field is required."
      ]
    }
  ],
  "solution": "https://docs.deepinfo.com/reference/"
}
```
