Skip to main content
POST
Starting a new page? Create Website Draft takes a short, documented config (profile, links, socials, theme) and returns a link to the editor, where the page is reviewed and published. This endpoint publishes immediately and expects the full editor data model.
The page is rendered with the same generator as the dashboard, so every template (including every current design) looks exactly as it does when published from the editor. Paid-only features are removed for free accounts, as in the dashboard.

Request

Headers

string
required
Must be application/json

Body

string
required
Any non-empty string (kept for compatibility; the website’s id is its address)
string
required
The design, e.g. y2k-card, cover-stack, simple-stack-v2, modern-card-v2, minimal-card-v2, spotlight-card-v2, professional-link-bio-v2, bento-grid, neo-brutalist, music-release, music-sleeve, music-onyx, noir-publisher, root-terminal, bonbon-card, portrait-card, scene-card, shelf-card, canvas-story, duotone-press, snap-print, daydream-fade, folio-card. Older designs (modern-card, simple-stack, personal-card, professional-link-bio, spotlight-card, minimal-card) keep working.
object
required
The editor data for the page: profile, links, socials, background, advanced (pageTitle, metaDescription, googleTag, facebookPixel, favicon), settings (deepLinkBehavior, geoRules, botProtection, …) and the design’s own fields. The easiest way to get a valid object is GET /v1/websites/ on a page built in the editor.On free accounts these are removed before publishing, as in the dashboard: hideBranding, profile.verified, contact collection blocks, socialsAppearance.showFollowers and the Smart 18+ mode.
string
Slug on bouncy.ai (or on the system domain below). Without a slug or domain the page gets https://bouncy.ai/site/{id}. Same rule as deeplink slugs: 3 to 50 characters of letters, numbers, hyphens and underscores, and not a reserved word used by Bouncy’s own pages (for example admin, api, login). Invalid slugs return 400 with code: "INVALID_SLUG".Example: johndoe
boolean
true to publish on a system domain (with systemDomain and customSlug)
string
A system domain from GET /v1/domains, e.g. tapmy.social. Premium system domains need a paid plan; unknown domains return 400 with code: "UNKNOWN_SYSTEM_DOMAIN".
string
One of your custom domains. It must be connected to your account and verified: otherwise 403 with code: "DOMAIN_NOT_FOUND" or 400 with code: "DOMAIN_NOT_VERIFIED".
string
Path on the custom domain (e.g. shop or shop/summer). Omit for the domain root. The dashboard’s rule applies: letters, numbers, hyphens and underscores, with / between segments (leading, trailing and repeated slashes are dropped), at most 200 characters. ., #, %, spaces and paths reserved by Bouncy (for example api, admin, login) return 400.
string
Redirect behavior for the page’s links. Free plans are saved as conservative.
boolean
true to publish a custom-domain page immediately (recommended for custom domains).

Plan limits

The website counts toward the total and active limits like a deeplink. At the total limit the request returns 403. At the active limit a bouncy.ai or system-domain page is created inactive, while a custom-domain page (which must be active) returns 403.

Response

string
Success message
string
The website’s id (use it with the other website endpoints)
string
Full URL of the pageExample: https://bouncy.ai/johndoe
boolean
Whether the page was created active
string
Custom domains with deployToVercel: true only