Auth.js · browser URL

error=Verification

what it looks like
/api/auth/error?error=Verification

What it means

The magic-link token wasn't found or has expired. Each link works once, and the email provider's default lifetime is 24 hours.

Common causes

  • The link was clicked twice, or a newer link replaced it
  • The link is older than 24 hours
  • The verification token was written to a different database than the one the app reads now

How to fix it

  1. Ask the user to request a new link, and say so on the error page
  2. Make sure dev and prod don't share or swap DATABASE_URL
  3. Raise maxAge on the email provider only if you have a reason to

works with next-auth 5.0.0-beta.32 · @auth/core 0.41.3 · Next.js 16.4.3last verified

Prompt for Cursor or Claude Code

Magic-link sign-in lands on error=Verification. Check my email provider config, the VerificationToken table and DATABASE_URL per environment, and add a 'request a new link' message for this error.

Not quite your error? Paste yours into the free VibeBoot Doctor or browse the Auth.js error fixer.

next: skip the next one

Skip the setup. The VibeBoot SaaS Starter ships Auth.js v5 already wired (GitHub sign-in, optional email magic links, Prisma adapter), plus Stripe and a database on Next.js 16.4.3. $49, one-time.

14-day money-back guarantee · lifetime updates

$ fixed it? get the next one first

New fixes for what AI agents break, by email.

When we add a fix or a Cursor rule for a new Next.js, Auth.js, Prisma or Stripe break, it goes out in the VibeBoot newsletter. Free, occasional, unsubscribe in one click.

Subscribe free