New · WhatsApp & voice capture
Text your memory. It remembers.
Link a phone to your workspace and the fastest capture surface you own is the one already in your pocket: a WhatsApp or SMS message becomes a memory, a voice note is transcribed and saved word for word. It rides on your own Twilio number or WhatsApp sender — Mnemo never messages anyone on its own.
REST API: POST /v1/inbound/channels { phone, containerTag? } (scope inbound:write) returns a six-digit verification code exactly once; send it from that phone to your Twilio sender and the channel goes from pending to active. GET /v1/inbound/channels (inbound:read) lists channels without codes; POST …/{id}/regenerate-code, PATCH, and DELETE manage them. Twilio posts to https://api.mnemohq.com/v1/inbound/twilio, verified by X-Twilio-Signature over the canonical public URL before any lookup.
Provision, link, send
- Point your Twilio sender at Mnemo — you bring the number: a Twilio phone number, a WhatsApp Business sender, or the WhatsApp sandbox to start. Paste the webhook URL from the dashboard as its Messaging webhook (POST).
- Link a phone with a code — until the code arrives from that exact number, the channel is pending and nothing it sends is stored, so nobody can claim your phone in their workspace. One phone, one workspace (409 CHANNEL_EXISTS).
- Send notes, get memories — text becomes a note memory with idempotencyKey twilio:<MessageSid>, so Twilio retries never duplicate. Audio is acknowledged immediately, then transcribed by the ingestion worker (gpt-4o-mini-transcribe by default, media capped at 16 MB and fetched only from Twilio's API for your account SID) and saved as a verbatim transcript memory plus a source document.
A webhook that fails closed
- Signed, or dropped — every request is checked against X-Twilio-Signature over the exact public URL, in constant time, before Mnemo reads a single field; no signature, wrong signature, wrong shape — 403, plain text, no TwiML.
- Phone ownership is proven — registering a number does not let you read what it sends; only receiving the code does.
- Unknown numbers hear nothing — an unlinked phone gets an empty response: no reply that confirms the endpoint exists, no outbound SMS on your bill. Logs keep a hash, not the number.
- Never messages first — the only thing Mnemo sends is an in-session reply to a message you sent it ('Saved.', 'Already saved.', or the linked confirmation), and replies can be turned off.
- Rate-limited per sender — a burst is acknowledged with an empty response so Twilio does not retry, and nothing is stored.
- Behind a flag — 503 FEATURE_DISABLED until capture is enabled for your workspace and the owner has configured Twilio credentials.
Explore Mnemo
- Mnemo API documentation
- Pricing
- Benchmarks
- Company Brain for Slack
- Ask Mnemo widget
- People — one memory container per person
- Daily Brief
- Memory Inbox
- Timeline
- Meeting Memory
- Chrome extension
- WhatsApp and voice-note capture
- Data-source connectors
- Framework integrations
- Trust and security
- Contact
- llms.txt
- OpenAPI 3.1 specification