Menu

API reference · AI Strategies

Strategies

strategy_generator · strategies · 5 operations

GET/v1/strategy-generator/strategies

List AI paid media strategies

strategy_generator.strategies.list

ReadIdempotentSince 2026-11-01

Lists the organization's AI paid media strategies (generated from a briefing by MB Suite's AI: channel mix, campaigns and budget), newest first, paginated by cursor (limit up to 200). Each row is a summary: name, status (generating, completed or error), objective, ad platforms, currency, monthly budget range (min_budget, max_budget), number of campaigns, label ids and, for a failed one, its error message. Filters status, objective, label_id and search (text in the name) fill the page (a page can come short only for a rare filter after scanning 600 strategies, with has_more true). Read one with strategy_generator.strategies.get. Strategies are generated in the app (AI Strategies): this API reads, edits, exports and deletes them. Requires view access to AI Strategies.

Scope
strategy_generator:read
Permission
View the module
MCP tool
strategy_generator_strategies_listOn the full surface; on the compact one, mb_execute_operation with id: "strategy_generator.strategies.list".

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

Parameters

limitintegerqueryoptional

How many items this page brings at most (see the maximum and the default in the schema).

Default: 50

cursorstringqueryoptional

The next_cursor of the previous page, exactly as it came (only for the same list and filters); without it, the first page.

statusenumqueryoptional

Only strategies in this state: generating, completed or error.

Values: generating, completed, error

objectiveenumqueryoptional

Only strategies whose briefing has this campaign objective.

Values: leads, sales, traffic, branding, app_install

label_idstringqueryoptional

Only strategies tagged with this label (strategy_generator.labels.list).

searchstringqueryoptional

Case-insensitive text contained in the strategy name.

Response

dataarray<object>
has_moreboolean
next_cursorstring

Errors

Example

curl "https://api.mb-suite.com/v1/strategy-generator/strategies" \
  -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/strategy-generator/strategies" \
  -H "Authorization: Bearer $MB_TEST_KEY"
GET/v1/strategy-generator/strategies/{strategy_id}

Get one AI paid media strategy

strategy_generator.strategies.get

ReadIdempotentSince 2026-11-01

Returns one strategy: name, status, the briefing it was generated from (input: project, landing page, sector, product, objective, currency, budget mode, ad platforms, countries, languages, audience, interests, keywords and regions by country code), the AI plan, the projections the person adjusted (projections, null until edited or after a regeneration), label ids and the AI model used. result (null until the first generation finishes) holds the AI plan with snake_case keys: executive_summary; recommended_mix (list of {channel, percentage, reason}); detailed_plan (list of campaigns {id, channel, campaign_name, campaign_type, rationale, budget_percentage, kpis}); total_budget_estimation, min_budget, max_budget and currency (the monthly budget range); targeting_personas and audience_insights; the objective's estimated metrics (estimated_cpl, estimated_cpc, estimated_ctr, estimated_conversion_rate, estimated_total_leads, ecommerce_funnel…) and metric_rationales. The prompt sent to the AI and its raw answer are not returned. Not found (strategy_not_found) if the id does not exist in this organization. Requires view access to AI Strategies.

Scope
strategy_generator:read
Permission
View the module
MCP tool
strategy_generator_strategies_getOn the full surface; on the compact one, mb_execute_operation with id: "strategy_generator.strategies.get".

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

Parameters

strategy_idstringpathrequired

Strategy id (from strategy_generator.strategies.list).

Response

idstring

Strategy id.

namestring

Strategy name.

statusenum

generating, completed or error.

Values: generating, completed, error

inputobject

The briefing it was generated from.

resultobject | null

The AI plan (its keys as the AI wrote them); null until the first generation finishes.

projectionsobject | null

The projection values the person adjusted; null until edited or after a regeneration.

label_idsarray<string>

Labels (strategy_generator.labels.list).

ai_modelstring | null

The AI model that generated it.

error_messagestring | null

Why the generation failed (status error).

created_bystring | null

Who created it (uid).

created_atnumber

Epoch ms.

updated_atnumber

Epoch ms.

created_by_namestring | null

That person's name (null when MB Suite does not know it: a former member).

Errors

Example

curl "https://api.mb-suite.com/v1/strategy-generator/strategies/{strategy_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/strategy-generator/strategies/{strategy_id}" \
  -H "Authorization: Bearer $MB_TEST_KEY"
PATCH/v1/strategy-generator/strategies/{strategy_id}

Rename, label or edit an AI paid media strategy

strategy_generator.strategies.update

WriteIdempotentSince 2026-11-01

Changes one or more of these, sent inside updates ({ strategy_id, updates: { … } }): name (up to 200 characters); label_ids (replaces the whole list; ids from strategy_generator.labels.list, unknown ones are dropped); result (replaces the WHOLE AI plan: send the complete object you read with strategy_generator.strategies.get, modified, keeping recommended_mix and detailed_plan as lists; up to 400 KB); projections (replaces the projection values: rates, amounts, budget_basis min|avg|max, campaign_budget_mode, hide_revenue). result (null until the first generation finishes) holds the AI plan with snake_case keys: executive_summary; recommended_mix (list of {channel, percentage, reason}); detailed_plan (list of campaigns {id, channel, campaign_name, campaign_type, rationale, budget_percentage, kpis}); total_budget_estimation, min_budget, max_budget and currency (the monthly budget range); targeting_personas and audience_insights; the objective's estimated metrics (estimated_cpl, estimated_cpc, estimated_ctr, estimated_conversion_rate, estimated_total_leads, ecommerce_funnel…) and metric_rationales. The plan can only be edited on a completed strategy (409 strategy_not_ready while it generates or after a failed first generation). Unknown fields are rejected. It does not run the AI: a new plan is generated from the app. Idempotent: sending what the strategy already has changes nothing (changed: false). Returns the strategy. Requires edit access to AI Strategies.

Scope
strategy_generator:write
Permission
Edit in the module
MCP tool
strategy_generator_strategies_updateOn the full surface; on the compact one, mb_execute_operation with id: "strategy_generator.strategies.update".

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

Parameters

strategy_idstringpathrequired

Strategy id (from strategy_generator.strategies.list).

updatesobjectbodyrequired

What changes (at least one field).

Response

strategyobject

The strategy as it is now.

changedboolean

false when the values sent were already the current ones: nothing was written.

Errors

Example

curl -X PATCH "https://api.mb-suite.com/v1/strategy-generator/strategies/{strategy_id}" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "updates": {}
}'

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/strategy-generator/strategies/{strategy_id}" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "updates": {}
}'
DELETE/v1/strategy-generator/strategies/{strategy_id}

Delete an AI paid media strategy

strategy_generator.strategies.delete

IrreversibleSince 2026-11-01

Deletes a strategy. It stays 30 days in the trash, where an owner or admin can restore it with the same id, its plan, projections and labels (platform.trash.restore); a strategy deleted while generating loses that run and comes back with its previous plan, or as failed if it had none. Outside the app it needs a dry run and a confirm_token, except a REST DELETE with a key allowed to delete. Emits strategy_generator.strategy.deleted. Requires edit access to AI Strategies.

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
strategy_generator:write and “Allow deletions” (strategy_generator:delete in OAuth)
Permission
Edit in the module
MCP tool
strategy_generator_strategies_deleteOn the full surface; on the compact one, mb_execute_operation with id: "strategy_generator.strategies.delete".

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

Parameters

strategy_idstringpathrequired

Strategy id (from strategy_generator.strategies.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/strategy-generator/strategies/{strategy_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/strategy-generator/strategies/{strategy_id}" \
  -H "Authorization: Bearer $MB_TEST_KEY"
POST/v1/strategy-generator/strategies/{strategy_id}/export-pdf

Export an AI paid media strategy to PDF

strategy_generator.strategies.export_pdf

WriteSince 2026-11-01

Renders a strategy to an A4 PDF with the organization's branding and returns a signed download link that expires in 24 hours, plus the file name and size. sections picks what goes in (cover, strategy, projections, briefing; default all four). The projections in the PDF are the ones saved in the strategy. Rendering can take tens of seconds; when the PDF service is slow or not available right now it fails with pdf_unavailable (503): retry after retry_after. A strategy without a generated plan cannot be exported (409 strategy_not_ready). Not idempotent: each call renders a new file. Requires edit access to AI Strategies.

Instructions for agents

Give the person the download link and say it expires in 24 hours. Do not paste the link anywhere public.

Scope
strategy_generator:write
Permission
Edit in the module
MCP tool
strategy_generator_strategies_export_pdfOn the full surface; on the compact one, mb_execute_operation with id: "strategy_generator.strategies.export_pdf".

Declared cost: up to 1 reads and 0 writes per call (they count against the daily quota). Touches an external platform (pdf): it counts against the external operations quota.

Parameters

strategy_idstringpathrequired

Strategy id (from strategy_generator.strategies.list).

sectionsarray<enum>bodyoptional

Sections to include, in this order: cover, strategy, projections, briefing (default: all four).

Values: cover, strategy, projections, briefing

Response

download_urlstring

Signed link to the PDF (24 hours).

file_namestring

The file name.

size_bytesnumber

Its size.

expires_atnumber

When the link stops working (epoch ms).

Errors

Example

curl -X POST "https://api.mb-suite.com/v1/strategy-generator/strategies/{strategy_id}/export-pdf" \
  -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. In the practice organization this operation is not simulated (it reaches another platform): it answers 409 sandbox_external_unavailable.