PageSourceSearch

https://app.spaitial.ai/login

html spaitial.ai collected 2026-10-02 05:13:03 UTC 19,301 bytes, 31 lines download raw bytes

1<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/logo/spatial-logo-full-white.png"/><title>SpAItial - Transform images into 3D worlds</title><meta name="description" content="SpAItial turns single images and panoramas into explorable 3D worlds. Generate, edit, and share photoreal Gaussian splat scenes from any photo."/><link rel="modulepreload" href="/assets/index-_TbRVc-i-344d37dac6c1.js"/><link rel="modulepreload" href="/assets/react-D8xgUSms-344d37dac6c1.js"/><link rel="modulepreload" href="/assets/tanstack-router-CEQu-TrB-344d37dac6c1.js"/><link rel="modulepreload" href="/assets/icons-rJxGrmf1-344d37dac6c1.js"/><link rel="modulepreload" href="/assets/radix-Dn5s4LcD-344d37dac6c1.js"/><link rel="modulepreload" href="/assets/tanstack-query-DTiRSa1W-344d37dac6c1.js"/><link rel="modulepreload" href="/assets/supabase-BcuDcHL0-344d37dac6c1.js"/><link rel="modulepreload" href="/assets/posthog-CTdkyuxI-344d37dac6c1.js"/><link rel="modulepreload" href="/assets/login-BDI2As6z-344d37dac6c1.js"/><link rel="modulepreload" href="/assets/use-server-mutation-B1VPrijK-344d37dac6c1.js"/><link rel="modulepreload" href="/assets/oauth-provider-buttons-Dv64ZCTr-344d37dac6c1.js"/><link rel="modulepreload" href="/assets/card---lX5YBe-344d37dac6c1.js"/><link rel="modulepreload" href="/assets/field-DWWyvf56-344d37dac6c1.js"/><link rel="preconnect" href="https://api.spaitial.ai" crossorigin="anonymous"/><link rel="dns-prefetch" href="https://api.spaitial.ai"/><link rel="preconnect" href="https://mzmpvluwwqwobupiqvgh.supabase.co" crossorigin="anonymous"/><link rel="preconnect" href="https://img.spaitial.ai" crossorigin="anonymous"/><link rel="preconnect" href="https://echodot.spaitial.io" crossorigin="anonymous"/><link rel="icon" type="image/png" sizes="32x32" href="/logo/icon-32.png"/><link rel="icon" type="image/png" sizes="16x16" href="/logo/icon-16.png"/><link rel="apple-touch-icon" sizes="180x180" href="/logo/apple-touch-icon.png"/>
1<script src="/theme-init.js"></script>
1<link rel="stylesheet" href="/assets/styles-CuwoJcXg.css"/>
1<script>window.__CFG__={"publicApiUrl":"https://api.spaitial.ai","supabaseUrl":"https://mzmpvluwwqwobupiqvgh.supabase.co","supabasePublishableKey":"sb_publishable_Ri6qxD19Ubb9eZcPwnVc9A_Fm82lDYL","appUrl":"https://app.spaitial.ai","docsUrl":"https://docs.spaitial.ai","developerPortalUrl":"https://developers.spaitial.ai","isProduction":true,"posthogClientEnabled":true,"posthogKey":"phc_yWZHrHa7c6smXwvGBiYiDTmeXraPNhrPjjvALARzO07","posthogHost":"https://d.spaitial.ai","allowedEmailDomains":["spaitial.ai"],"restrictPublishingToInternalDomains":false,"modalWorkspaceSlug":"spaitial","modalDefaultEnv":"main","inngestEnv":"production"}</script>
1</head><body><!--$--><div class="flex min-h-svh w-full flex-col"><div class="p-6"><a href="/" class="inline-flex items-center gap-2.5"><img src="/logo/spatial-logo-full-white.png" alt="Spaitial" class="h-8 w-auto"/></a></div><div class="flex flex-1 items-center justify-center p-6 md:p-10"><div class="w-full max-w-md"><div class="flex flex-col gap-6"><div data-slot="card" data-size="default" class="ring-foreground/10 bg-card text-card-foreground gap-4 overflow-hidden rounded-lg py-4 text-xs/relaxed ring-1 has-[&gt;img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 *:[img:first-child]:rounded-t-lg *:[img:last-child]:rounded-b-lg group/card flex flex-col"><div data-slot="card-header" class="gap-1 rounded-t-lg px-4 group-data-[size=sm]/card:px-3 [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3 group/card-header @container/card-header grid auto-rows-min items-start has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] text-center"><div data-slot="card-title" class="font-medium text-xl" role="heading" aria-level="1">Welcome back</div><div data-slot="card-description" class="text-muted-foreground text-xs/relaxed">Login with Apple, Google, or your email account</div></div><div data-slot="card-content" class="px-4 group-data-[size=sm]/card:px-3"><form><div data-slot="field-group" class="gap-4 data-[slot=checkbox-group]:gap-3 [&amp;&gt;[data-slot=field-group]]:gap-4 group/field-group @container/field-group flex w-full flex-col"><div class="flex flex-col gap-3"><div role="group" data-slot="field" data-orientation="vertical" class="data-[invalid=true]:text-destructive gap-2 group/field flex w-full flex-col [&amp;&gt;*]:w-full [&amp;&gt;.sr-only]:w-auto"><button data-slot="button" data-variant="outline" data-size="default" class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent dark:bg-input/30 dark:border-input dark:hover:bg-input/50 px-4 py-2 has-[&gt;svg]:px-3 h-10 w-full hover:text-foreground" type="button"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" class="size-4" aria-hidden="true"><path fill="#EA4335" d="M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z"></path><path fill="#4285F4" d="M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z"></path><path fill="#FBBC05" d="M10.53 28.59c-.48-1.45-.76-2.99-.76-4.59s.27-3.14.76-4.59l-7.98-6.19C.92 16.46 0 20.12 0 24c0 3.88.92 7.54 2.56 10.78l7.97-6.19z"></path><path fill="#34A853" d="M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z"></path></svg>Sign in with Google</button></div><div role="group" data-slot="field" data-orientation="vertical" class="data-[invalid=true]:text-destructive gap-2 group/field flex w-full flex-col [&amp;&gt;*]:w-full [&amp;&gt;.sr-only]:w-auto"><button data-slot="button" data-variant="default" data-size="default" class="inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive px-4 py-2 has-[&gt;svg]:px-3 h-10 w-full rounded-[10px] border-transparent font-normal bg-black text-white hover:bg-black/90 hover:text-white dark:bg-white dark:text-black dark:hover:bg-white/90 dark:hover:text-black" type="button"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" class="size-4" fill="currentColor" aria-hidden="true"><path d="M16.365 1.43c0 1.14-.42 2.23-1.22 3.08-.85.91-2.25 1.61-3.43 1.51-.15-1.1.4-2.28 1.2-3.12.85-.9 2.32-1.56 3.45-1.47zM20.76 17.3c-.58 1.34-.86 1.93-1.61 3.11-1.05 1.63-2.53 3.66-4.36 3.68-1.63.03-2.05-1.06-4.28-1.05-2.22.01-2.69 1.08-4.32 1.05-1.83-.03-3.23-1.85-4.28-3.48C-.1 17.6-.92 12.5.98 9.07c.95-1.72 2.65-2.81 4.5-2.84 1.67-.03 3.25 1.13 4.28 1.13 1.03 0 2.95-1.4 4.97-1.19.85.03 3.23.34 4.76 2.57-4.13 2.26-3.46 8.16.27 8.56z"></path></svg>Sign in with Apple</button></div></div><div data-slot="field-separator" data-content="true" class="-my-2 h-5 text-xs/relaxed group-data-[variant=outline]/field-group:-mb-2 relative *:data-[slot=field-separator-content]:bg-card"><div data-orientation="horizontal" role="none" data-slot="separator" class="shrink-0 bg-border data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px absolute inset-0 top-1/2"></div><span class="text-muted-foreground px-2 bg-background relative mx-auto block w-fit" data-slot="field-separator-content">Or continue with email</span></div><div role="group" data-slot="field" data-orientation="vertical" class="data-[invalid=true]:text-destructive gap-2 group/field flex w-full flex-col [&amp;&gt;*]:w-full [&amp;&gt;.sr-only]:w-auto"><label data-slot="field-label" class="text-xs/relaxed font-medium group-data-[disabled=true]:opacity-50 peer-disabled:opacity-50 items-center select-none group-data-[disabled=true]:pointer-events-none peer-disabled:cursor-not-allowed has-data-checked:bg-primary/5 dark:has-data-checked:bg-primary/10 gap-2 group-data-[disabled=true]/field:opacity-50 has-[&gt;[data-slot=field]]:rounded-md has-[&gt;[data-slot=field]]:border [&amp;&gt;*]:data-[slot=field]:p-2 group/field-label peer/field-label flex w-fit leading-snug has-[&gt;[data-slot=field]]:w-full has-[&gt;[data-slot=field]]:flex-col" for="email">Email</label><input type="email" data-slot="input" class="file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive" id="email" placeholder="[email protected]" required="" name="email"/></div><div role="group" data-slot="field" data-orientation="vertical" class="data-[invalid=true]:text-destructive gap-2 group/field flex w-full flex-col [&amp;&gt;*]:w-full [&amp;&gt;.sr-only]:w-auto"><div class="flex items-center"><label data-slot="field-label" class="text-xs/relaxed font-medium group-data-[disabled=true]:opacity-50 peer-disabled:opacity-50 items-center select-none group-data-[disabled=true]:pointer-events-none peer-disabled:cursor-not-allowed has-data-checked:bg-primary/5 dark:has-data-checked:bg-primary/10 gap-2 group-data-[disabled=true]/field:opacity-50 has-[&gt;[data-slot=field]]:rounded-md has-[&gt;[data-slot=field]]:border [&amp;&gt;*]:data-[slot=field]:p-2 group/field-label peer/field-label flex w-fit leading-snug has-[&gt;[data-slot=field]]:w-full has-[&gt;[data-slot=field]]:flex-col" for="password">Password</label><a href="/forgot-password" class="ml-auto text-sm underline-offset-4 hover:underline">Forgot your password?</a></div><div class="relative"><input type="password" data-slot="input" class="file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive pr-10" id="password" required="" name="password"/><button data-slot="button" data-variant="ghost" data-size="icon-sm" class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;
1size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:bg-accent dark:hover:bg-accent/50 size-8 absolute right-0 top-0 h-full px-3 text-muted-foreground hover:text-foreground" type="button" aria-label="Show password"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-eye size-4" aria-hidden="true"><path d="M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0"></path><circle cx="12" cy="12" r="3"></circle></svg></button></div></div><div role="group" data-slot="field" data-orientation="vertical" class="data-[invalid=true]:text-destructive gap-2 group/field flex w-full flex-col [&amp;&gt;*]:w-full [&amp;&gt;.sr-only]:w-auto"><button data-slot="button" data-variant="default" data-size="default" class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive bg-primary text-primary-foreground hover:bg-primary/90 h-9 px-4 py-2 has-[&gt;svg]:px-3" type="submit">Login</button><p data-slot="field-description" class="text-muted-foreground text-xs/relaxed [[data-variant=legend]+&amp;]:-mt-1.5 leading-normal font-normal group-has-[[data-orientation=horizontal]]/field:text-balance last:mt-0 nth-last-2:-mt-1 [&amp;&gt;a:hover]:text-primary [&amp;&gt;a]:underline [&amp;&gt;a]:underline-offset-4 text-center">Don&#x27;t have an account?<!-- --> <a href="/signup" class="underline underline-offset-4 hover:text-primary">Sign up</a></p></div></div></form></div></div><p data-slot="field-description" class="text-muted-foreground text-xs/relaxed [[data-variant=legend]+&amp;]:-mt-1.5 leading-normal font-normal group-has-[[data-orientation=horizontal]]/field:text-balance last:mt-0 nth-last-2:-mt-1 [&amp;&gt;a:hover]:text-primary [&amp;&gt;a]:underline [&amp;&gt;a]:underline-offset-4 px-6 text-center">By clicking continue, you agree to our<!-- --> <a href="/terms" class="underline underline-offset-4 hover:text-primary">Terms of Service</a> <!-- -->and<!-- --> <a href="/privacy" class="underline underline-offset-4 hover:text-primary">Privacy Policy</a>. See our<!-- --> <a href="/cookies" class="underline underline-offset-4 hover:text-primary">Cookie Policy</a>.</p></div></div></div></div>
1<script>(function(t){let s;try{s=JSON.parse(sessionStorage.getItem(t.storageKey)||"{}")}catch(e){console.error(e);return}const c=t.key||window.history.state?.__TSR_key,r=c?s[c]:void 0;if(t.shouldScrollRestoration&&r&&typeof r=="object"&&Object.keys(r).length>0){for(const e in r){const o=r[e];if(!o||typeof o!="object")continue;const l=o.scrollX,i=o.scrollY;if(!(!Number.isFinite(l)||!Number.isFinite(i))){if(e==="window")window.scrollTo({top:i,left:l,behavior:t.behavior});else if(e){let n;try{n=document.querySelector(e)}catch{continue}n&&(n.scrollLeft=l,n.scrollTop=i)}}}return}const a=window.location.hash.split("#",2)[1];if(a){const e=window.history.state?.__hashScrollIntoViewOptions??!0;if(e){const o=document.getElementById(a);o&&o.scrollIntoView(e)}return}window.scrollTo({top:0,left:0,behavior:t.behavior})})({"storageKey":"tsr-scroll-restoration-v1_3","shouldScrollRestoration":true});document.currentScript.remove()</script>
1<!--/$--><section aria-label="Notifications alt+T" tabindex="-1" aria-live="polite" aria-relevant="additions text" aria-atomic="false"></section>
1<script class="$tsr" id="$tsr-stream-barrier">(self.$R=self.$R||{})["tsr"]=[];self.$_TSR={h(){this.hydrated=!0,this.c()},e(){this.streamEnded=!0,this.c()},c(){this.hydrated&&this.streamEnded&&(delete self.$_TSR,delete self.$R.tsr)},p(e){this.initialized?e():this.buffer.push(e)},buffer:[]};$_TSR.router=($R=>$R[0]={manifest:$R[1]={routes:$R[2]={__root__:$R[3]={preloads:$R[4]=["/assets/index-_TbRVc-i-344d37dac6c1.js","/assets/react-D8xgUSms-344d37dac6c1.js","/assets/tanstack-router-CEQu-TrB-344d37dac6c1.js","/assets/icons-rJxGrmf1-344d37dac6c1.js","/assets/radix-Dn5s4LcD-344d37dac6c1.js","/assets/tanstack-query-DTiRSa1W-344d37dac6c1.js","/assets/supabase-BcuDcHL0-344d37dac6c1.js","/assets/posthog-CTdkyuxI-344d37dac6c1.js"],assets:$R[5]=[$R[6]={tag:"script",attrs:$R[7]={type:"module",async:!0},children:"import(\"/assets/index-_TbRVc-i-344d37dac6c1.js\")"}]},"/login":$R[8]={preloads:$R[9]=["/assets/login-BDI2As6z-344d37dac6c1.js","/assets/use-server-mutation-B1VPrijK-344d37dac6c1.js","/assets/oauth-provider-buttons-Dv64ZCTr-344d37dac6c1.js","/assets/card---lX5YBe-344d37dac6c1.js","/assets/field-DWWyvf56-344d37dac6c1.js"]}}}
1,matches:$R[10]=[$R[11]={i:"__root__�",u:1790917983302,s:"success",b:$R[12]={user:null,clientConfig:$R[13]={publicApiUrl:"https://api.spaitial.ai",supabaseUrl:"https://mzmpvluwwqwobupiqvgh.supabase.co",supabasePublishableKey:"sb_publishable_Ri6qxD19Ubb9eZcPwnVc9A_Fm82lDYL",appUrl:"https://app.spaitial.ai",docsUrl:"https://docs.spaitial.ai",developerPortalUrl:"https://developers.spaitial.ai",isProduction:!0,posthogClientEnabled:!0,posthogKey:"phc_yWZHrHa7c6smXwvGBiYiDTmeXraPNhrPjjvALARzO07",posthogHost:"https://d.spaitial.ai",allowedEmailDomains:$R[14]=["spaitial.ai"],restrictPublishingToInternalDomains:!1,modalWorkspaceSlug:"spaitial",modalDefaultEnv:"main",inngestEnv:"production"}},ssr:!0},$R[15]={i:"�login�login",u:1790917983302,s:"success",ssr:!0}],lastMatchId:"�login�login",dehydratedData:$R[16]={queryStream:$R[17]=($R[18]=(e) => new ReadableStream({ start: (r) => {
2  e.on({ next: (a) => {
3    try {
4      r.enqueue(a);
5    } catch (t) {
6    }
7  }, throw: (a) => {
8    r.error(a);
9  }, return: () => {
10    try {
11      r.close();
12    } catch (a) {
13    }
14  } });
15} }))($R[19]=($R[20]=() => {
16  let e = [], r = [], t = true, n = false, a = 0, s = (l, g, S) => {
17    for (S = 0; S < a; S++) r[S] && r[S][g](l);
18  }, i = (l, g, S, d) => {
19    for (g = 0, S = e.length; g < S; g++) d = e[g], !t && g === S - 1 ? l[n ? "return" : "throw"](d) : l.next(d);
20  }, u = (l, g) => (t && (g = a++, r[g] = l), i(l), () => {
21    t && (r[g] = r[a], r[a--] = void 0);
22  });
23  return { __SEROVAL_STREAM__: true, on: (l) => u(l), next: (l) => {
24    t && (e.push(l), s(l, "next"));
25  }, throw: (l) => {
26    t && (e.push(l), s(l, "throw"), t = false, n = false, r.length = 0);
27  }, return: (l) => {
28    t && (e.push(l), s(l, "return"), t = false, n = true, r.length = 0);
29  } };
30})())}})($R["tsr"]);document.currentScript.remove()</script>
30<script type="module" async="">import("/assets/index-_TbRVc-i-344d37dac6c1.js")</script>
30<script>($R=>$R[19].return(void 0))($R["tsr"]);$_TSR.e();document.currentScript.remove()</script>
30<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"c665d629468e44bfb2b0f6dd031c1170","spa":2}' crossorigin="anonymous"></script>
30
31</body></html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.