---
type: api
title: Bulk install packages
description: Install multiple packages from the Elastic Package Registry in a single request.<br/><br/>[Required authorization] Route required privileges: integrations-all AND fleet-agent-policies-all.
url: https://www.elastic.co/elastic/docs-builder/docs/4371/api/doc/kibana/v0/operation/operation-post-fleet-epm-packages-bulk
resource: https://www.elastic.co/elastic/docs-builder/docs/4371/api/doc/kibana/v0/operation/operation-post-fleet-epm-packages-bulk
products:
  - Kibana
---

# Bulk install packages

- Server: `https://{kibana_url}`

## Paths

- `POST` `/api/fleet/epm/packages/_bulk`

- [Api key auth](/elastic/docs-builder/docs/4371/api/doc/kibana/v0/authentication#apikeyauth)
- [Basic auth](/elastic/docs-builder/docs/4371/api/doc/kibana/v0/authentication#basicauth)

## Description

Install multiple packages from the Elastic Package Registry in a single request.<br/><br/>[Required authorization] Route required privileges: integrations-all AND fleet-agent-policies-all.

## Query String Parameters

- `prerelease` (boolean)
  When true, allow installing prerelease versions

## Request Body

`application/json`

- `allow_outdated_version` (boolean · default: false) — optional
  When true, allow installing a version older than the latest available. Bypasses only the out-of-date version check.
- `force` (boolean · default: false) — optional
- `packages` ([] union anyOf · min: 1 · max: 1000) — required
  - **string**
  - **{ name, version, prerelease }**
    - `name` (string) — required
    - `prerelease` (boolean) — optional
    - `version` (string) — required

## Responses

#### `200`

Successful response

`application/json`

- `items` ([] union anyOf · max: 10000)
  - **Kibana_HTTP_APIs_bulk_install_packages_response_item_success**
    - `name` (string)
    - `result` (object)
      - `assets` ([] union anyOf · max: 10000)
        - **Kibana_HTTP_APIs_kibana_asset_reference**
          - `deferred` (boolean)
          - `id` (string)
          - `originId` (string)
          - `type` (union enum | string)
            Values: `dashboard`, `lens`, `visualization`, `search`, `index-pattern`, `map`, `ml-module`, `security-rule`, `csp-rule-template`, `osquery-pack-asset`, `osquery-saved-query`, `tag`
        - **Kibana_HTTP_APIs_es_asset_reference**
          - `customDataStreamOriginDataset` (string)
          - `customDataStreamOriginType` (string)
          - `deferred` (boolean)
          - `id` (string)
          - `type` (enum)
            Values: `index`, `index_template`, `component_template`, `ingest_pipeline`, `ilm_policy`, `data_stream_ilm_policy`, `transform`, `ml_model`, `knowledge_base`, `esql_view`
          - `version` (string)
      - `error` (object)
      - `installSource` (string)
      - `installType` (string)
      - `status` (enum)
        Values: `installed`, `already_installed`
    - `version` (string)
  - **Kibana_HTTP_APIs_bulk_install_packages_response_item_error**
    - `error` (union anyOf)
      Any of: `string` or `object`
    - `name` (string)
    - `statusCode` (number)
#### `400`

Bad Request

`application/json`

- `attributes` (object)
- `error` (string)
- `errorType` (string)
- `message` (string)
- `statusCode` (number)
## Code Examples

#### Console

```console
POST /api/fleet/epm/packages/_bulk
{
  "packages": [
    "system",
    "aws"
  ]
}
```

#### curl

```curl
curl -X POST "https://{kibana_url}/api/fleet/epm/packages/_bulk" \
  -H "kbn-xsrf: true" \
  -H "Content-Type: application/json" \
  -d '{
  "packages": [
    "system",
    "aws"
  ]
}'
```

## Response Examples

#### Post bulk install packages

Bulk install results

```json
{
  "items": [
    {
      "name": "system",
      "result": {
        "assets": [],
        "status": "installed"
      }
    },
    {
      "name": "aws",
      "result": {
        "assets": [],
        "status": "installed"
      }
    }
  ]
}
```

#### Generic error response

Example of a generic error response

```json
{
  "error": "Bad Request",
  "message": "An error message describing what went wrong",
  "statusCode": 400
}
```

