Back to docs

Admin routes and environment

Admin pages, API routes, and configuration

All admin UI and API routes require an authenticated admin (NextAuth session withaccountType === "admin"or email in ADMIN_EMAILS). Protect with requireAdminSession(session, permission) in API routes.

Admin pages (under /admin)

PathDescription
/adminDashboard (overview + Sendlar stats)
/admin/usersUsers list (paginated, search, filter)
/admin/users/[id]User detail, plan activation, email limits
/admin/emailsAll emails (list, view, cancel scheduled)
/admin/templatesAll templates (list, view)
/admin/imagesAll images (list)
/admin/smtpSMTP configs per user (no secrets)
/admin/botsBots (list, view detail)
/admin/webhooksWebhooks (list, URLs masked)
/admin/api-keysUsers with Sendlar API key (preview only)
/admin/systemDB health + env set/missing checklist
/admin/paymentsPayments
/admin/productsProducts
/admin/blogBlog
/admin/portfolioPortfolio
/admin/couponsCoupons
/admin/projectsProjects
/admin/supportSupport
/admin/subscriptionsSubscriptions
/admin/activityActivity
/admin/settingsSettings

Admin API routes (under /api/admin or /api/health)

MethodPathDescription
GET/api/admin/usersList users (paginated)
GET/PATCH/DELETE/api/admin/users/[id]User detail / update / delete
POST/api/admin/users/[userId]/activate-planActivate Sendlar plan (body: plan, expiresAt?)
GET/PUT/api/admin/users/[userId]/email-limitsGet/update email limits (monthlyLimit, addTokens, resetCycle)
GET/api/admin/emailsList emails (page, limit, status, user, dateFrom, dateTo)
GET/api/admin/emails/[id]Email detail
POST/api/admin/emails/[id]/cancelCancel scheduled/queued email
GET/api/admin/templatesList templates (page, limit, q, user)
GET/api/admin/templates/[id]Template detail
GET/api/admin/imagesList images (page, limit, user)
GET/api/admin/smtpList SMTP configs (safe fields only)
GET/api/admin/botsList bots (page, limit, user, isActive, triggerType)
GET/api/admin/bots/[id]Bot detail
GET/api/admin/webhooksList webhooks (URLs masked)
GET/api/admin/api-keysList users with API key (key preview only)
GET/api/admin/system/envEnv keys set/missing (names only)
GET/api/health/dbDB connection status (no auth)

Environment variables (admin / Sendlar)

VariablePurpose
ADMIN_EMAILSComma-separated emails allowed as admin (legacy allowlist)
ADMIN_IDOptional: admin login ID (if using cookie-based /admin/login)
ADMIN_PASSWORDOptional: admin login password (if using cookie-based /admin/login)
MONGODB_URIMongoDB connection string
NEXTAUTH_SECRETNextAuth secret
AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_REGION, AWS_S3_BUCKETS3 (e.g. images)
EMAIL_HOST, EMAIL_USER, EMAIL_PASSSMTP for app emails

Admin auth

Use NextAuth and sign in with a user that has accountType === "admin" (Admin model) or email in ADMIN_EMAILS. Redirect to /login?callbackUrl=/admin when not authenticated.