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

Name
Type
Description

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 = Minutes

  • h = Hours

  • d = Days

  • w = Weeks

  • M = Months

  • Y = 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).

Create Service Account & Token
Create 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

Name
Value

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.

Name
Value

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.

Name
Value

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

Name
Value

Content-Type

application/json

Authorization

Bearer <SERVICE-ACCOUNT-TOKEN>

JSON Schema

Name
Type
Description

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?