From 42d63d488396a898af1fe7a3dd9e38510962c04c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?batuhan=20i=C3=A7=C3=B6z?= Date: Sat, 24 Oct 2026 06:46:27 +0000 Subject: [PATCH 1/2] Document 404 responses for unpublished hosts --- content/(reference)/limits.mdx | 4 ++-- content/(serve)/urls.mdx | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/content/(reference)/limits.mdx b/content/(reference)/limits.mdx index 19d8d89..3ef9e25 100644 --- a/content/(reference)/limits.mdx +++ b/content/(reference)/limits.mdx @@ -99,11 +99,11 @@ A space that stops serving does not fall back to a blank 404. The status code an | Account suspended | `402` | `This space is paused.` | `403` `tenant_suspended` | | Space disabled, expired, or taken down | `404` | `This space is no longer available.` | `409` with the disable reason | | Removed after a legal complaint | `451` | `This content is unavailable for legal reasons.` | `409` | -| Removed under the strictest safety category | `503` | `This space hasn't been published yet.` | `409` | +| Removed under the strictest safety category | `404` | `This space hasn't been published yet.` | `409` | Reads are never blocked by account state. Only writes are. A past-due account keeps serving every site at full speed for the whole grace period, and only the dashboard, CLI, and API stop accepting changes. -The 451 and 404 pages are customizable like any other error page. The 503 case is byte-identical to a host that has never published anything. +The legal-removal and no-longer-available pages are customizable like any other error page. The strictest-safety response is byte-identical to a host that has never published anything. Both return `404` with `X-Spacefast-Undeployed: 1` and the unpublished body, which distinguish them from a missing page on a published site. ## Rate limits diff --git a/content/(serve)/urls.mdx b/content/(serve)/urls.mdx index 179859d..b6010f5 100644 --- a/content/(serve)/urls.mdx +++ b/content/(serve)/urls.mdx @@ -94,4 +94,4 @@ Any hostname ending in `.space.fast` or `.view.fast` is refused as a custom doma ## Hostnames that do not serve -A request to a hostname Spacefast does not route, or to a Space that has never published, answers `503` with `Cache-Control: no-store` and the body `This space hasn't been published yet.` It is deliberately not a 404, so a monitoring check can tell "nothing here yet" apart from "this page is missing". +A request to a hostname Spacefast does not route, or to a Space that has never published, answers `404` with `Cache-Control: no-store` and the body `This space hasn't been published yet.` The response includes `X-Spacefast-Undeployed: 1`. Use that header or the body to tell "nothing here yet" apart from a missing page on a published site. From 0c400e0ebdf4f8c8ee0396b6c9ff9ef3ad70b5d7 Mon Sep 17 00:00:00 2001 From: batuhan Date: Sat, 24 Oct 2026 06:53:16 +0000 Subject: [PATCH 2/2] Clarify which responses carry the undeployed marker --- content/(reference)/limits.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/(reference)/limits.mdx b/content/(reference)/limits.mdx index 3ef9e25..089ede3 100644 --- a/content/(reference)/limits.mdx +++ b/content/(reference)/limits.mdx @@ -103,7 +103,7 @@ A space that stops serving does not fall back to a blank 404. The status code an Reads are never blocked by account state. Only writes are. A past-due account keeps serving every site at full speed for the whole grace period, and only the dashboard, CLI, and API stop accepting changes. -The legal-removal and no-longer-available pages are customizable like any other error page. The strictest-safety response is byte-identical to a host that has never published anything. Both return `404` with `X-Spacefast-Undeployed: 1` and the unpublished body, which distinguish them from a missing page on a published site. +The legal-removal and no-longer-available pages are customizable like any other error page. The strictest-safety response is byte-identical to a host that has never published anything. The strictest-safety response and a never-published host both return `404` with `X-Spacefast-Undeployed: 1` and the unpublished body, which distinguish them from a missing page on a published site. ## Rate limits