Elastic Stack (ELK Stack) Snapshot API
The snapshot API from Elastic Stack (ELK Stack) — 12 operation(s) for snapshot.
The snapshot API from Elastic Stack (ELK Stack) — 12 operation(s) for snapshot.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/elk-stack-snapshot-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Elasticsearch Request & Response Specification Snapshot API
license:
name: Apache 2.0
url: https://github.com/elastic/elasticsearch-specification/blob/main/LICENSE
version: ''
tags:
- name: snapshot
paths:
/_snapshot/{repository}/_cleanup:
post:
tags:
- snapshot
summary: Clean up the snapshot repository
description: 'Trigger the review of the contents of a snapshot repository and delete any stale data not referenced by existing snapshots.
## Required authorization
* Cluster privileges: `manage`
'
externalDocs:
description: About managing snapshot
url: https://www.elastic.co/docs/deploy-manage/tools/snapshot-and-restore/self-managed#snapshots-repository-cleanup
x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/clean-up-snapshot-repo-api.html
operationId: snapshot-cleanup-repository
parameters:
- in: path
name: repository
description: The name of the snapshot repository to clean up.
required: true
deprecated: false
schema:
$ref: '#/components/schemas/_types.Name'
style: simple
- in: query
name: master_timeout
description: 'The period to wait for a connection to the master node.
If the master node is not available before the timeout expires, the request fails and returns an error.
To indicate that the request should never timeout, set it to `-1`'
deprecated: false
schema:
default: 30s
allOf:
- $ref: '#/components/schemas/_types.Duration'
style: form
- in: query
name: timeout
description: 'The period to wait for a response from all relevant nodes in the cluster after updating the cluster metadata.
If no response is received before the timeout expires, the cluster metadata update still applies but the response will indicate that it was not completely acknowledged.
To indicate that the request should never timeout, set it to `-1`.'
deprecated: false
schema:
default: 30s
allOf:
- $ref: '#/components/schemas/_types.Duration'
style: form
responses:
'200':
description: ''
content:
application/json:
schema:
type: object
properties:
results:
description: Statistics for cleanup operations.
allOf:
- $ref: '#/components/schemas/snapshot.cleanup_repository.CleanupRepositoryResults'
required:
- results
examples:
SnapshotCleanupRepositoryResponseExample1:
description: A successful response from `POST /_snapshot/my_repository/_cleanup`.
value: "{\n \"results\": {\n \"deleted_bytes\": 20,\n \"deleted_blobs\": 5\n }\n}"
x-state: Generally available; Added in 7.4.0
x-metaTags:
- content: Elasticsearch
name: product_name
/_snapshot/{repository}/{snapshot}/_clone/{target_snapshot}:
put:
tags:
- snapshot
summary: Clone a snapshot
description: 'Clone part of all of a snapshot into another snapshot in the same repository.
## Required authorization
* Cluster privileges: `manage`
'
operationId: snapshot-clone
parameters:
- in: path
name: repository
description: The name of the snapshot repository that both source and target snapshot belong to.
required: true
deprecated: false
schema:
$ref: '#/components/schemas/_types.Name'
style: simple
- in: path
name: snapshot
description: The source snapshot name.
required: true
deprecated: false
schema:
$ref: '#/components/schemas/_types.Name'
style: simple
- in: path
name: target_snapshot
description: The target snapshot name.
required: true
deprecated: false
schema:
$ref: '#/components/schemas/_types.Name'
style: simple
- in: query
name: master_timeout
description: 'The period to wait for the master node.
If the master node is not available before the timeout expires, the request fails and returns an error.
To indicate that the request should never timeout, set it to `-1`.'
deprecated: false
schema:
default: 30s
allOf:
- $ref: '#/components/schemas/_types.Duration'
style: form
requestBody:
content:
application/json:
schema:
type: object
properties:
indices:
description: 'A comma-separated list of indices to include in the snapshot.
Multi-target syntax is supported.'
type: string
required:
- indices
examples:
SnapshotCloneRequestExample1:
description: Run `PUT /_snapshot/my_repository/source_snapshot/_clone/target_snapshot` to clone the `source_snapshot` into a new `target_snapshot`.
value: "{\n \"indices\": \"index_a,index_b\"\n}"
required: true
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/_types.AcknowledgedResponseBase'
x-state: Generally available; Added in 7.10.0
x-metaTags:
- content: Elasticsearch
name: product_name
/_snapshot/{repository}/{snapshot}:
get:
tags:
- snapshot
summary: Get snapshot information
description: 'NOTE: The `after` parameter and `next` field enable you to iterate through snapshots with some consistency guarantees regarding concurrent creation or deletion of snapshots.
It is guaranteed that any snapshot that exists at the beginning of the iteration and is not concurrently deleted will be seen during the iteration.
Snapshots concurrently created may be seen during an iteration.
## Required authorization
* Cluster privileges: `monitor_snapshot`
'
operationId: snapshot-get
parameters:
- in: path
name: repository
description: 'A comma-separated list of snapshot repository names used to limit the request.
Wildcard (`*`) expressions are supported.'
required: true
deprecated: false
schema:
$ref: '#/components/schemas/_types.Name'
style: simple
- in: path
name: snapshot
description: 'A comma-separated list of snapshot names to retrieve
Wildcards (`*`) are supported.
* To get information about all snapshots in a registered repository, use a wildcard (`*`) or `_all`.
* To get information about any snapshots that are currently running, use `_current`.'
required: true
deprecated: false
schema:
$ref: '#/components/schemas/_types.Names'
style: simple
- in: query
name: after
description: An offset identifier to start pagination from as returned by the next field in the response body.
deprecated: false
schema:
type: string
x-state: Generally available; Added in 7.14.0
style: form
- in: query
name: from_sort_value
description: 'The value of the current sort column at which to start retrieval.
It can be a string `snapshot-` or a repository name when sorting by snapshot or repository name.
It can be a millisecond time value or a number when sorting by `index-` or shard count.'
deprecated: false
schema:
type: string
x-state: Generally available; Added in 7.16.0
style: form
- in: query
name: ignore_unavailable
description: If `false`, the request returns an error for any snapshots that are unavailable.
deprecated: false
schema:
default: false
type: boolean
style: form
- in: query
name: index_details
description: 'If `true`, the response includes additional information about each index in the snapshot comprising the number of shards in the index, the total size of the index in bytes, and the maximum number of segments per shard in the index.
The default is `false`, meaning that this information is omitted.'
deprecated: false
schema:
default: false
type: boolean
x-state: Generally available; Added in 7.13.0
style: form
- in: query
name: index_names
description: If `true`, the response includes the name of each index in each snapshot.
deprecated: false
schema:
default: true
type: boolean
x-state: Generally available; Added in 8.3.0
style: form
- in: query
name: include_repository
description: If `true`, the response includes the repository name in each snapshot.
deprecated: false
schema:
default: true
type: boolean
style: form
- in: query
name: master_timeout
description: 'The period to wait for a connection to the master node.
If no response is received before the timeout expires, the request fails and returns an error.'
deprecated: false
schema:
default: 30s
allOf:
- $ref: '#/components/schemas/_types.Duration'
style: form
- in: query
name: order
description: 'The sort order.
Valid values are `asc` for ascending and `desc` for descending order.
The default behavior is ascending order.'
deprecated: false
schema:
default: asc
allOf:
- $ref: '#/components/schemas/_types.SortOrder'
x-state: Generally available; Added in 7.14.0
style: form
- in: query
name: offset
description: Numeric offset to start pagination from based on the snapshots matching this request. Using a non-zero value for this parameter is mutually exclusive with using the after parameter. Defaults to 0.
deprecated: false
schema:
default: 0.0
type: number
x-state: Generally available; Added in 7.15.0
style: form
- in: query
name: size
description: 'The maximum number of snapshots to return.
The default is -1, which means to return all that match the request without limit.'
deprecated: false
schema:
default: -1.0
type: number
x-state: Generally available; Added in 7.14.0
style: form
- in: query
name: slm_policy_filter
description: 'Filter snapshots by a comma-separated list of snapshot lifecycle management (SLM) policy names that snapshots belong to.
You can use wildcards (`*`) and combinations of wildcards followed by exclude patterns starting with `-`.
For example, the pattern `*,-policy-a-\*` will return all snapshots except for those that were created by an SLM policy with a name starting with `policy-a-`.
Note that the wildcard pattern `*` matches all snapshots created by an SLM policy but not those snapshots that were not created by an SLM policy.
To include snapshots that were not created by an SLM policy, you can use the special pattern `_none` that will match all snapshots without an SLM policy.'
deprecated: false
schema:
$ref: '#/components/schemas/_types.Name'
x-state: Generally available; Added in 7.16.0
style: form
- in: query
name: sort
description: 'The sort order for the result.
The default behavior is sorting by snapshot start time stamp.'
deprecated: false
schema:
default: start_time
allOf:
- $ref: '#/components/schemas/snapshot._types.SnapshotSort'
x-state: Generally available; Added in 7.14.0
style: form
- in: query
name: state
description: 'Only return snapshots with a state found in the given comma-separated list of snapshot states.
The default is all snapshot states.'
deprecated: false
schema:
oneOf:
- $ref: '#/components/schemas/snapshot._types.SnapshotState'
- type: array
items:
$ref: '#/components/schemas/snapshot._types.SnapshotState'
x-state: Generally available; Added in 9.1.0
style: form
- in: query
name: verbose
description: 'If `true`, returns additional information about each snapshot such as the version of Elasticsearch which took the snapshot, the start and end times of the snapshot, and the number of shards snapshotted.
NOTE: The parameters `size`, `order`, `after`, `from_sort_value`, `offset`, `slm_policy_filter`, and `sort` are not supported when you set `verbose=false` and the sort order for requests with `verbose=false` is undefined.'
deprecated: false
schema:
default: true
type: boolean
style: form
responses:
'200':
description: ''
content:
application/json:
schema:
type: object
properties:
remaining:
description: The number of remaining snapshots that were not returned due to size limits and that can be fetched by additional requests using the `next` field value.
x-state: Generally available; Added in 7.15.0
type: number
total:
description: The total number of snapshots that match the request when ignoring the size limit or `after` query parameter.
x-state: Generally available; Added in 7.15.0
type: number
next:
description: 'If the request contained a size limit and there might be more results, a `next` field will be added to the response.
It can be used as the `after` query parameter to fetch additional results.'
type: string
responses:
type: array
items:
$ref: '#/components/schemas/snapshot.get.SnapshotResponseItem'
snapshots:
type: array
items:
$ref: '#/components/schemas/snapshot._types.SnapshotInfo'
required:
- remaining
- total
examples:
SnapshotGetResponseExample1:
description: 'A successful response from `GET /_snapshot/my_repository/snapshot_*?sort=start_time&from_sort_value=1577833200000`. The response contains information for all snapshots with names starting with `snapshot_` and that started on or after timestamp `1577833200000` (Jan 1st 2020) when sorted by snapshot start time in the default ascending order.
'
value: "{\n \"snapshots\": [\n {\n \"snapshot\": \"snapshot_1\",\n \"uuid\": \"dKb54xw67gvdRctLCxSket\",\n \"repository\": \"my_repository\",\n \"version_id\": <version_id>,\n \"version\": <version>,\n \"indices\": [],\n \"data_streams\": [],\n \"feature_states\": [],\n \"include_global_state\": true,\n \"state\": \"SUCCESS\",\n \"start_time\": \"2020-07-06T21:55:18.128Z\",\n \"start_time_in_millis\": 1593093628849,\n \"end_time\": \"2020-07-06T21:55:18.129Z\",\n \"end_time_in_millis\": 1593093628850,\n \"duration_in_millis\": 1,\n \"failures\": [],\n \"shards\": {\n \"total\": 0,\n \"failed\": 0,\n \"successful\": 0\n }\n },\n {\n \"snapshot\": \"snapshot_2\",\n \"uuid\": \"vdRctLCxSketdKb54xw67g\",\n \"repository\": \"my_repository\",\n \"version_id\": <version_id>,\n \"version\": <version>,\n \"indices\": [],\n \"data_streams\": [],\n \"feature_states\": [],\n \"include_global_state\": true,\n \"state\": \"SUCCESS\",\n \"start_time\": \"2020-07-06T21:55:18.130Z\",\n \"start_time_in_millis\": 1593093628851,\n \"end_time\": \"2020-07-06T21:55:18.130Z\",\n \"end_time_in_millis\": 1593093628851,\n \"duration_in_millis\": 0,\n \"failures\": [],\n \"shards\": {\n \"total\": 0,\n \"failed\": 0,\n \"successful\": 0\n }\n },\n {\n \"snapshot\": \"snapshot_3\",\n \"uuid\": \"dRctdKb54xw67gvLCxSket\",\n \"repository\": \"my_repository\",\n \"version_id\": <version_id>,\n \"version\": <version>,\n \"indices\": [],\n \"data_streams\": [],\n \"feature_states\": [],\n \"include_global_state\": true,\n \"state\": \"SUCCESS\",\n \"start_time\": \"2020-07-06T21:55:18.131Z\",\n \"start_time_in_millis\": 1593093628852,\n \"end_time\": \"2020-07-06T21:55:18.135Z\",\n \"end_time_in_millis\": 1593093628856,\n \"duration_in_millis\": 4,\n \"failures\": [],\n \"shards\": {\n \"total\": 0,\n \"failed\": 0,\n \"successful\": 0\n }\n }\n ],\n \"total\": 3,\n \"remaining\": 0\n}"
x-state: Generally available
x-metaTags:
- content: Elasticsearch
name: product_name
put:
tags:
- snapshot
summary: Create a snapshot
description: 'Take a snapshot of a cluster or of data streams and indices.
## Required authorization
* Cluster privileges: `create_snapshot`
'
externalDocs:
description: More about managing snapshots
url: https://www.elastic.co/docs/deploy-manage/tools/snapshot-and-restore/create-snapshots
x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/create-snapshot-api.html
operationId: snapshot-create
parameters:
- $ref: '#/components/parameters/snapshot.create-repository'
- $ref: '#/components/parameters/snapshot.create-snapshot'
- $ref: '#/components/parameters/snapshot.create-master_timeout'
- $ref: '#/components/parameters/snapshot.create-wait_for_completion'
requestBody:
$ref: '#/components/requestBodies/snapshot.create'
responses:
'200':
$ref: '#/components/responses/snapshot.create-200'
x-state: Generally available
x-metaTags:
- content: Elasticsearch
name: product_name
post:
tags:
- snapshot
summary: Create a snapshot
description: 'Take a snapshot of a cluster or of data streams and indices.
## Required authorization
* Cluster privileges: `create_snapshot`
'
externalDocs:
description: More about managing snapshots
url: https://www.elastic.co/docs/deploy-manage/tools/snapshot-and-restore/create-snapshots
x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/create-snapshot-api.html
operationId: snapshot-create-1
parameters:
- $ref: '#/components/parameters/snapshot.create-repository'
- $ref: '#/components/parameters/snapshot.create-snapshot'
- $ref: '#/components/parameters/snapshot.create-master_timeout'
- $ref: '#/components/parameters/snapshot.create-wait_for_completion'
requestBody:
$ref: '#/components/requestBodies/snapshot.create'
responses:
'200':
$ref: '#/components/responses/snapshot.create-200'
x-state: Generally available
x-metaTags:
- content: Elasticsearch
name: product_name
delete:
tags:
- snapshot
summary: Delete snapshots
description: '
## Required authorization
* Cluster privileges: `manage`
'
operationId: snapshot-delete
parameters:
- in: path
name: repository
description: The name of the repository to delete a snapshot from.
required: true
deprecated: false
schema:
$ref: '#/components/schemas/_types.Name'
style: simple
- in: path
name: snapshot
description: 'A comma-separated list of snapshot names to delete.
It also accepts wildcards (`*`).'
required: true
deprecated: false
schema:
$ref: '#/components/schemas/_types.Names'
style: simple
- in: query
name: master_timeout
description: 'The period to wait for the master node.
If the master node is not available before the timeout expires, the request fails and returns an error.
To indicate that the request should never timeout, set it to `-1`.'
deprecated: false
schema:
default: 30s
allOf:
- $ref: '#/components/schemas/_types.Duration'
style: form
- in: query
name: wait_for_completion
description: 'If `true`, the request returns a response when the matching snapshots are all deleted.
If `false`, the request returns a response as soon as the deletes are scheduled.'
deprecated: false
schema:
default: true
type: boolean
style: form
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/_types.AcknowledgedResponseBase'
examples:
SnapshotDeleteResponseExample1:
description: 'A successful response from `DELETE /_snapshot/my_repository/snapshot_2,snapshot_3`. The request deletes `snapshot_2` and `snapshot_3` from the repository named `my_repository`.
'
value: "{\n \"acknowledged\" : true\n}"
x-state: Generally available
x-metaTags:
- content: Elasticsearch
name: product_name
/_snapshot/{repository}:
get:
tags:
- snapshot
summary: Get snapshot repository information
description: '
## Required authorization
* Cluster privileges: `monitor_snapshot`
'
operationId: snapshot-get-repository-1
parameters:
- $ref: '#/components/parameters/snapshot.get_repository-repository'
- $ref: '#/components/parameters/snapshot.get_repository-local'
- $ref: '#/components/parameters/snapshot.get_repository-master_timeout'
responses:
'200':
$ref: '#/components/responses/snapshot.get_repository-200'
x-state: Generally available
x-metaTags:
- content: Elasticsearch
name: product_name
put:
tags:
- snapshot
summary: Create or update a snapshot repository
description: 'IMPORTANT: If you are migrating searchable snapshots, the repository name must be identical in the source and destination clusters.
To register a snapshot repository, the cluster''s global metadata must be writeable.
Ensure there are no cluster blocks (for example, `cluster.blocks.read_only` and `clsuter.blocks.read_only_allow_delete` settings) that prevent write access.
Several options for this API can be specified using a query parameter or a request body parameter.
If both parameters are specified, only the query parameter is used.
## Required authorization
* Cluster privileges: `manage`
'
externalDocs:
description: About managing snapshot
url: https://www.elastic.co/docs/deploy-manage/tools/snapshot-and-restore/self-managed
x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/put-snapshot-repo-api.html
operationId: snapshot-create-repository
parameters:
- $ref: '#/components/parameters/snapshot.create_repository-repository'
- $ref: '#/components/parameters/snapshot.create_repository-master_timeout'
- $ref: '#/components/parameters/snapshot.create_repository-timeout'
- $ref: '#/components/parameters/snapshot.create_repository-verify'
requestBody:
$ref: '#/components/requestBodies/snapshot.create_repository'
responses:
'200':
$ref: '#/components/responses/snapshot.create_repository-200'
x-state: Generally available
x-metaTags:
- content: Elasticsearch
name: product_name
post:
tags:
- snapshot
summary: Create or update a snapshot repository
description: 'IMPORTANT: If you are migrating searchable snapshots, the repository name must be identical in the source and destination clusters.
To register a snapshot repository, the cluster''s global metadata must be writeable.
Ensure there are no cluster blocks (for example, `cluster.blocks.read_only` and `clsuter.blocks.read_only_allow_delete` settings) that prevent write access.
Several options for this API can be specified using a query parameter or a request body parameter.
If both parameters are specified, only the query parameter is used.
## Required authorization
* Cluster privileges: `manage`
'
externalDocs:
description: About managing snapshot
url: https://www.elastic.co/docs/deploy-manage/tools/snapshot-and-restore/self-managed
x-previousVersionUrl: https://www.elastic.co/guide/en/elasticsearch/reference/8.19/put-snapshot-repo-api.html
operationId: snapshot-create-repository-1
parameters:
- $ref: '#/components/parameters/snapshot.create_repository-repository'
- $ref: '#/components/parameters/snapshot.create_repository-master_timeout'
- $ref: '#/components/parameters/snapshot.create_repository-timeout'
- $ref: '#/components/parameters/snapshot.create_repository-verify'
requestBody:
$ref: '#/components/requestBodies/snapshot.create_repository'
responses:
'200':
$ref: '#/components/responses/snapshot.create_repository-200'
x-state: Generally available
x-metaTags:
- content: Elasticsearch
name: product_name
delete:
tags:
- snapshot
summary: Delete snapshot repositories
description: 'When a repository is unregistered, Elasticsearch removes only the reference to the location where the repository is storing the snapshots.
The snapshots themselves are left untouched and in place.
## Required authorization
* Cluster privileges: `manage`
'
operationId: snapshot-delete-repository
parameters:
- in: path
name: repository
description: 'The ame of the snapshot repositories to unregister.
Wildcard (`*`) patterns are supported.'
required: true
deprecated: false
schema:
$ref: '#/components/schemas/_types.Names'
style: simple
- in: query
name: master_timeout
description: 'The period to wait for the master node.
If the master node is not available before the timeout expires, the request fails and returns an error.
To indicate that the request should never timeout, set it to `-1`.'
deprecated: false
schema:
default: 30s
allOf:
- $ref: '#/components/schemas/_types.Duration'
style: form
- in: query
name: timeout
description: 'The period to wait for a response from all relevant nodes in the cluster after updating the cluster metadata.
If no response is received before the timeout expires, the cluster metadata update still applies but the response will indicate that it was not completely acknowledged.
To indicate that the request should never timeout, set it to `-1`.'
deprecated: false
schema:
default: 30s
allOf:
- $ref: '#/components/schemas/_types.Duration'
style: form
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/_types.AcknowledgedResponseBase'
x-state: Generally available
x-metaTags:
- content: Elasticsearch
name: product_name
/_snapshot:
get:
tags:
- snapshot
summary: Get snapshot repository information
description: '
## Required authorization
* Cluster privileges: `monitor_snapshot`
'
operationId: snapshot-get-repository
parameters:
- $ref: '#/components/parameters/snapshot.get_repository-local'
- $ref: '#/components/parameters/snapshot.get_repository-master_timeout'
responses:
'200':
$ref: '#/components/responses/snapshot.get_repository-200'
x-state: Generally available
x-metaTags:
- content: Elasticsearch
name: product_name
/_snapshot/{repository}/_analyze:
post:
tags:
- snapshot
summary: Analyze a snapshot repository
description: 'Performs operations on a snapshot repository in order to check for incorrect behaviour.
There are a large number of third-party storage systems available, not all of which are suitable for use as a snapshot repository by Elasticsearch.
Some storage systems behave incorrectly, or perform poorly, especially when accessed concurrently by multiple clients as the nodes of an Elasticsearch cluster do.
This API performs a collection of read and write operations on your repository which are designed to detect incorrect behaviour and to measure the performance characteristics of your storage system.
The default values for the parameters are deliberately low to reduce the impact of running an analysis inadvertently and to provide a sensible starting point for your investigations.
Run your first analysis with the default parameter values to check for simple problems.
Some repositories may behave correctly when lightly loaded but incorrectly under production-like workloads.
If the first analysis is successful, run a sequence of increasingly large analyses until you encounter a failure or you reach a `blob_count` of at least `2000`, a `max_blob_size` of at least `2gb`, a `max_total_data_size` of at least `1tb`, and a `register_operation_count` of at least `100`.
Always specify a generous timeout, possibly `1h` or longer, to allow time for each analysis to run to completion.
Some repositories may behave correctly when accessed by a small number of Elasticsearch nodes but incorrectly when accessed concurrently by a production-scale cluster.
Perform the analyses using a multi-node cluster of a similar size to your production cluster so that it can detect any problems that only arise when the repository is accessed by many nodes at once.
If the analysis fails, Elasticsearch detected that your repository behaved unexpectedly.
This usually means you are using a third-party storage system with an incorrect or incompatible implementation of the API it claims to support.
If so, this storage system is not suitable for use as a snapshot repository.
Repository analysis triggers conditions that occur only rarely when taking snapshots in a production system.
Snapshotting to unsuitable storage may appear to work correctly most of the time despite repository analysis failures.
However your snapshot data is at risk if you store it in a snapshot repository that does not reliably pass repository analysis.
You can demonstrate that the analysis failure is due to an incompatible storage implementation by verifying that Elasticsearch does not detect the same problem when analysing the reference implementation of the storage protocol you are using.
For instance, if you are using storage that offers an API which the supplier claims to be compatible with AWS S3, verify that repositories in AWS S3 do not fail repository analysis.
This allows you to demonstrate to your storage supplier that a repository analysis failure must only be caused by an incompatibility with A
# --- truncated at 32 KB (626 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/elk-stack/refs/heads/main/openapi/elk-stack-snapshot-api-openapi.yml