---
title: "Send watched-ticket email digests (GET)"
method: GET
path: "/cron/ticket-email-digest"
tags: ["Cron"]
---

# Send watched-ticket email digests (GET)

`GET /cron/ticket-email-digest`

## Request

- Base URL: `https://api.apphandoff.com/api`
- URL: `https://api.apphandoff.com/api/cron/ticket-email-digest`
- Auth: none required

For users with Email digests enabled, sends a Mailgun digest of recent
notifications on tickets they watch. Empty windows skip email.
Cadence is per-user (15/30/60/240 minutes). Protected by CRON_SECRET via
the x-cron-secret header. Scheduled by
supabase/migrations/20260805000001_pgcron_ticket_email_digest.sql.

## Response `200`

Digest run counts

- CronTicketEmailDigestResult
  - `ok` boolean, required: False when any per-user send or stamp error occurred.
  - `scanned` integer, required: Users with digests enabled whose interval window was eligible.
  - `sent` integer, required: Digests successfully emailed.
  - `skipped` integer, required: Eligible users skipped (empty window, no watches, no email, or interval).
  - `errors` integer, required: Per-user failures (query, claim stamp, or Mailgun send).

## Other responses

- `403`: Missing or invalid CRON_SECRET

---

[API](https://skmtc.dev/apphandoff/apis/apphandoff-api.md) · [All operations](https://skmtc.dev/apphandoff/apis/apphandoff-api/llms.txt) · [OpenAPI document](https://skmtc.dev/apphandoff/apis/apphandoff-api/revisions/9f138fe46d56?raw)
