Dashboard API
Contents
GET
/api/v3/grafana/render/?target=
Returns PNG image of a dashboard panel. To display any data on the graph you must include a ‘target’, you can append multiple targets to the request as follows: ?target=foo.bar.A&target=foo.bar.B
Parameters
target*
String
graphite query
from
String
Format: -<num>m|h|d|w|M|Y default: -6h
to
String
Format: now-<num>m|h|d|w|M|Y default: now
width
String
number measured in pixels default: 1000
height
String
number measured in pixels default: 500
style
String
Format: “light” | “dark ” default: dark
Curl Example:
curl -i -X GET \
"https://<api-key>@api.hostedgraphite.com/api/v3/grafana/render/?target=foo.bar"
Response:
HTTP/1.1 200
Content-Type: image/png
<image data>
Time Queries:
m
= Minutesh
= Hoursd
= Daysw
= WeeksM
= MonthsY
= Years
You can interact with your dashboard instance directly through Grafana's HTTP API
To use the Grafana API, you will need to create a new Grafana Service Account Token within the Grafana UI (Settings => Service Accounts => Add Service Account with Admin role => Generate Service Account Token).

Additional Considerations:
Since MetricFire now hosts Grafana v9.5, dashboard JSON templates must now be wrapped in the following object, in order to create/update dashboards programatically ("folderID": 0, maps to the default "General" folder, but any folderID can be specified):
{
"dashboard": {
...entire dashboard object...
},
"folderId": 0,
"overwrite": true
}
In all below examples
<UID>
refers to the URL subdomain of your hosted instance,uid
refers to the unique identifier of the related resource. Below are examples of requests made using the Grafana Dashboard HTTP API.
POST
/api/dashboards/db
Creates a new dashboard or updates an existing dashboard
Example:
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <SERVICE-ACCOUNT-TOKEN>" \
"https://<UID>.hostedgraphite.com/api/dashboards/db" \
-d @dashboard.json
HTTP/1.1 200
Content-Type: application/json
{
"slug": "production-overview",
"status": "success",
"version": 1
}
Example dashboard.json file:
{
"dashboard": {
"title": "Minimal Dashboard",
"panels": []
},
"folderId": 0,
"overwrite": false
}
GET
/api/dashboards/uid/:uid
Returns a dashboard given the dashboard's uid
Content-Type
application/json
Authorization
Bearer <SERVICE-ACCOUNT-TOKEN>
Curl examples:
curl -X GET \
-H "Authorization: Bearer <SERVICE-ACCOUNT-TOKEN>" \
"https://<UID>.hostedgraphite.com/api/dashboards/uid/<DASHBOARD-UID>"
Response:
HTTP/1.1 200
Content-Type: application/json
{
"meta": {
"isStarred": false,
"slug": "production-overview"
},
"model": {
"id": null,
"title": "Production Overview",
"tags": [ "templated" ],
"timezone": "browser",
"panels": [ { } ]
"schemaVersion": 6,
"version": 0
},
}
DELETE
/api/dashboards/uid/:uid
Deletes a dashboard given the dashboard slug.
Content-Type
application/json
Authorization
Bearer <SERVICE-ACCOUNT-TOKEN>
Example:
curl -X DELETE \
-H "Authorization: Bearer <SERVICE-ACCOUNT-TOKEN>" \
"https://<UID>.hostedgraphite.com/api/dashboards/uid/<DASHBOARD-UID>"
Response:
HTTP/1.1 200
Content-Type: application/json
{
"title": "Example Dash",
"message": "Dashboard Example Dash deleted",
"id": 3
}
GET
/api/search
Returns a list of dashboards given a search query.
Content-Type
application/json
Authorization
Bearer <SERVICE-ACCOUNT-TOKEN>
Example:
curl -X GET \
-H "Authorization: Bearer <SERVICE-ACCOUNT-TOKEN>" \
"https://<UID>.hostedgraphite.com/api/search"
Response:
HTTP/1.1 200
Content-Type: application/json
[
{
"id": 1,
"title": "Production Overview",
"uri": "db/production-overview",
"type": "dash-db",
"tags": [
"templated",
"production"
],
"isStarred": true
},
{
"id": 4,
"title": "Production Webservers",
"uri": "db/production-webservers",
"type": "dash-db",
"tags": [
"production"
],
"isStarred": true
}
...
]
POST
/api/folders
Creates a new folder for dashboard organization.
Headers
Content-Type
application/json
Authorization
Bearer <SERVICE-ACCOUNT-TOKEN>
JSON Schema
title
string
name of new folder
Example:
curl -X POST -H "Content-Type: application/json" \
-H "Authorization: Bearer <SERVICE-ACCOUNT-TOKEN>" \
"https://<UID>.hostedgraphite.com/api/folders" -d '{"title": "Test Folder"}'
Response:
HTTP/1.1 200
Content-Type: application/json
{
"id": 70,
"uid": "bfc49500-7c2d-4d73-ba43-d8ab677d4836",
"title": "Test Folder",
"url": "/dashboards/f/bfc49500-7c2d-4d73-ba43-d8ab677d4836/test-folder",
"hasAcl": false,
"canSave": true,
"canEdit": true,
"canAdmin": true,
"canDelete": true,
"createdBy": "Anonymous",
"created": "2024-10-15T13:10:22.922696496Z",
"updatedBy": "Anonymous",
"updated": "2024-10-15T13:10:22.922696646Z",
"version": 1
}
Last updated
Was this helpful?