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

# Send watched-ticket email digests (POST)

`POST /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

Same as GET. Preferred by pg_cron net.http_post.
Protected by CRON_SECRET via the x-cron-secret header.

## 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)
