Skip to content

Developers

Build on Marketing Studio.

Everything your team does in the studio is available to your code and your AI agents — with scoped tokens, clear limits and an open specification.

REST API

Versioned JSON endpoints for content, publishing, generation, analytics, attribution, leads and compliance.

MCP server

Connect your own AI agent: it can draft content, schedule posts, generate images and read your numbers.

Tracking & webhooks

A first-party pixel, server-side conversions and signed WooCommerce and Shopify order webhooks.

Quickstart

Three steps from zero to your first request.

  1. 01

    Create a token

    Settings → API tokens. Pick the scopes the integration needs and, ideally, bind it to one brand.

  2. 02

    Send it as a Bearer header

    Every request carries Authorization: Bearer <token>. Unbound tokens also send X-Workspace-Id.

  3. 03

    Call the API

    All responses are JSON. Lists are paginated; long jobs return an id you can poll.

curl https://api.studio.pro.plus/api/v1/content?status=review \
  -H "Authorization: Bearer $MS_TOKEN" \
  -H "Accept: application/json"

curl -X POST https://api.studio.pro.plus/api/v1/content \
  -H "Authorization: Bearer $MS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"type":"social_post","title":"Autumn launch","body":"New single-origin beans are here.","language":"en"}'

Authentication & scopes

Tokens are personal access tokens. Each one carries scopes; a request outside its scopes returns 403 with code insufficient_scope.

ScopeAllows
content:readList and read content, the calendar, channels and the publishing queue.
content:writeCreate drafts, edit them, comment and submit for review. Includes content:read.
publishSchedule or publish posts to connected channels (approval rules still apply).
generateStart image and media generations, ask Marketing Copilot, run compliance checks. Uses credits.
analytics:readDashboard metrics, executive reports and revenue attribution.
seo:readTracked keywords, SEO overview and AI-answer visibility.
leads:readScored leads with explanations, and contacts.
leads:writeRecord conversions and create contacts. Includes leads:read.

Rate limits & errors

Each token can make 120 requests per minute. Every response carries X-RateLimit-Limit and X-RateLimit-Remaining; a 429 tells you how long to wait in Retry-After.

401

Missing, expired or revoked token.

403

Scope missing (insufficient_scope), endpoint not public (not_public_api) or token bound to another brand (workspace_mismatch).

422

Validation failed — errors lists every field.

424

An integration key (for example an AI provider) is not configured for the account.

429

Too many requests — retry after the given seconds.

Endpoints

The full description, with every field, is in the OpenAPI 3.1 document.

Content

GET/contentcontent:read
POST/contentcontent:write
GET/content/{id}content:read
POST/content/{id}/submitcontent:write

Publishing

GET/social/channelscontent:read
POST/social/publishpublish

Generation

POST/generationsgenerate
GET/generations/{id}generate
POST/copilot/askgenerate

Analytics & attribution

GET/dashboardanalytics:read
GET/platform/attributionanalytics:read
POST/platform/conversionsleads:write

SEO

GET/seo/keywordsseo:read
GET/seo/visibilityseo:read

Leads

GET/platform/leadsleads:read
GET/platform/leads/{contact_id}leads:read

Compliance

POST/platform/compliance/checkgenerate

MCP

MCP server for your AI agents

Marketing Studio speaks the Model Context Protocol over Streamable HTTP. Any MCP-capable agent can discover the tools, then act within the token’s scopes — drafts stay drafts until a person approves them.

Endpoint
POST https://api.studio.pro.plus/api/mcp
Authentication
Bearer personal access token (scopes decide which tools appear)
Protocol versions
2026-07-28 · 2025-11-25 · 2025-06-18 · 2025-03-26

Client configuration

{
  "mcpServers": {
    "marketing-studio": {
      "type": "http",
      "url": "https://api.studio.pro.plus/api/mcp",
      "headers": { "Authorization": "Bearer <your token>" }
    }
  }
}
POST /api/mcp
MCP-Protocol-Version: 2026-07-28
Mcp-Method: tools/call
Mcp-Name: create_content_draft

{"jsonrpc":"2.0","id":7,"method":"tools/call","params":{
  "name":"create_content_draft",
  "arguments":{"type":"article","title":"How to brew for a team of 40","submit_for_review":true},
  "_meta":{"io.modelcontextprotocol/protocolVersion":"2026-07-28"}}}

Tools

list_contentcontent:read

List the brand’s content with status and scores

get_contentcontent:read

Read one item in full

create_content_draftcontent:write

Create a draft or send it to review

list_channelscontent:read

Connected channels and their ids

schedule_postpublish

Schedule a post, or let the studio pick the best time

generate_imagegenerate

Generate an on-brand image

get_generationgenerate

Check a generation and get the image

get_dashboard_metricsanalytics:read

Revenue, traffic and growth rings

get_attributionanalytics:read

Revenue by channel, campaign and content

ask_copilotgenerate

Ask the brand’s analyst a question

list_keywordsseo:read

Tracked keywords and positions

list_hot_leadsleads:read

Scored leads with the signals behind them

check_compliancegenerate

Check copy against policy packs

Tracking & attribution

One script on your site records campaign visits with UTM parameters and click ids in a first-party cookie. Pair it with order webhooks and every sale is credited to the channels, campaigns and content that earned it.

<script async src="https://api.studio.pro.plus/t.js" data-key="ms_your_site_key"></script>

Identify visitors and record conversions

mstudio("identify", { email: "sara@example.com", name: "Sara Ahmadi" });
mstudio("track", "lead", { email: "sara@example.com" });
mstudio("track", "purchase", { value: 49, currency: "USD", order_id: "1042" });

Signed shop webhooks

WooCommerce and Shopify sign every order with HMAC-SHA256. Use the URL and secret from Attribution → Set up tracking. Retries are safe: orders are de-duplicated and refunds are subtracted.

// Every order webhook is signed:
// X-WC-Webhook-Signature / X-Shopify-Hmac-Sha256 = base64(HMAC-SHA256(raw body, secret))
https://api.studio.pro.plus/api/v1/webhooks/platform/shop/woocommerce/<site key>
https://api.studio.pro.plus/api/v1/webhooks/platform/shop/shopify/<site key>

Server-side conversions

curl -X POST https://api.studio.pro.plus/api/v1/platform/conversions \
  -H "Authorization: Bearer $MS_TOKEN" -H "Content-Type: application/json" \
  -d '{"type":"purchase","value":120,"currency":"USD","external_id":"order-1042","email":"sara@example.com"}'

Developers

Ready when your team is.

Create a token in a minute — or talk to us about a custom integration.