Menu

API reference · Dashboards

Deployment to accounts

dashboards · bulk · 2 operations

POST/v1/dashboards/bulk/deploy-plan

Plan a bulk dashboard deployment to accounts

dashboards.bulk.deploy_plan

ReadIdempotentSince 2026-11-01

From a workspace, computes the deployment plan of up to 30 templates (published system templates or the workspace's published ones; ids from dashboards.templates.list) over its active accounts (all, or child_org_ids): for each template × account, whether it is new, already_deployed or incompatible (missing_platforms: platforms the account has no connection for), and the suggested data_source_mapping (the first connection of each platform; the internal CRM source is always available). counts has how many items are in each status over the whole plan; data, the items, filtered by status (use status new to get the ones to deploy) and paginated by cursor (limit 50 by default). Writes nothing; pass the new items to dashboards.bulk.deploy. Owners and admins of the workspace.

Scope
dashboards:read
Permission
View the module · Only owner, admin
MCP tool
dashboards_bulk_deploy_planOn the full surface; on the compact one, mb_execute_operation with id: "dashboards.bulk.deploy_plan".

Declared cost: up to 1500 reads and 0 writes per call (they count against the daily quota).

Parameters

template_idsarray<string>bodyrequired

Templates to plan (published system templates or the workspace's published ones; dashboards.templates.list).

child_org_idsarray<string>bodyoptional

Only these accounts (platform.orgs.list); default all the active accounts.

statusenumbodyoptional

Only the items in this status; new are the ones to pass to dashboards.bulk.deploy. counts always covers the whole plan.

Values: new, already_deployed, incompatible

limitintegerbodyoptional

How many items per page (default 50; up to 15000, the largest possible plan, which the screen reads whole). An item is about 300 characters: over the MCP keep pages small and use status.

Default: 50

cursorstringbodyoptional

The next_cursor of the previous page.

Response

countsobject

Items per status over the whole plan.

dataarray<object>

The items of this page.

has_moreboolean

More items after this page.

next_cursorstring

Pass it as cursor for the next page.

Errors

Example

curl -X POST "https://api.mb-suite.com/v1/dashboards/bulk/deploy-plan" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "template_ids": [
    "TEMPLATE_ID"
  ]
}'

Try it with your test API key

With a test API key the request always goes to your practice organization: example data you can reset.

curl -X POST "https://api.mb-suite.com/v1/dashboards/bulk/deploy-plan" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "template_ids": [
    "TEMPLATE_ID"
  ]
}'
POST/v1/dashboards/bulk/deploy

Create dashboards in many accounts at once

dashboards.bulk.deploy

WriteBulk · up to 200Since 2026-11-01

From a workspace, creates up to 200 linked dashboards in its accounts, one per deployment (template_id, template_source SYSTEM or INHERITED, child_org_id, data_source_mapping; typically the new items of dashboards.bulk.deploy_plan). Each one is checked in its account as if the person did it there: an active account of this workspace that the credential reaches, edit access to Dashboards in it, a published template, and data sources connected to that account. A failed item does not stop the rest: results says, per item, the new dashboard_id or the error code. Outside the screen it requires a dry run and a confirm_token: the dry run runs the same checks item by item and names each template and account with what would happen (created, or the error code). Owners and admins of the workspace.

Instructions for agents

Report how many dashboards were created and list the accounts that failed with their reason.

Needs confirmation: first dry_run: true (preview and confirm_token, valid 10 minutes and for one run), then the same body with confirm_token. In a few operations only with certain data: the description says when. Why and how: Dry run and confirm_token.

Scope
dashboards:write
Permission
Edit in the module · Only owner, admin
MCP tool
dashboards_bulk_deployOn the full surface; on the compact one, mb_execute_operation with id: "dashboards.bulk.deploy".

Declared cost: up to 700 reads and 200 writes per call (they count against the daily quota).

Parameters

deploymentsarray<object>bodyrequired

One per dashboard to create (typically the new items of dashboards.bulk.deploy_plan).

Response

resultsarray<object>

One per deployment, in the same order.

Errors

Example

curl -X POST "https://api.mb-suite.com/v1/dashboards/bulk/deploy" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "deployments": [],
  "dry_run": true
}'

Try it with your test API key

With a test API key the request always goes to your practice organization: example data you can reset.

curl -X POST "https://api.mb-suite.com/v1/dashboards/bulk/deploy" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "deployments": [],
  "dry_run": true
}'