# Dashboard API

**URL:** <https://discuss.elastic.co/t/dashboard-api/373834>\
**Category:** Kibana\
**Created:** [January 29, 2025, 3:01pm UTC](https://discuss.elastic.co/t/dashboard-api/373834 "2025-01-29T15:01:33Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![erikg](https://avatars.discourse-cdn.com/v4/letter/e/91b2a8/32.png) [@erikg](https://discuss.elastic.co/u/erikg)\
**Post date:** [January 29, 2025, 3:01pm UTC](https://discuss.elastic.co/t/dashboard-api/373834/1 "2025-01-29T15:01:33Z")

</div>

Hello,

Is there a way to automate or programmatically create dashboards/visualizations using an API?

---

<div class="post-metadata">

**Author:** ![Wolfram\_Haussig](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/wolfram_haussig/32/70528_2.png) [@Wolfram\_Haussig](https://discuss.elastic.co/u/Wolfram_Haussig)\
**Post date:** [January 30, 2025, 1:40pm UTC](https://discuss.elastic.co/t/dashboard-api/373834/2 "2025-01-30T13:40:49Z")

</div>

Hello Erik,

It depends what you expect of the API: There are options if you already have a dashboard that you want to import (see below). If you need an API to generate the dashboard from scratch, then you are out of luck as Elastic does not publish details about the structure (see [here](https://discuss.elastic.co/t/using-kibana-rest-api-to-generate-visualization/281554/2) for an explaination).

The options to import a dashboard supported directly by Elastic are:

- [Kibana API](https://www.elastic.co/docs/api/doc/kibana/v8/operation/operation-createsavedobject)
- [Terraform](https://registry.terraform.io/providers/elastic/elasticstack/latest/docs/resources/kibana_import_saved_objects)

But there are also community projects like [this](https://github.com/alexander-marquardt/kibana-import-export).

Best regards  
Wolfram

---

<div class="post-metadata">

**Author:** ![elasticforme](https://avatars.discourse-cdn.com/v4/letter/e/f05b48/32.png) [@elasticforme](https://discuss.elastic.co/u/elasticforme)\
**Post date:** [January 30, 2025, 7:32pm UTC](https://discuss.elastic.co/t/dashboard-api/373834/3 "2025-01-30T19:32:20Z")

</div>

I have been using something similar but I do export all dashboard one by one from all spaces and save them individually with date stamp and keep for 30 days backup.

first I get all spaces name  
space\_names = requests.get(url\_space, auth=(elk\_admin\_user,elk\_admin\_password), verify=False)

then for each space I get dashbaord names  
dashboard\_names = requests.get(dashboard\_url, params=params, headers=headers, auth=(elk\_admin\_user,elk\_admin\_password), verify=False)  
dashboard\_name = dashboard\_names.json()  
dashboard\_names\_array = dashboard\_name['saved\_objects']

then for each dashbord you export them out and save it.

now you can use any of this ndjson file via kibana or import to create dasboard in other kibana
