Skip to main content
Your custom website controls the reading and subscribe experience. Maito remains the source of truth for newsletter content and subscribers. This is useful when you want a fully custom newsletter archive, issue page, category page, or subscribe form while still writing and managing the newsletter in Maito.

How It Works

Your custom website should treat Maito as the source of truth. Maito stores:
  • Published newsletter issues
  • Issue slugs and public issue content
  • Newsletter categories
  • Subscribers
Your website controls:
  • The visual design
  • The homepage and archive layout
  • Individual issue pages
  • Category pages
  • The subscribe form experience
The important rule is that your Maito API key must stay on your server. Create the key in API > Authentication, then use it only from your backend routes. Browser code should call your own backend routes, and your backend routes should call Maito.
Do not put a Maito API key in frontend JavaScript, static site code, mobile app bundles, or public repositories.

Give This Prompt To An AI Builder

Use this prompt when asking Cursor, v0, Lovable, Replit, Bolt, or another AI builder to create a custom newsletter website.

API Overview

These are the main endpoints a custom newsletter website needs. See Authentication for API key setup and Responses and errors for the response format.

Subscribe Forms

A custom subscribe form should call your own backend first. Your backend should:
  • Validate the email address
  • Optionally add rate limiting or CAPTCHA
  • Set optInAttestation: true only after the visitor submits the form
  • Call Maito with your server-side API key
For static websites without a backend, use a hosted subscribe widget instead of putting the API key in the browser.