User tried to access: https://bmad-lead-gen-agent.vercel.app/api/preview/eb0tzt77
Error: 404: NOT_FOUND - DNS_HOSTNAME_RESOLVED_PRIVATE
- ✅ Frontend Preview Pages:
/preview/{id}(no/api/) - ✅ Backend API Endpoints:
/api/previews/{id}(with/api/)
- ❌ Wrong:
https://bmad-lead-gen-agent.vercel.app/api/preview/eb0tzt77 - ✅ Correct:
https://bmad-lead-gen-agent.vercel.app/preview/eb0tzt77
- Specific API route mappings instead of wildcard
- Prevents confusion between frontend and backend routes
/api/previews/*→ backend API/preview/*→ frontend pages
- Explicit API route definitions
- Cleaner separation of concerns
- Better error handling
- Main app:
https://bmad-lead-gen-agent.vercel.app/ - Preview pages:
https://bmad-lead-gen-agent.vercel.app/preview/{id} - Example:
https://bmad-lead-gen-agent.vercel.app/preview/eb0tzt77
- Get preview data:
https://bmad-lead-gen-agent.vercel.app/api/previews/{id} - Get preview HTML:
https://bmad-lead-gen-agent.vercel.app/api/previews/{id}/html - List previews:
https://bmad-lead-gen-agent.vercel.app/api/previews
- All endpoints:
https://bmad-backend-production.up.railway.app/api/previews/*
- Visit:
https://bmad-lead-gen-agent.vercel.app/preview/eb0tzt77 - Should load the preview page with professional UI
- If preview doesn't exist, will show "Preview not found" message
- API data:
https://bmad-lead-gen-agent.vercel.app/api/previews/eb0tzt77 - Should return JSON metadata about the preview
- If backend not ready, will show appropriate error
- Commit the routing fixes
- Deploy updated configuration
- Test the corrected URL format
- Verify end-to-end functionality
The issue was a URL format confusion - the fix ensures proper routing separation between frontend preview pages and backend API endpoints.