API overview
The HTTP interface to your instance. This is how your application, your checkout, and your coding agent put data into Mimeo and read it back.
Base URL
There is no shared Mimeo API host. Your instance is the API — the base URL is your own domain:
https://your-instance.com/api/v1/…
Every path in these docs is relative to that. Single-tenant means your data never travels through anyone else's infrastructure to reach you.
Authentication
Authenticated endpoints take a bearer token in the
Authorization header:
Authorization: Bearer mm_your_token_here
Tokens start with the mm_ prefix, which makes them easy to
spot in logs and secret scanners.
Creating a token
In the app, go to Settings → API and create one. You give it a name so you can tell your agent's token from your checkout's token later.
The token is shown once. Copy it when it's created — Mimeo stores it hashed and cannot show it to you again. If you lose it, revoke it and make a new one.
Every token can be revoked at any time, and each one shows its last used time so you can spot tokens that are no longer needed or being used from somewhere you didn't expect.
No scopes in v1
Tokens have full access. There is no scoping or permissioning yet. Treat every token as equivalent to full control of the instance: keep them in your secret manager, never in client-side code, and issue separate named tokens per integration so you can revoke one without breaking the rest.
Requests and responses
Send JSON, get JSON. Include
Content-Type: application/json on requests with a body.
Errors
Errors come back in a consistent shape:
{ "error": "Invalid or missing API token" }
The HTTP status carries the category and the error string
explains the specifics. Endpoints that process multiple items at once —
notably events — additionally report
per-item outcomes in the response body, so a batch can partially succeed.
The public exception
The subscription-management endpoints are the one part of the API that does not use a bearer token. They're public, and authenticated by the signed token in the URL itself.
That's deliberate. Those endpoints exist so you can build your own unsubscribe page, and that page runs in your subscribers' browsers, where an API token could never safely go.
The endpoints
| Endpoint | Purpose |
|---|---|
POST /api/v1/events |
Everything that happens — signups, opt-ins, purchases, payments, subscriptions |
GET /api/v1/field_definitions |
Discover this install's custom-field schema |
GET /api/v1/people/:id_or_email |
Read one person, including fields, tags, attribution, and lifetime spend |
GET /api/v1/flows and friends |
Build, validate, dry-run and activate flows — full parity with the UI |
GET /api/v1/segments and friends |
Create, check, count and read segments by key — full parity with the UI |
GET /api/v1/emails, /sequences, /tags, /products, /queue |
Read-only lookups so a flow definition can reference real records |
GET /api/v1/subscription/:token |
Subscription status (public) |
POST /api/v1/subscription/:token/unsubscribe |
Unsubscribe (public) |
POST /api/v1/subscription/:token/resubscribe |
Resubscribe (public) |
POST /u/:token |
RFC 8058 one-click unsubscribe (public, called by mail clients) |
GET /o/:token, GET /l/:token |
Open pixel and link redirect — Mimeo generates these; you never call them directly |
Start here
If you're wiring up an integration or pointing an agent at your instance, read the event contract first. Practically everything that gets data into Mimeo goes through that one endpoint.