# Reminders (/docs/products/dash-dots/reference/dash-api/reminders)

## `dash.reminders.set`

```ts
dash.reminders.set(reminder: Reminder, callOptions?: CallOptions): DashRequest<void>
```

Sets a reminder: a notification at the times its schedule gives. When the person taps it, Dash opens your dot at the reminder's page. Setting one with a `key` your dot already used changes that reminder. A dot can have 12 reminders still to come at a time. Past that, it fails with `failed`.

```ts
await this.dash.reminders.set({
  key: 'school-fees',
  title: 'School fees are due',
  message: 'Pay the fees for Fatmata before the end of the month.',
  page: '/pay?student=fatmata',
  schedule: {
    start: '2026-11-27',
    time: '08:00',
    repeat: { every: 'month', days: [27] },
    end: { after: 3 },
  },
});
```

Permission in [`dot.json`](/docs/products/dash-dots/reference/dot-json): `reminders`. Dash asks the person the first time.

Types: [`Reminder`](/docs/products/dash-dots/reference/dash-api/reminders#reminder)

## `dash.reminders.cancel`

```ts
dash.reminders.cancel(key: string, callOptions?: CallOptions): DashRequest<boolean>
```

Cancels your dot's reminder with `key`. Gives false if there wasn't one.

Permission in [`dot.json`](/docs/products/dash-dots/reference/dot-json): `reminders`. Dash doesn't ask the person for this one.

## `dash.reminders.list`

```ts
dash.reminders.list(callOptions?: CallOptions): DashRequest<Reminder[]>
```

Your dot's reminders, in the order it set them. The person can delete them in Dash, so read the list instead of assuming a reminder is still there.

Permission in [`dot.json`](/docs/products/dash-dots/reference/dot-json): `reminders`. Dash doesn't ask the person for this one.

Types: [`Reminder`](/docs/products/dash-dots/reference/dash-api/reminders#reminder)

## Types

### `Weekday`

```ts
type Weekday = 'mon' | 'tue' | 'wed' | 'thu' | 'fri' | 'sat' | 'sun';
```

### `ReminderRepeat`

How a reminder repeats. `once`, the default, goes off on the start date only. `dates` goes off once on each date in the list, written like "2026-12-24". `day` repeats daily, and `week` on the listed `days`. `month` repeats on day numbers 1 to 31 with `days` (a day past a short month's end falls on its last day), on the first to fourth weekday with `nth` and `day` (`-1` for the last), or on the month's last day with `lastDay: true`. `interval` repeats every so many days, weeks or months, counted from the start.

```ts
type ReminderRepeat =
  | { every: 'once' }
  | { every: 'dates'; dates: string[] }
  | { every: 'day'; interval?: number | undefined }
  | { every: 'week'; interval?: number | undefined; days: Weekday[] }
  | { every: 'month'; interval?: number | undefined; days: number[] }
  | { every: 'month'; interval?: number | undefined; nth: 1 | 2 | 3 | 4 | -1; day: Weekday }
  | { every: 'month'; interval?: number | undefined; lastDay: true };
```

Types: [`Weekday`](/docs/products/dash-dots/reference/dash-api/reminders#weekday)

### `ReminderEnd`

When a repeating reminder stops: on a date, written like "2027-03-31", or after so many times.

```ts
type ReminderEnd = { on: string } | { after: number };
```

### `ReminderSchedule`

| Field               | Type                                                                                     | What it is                                                             |
| ------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- |
| `start`             | `string`                                                                                 | The first date, on the phone's calendar, written like "2026-11-05".    |
| `time` (optional)   | `string`                                                                                 | The time on the phone's clock, written like "17:30". Default: "09:00". |
| `repeat` (optional) | [`ReminderRepeat`](/docs/products/dash-dots/reference/dash-api/reminders#reminderrepeat) | Default: once.                                                         |
| `end` (optional)    | [`ReminderEnd`](/docs/products/dash-dots/reference/dash-api/reminders#reminderend)       | Default: never.                                                        |

### `Reminder`

| Field                | Type                                                                                         | What it is                                                                                                                                                           |
| -------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `key`                | `string`                                                                                     | The dot's own name for it, up to 64 characters. Setting a reminder with the same key changes it.                                                                     |
| `title`              | `string`                                                                                     | What the notification says first, up to 80 characters.                                                                                                               |
| `message` (optional) | `string`                                                                                     | Under the title, up to 200 characters.                                                                                                                               |
| `page` (optional)    | `string`                                                                                     | The page the notification opens: `/` and the page's ID, with any launch options as a query, such as `"/concert?concert=jazz-night"`. Default: your dot's first page. |
| `schedule`           | [`ReminderSchedule`](/docs/products/dash-dots/reference/dash-api/reminders#reminderschedule) | When the reminder goes off.                                                                                                                                          |
