> ## Documentation Index
> Fetch the complete documentation index at: https://confect.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Scheduling

> Schedule functions to run after a delay or at a specific time.

The `Scheduler` service schedules Confect functions to run in the future. It wraps Convex's scheduler with Effect-native types: delays use [`Duration`](https://effect.website/docs/data-types/duration/) and timestamps use [`DateTime`](https://effect.website/docs/data-types/datetime/).

Both `runAfter` and `runAt` accept a ref to a mutation or action and an optional args object matching the ref's args schema.

## Run after a delay

```ts theme={null}
import * as Duration from "effect/Duration";
import * as Effect from "effect/Effect";
import refs from "./confect/_generated/refs";
import { Scheduler } from "./confect/_generated/services";

Effect.gen(function* () {
  const scheduler = yield* Scheduler;

  yield* scheduler.runAfter(Duration.minutes(5), refs.internal.messages.send, {
    text: "Hello",
  });
});
```

## Run at a specific time

```ts theme={null}
Effect.gen(function* () {
  const scheduler = yield* Scheduler;

  const dateTime = yield* DateTime.make("2030-01-01T00:00:00Z");

  yield* scheduler.runAt(dateTime, refs.internal.messages.send, {
    text: "Happy new year",
  });
});
```

For the full scheduling APIs, see the [Effect `Duration` documentation](https://effect.website/docs/data-types/duration/), the [Effect `DateTime` documentation](https://effect.website/docs/data-types/datetime/), and the [Convex scheduling documentation](https://docs.convex.dev/scheduling/scheduled-functions).
