Slug Rules
Every deployment gets a slug that becomes its subdomain: {slug}.based.page.
Format
- Lowercase letters, numbers, and hyphens only
- 1–64 characters
- Must start and end with a letter or number (no leading/trailing hyphens)
- Must contain at least one hyphen. All single-word slugs (e.g.
mysite,acme,launch) are reserved and cannot be used. Always use a hyphenated slug likemy-siteoracme-launch.
Valid examples: my-site, acme-launch, q1-report-2026, a1
Invalid examples: MyApp (uppercase), -my-site (leading hyphen), mysite (single word), acme (single word), api (reserved)
Uniqueness
Slugs are globally unique across all Based Page deployments. If a slug is already taken, the deploy fails with a 409 conflict error:
{ "error": "slug \"my-site\" is already taken" }Choose a different slug or omit it to get an auto-generated one.
Auto-generated Slugs
If you omit the slug field, Based Page generates one automatically:
bright-forest-x7k2.based.pageAuto-generated slugs are always unique and always contain a hyphen.
Renaming a Slug
The slug cannot be changed via the update MCP tool or CLI. To rename a deployment, use the API:
curl -X PATCH https://api.based.page/deploy/{id}/slug \
-H "Authorization: Bearer bp_your_api_key" \
-H "Content-Type: application/json" \
-d '{ "slug": "new-slug" }'The URL changes immediately. The old slug becomes available for reuse.
Notes
- Slugs are permanent for the life of a deployment unless explicitly renamed via the API.
- Tearing down a deployment frees its slug - it becomes available again immediately.
- Custom domains bypass slug routing entirely and are configured separately.
Reserved Slugs
All single-word slugs are reserved. The following slugs are also blocked regardless of context:
api, www, docs, mail, smtp, imap, pop, ftp, cdn, ns1, ns2, ns3, auth, login, logout, signup, register, account, dashboard, admin, root, system, privacy, privacy-policy, terms, terms-of-service, tos, legal, dmca, abuse, security, based, based-page, app, blog, help, support, status, billing, settings, index
Attempting to deploy with a reserved slug returns a 400 error.