PlotmeshBack to Studio
Developer beta

Build on the creative system, not around it.

Read signals, create drafts, and prepare production workflows while Plotmesh keeps costs, originality checks, and publishing decisions under creator control.

Create a sandbox key OpenAPI 3.1

Start in the sandbox

Every account has a fully isolated workspace with deterministic fixtures. Sandbox credentials cannot reach a live balance, production queue, or connected publishing channel.

  • Use the same request and response contracts as live
  • Test signal, campaign, and approval workflows safely
  • Switch to a live grant only when your integration is ready

Connect an AI assistant

Use the Streamable HTTP MCP endpoint. Compatible clients discover OAuth 2.1 automatically, then Plotmesh shows the requesting client, scopes, workspace, environment, budgets, and expiry before access is granted.

https://plotmesh-developer-mcp.restless-art-dba5.workers.dev/mcp

Tokens are short-lived, grants expire, and every call rechecks tenant membership and scopes.

Use the REST API

Create a sandbox API key in Studio, then send it as a bearer credential. Keys are shown once and stored only as hashes.

curl "https://plotmesh.xyz/v1/signals?workspaceId=YOUR_WORKSPACE_ID" \
  -H "Authorization: Bearer YOUR_SANDBOX_KEY"

Every response carries a Plotmesh-Request-Id header. Most mutations accept an Idempotency-Key header; a few routes require it or use Plotmesh-Idempotency-Key instead — see the OpenAPI file for exact parameters per route.

Consequential actions pause

Production and publishing tools create an expiring request in Studio. Approval records permission, but does not silently run the action: the client must explicitly resume it. Rejection makes the request unusable.

Agent requests→Creator reviews→Client resumes

Signed webhooks

Webhook bodies are signed as HMAC-SHA256(timestamp + "." + rawBody), delivered with a v1= prefixed signature (Plotmesh-Webhook-Signature + Plotmesh-Webhook-Timestamp headers). Verify against the raw bytes, reject timestamps older than five minutes, strip the prefix before comparing, and deduplicate with the event idempotency_key. SDK helpers implement the same contract.

Momentum (v1.6) events are emitted in the same database transaction as the change they report: momentum.deck.ready, momentum.plan.revised, momentum.plan.approved, momentum.grant.issued, momentum.grant.revoked, momentum.grant.consumed, momentum.publication.queued, momentum.publication.scheduled, momentum.publication.published, momentum.publication.failed and momentum.publication.blocked. Payloads carry identifiers, hashes and states — never customer copy or credentials. Publishing permissions are issued by a person in Studio; API keys and MCP clients can read them (publish:read, channels:read) but never issue, revoke or use them.