VITE_SUPABASE_URL | Supabase auth and cloud sync | Browser |
VITE_SUPABASE_ANON_KEY | Supabase auth and cloud sync | Browser |
SUPABASE_URL | Supabase URL used by Functions | Server only |
SUPABASE_PUBLISHABLE_KEY | Access-token verification in Functions | Server only |
SUPABASE_SECRET_KEY | Notifications, premium activation, public API access, and AI capture quotas | Server only |
SUPABASE_SERVICE_ROLE_KEY | Legacy alias for SUPABASE_SECRET_KEY | Server only |
VITE_STRIPE_PUBLISHABLE_KEY | Enables the payment UI; never trusted for checkout authorization | Browser |
STRIPE_SECRET_KEY | Stripe checkout session creation | Server only |
STRIPE_WEBHOOK_SECRET | Stripe webhook verification | Server only |
STRIPE_PRICE_ID | The only Stripe Price accepted by the server | Server only |
VITE_SITE_URL | Public landing/blog origin and canonical URLs | Browser/build |
VITE_APP_URL | App entry URL; use /app for previews | Browser/build |
VITE_DOCS_URL | Localized documentation origin | Browser/build |
SITE_URL | Checkout success and cancellation URL | Server only |
URL | Netlify function callback URLs | Provided by Netlify |
API_RATE_LIMIT_PER_MINUTE | Both plans: requests per account per minute; default 60 | Server only |
API_MAX_ACTIVE_KEYS | Both plans: active key limit; default 5 | Server only |
API_FAILED_AUTH_RATE_LIMIT_PER_HOUR | Failed API key authentication attempts per client identity per hour; defaults to 300 | Server only |
API_RATE_LIMIT_RETENTION_HOURS | Rate limit window retention before scheduled cleanup; defaults to 48 | Server only |
OPENROUTER_API_KEY | Enables AI capture with OpenRouter | Server only |
ANTHROPIC_API_KEY | Enables AI capture with Anthropic | Server only |
AI_PROVIDER | Optional provider override: openrouter or anthropic | Server only |
AI_MODEL | AI capture model override | Server only |
AI_FALLBACK_MODELS | Comma-separated OpenRouter fallback models | Server only |
OPENROUTER_SITE_URL | Optional OpenRouter referer; falls back to SITE_URL or URL | Server only |
OPENROUTER_APP_TITLE | Optional OpenRouter app title header | Server only |
AI_FREE_MONTHLY_PARSES | Free user AI captures per month (successful parses only); defaults to 10. Legacy AI_FREE_DAILY_PARSES is accepted as a fallback. | Server only |
AI_PREMIUM_MONTHLY_PARSES | Premium user AI captures per month (successful parses only); defaults to 300. Legacy AI_PREMIUM_DAILY_PARSES is accepted as a fallback. | Server only |
AI_MAX_INPUT_CHARS | AI capture text input cap; defaults to 20000 | Server only |
AI_MAX_IMAGE_BYTES | AI capture image cap; defaults to 4194304 | Server only |
AI_MONTHLY_BUDGET_USD | Workspace-wide monthly AI capture budget; defaults to 50 | Server only |
AI_INPUT_USD_PER_MTOK | Input-token cost estimate per million tokens | Server only |
AI_OUTPUT_USD_PER_MTOK | Output-token cost estimate per million tokens | Server only |