For developers
Mobius API
Everything you can do by chatting with Mobius, you can also do from your own tools. Grab a personal API key, point your scripts, cron jobs or AI agent at it, and reminders you create land on your WhatsApp exactly like the ones you set by chatting.
https://api.askmobius.com1. Get your key
give me an api key
You get back something like mob_3f9a1c7d2e40_kJ8s… — shown only once. Save it somewhere safe; if you lose it, revoke it and mint a new one. You can hold up to 5 keys at a time, so you can give each tool its own.
2. Connect it to your AI agent
One-click setup
Connect it to your AI agent
Copy the prompt below and paste it into Claude, ChatGPT, Cursor, Claude Code — anything that can make HTTP requests. It teaches the agent your whole API in one message. If your agent supports MCP, it also tells it to install Mobius as a global MCP server, so the tools are there in every future session instead of just this one.
Stays in this browser tab — it is never sent anywhere, not even to us. Leave it empty and the prompt keeps a PASTE_YOUR_MOBIUS_API_KEY_HERE placeholder for you to fill in.
You can manage my reminders through Mobius, a personal assistant that messages me on WhatsApp. Anything you schedule here reaches my phone.
API base URL: https://api.askmobius.com
Auth header on every request: Authorization: Bearer PASTE_YOUR_MOBIUS_API_KEY_HERE
The key identifies me, so never send a chatId — you only ever see my own data. Never print the key back to me or write it into a file you create.
SETUP — DO THIS FIRST IF YOU CAN INSTALL MCP SERVERS
If you support the Model Context Protocol (Claude Code, Cursor, Windsurf, Claude Desktop, and similar), don't just call these endpoints in this one conversation — install them once as a permanent MCP server so they are available in every future session and project:
1. Write a small stdio MCP server that wraps the four endpoints below as tools named
mobius_create_reminder, mobius_list_reminders, mobius_reschedule_reminder, mobius_cancel_reminder.
Any MCP SDK is fine; the server is a thin HTTP client, no state of its own.
2. Read the key from an environment variable (MOBIUS_API_KEY) that you set in the server's
registration config. Do not hardcode it in the server source, and do not write it into a
file that could be committed to git.
3. Register it at USER / GLOBAL scope, not project scope, so it follows me everywhere.
Use your own client's mechanism for this — for Claude Code that is
`claude mcp add --scope user`; other clients have their own config file or command.
If you are unsure which scope flag your client uses, check its documentation rather
than guessing, and tell me what you registered and where.
4. Verify it by calling mobius_list_reminders once, then tell me it is installed.
If you cannot install MCP servers, skip all of that and just call the HTTP endpoints directly.
ENDPOINTS
1) Create a reminder — POST /api/reminders (Content-Type: application/json)
One-off:
{ "task": "call the plumber", "datetime": "2026-08-03T18:00", "tz": "Asia/Kolkata" }
Recurring:
{ "task": "take meds", "recurring": true, "rrule": "FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR;BYHOUR=7;BYMINUTE=0", "tz": "Asia/Kolkata" }
Fields: task (required), datetime (one-off, local wall-clock "YYYY-MM-DDTHH:mm", NO timezone offset, must be in the future),
recurring + rrule (iCal RFC 5545; put the time of day in BYHOUR/BYMINUTE — there is no separate time field),
tz (IANA name; defaults to Asia/Kolkata).
Returns 201 with { id, task, nextFireAt, localTime, rrule, tz, status }.
2) List my reminders — GET /api/reminders
Pending only by default; add ?all=true for done/cancelled/failed too.
3) Reschedule or rename — PATCH /api/reminders/:id
{ "task": "...", "datetime": "...", "rrule": "...", "tz": "..." } — send only what changes.
4) Cancel — DELETE /api/reminders/:id → { "cancelled": true }
RULES
- Resolve relative times ("tomorrow 6pm", "in 30 minutes") into an absolute datetime yourself, in my timezone, and check it is in the future.
- Use the id from create/list for PATCH and DELETE. An id that isn't mine returns 404.
- Errors: 400 = bad payload (the message says what), 401 = bad or revoked key, 404 = no such reminder of mine, 429 = rate limited (30 creates/minute) or I am at my 100 pending-reminder cap.
- After scheduling, confirm back to me using localTime from the response, not the UTC timestamp.
Good uses: ping me when a long build or deploy finishes, remind me to review a PR, or set recurring nudges I asked for in passing.Authentication
curl https://api.askmobius.com/api/reminders \ -H "Authorization: Bearer $MOBIUS_KEY"
Your key isyour identity. Requests act on your data and nothing else — you never pass an account id, and you can never see another person's reminders. Treat it like a password: anyone holding it can read and change your data. A missing, wrong or revoked key returns 401 {"error":"unauthorized"}.
Endpoints
https://api.askmobius.com./api/reminders— create a reminder| Field | Type | Required | Notes |
|---|---|---|---|
task | string | yes | What to be reminded about. |
datetime | string | one-off | Local wall-clock time YYYY-MM-DDTHH:mm — 24h, no timezone offset. Must be in the future. |
recurring | boolean | no | Set true and send an rrule instead of a datetime. |
rrule | string | recurring | iCal RFC 5545 rule. Encode the time of day with BYHOUR/BYMINUTE. |
tz | string | no | IANA timezone, e.g. Asia/Kolkata. Defaults to Asia/Kolkata. |
curl -X POST https://api.askmobius.com/api/reminders \
-H "Authorization: Bearer $MOBIUS_KEY" \
-H "Content-Type: application/json" \
-d '{
"task": "call the plumber",
"datetime": "2026-08-03T18:00",
"tz": "Asia/Kolkata"
}'Returns 201:
{
"id": "66a1f0c2e5b3a1234567890a",
"task": "call the plumber",
"nextFireAt": "2026-08-03T12:30:00.000Z",
"localTime": "Mon, 3 Aug 2026, 6:00 pm",
"rrule": null,
"tz": "Asia/Kolkata",
"status": "pending",
"source": "api"
}/api/reminders— list your remindersSoonest first, pending only by default. Add ?all=true to include done, cancelled and failed ones. Returns an array of the object above.
curl "https://api.askmobius.com/api/reminders?all=true" \ -H "Authorization: Bearer $MOBIUS_KEY"
/api/reminders/:id— reschedule or renameSend only what changes: task, datetime, rrule, tz. Only pending reminders can be edited.
curl -X PATCH https://api.askmobius.com/api/reminders/<id> \
-H "Authorization: Bearer $MOBIUS_KEY" \
-H "Content-Type: application/json" \
-d '{ "datetime": "2026-08-04T09:00" }'/api/reminders/:id— cancel a reminderFlips it to cancelled and answers { "cancelled": true }. Nothing is deleted from your history.
curl -X DELETE https://api.askmobius.com/api/reminders/<id> \ -H "Authorization: Bearer $MOBIUS_KEY"
Recurring rules
RRULE. Always put the time of day inside the rule — there is no separate time field.| What you want | RRULE |
|---|---|
| Every day at 09:00 | FREQ=DAILY;BYHOUR=9;BYMINUTE=0 |
| Every weekday at 07:00 | FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR;BYHOUR=7;BYMINUTE=0 |
| Every Monday at 09:00 | FREQ=WEEKLY;BYDAY=MO;BYHOUR=9;BYMINUTE=0 |
| 1st of each month, 09:00 | FREQ=MONTHLY;BYMONTHDAY=1;BYHOUR=9;BYMINUTE=0 |
Bound a series with COUNT=n or UNTIL=…; once it runs out the reminder is marked done.
Errors & limits
| Status | Meaning |
|---|---|
| 400 | Invalid payload — the message says exactly what. |
| 401 | Missing, wrong or revoked key. |
| 404 | No pending reminder of yours with that id. Someone else's id looks identical to a missing one. |
| 429 | Rate limited, or you are at your cap of 100 pending reminders. |
Per key, per minute: 30 creates, 120 lists, 60 edits or cancels. Responses carry the usual x-ratelimit-* headers, and a 429 tells you when to retry.
Losing a key
revoke my api key
Say that to Mobius and the key stops working immediately — ask for my api keys first if you have several and want to pick. Then ask for a new one and update your tool.