# Verify account - **Route:** `/register/validate?c=CODE` - **API:** POST /v1/auth/verify - **Visual reference:** `source/RenewCMS Screens Auth.dc.html`, group "Verify" (open it in a browser; each state is drawn at desktop and mobile, with a light/dark toggle). Opened from the verification email, and submits automatically on load. This is the only full-card spinner in the product. ## States ### Verifying **Trigger:** On load, with a code in the URL. - Full-card spinner: "Verifying your account…" ### Success **Trigger:** 200 → /home after 800 ms, with a toast. - ResultPanel (success, shield-check): **Your account is verified**; text "Taking you to your dashboard…" - Toast (circle-check): **Your account is verified** "Welcome to RenewCMS." ### Invalid or expired (403) **Trigger:** The code is wrong, used, or older than 2 hours. - ResultPanel (error, link-2-off): **This verification link doesn't work**; text "It may have expired (links last 2 hours) or already been used."; note "Cancel your registration and start over to get a new link."; actions "Cancel registration and start over" (primary), "Log out" (secondary) ### No session (401) **Trigger:** Opened in another browser or device. Log in inline, then verification retries automatically with the same code. - Heading: **Log in to finish verifying** - Description: "You opened this link somewhere you're not logged in. Log in here and we'll verify your account right after." - Field `Username`: placeholder "Your username" - Field `Password`: password with show/hide - Submit button: "Log in and verify" ### No session, retrying **Trigger:** Logged in inline. Now verifying. - Full-card spinner: "Verifying your account…" ### Missing code **Trigger:** The link has no ?c= parameter. No request is made. - ResultPanel (error, link-2-off): **This link is incomplete**; text "The verification code is missing. Open the link from your email again, or copy the full address into your browser."; actions "Go to log in" (secondary)