Publish a surface to the public page site
Turns on public access for a page or note, assigning a slug derived from the request or the title and made unique against every other published surface, database, and view, and stores the SEO, cover, icon, and theme settings alongside it. Requires full access to the surface (`surfaces:write`) and a signed-in session. Surfaces of any other kind are rejected as not publishable. Naturally idempotent: republishing overwrites the settings and keeps the original publish timestamp.
Authorization
apiKey Workspace API key created in Workspace settings → API keys. Scopes on the key bound what it can read and write.
In: header
Path Parameters
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
curl -X PUT "https://example.com/v1/workspaces/string/surfaces/string/publish" \ -H "Content-Type: application/json" \ -d '{}'{ "data": { "enabled": true, "slug": "string", "seoIndexed": true, "coverImageUrl": "string", "showIcon": true, "theme": { "background": { "type": "none", "color": "string", "gradient": "string", "gradientFrom": "string", "gradientTo": "string", "gradientAngle": 0, "imageUrl": "string", "blur": 0 }, "accent": "string", "radius": 0, "pageWidth": "default", "colorScheme": "auto" }, "publishedAt": "string" }}{ "_tag": "ApiNotFound", "error": "not_found", "message": "That item does not exist, or this key cannot see it.", "status": 404}{ "_tag": "ApiNotFound", "error": "not_found", "message": "That item does not exist, or this key cannot see it.", "status": 404}Unpublish a surface
Disables public access for the surface while keeping its slug and settings, so republishing later reuses the same URL. Requires full access to the surface and a signed-in session, and is a no-op when the surface was never published.
Get the resolved embed data for a surface
Resolves the databases, views, and pages embedded in the surface's blocks and canvas elements and returns their live data, so a guest who can read the surface sees its cards without needing direct access to the embedded content. Requires `surfaces:read` on the surface and a signed-in session.