YouGotYouGot

YouGot REST API

Integrate YouGot reminders directly into your applications. Available to Business tier subscribers.

Base URLhttps://yougot.ai

With the YouGot API you can create, schedule, and manage reminders delivered via email, SMS, WhatsApp, web push, or webhooks. Support for recurring schedules, nag mode, live data fetching, natural language parsing, tags, sharing, and analytics is included.

AI-Agent Ready

Full API docs available at /llms.txt for LLMs and AI coding agents

Open llms.txt

Authentication

All requests require a valid API key sent as a Bearer token in the Authorization header.

  1. Go to Dashboard → API Keys to generate a key.
  2. Include the key in every request as shown below.
  3. Monitor usage via the X-RateLimit-Remaining response header.
curl https://yougot.ai/api/v1/reminders \
  -H "Authorization: Bearer yg_your_api_key_here"

Quick Start

Step 1 — Get your API key

Navigate to Dashboard → API Keys and create a new key. Copy it somewhere safe — it is only shown once.

Step 2 — Create your first reminder

curl -X POST https://yougot.ai/api/v1/reminders \
  -H "Authorization: Bearer yg_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "message": "Review pull request from Anna",
    "scheduledAt": "2026-04-01T10:00:00Z",
    "channel": "email"
  }'

Step 3 — Verify it was created

curl https://yougot.ai/api/v1/reminders?status=pending \
  -H "Authorization: Bearer yg_your_api_key_here"

Create a Reminder

POST/api/v1/remindersCreate a new reminder
FieldTypeRequiredDescription
messagestringYesThe reminder message text
scheduledAtnumber | stringYesUnix timestamp (ms) or ISO 8601 string
channelstringNo"email", "sms", "whatsapp", "webhook", "web_push". Defaults to user's default
additionalChannelsstring[]NoExtra channels to deliver on simultaneously
recurrenceobjectNoRecurring schedule (see below)
tagsstring[]NoTags for organization, e.g. ["work", "meeting"]
metadataobjectNoArbitrary key-value metadata
nagModeobjectNoPersistent nagging until acknowledged (see below)
targetPhonestringNoPhone number for SMS/WhatsApp delivery (must be verified)
targetWebhookIdstringNoWebhook endpoint ID for webhook delivery
dataFetchobjectNoLive data to include at delivery time (see below)
notifyBeforeMsnumberNoSend notification early by this many milliseconds
recipientIdsstring[]NoUser IDs to receive this reminder. Omit for a personal reminder. Any non-self recipient must be an active member of your group and requires a Plus or Business plan.

Recurrence Object

FieldTypeRequiredDescription
typestringYes"daily", "weekly", "monthly", or "custom"
intervalnumberNoRepeat every N periods (e.g. 2 = every other day)
dayOfWeeknumberNoDay of week for weekly: 0=Sun, 1=Mon, ... 6=Sat
dayOfMonthnumberNoDay of month for monthly: 1-31
cronExpressionstringNoCron expression for custom schedules, e.g. "0 9 * * 1-5"
intervalMsnumberNoInterval in ms for sub-daily recurrence
endDatenumberNoUnix timestamp (ms) when recurrence stops
descriptionstringNoHuman-readable label, e.g. "Every weekday at 9am"

The API automatically sanitizes recurrence input. If you pass dayOfWeek as an array, it will be converted to a cron expression using the hour from scheduledAt. For best results, use explicit cronExpression values.

Nag Mode Object

FieldTypeRequiredDescription
enabledbooleanYesEnable persistent nagging
intervalMsnumberNoNag interval in ms (default: 300000 = 5 minutes)

Data Fetch Object

FieldTypeRequiredDescription
typestringYes"crypto", "weather", "stock", or "web_search"
querystringYesWhat to look up, e.g. "bitcoin", "New York", "AAPL"
# One-time email reminder
curl -X POST https://yougot.ai/api/v1/reminders \
  -H "Authorization: Bearer yg_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "message": "Call the dentist",
    "scheduledAt": "2026-04-01T14:00:00Z",
    "channel": "email"
  }'

# Daily recurring with nag mode
curl -X POST https://yougot.ai/api/v1/reminders \
  -H "Authorization: Bearer yg_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "message": "Take your medication",
    "scheduledAt": "2026-04-01T08:00:00Z",
    "channel": "email",
    "recurrence": {
      "type": "daily",
      "description": "Daily at 8am"
    },
    "nagMode": {"enabled": true, "intervalMs": 600000},
    "tags": ["health"]
  }'

# Weekday recurring via cron with live data
curl -X POST https://yougot.ai/api/v1/reminders \
  -H "Authorization: Bearer yg_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "message": "Check Bitcoin price",
    "scheduledAt": "2026-04-01T09:00:00Z",
    "channel": "email",
    "recurrence": {
      "type": "custom",
      "cronExpression": "0 9 * * 1-5",
      "description": "Weekdays at 9am"
    },
    "dataFetch": {"type": "crypto", "query": "bitcoin"}
  }'

Response: 201 Created

{
  "id": "j97ekxp8040amr2hzfss...",
  "message": "Call the dentist",
  "scheduledAt": 1743519600000,
  "channel": "email",
  "status": "pending",
  "recipientIds": ["jd7ffzb3r1hdd28ffxvdeacbcs836cep"],
  "userId": "jd7ffzb3r1hdd28ffxvdeacbcs836cep"
}

recipientIds echoes who will receive the reminder. Omit it on create to get a personal reminder ([userId]). To send to other people, pass the user IDs of active members of your group. Each recipient gets the reminder in their own channel with an independent acknowledgement state, and the creator sees per-recipient delivery status in the "Sent by me" dashboard view.

Error Responses

HTTPerror message
400Sending reminders to other people requires a Plus or Business plan.
400You are not part of a group. Invite members before sending reminders to others.
400One or more recipients are not active members of your group.
400Invalid value "..." for field "recipientIds[0]"

List Reminders

GET/api/v1/remindersList your reminders
FieldTypeRequiredDescription
statusstringNoFilter: pending, delivered, failed, snoozed, cancelled, paused, stopped
limitnumberNoMax results (default: 50, max: 100)
curl "https://yougot.ai/api/v1/reminders?status=pending&limit=10" \
  -H "Authorization: Bearer yg_your_api_key_here"

Response: 200 OK

{
  "data": [...],
  "count": 15
}

Get a Reminder

GET/api/v1/reminder?id=REMINDER_IDGet a single reminder
curl "https://yougot.ai/api/v1/reminder?id=REMINDER_ID" \
  -H "Authorization: Bearer yg_your_api_key_here"

Update a Reminder

PATCH/api/v1/reminder?id=REMINDER_IDUpdate a reminder
FieldTypeRequiredDescription
messagestringNoUpdated message text
scheduledAtnumber | stringNoNew delivery time (reschedules the job)
channelstringNoChange primary channel
additionalChannelsstring[]NoChange additional channels
tagsstring[]NoReplace all tags
metadataobjectNoReplace metadata
nagModeobjectNoEnable/disable nag mode
notifyBeforeMsnumberNoEarly notification offset
curl -X PATCH "https://yougot.ai/api/v1/reminder?id=REMINDER_ID" \
  -H "Authorization: Bearer yg_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{"message": "Updated: call the dentist at 3pm", "tags": ["urgent"]}'

Delete a Reminder

DELETE/api/v1/reminder?id=REMINDER_IDCancel and delete a reminder
curl -X DELETE "https://yougot.ai/api/v1/reminder?id=REMINDER_ID" \
  -H "Authorization: Bearer yg_your_api_key_here"

Response: 200 OK

{"success": true}

Snooze a Reminder

POST/api/v1/reminder/snooze?id=REMINDER_IDSnooze a reminder
FieldTypeRequiredDescription
durationstring | numberYes"15m", "1h", "3h", "tomorrow", or a number (minutes)
curl -X POST "https://yougot.ai/api/v1/reminder/snooze?id=REMINDER_ID" \
  -H "Authorization: Bearer yg_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{"duration": "1h"}'

Response: 200 OK

{"success": true, "newScheduledAt": 1743523200000}

Pause a Reminder

POST/api/v1/reminder/pause?id=REMINDER_IDPause a pending reminder

Pauses a pending reminder or all pending occurrences in a recurring series. No request body needed.

curl -X POST "https://yougot.ai/api/v1/reminder/pause?id=REMINDER_ID" \
  -H "Authorization: Bearer yg_your_api_key_here" \
  -H "Content-Type: application/json"

Resume a Reminder

POST/api/v1/reminder/resume?id=REMINDER_IDResume a paused or stopped reminder

Resumes a paused or stopped reminder. Reschedules future occurrences. No request body needed.

curl -X POST "https://yougot.ai/api/v1/reminder/resume?id=REMINDER_ID" \
  -H "Authorization: Bearer yg_your_api_key_here" \
  -H "Content-Type: application/json"

Skip Next Occurrence

POST/api/v1/reminder/skip?id=REMINDER_IDSkip the next recurring occurrence

Only works on recurring reminders with status pending or paused. Skips the next occurrence and schedules the one after.

curl -X POST "https://yougot.ai/api/v1/reminder/skip?id=REMINDER_ID" \
  -H "Authorization: Bearer yg_your_api_key_here" \
  -H "Content-Type: application/json"

Unskip

POST/api/v1/reminder/unskip?id=REMINDER_IDRe-enable a skipped occurrence

Re-enables a previously skipped (cancelled) recurring occurrence, if it is still in the future.

curl -X POST "https://yougot.ai/api/v1/reminder/unskip?id=REMINDER_ID" \
  -H "Authorization: Bearer yg_your_api_key_here" \
  -H "Content-Type: application/json"

Stop Recurring

POST/api/v1/reminder/stop?id=REMINDER_IDStop all future recurring occurrences
curl -X POST "https://yougot.ai/api/v1/reminder/stop?id=REMINDER_ID" \
  -H "Authorization: Bearer yg_your_api_key_here" \
  -H "Content-Type: application/json"

Acknowledge (Nag Mode)

POST/api/v1/reminder/acknowledge?id=REMINDER_IDStop nagging for a reminder

Stops nag mode for a reminder. The reminder is marked as delivered and nagging stops.

curl -X POST "https://yougot.ai/api/v1/reminder/acknowledge?id=REMINDER_ID" \
  -H "Authorization: Bearer yg_your_api_key_here" \
  -H "Content-Type: application/json"

Toggle Nag Mode

POST/api/v1/reminder/nag?id=REMINDER_IDEnable or disable nag mode
FieldTypeRequiredDescription
enabledbooleanYestrue to enable, false to disable
intervalMsnumberNoNag interval in ms (default: 300000 = 5 min)
# Enable nag mode
curl -X POST "https://yougot.ai/api/v1/reminder/nag?id=REMINDER_ID" \
  -H "Authorization: Bearer yg_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{"enabled": true, "intervalMs": 600000}'

# Disable nag mode
curl -X POST "https://yougot.ai/api/v1/reminder/nag?id=REMINDER_ID" \
  -H "Authorization: Bearer yg_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{"enabled": false}'

Add a Tag

POST/api/v1/reminder/tag?id=REMINDER_IDAdd a tag to a reminder
FieldTypeRequiredDescription
tagstringYesTag name (auto-lowercased, duplicates ignored)
curl -X POST "https://yougot.ai/api/v1/reminder/tag?id=REMINDER_ID" \
  -H "Authorization: Bearer yg_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{"tag": "work"}'

Remove a Tag

DELETE/api/v1/reminder/tag?id=REMINDER_ID&tag=workRemove a tag from a reminder
curl -X DELETE "https://yougot.ai/api/v1/reminder/tag?id=REMINDER_ID&tag=work" \
  -H "Authorization: Bearer yg_your_api_key_here"

Share a Reminder

POST/api/v1/reminder/share?id=REMINDER_IDGenerate a shareable link

Idempotent — returns the existing code if already shared.

curl -X POST "https://yougot.ai/api/v1/reminder/share?id=REMINDER_ID" \
  -H "Authorization: Bearer yg_your_api_key_here" \
  -H "Content-Type: application/json"

Response: 200 OK

{
  "shareCode": "9efea664",
  "shareUrl": "https://yougot.ai/r/9efea664"
}

Unshare a Reminder

DELETE/api/v1/reminder/share?id=REMINDER_IDDeactivate the share link
curl -X DELETE "https://yougot.ai/api/v1/reminder/share?id=REMINDER_ID" \
  -H "Authorization: Bearer yg_your_api_key_here"
GET/api/v1/reminders/searchFull-text search across reminders
FieldTypeRequiredDescription
qstringYesSearch text (matches message and tags)
statusstringNoFilter by status
limitnumberNoMax results (default: 50, max: 100)
curl "https://yougot.ai/api/v1/reminders/search?q=dentist&status=pending" \
  -H "Authorization: Bearer yg_your_api_key_here"

Delivery History

GET/api/v1/reminders/historyGet delivery history
FieldTypeRequiredDescription
limitnumberNoMax results (default: 50, max: 200)
curl "https://yougot.ai/api/v1/reminders/history?limit=20" \
  -H "Authorization: Bearer yg_your_api_key_here"

Statistics

GET/api/v1/reminders/statsGet reminder statistics
curl https://yougot.ai/api/v1/reminders/stats \
  -H "Authorization: Bearer yg_your_api_key_here"

Response: 200 OK

{
  "total": 50,
  "pending": 15,
  "delivered": 14,
  "failed": 9,
  "cancelled": 8,
  "paused": 4
}

Delivery Rate

GET/api/v1/reminders/delivery-rateGet delivery success rate
curl https://yougot.ai/api/v1/reminders/delivery-rate \
  -H "Authorization: Bearer yg_your_api_key_here"

Response: 200 OK

{
  "successful": 14,
  "total": 23,
  "rate": 61
}

Parse Natural Language

POST/api/v1/parseParse natural language into structured reminder data

Parses a natural language reminder into structured data without creating the reminder. Supports any language.

FieldTypeRequiredDescription
textstringYesNatural language input, e.g. "remind me tomorrow at 9am to call mom"
timezonestringNoIANA timezone, e.g. "America/New_York". Defaults to user's stored timezone
curl -X POST https://yougot.ai/api/v1/parse \
  -H "Authorization: Bearer yg_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{"text": "every weekday at 9am review priorities", "timezone": "America/New_York"}'

Response: 200 OK

{
  "message": "review priorities",
  "scheduledAt": "2026-03-24T14:00:00.000Z",
  "recurrence": {
    "type": "custom",
    "cronExpression": "0 9 * * 1-5",
    "description": "Every weekday at 9am"
  },
  "channel": null,
  "tags": ["work"],
  "nagMode": null,
  "dataFetch": null
}

Webhooks

Register webhook endpoints to receive reminder deliveries via HTTP POST.

List Webhooks

GET/api/v1/webhooksList all registered webhooks
curl https://yougot.ai/api/v1/webhooks \
  -H "Authorization: Bearer yg_your_api_key_here"

Create Webhook

POST/api/v1/webhooksRegister a new webhook endpoint
FieldTypeRequiredDescription
urlstringYesThe URL to receive webhook POST requests
curl -X POST https://yougot.ai/api/v1/webhooks \
  -H "Authorization: Bearer yg_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://your-server.com/webhook"}'

Delete Webhook

DELETE/api/v1/webhooks?id=WEBHOOK_IDRemove a webhook endpoint
curl -X DELETE "https://yougot.ai/api/v1/webhooks?id=WEBHOOK_ID" \
  -H "Authorization: Bearer yg_your_api_key_here"

List Verified Phone Numbers

GET/api/v1/phonesList all verified phone numbers

Returns all verified phone numbers for the authenticated user. Use the phone value as targetPhone when creating SMS/WhatsApp reminders.

curl https://yougot.ai/api/v1/phones \
  -H "Authorization: Bearer yg_your_api_key_here"

Response: 200 OK

{
  "data": [
    {
      "_id": "abc123",
      "phone": "+12025551234",
      "label": "Personal",
      "countryCode": "US",
      "isPrimary": true,
      "verifiedAt": 1711375200000
    }
  ]
}

Error Reference

All errors return JSON in the format: {"error": "Description"}

StatusMeaning
400Bad request -- missing or invalid parameters
401Unauthorized -- missing or invalid API key
403Forbidden -- not authorized for this resource, or tier too low
404Not found
429Rate limit exceeded (retry after Retry-After header)
500Server error