REST APIedit

Some Kibana features are provided via a REST API, which is ideal for creating an integration with Kibana, or automating certain aspects of configuring and deploying Kibana.

Using the APIsedit

Prepend any Kibana API endpoint with kbn: and send the request through Dev Tools > Console. For example:

`GET kbn:/api/index_management/indices`

Note: this will automatically prefix s/{space_id}/ on the API request if ran from a non-default Kibana Space.

Authenticationedit

The Kibana APIs support key- and token-based authentication.

Token-based authenticationedit

To use token-based authentication, you use the same username and password that you use to log into Elastic. In a given HTTP tool, and when available, you can select to use its Basic Authentication option, which is where the username and password are stored in order to be passed as part of the call.

Key-based authenticationedit

To use key-based authentication, you create an API key using the Elastic Console, then specify the key in the header of your API calls.

For information about API keys, refer to API keys.

API callsedit

API calls are stateless. Each request that you make happens in isolation from other calls and must include all of the necessary information for Kibana to fulfill the request. API requests return JSON output, which is a format that is machine-readable and works well for automation.

Calls to the API endpoints require different operations. To interact with the Kibana APIs, use the following operations:

  • GET - Fetches the information.
  • POST - Adds new information.
  • PUT - Updates the existing information.
  • DELETE - Removes the information.

Request headersedit

For all APIs, you must use a request header. The Kibana APIs support the kbn-xsrf and Content-Type headers.

kbn-xsrf: true

By default, you must use kbn-xsrf for all API calls, except in the following scenarios:

Content-Type: application/json
Applicable only when you send a payload in the API request. Kibana API requests and responses use JSON. Typically, if you include the kbn-xsrf header, you must also include the Content-Type header.

Request header example:

curl -X POST \
  http://localhost:5601/api/spaces/space \
  -H 'Content-Type: application/json' \
  -H 'kbn-xsrf: true' \
  -d '{
	"id": "sales",
	"name": "Sales",
	"description": "This is your Sales Space!",
	"disabledFeatures": []
}
'