Skip to content
TriedDocs
Account

Update dashboard

Replace a dashboard's name and charts, or move it in the tab order.

PUThttps://api.tried.com.au/dashboards/{id}

Replaces the dashboard's name and charts. This is a full replacement: send the whole chart list, since charts you leave out are removed. Set position to move the tab; the other dashboards are renumbered around it.

Request#

Field Type Required Description
id string Yes Dashboard ID, for example dash_6e1a9c3f5b7d2e4a8c0f1b3d.

Body:

Field Type Required Description
name string Yes 1 to 60 characters.
charts object[] No Up to 24 charts. Default [].
position integer No Tab position, 0 or more.

Each chart:

Field Type Required Description
id string No Chart ID. Default chart_ plus 10 hex characters.
title string Yes 1 to 80 characters.
type string Yes line, bar, pie, number, table, column or donut.
query object Yes A chart query as in Query analytics, without from and to. The dashboard picks the date range when it renders.
layout object No Grid position { x, y, w, h }. x and y are 0 or more; w and h are 1 to 12. Default { "x": 0, "y": 0, "w": 6, "h": 4 }.

Example request#

curl -X PUT https://api.tried.com.au/dashboards/dash_6e1a9c3f5b7d2e4a8c0f1b3d \
  -H "Authorization: Bearer $TRIED_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Inbound overview",
    "position": 0,
    "charts": [
      {
        "id": "chart_a1b2c3d4e5",
        "title": "Calls per day",
        "type": "bar",
        "query": {
          "metric": "call_count",
          "breakdowns": [
            "agent"
          ]
        }
      }
    ]
  }'
const res = await fetch("https://api.tried.com.au/dashboards/dash_6e1a9c3f5b7d2e4a8c0f1b3d", {
  method: "PUT",
  headers: {
    Authorization: `Bearer ${process.env.TRIED_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "name": "Inbound overview",
    "position": 0,
    "charts": [
      {
        "id": "chart_a1b2c3d4e5",
        "title": "Calls per day",
        "type": "bar",
        "query": {
          "metric": "call_count",
          "breakdowns": [
            "agent"
          ]
        }
      }
    ]
  }),
});
const dashboard = await res.json();
import os, requests

res = requests.put(
    "https://api.tried.com.au/dashboards/dash_6e1a9c3f5b7d2e4a8c0f1b3d",
    headers={"Authorization": f"Bearer {os.environ['TRIED_API_KEY']}"},
    json={
        "name": "Inbound overview",
        "position": 0,
        "charts": [
            {
                "id": "chart_a1b2c3d4e5",
                "title": "Calls per day",
                "type": "bar",
                "query": {
                    "metric": "call_count",
                    "breakdowns": [
                        "agent",
                    ],
                },
            },
        ],
    },
)
dashboard = res.json()

Response#

200 OK

{
  "dashboard_id": "dash_6e1a9c3f5b7d2e4a8c0f1b3d",
  "name": "Inbound overview",
  "charts": [
    {
      "id": "chart_a1b2c3d4e5",
      "title": "Calls per day",
      "type": "bar",
      "query": {
        "metric": "call_count",
        "measurement": "count",
        "breakdown": "none",
        "breakdowns": [
          "agent"
        ],
        "tz": "Australia/Sydney",
        "filters": {
          "agent_ids": [],
          "call_type": [],
          "direction": [],
          "disconnection_reason": [],
          "user_sentiment": [],
          "call_successful": null,
          "fields": []
        },
        "compare_previous": false
      },
      "layout": {
        "x": 0,
        "y": 0,
        "w": 6,
        "h": 4
      }
    }
  ],
  "position": 0,
  "last_modification_timestamp": 1792398600000
}
Field Type Description
dashboard_id string Dashboard ID, prefixed dash_.
charts object[] Stored charts with every query default filled in.
position integer Tab order, starting at 0.
last_modification_timestamp integer Unix ms of the last change.

Errors#

Status When
400 Body validation failed, for example name: Required.
401 Missing or invalid API key.
403 The key's IP allowlist or scopes reject the request. This route needs the analytics scope. Dashboard users with the member role get The member role is read-only.
404 No dashboard with that ID in the workspace: Dashboard not found.
429 Rate limit exceeded. See Rate limits.

See Errors for the body format.

Retell compatibility#

Retell's public API reference has no analytics endpoints, so this route has no Retell SDK equivalent.