Create clone

Clones an existing v2-shape dashboard.

POST /v1/o11y/dashboards/{id}/clone

Addresshttps://api.hanzo.ai/v1/o11y/dashboards/{id}/clone
MethodPOST
OperationCloneDashboardV2
AuthAuthorization: Bearer $HANZO_API_KEY

Clones an existing v2-shape dashboard. User and integration dashboards can be cloned; system dashboards are rejected. The clone keeps the source's display name, panels and tags, but gets a freshly generated unique internal name and is always created as an unlocked user dashboard owned by the caller.

Callers need the editor role; the runtime's own gate enforces it.

Request

1 field.

FieldInTypeRequiredDescription
idpathstringyesID is the resource id from the path.

Response

StatusBodyMeaning
201o11y.O11yDashboardOutcreated
202Approvalheld for approval
defaultproblem-detailsrefused

201 body — 17 fields.

FieldInTypeAlwaysDescription
databodyo11y.O11yDashboard—
data.createdAtbodystring (date-time)—CreatedAt is when the dashboard was created.
data.createdBybodystring—CreatedBy is who created it.
data.idbodystring—ID is the dashboard's id.
data.imagebodystring—Image is an optional cover image reference.
data.lockedbodyboolean—Locked reports whether the dashboard is locked against edits.
data.namebodystring—Name is the dashboard's unique internal name.
data.orgIdbodystring—OrgID is the org the dashboard belongs to.
data.schemaVersionbodystring—SchemaVersion is the dashboard schema version.
data.sourcebodystring—Source is where the dashboard came from: user, system or integration.
data.specbodyany—Spec is the Perses dashboard spec, carried verbatim as open JSON.
data.tagsbodyo11y.O11yDashboardTag[]—Tags are the dashboard's tags.
data.tags[].keybodystring—Key is the tag key.
data.tags[].valuebodystring—Value is the tag value.
data.updatedAtbodystring (date-time)—UpdatedAt is when it last changed.
data.updatedBybodystring—UpdatedBy is who last changed it.
statusbodystring—Status is "success".

Failure carries the platform error shape — see Errors.

Examples

hanzo o11y dashboards clone <id>
import { Configuration, O11yApi } from 'hanzoai';

const api = new O11yApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.cloneDashboardV2({ id: 'id' });
from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import O11yApi

client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = O11yApi(client).clone_dashboard_v2(id='id')
cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)

resp, _, err := client.O11yAPI.CloneDashboardV2(context.Background()).Execute()
if err != nil {
	return err
}
use hanzo_client::apis::{configuration::Configuration, o11y_api};

let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();

let result = o11y_api::clone_dashboard_v2(&cfg, Default::default()).await?;
import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.O11yApi;

ApiClient client = new ApiClient();
client.setBearerToken(System.getenv("HANZO_API_KEY"));

var result = new O11yApi(client).cloneDashboardV2();
curl -X POST https://api.hanzo.ai/v1/o11y/dashboards/<id>/clone \
  -H "Authorization: Bearer $HANZO_API_KEY"

Tool o11y, op CloneDashboardV2 — POST the JSON-RPC envelope to https://api.hanzo.ai/v1/mcp.

curl -X POST https://api.hanzo.ai/v1/mcp \
  -H "Authorization: Bearer $HANZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
       "jsonrpc": "2.0",
       "id": 1,
       "method": "tools/call",
       "params": {
         "name": "o11y",
         "arguments": {
           "op": "CloneDashboardV2",
           "input": {
             "id": "<id>"
           }
         }
       }
     }'

O11y API · All Hanzo APIs · Interactive reference

Was this page useful?