Skip to content
Docs
Developers

Migrating to API v2

API v2 is live and covers everything v1 does. v1 keeps working until 14 December 2026 and answers 410 from 15 December 2026. Most callers only change /api/v1 to /api/v2 and switch a design handoff key to an API key.

Why v2

Claude Design (claude.ai/design) closes on 14 December 2026. BrandPilot stays the source of truth for your brand, and the design work moves into Claude Artifacts: each app gets one Design System artifact, and each redesign round gets one Design canvas artifact with one artboard per surface. Claude Code builds them from inside your app's repo. Agents without the Artifact tool, such as Cursor or Codex, build local HTML drafts in the repo instead.

v1 routes and prompts were written around Claude Design projects. v2 serves the same data with the Artifact workflow, so the three routes that describe how to design (the prompt pack, the handoff prompt and the agent prompt) change their content, the Claude Design kit route is renamed, and every other route keeps its response body.

Dates

DateWhat happens
22 October 2026API v2 and the new MCP tool names are live. v1 still answers.
22 October to 14 December 2026Every v1 response carries Deprecation, Sunset: Tue, 15 Dec 2026 00:00:00 GMT and Link: <v2 path>; rel="successor-version".
14 December 2026Claude Design closes. Last day v1 answers.
15 December 2026Every v1 route answers HTTP 410 API_V1_RETIRED. Design handoff keys stop working, and the older MCP tool names stop answering.
Headers on a v1 response until 14 December 2026
Deprecation: @1792627200
Sunset: Tue, 15 Dec 2026 00:00:00 GMT
Link: </api/v2/systems>; rel="successor-version"
Link: </docs/migration-v2>; rel="deprecation"
Any v1 route from 15 December 2026
HTTP/1.1 410 Gone

{
  "error": "API_V1_RETIRED",
  "message": "BrandPilot API v1 was retired on 2026-12-15. Call /api/v2/systems instead; the route table is at /docs/migration-v2.",
  "successor": "/api/v2/systems",
  "docs": "/docs/migration-v2"
}

The successor field and the successor-version link name the exact v2 path for the route you called, with your query string kept, so a client can log it or follow it.

Route table

v1v2Notes
GET /api/v1/systemsGET /api/v2/systemsSame body
GET /api/v1/systems/{name}/adoptionGET /api/v2/systems/{name}/adoptionSame body; the export URLs inside point at v2
GET /api/v1/systems/{name}/downloadGET /api/v2/systems/{name}/downloadSame ZIP
GET /api/v1/systems/{name}/agent-promptGET /api/v2/systems/{name}/agent-promptNew content: the Design System artifact and the Design canvas for Claude Code, local HTML drafts for other agents
GET, POST, DELETE /api/v1/systems/{name}/webhooksGET, POST, DELETE /api/v2/systems/{name}/webhooksSame bodies; register new subscriptions here
GET /api/systems/export/{name}?format=GET /api/v2/systems/{name}/export?format=Same 15 formats (below)
GET /api/v1/designs/{id}/handoffGET /api/v2/designs/{id}/handoffSame body; the import contract points at v2
GET /api/v1/designs/{id}/handoff-promptGET /api/v2/designs/{id}/handoff-promptAlways written for an API key
GET /api/v1/designs/{id}/prompt-packGET /api/v2/designs/{id}/prompt-packNew parameters and content (see below)
GET /api/v1/designs/{id}/rules-packGET /api/v2/designs/{id}/rules-packSame body
GET /api/v1/designs/{id}/claude-design-kitGET /api/v2/designs/{id}/design-system-kitRenamed; the same project/ tree, for a Design System artifact
GET /api/v1/designs/{id}/brand-bookGET /api/v2/designs/{id}/brand-bookSame file
GET /api/v1/designs/{id}/deckGET /api/v2/designs/{id}/deckSame file
POST /api/v1/designs/{id}/external-artifactsPOST /api/v2/designs/{id}/external-artifactsAPI key only
POST /api/v1/designs/{id}/finish-externalPOST /api/v2/designs/{id}/finish-externalAPI key only
GET /api/v1/meGET /api/v2/meSame body
GET /api/v1/mcp/toolsGET /api/v2/mcp/toolsThe v2 tool names
GET /api/v1/openapi.jsonGET /api/v2/openapi.jsonDescribes v2

Export formats on /api/v2/systems/{name}/export: globals-css, colors-ts, tailwind-theme, tailwind-v4, spacing-ts, typography-ts, brand-manifest, dtcg, components, pages, components-json, pages-json, assets-svg, all and tokens.

MCP tool names

The hosted MCP (POST /api/mcp) serves all twelve tools below with a workspace API key. The older names still answer as aliases until 14 December 2026 and stop answering on 15 December 2026. The full, current list is on MCP tools.

ToolOlder name (until 14 December 2026)
whoamiUnchanged
list_brandsUnchanged
get_design_contextget_design_handoff
get_repo_rules_packUnchanged
get_design_system_kitget_claude_design_kit
get_design_briefget_design_prompt_pack
import_design_workimport_design_artifacts
finish_design_importfinish_external_design
list_public_systemslist_systems
get_system_manifestget_system_adoption
export_system_tokensget_system_tokens
get_adoption_briefget_agent_prompt

The prompt pack in v2

GET /api/v2/designs/{id}/prompt-pack takes agent=claude|other (default claude), pass=explore|lock (default explore), direction (required with lock), round, with3d and format=markdown|json|copy-map. The MCP tool get_design_brief takes the same arguments. The pack names no Claude Design template, project or upload step.

What does not change

Checklist

  1. Replace /api/v1/ with /api/v2/ in every call, and /api/systems/export/{name} with /api/v2/systems/{name}/export.
  2. Change claude-design-kit to design-system-kit.
  3. If you still use a design handoff key, create an API key and send it as Authorization: Bearer <key>. v2 never accepts a handoff key.
  4. Update MCP prompts and scripts that call a tool by an older name to the new name.
  5. If you call the prompt pack, pass agent=other when the agent building the round has no Artifact tool.
  6. Watch your logs for a Sunset header on any response: that call still uses v1 or a handoff key.
One call before and after
# Before
curl https://brandpilot.dev/api/v1/designs/{id}/handoff \
  -H "Authorization: Bearer $BRANDPILOT_API_KEY"

# After
curl https://brandpilot.dev/api/v2/designs/{id}/handoff \
  -H "Authorization: Bearer $BRANDPILOT_API_KEY"

Every change is also listed in the changelog.