Menu

API reference · Dashboards

Cross-account

dashboards · cross_account · 6 operations

GET/v1/dashboards/cross-account

List cross-account dashboards

dashboards.cross_account.list

ReadIdempotentSince 2026-11-01

Lists the workspace's cross-account dashboards (dashboards whose widgets read every account of the workspace, or several sub-accounts of one workspace credential when is_multi_account), most recently updated first, paginated by cursor. An account (child organization) has none: the list comes back empty. Use dashboards.cross_account.get for the pages and widgets.

Scope
dashboards:read
Permission
View the module
MCP tool
dashboards_cross_account_listOn the full surface; on the compact one, mb_execute_operation with id: "dashboards.cross_account.list".

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

Parameters

limitintegerqueryoptional

How many cross-account dashboards per page (default 50, at most 200).

Default: 50

cursorstringqueryoptional

The next_cursor of the previous page, to get the next one; omit it for the first page.

Response

dataarray<object>
has_moreboolean
next_cursorstring

Errors

Example

curl "https://api.mb-suite.com/v1/dashboards/cross-account" \
  -H "Authorization: Bearer $MB_API_KEY"

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 "https://api.mb-suite.com/v1/dashboards/cross-account" \
  -H "Authorization: Bearer $MB_TEST_KEY"
GET/v1/dashboards/cross-account/{dashboard_id}

Get one cross-account dashboard

dashboards.cross_account.get

ReadIdempotentSince 2026-11-01

Returns a cross-account dashboard of the workspace with its date range, filters and its pages with a summary of each widget (type, title, platform, metrics, dimensions, grid position). It does not return widget data. Not found if the id does not exist in this workspace.

Scope
dashboards:read
Permission
View the module
MCP tool
dashboards_cross_account_getOn the full surface; on the compact one, mb_execute_operation with id: "dashboards.cross_account.get".

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

Parameters

dashboard_idstringpathrequired

The cross-account dashboard id (dashboards.cross_account.list).

Response

idstring

Cross-account dashboard id.

titlestring

Title.

descriptionstring | null

Description.

is_multi_accountboolean

A widget adds up several accounts of one workspace credential.

label_idsarray<string>

Labels (dashboards.labels.list with of: cross_account).

is_featuredboolean

Featured in the list.

positionnumber | null

Manual order in the list.

created_atnumber | null

Created (epoch ms).

updated_atnumber | null

Last edited (epoch ms).

created_bystring | null

Uid of who created it.

date_rangeobject | null

The default period.

compare_date_rangeobject | null

The comparison period, if any.

filtersarray<object>

Filters applied to every widget.

filter_controlsarray<any>

Filter controls shown on it.

pagesarray<object>

Pages with a summary of each widget (no data).

created_by_namestring | null

Their name («MB Suite» for the system).

Errors

Example

curl "https://api.mb-suite.com/v1/dashboards/cross-account/{dashboard_id}" \
  -H "Authorization: Bearer $MB_API_KEY"

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 "https://api.mb-suite.com/v1/dashboards/cross-account/{dashboard_id}" \
  -H "Authorization: Bearer $MB_TEST_KEY"
POST/v1/dashboards/cross-account

Create a cross-account dashboard

dashboards.cross_account.create

WriteSince 2026-11-01

Creates an empty cross-account dashboard in the workspace (one blank page) with a title, optional description and is_multi_account (widgets that add up several sub-accounts of one workspace credential). Its widgets are designed in MB Suite. Only a workspace (agency) organization can have them: an account gets workspace_only. Returns the new id. Requires edit access to Dashboards.

Scope
dashboards:write
Permission
Edit in the module
MCP tool
dashboards_cross_account_createOn the full surface; on the compact one, mb_execute_operation with id: "dashboards.cross_account.create".

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

Parameters

titlestringbodyrequired

Title.

descriptionstringbodyoptional

Description.

is_multi_accountbooleanbodyoptional

true: a widget adds up several accounts of one workspace credential.

Response

dashboard_idstring

The new cross-account dashboard id.

Errors

Example

curl -X POST "https://api.mb-suite.com/v1/dashboards/cross-account" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "title": "TITLE"
}'

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/cross-account" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "title": "TITLE"
}'
PATCH/v1/dashboards/cross-account/{dashboard_id}

Update a cross-account dashboard

dashboards.cross_account.update

WriteIdempotentSince 2026-11-01

Updates the title, description and/or labels (ids from dashboards.labels.list with of: cross_account; an unknown one is label_unknown) of a cross-account dashboard. Pages, widgets, date range and filters are edited in MB Suite. Returns the updated dashboard. Requires edit access to Dashboards.

Scope
dashboards:write
Permission
Edit in the module
MCP tool
dashboards_cross_account_updateOn the full surface; on the compact one, mb_execute_operation with id: "dashboards.cross_account.update".

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

Parameters

dashboard_idstringpathrequired

The cross-account dashboard id (dashboards.cross_account.list).

titlestringbodyoptional

New title.

descriptionstringbodyoptional

New description.

label_idsarray<string>bodyoptional

Labels (ids from dashboards.labels.list with of: cross_account); replaces the list. An unknown id is label_unknown.

Response

dashboardobject

The dashboard as saved.

Errors

Example

curl -X PATCH "https://api.mb-suite.com/v1/dashboards/cross-account/{dashboard_id}" \
  -H "Authorization: Bearer $MB_API_KEY"

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 PATCH "https://api.mb-suite.com/v1/dashboards/cross-account/{dashboard_id}" \
  -H "Authorization: Bearer $MB_TEST_KEY"
POST/v1/dashboards/cross-account/{dashboard_id}/duplicate

Duplicate a cross-account dashboard

dashboards.cross_account.duplicate

WriteSince 2026-11-01

Copies a cross-account dashboard (pages, widgets, date range, filters) into a new one titled '<title> (Copia)' (the suffix in the caller's language: (Copia), (Copy) or (Cópia)), not featured. Returns the new id. Requires edit access to Dashboards.

Scope
dashboards:write
Permission
Edit in the module
MCP tool
dashboards_cross_account_duplicateOn the full surface; on the compact one, mb_execute_operation with id: "dashboards.cross_account.duplicate".

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

Parameters

dashboard_idstringpathrequired

The cross-account dashboard id (dashboards.cross_account.list).

Response

dashboard_idstring

The new cross-account dashboard id.

Errors

Example

curl -X POST "https://api.mb-suite.com/v1/dashboards/cross-account/{dashboard_id}/duplicate" \
  -H "Authorization: Bearer $MB_API_KEY"

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/cross-account/{dashboard_id}/duplicate" \
  -H "Authorization: Bearer $MB_TEST_KEY"
DELETE/v1/dashboards/cross-account/{dashboard_id}

Delete a cross-account dashboard

dashboards.cross_account.delete

IrreversibleSince 2026-11-01

Deletes a cross-account dashboard of the workspace. It goes to the 30-day trash. Outside the screen it requires a dry run and a confirm_token, except a plain REST DELETE with a key allowed to delete. Requires edit access to Dashboards.

With an API key, this DELETE runs directly: the record stays 30 days in the trash and the response carries its trash_item_id. With an OAuth token, and through the MCP, it needs dry_run → confirm_token.

Scope
dashboards:write and “Allow deletions” (dashboards:delete in OAuth)
Permission
Edit in the module
MCP tool
dashboards_cross_account_deleteOn the full surface; on the compact one, mb_execute_operation with id: "dashboards.cross_account.delete".

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

Parameters

dashboard_idstringpathrequired

The cross-account dashboard id (dashboards.cross_account.list).

Response

oktrue
trash_item_idstring

The trash item this deletion left: the item_id of platform.trash.restore (POST /trash/{item_id}/restore). Missing if nothing went to the trash.

trash_item_idsarray<string>

Only when the deletion left more than one copy: all of them, the first being trash_item_id.

trash_expires_atnumber

When the copy leaves the trash for good (epoch ms): 30 days after the deletion.

Errors

Example

curl -X DELETE "https://api.mb-suite.com/v1/dashboards/cross-account/{dashboard_id}" \
  -H "Authorization: Bearer $MB_API_KEY"

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 DELETE "https://api.mb-suite.com/v1/dashboards/cross-account/{dashboard_id}" \
  -H "Authorization: Bearer $MB_TEST_KEY"