w

Cursor Canvas 工具

粘贴 Cursor 生成的 .canvas.tsx,在浏览器里预览,并生成可分享短链。

API 参考

所有路由都在 /api/cursor-canvas 下。作者身份绑定当前 session 用户(含匿名用户,cookie 为 sessionId)。同一浏览器才能列出、更新和删除自己的记录。

POST /api/cursor-canvas

保存源码并返回短链。

请求:

{
  "source": "import { H1 } from \"cursor/canvas\";\nexport default function App() { return <H1>Hi</H1>; }",
  "title": "Optional",
  "access": "public",
  "password": "optional-when-access-is-password",
  "expiresAt": "2026-12-31T23:59:59.000Z"
}
字段类型说明
sourcestring必填。20–200,000 字符。必须从 cursor/canvas 导入。
titlestring可选。最多 200 字符。显示在分享页。
accessstring可选。public(默认)或 password
passwordstringaccesspassword 时必填。最多 100 字符。服务端存原文。
expiresAtstring可选 ISO 时间。不传表示不过期。

响应:

{
  "canvasId": "cv_a1b2c3d4e5f6",
  "shareUrl": "https://example.com/cursor-canvas/cv_a1b2c3d4e5f6",
  "title": "Optional",
  "sourceMd5": "5d41402abc4b2a76b9719d911017c592",
  "reused": false,
  "createdAt": "2026-08-31T08:00:00.000Z",
  "access": "public",
  "hasPassword": false,
  "expiresAt": null
}

同一 owner 已经发布过相同 MD5 时,reusedtrue。这次请求里的权限、密码和过期时间会覆盖原设置。

GET /api/cursor-canvas/:canvasId

加载分享页源码。受保护链接请带 query password。作者 session 可跳过密码,过期后仍能打开。

{
  "canvasId": "cv_a1b2c3d4e5f6",
  "title": "Optional",
  "source": "import { H1 } from \"cursor/canvas\";\nexport default function App() { return <H1>Hi</H1>; }",
  "viewCount": 3,
  "createdAt": "2026-08-31T08:00:00.000Z",
  "access": "public",
  "requiresPassword": false,
  "canOpenEditor": true,
  "expiresAt": null
}
  • canOpenEditor 仅为作者为 true。分享页用它决定是否显示 打开编辑器
  • 需要密码时 requiresPasswordtruesource 为空,直到密码正确。
  • 访客打开已过期链接返回 410。密码错误返回 401

PATCH /api/cursor-canvas/:canvasId

用当前 session 用户更新自己的 canvas 源码和分享设置。打开编辑器 会把这份 canvas 载入编辑页;保存走这个接口,短链(canvasId)保持不变。

请求体与 POST 相同,但 password 可选:accesspassword 时不传则保留原密码。改成 public 会清除密码。没有 session 用户返回 401。非作者返回 403

GET /api/cursor-canvas/mine

列出当前 session 用户的 canvas。没有 session 用户时返回 []

DELETE /api/cursor-canvas/:canvasId

删除当前 session 用户创建的 canvas。成功返回 204。没有 session 用户时返回 401

source 示例 canvas

在线预览

hello.canvas.tsx

Hello, Canvas

Live preview rendered in the browser from cursor/canvas.

这个页面对您有帮助吗?