--- title: Spaces description: What a Space is, the slug rules the API enforces, who owns it, and what a rename or a delete does to the URLs you already handed out sidebar: order: 1 --- A Space is one site with a stable hostname. Publishing creates versions inside it, and the Space decides which one visitors see. ## What a Space is A Space is one site. It owns a slug, a hostname, an owner, and one pointer that says which version visitors get. A publish can create a new immutable version or report no changes, and the Space decides which version is live. Ids are `spc_` plus 32 hex characters: ```text spc_9f2c1ab34d5e4f6789ab01cd23ef4567 ``` Anywhere the CLI takes `--space`, you can pass that id, the slug, the live URL, or a custom domain pointed at it. ## Slug rules The slug is the name in the dashboard URL and the label in every hostname the Space answers on. | Rule | Value | | --- | --- | | Characters | `a-z`, `0-9`, and `-` | | Length | 3 to 55 characters | | Leading or trailing `-` | Rejected | | `--` anywhere | Rejected | | All digits | Rejected | Spacefast trims whitespace, strips diacritics, and lowercases your input. It reshapes nothing else, so `My Site` is rejected and `my-site` passes. A failing slug comes back as `slug_invalid` with a sentence saying which rule you hit. `--` is out because it separates a version or branch label from the Space label in hostnames. See [URLs and hostnames](/urls). ### Reserved slugs Four classes come back as `slug_reserved`: - Infrastructure names, such as `www`, `mail`, `cdn`, `ns1`, and `ftp`. - Spacefast product and platform names, such as `api`, `app`, `dashboard`, `login`, `mcp`, and `cli`. - Well-known brand names held against impersonation, such as `google`, `github`, and `stripe`. - Any slug containing `spacefast`, `stattic`, `automattic`, `wordpress`, or `paypal` as a substring. The substring class survives numeric suffixing, so `paypal-2` fails for the same reason `paypal` does. Pick a different base word instead of adding a number. Dashboard route names are reserved too, and the reservation is scoped to the position. `settings` is refused as a Space slug and accepted as a team slug. Refused as Space slugs: `agents`, `api-keys`, `billing`, `connect`, `domains`, `drop`, `handoffs`, `members`, `new`, `partners`, `resume`, `settings`, `variables`, `webhooks`. The `422` carries a `details.suggestion` you can take as-is. A rename keeps the old slug reserved for that Space. Other Spaces asking for it get `422` `slug_unavailable`. Check before you commit with [`getSlugAvailability`](/api/reference/spaces/getslugavailability). ## The default hostname New Spaces use `https://