npx skills add ...
npx skills add elastic/agent-skills --skill kibana-streams
List, inspect, enable, disable, and resync Kibana Streams via the REST API. Use when the user needs stream details, ingest settings, query-stream settings, or linked attachments (dashboards, rules, SLOs).
npx skills add elastic/agent-skills --skill kibana-streams
Read stream metadata, settings, and attachments, and manage stream lifecycle (enable, disable, resync) via the Kibana Streams REST API. Streams are an experimental way to manage data in Kibana — expect API and behavior changes. This skill covers read operations and lifecycle only; create, update, delete, fork, and other mutating operations may be added in a later version.
For detailed endpoints and parameters, see references/streams-api-reference.md.
| Item | Description |
|---|---|
| Kibana URL | Kibana endpoint (e.g. https://localhost:5601 or a Cloud deployment URL) |
| Authentication | API key or basic auth (see the elasticsearch-authn skill) |
| Privileges | read_stream for read operations; manage_stream for lifecycle APIs |
Use the space-scoped path /s/{space_id}/api/streams when operating in a non-default space. For role configuration
(Kibana feature privileges and Elasticsearch-level permissions), refer to
Streams required permissions.
GET or POST to <kibana_url>/api/streams (or /s/<space_id>/api/streams for a space).POST /api/streams/_disable, _enable, and _resync are mutating — send kbn-xsrf: true
(or equivalent) as required by your Kibana version.| Operation | Method | Path |
|---|---|---|
| Get stream list | GET | /api/streams |
| Get a stream | GET | /api/streams/{name} |
| Get ingest stream settings | GET | /api/streams/{name}/_ingest |
| Get query stream settings | GET | /api/streams/{name}/_query |
| Get stream attachments | GET | /api/streams/{streamName}/attachments |
| Operation | Method | Path |
|---|---|---|
| Disable streams | POST | /api/streams/_disable |
| Enable streams | POST | /api/streams/_enable |
| Resync streams | POST | /api/streams/_resync |
Path parameters: {name} and {streamName} are the stream identifier (same value; the API docs use both names).
Ingest settings (GET /api/streams/{name}/_ingest) expose two separate lifecycle areas:
ingest.lifecycle) — Controls how long the stream's data is retained. Use
lifecycle.dsl.data_retention (e.g. "30d") for explicit retention, or lifecycle.inherit for child streams. This
is what users usually mean when they ask to "set retention", "update retention", or "change the stream's retention".ingest.failure_store.lifecycle) — Controls retention of failed documents only
(documents that did not process successfully). Users rarely need to change this unless they explicitly mention the
failure store or failed-document retention.When a user asks to set or update retention, target the stream's main lifecycle (lifecycle.dsl.data_retention),
not the failure store, unless they specifically ask about failure store or failed documents.
Check the Streams API operation pages for request/response bodies (e.g. request body for _disable/_enable/_resync if required).
ingest.lifecycle / lifecycle.dsl.data_retention). Do not change only the failure store retention unless they
explicitly ask about the failure store or failed documents.platform.sig_events.* Agent
Builder tools. The /api/streams/{name}/queries and /api/streams/{name}/significant_events endpoints are deprecated
and pending removal in Kibana — do not reach for them here./api/streams/{name}/_query is the ES|QL definition
of a query stream (a stream type, alongside wired and classic); it has nothing to do with detection queries.curl -X GET "${KIBANA_URL}/api/streams/my-stream/_query" \
-H "Authorization: ApiKey <base64-api-key>"# Attachments (dashboards, rules, SLOs linked to the stream)
curl -X GET "${KIBANA_URL}/api/streams/my-stream/attachments" \
-H "Authorization: ApiKey <base64-api-key>"# Disable streams (request body per API docs) — deletes wired stream data; warn and confirm before proceeding
curl -X POST "${KIBANA_URL}/api/streams/_disable" \
-H "Authorization: ApiKey <base64-api-key>" \
-H "kbn-xsrf: true" \
-H "Content-Type: application/json" \
-d '{}'
# Enable streams
curl -X POST "${KIBANA_URL}/api/streams/_enable" \
-H "Authorization: ApiKey <base64-api-key>" \
-H "kbn-xsrf: true" \
-H "Content-Type: application/json" \
-d '{}'
# Resync streams
curl -X POST "${KIBANA_URL}/api/streams/_resync" \
-H "Authorization: ApiKey <base64-api-key>" \
-H "kbn-xsrf: true" \
-H "Content-Type: application/json" \
-d '{}'