Create a scheduled report
Create a schedule that emails a dashboard digest on a cadence. Body: { dashboardId, name, cadence?, hourLocal?, tz?, recipients[], formats?, delivery?, enabled? }. dashboardId (must exist in the org — else 422) and name are required, and at least one valid recipient email is required. Defaults: cadence daily, hourLocal 7, tz UTC, formats ["pdf","link"], delivery email, enabled true. formats is any subset of link/csv/pdf, all LIVE: the worker delivers the deep link, an optional CSV, and a PDF of the REAL dashboard charts (headless-chromium print of the read-only print page; a box without a renderer degrades to “no pdf” + a note, never a failed send). delivery is email in v1 — slack is a reserved value that currently 422s (no house Slack sender yet). The worker composes the digest via the same metric-registry compile path the live dashboard uses, so the emailed numbers equal the on-screen numbers.
Authorizations
Flowyte secret API key (Authorization: Bearer flowyte_sk_live_…). Scope-gated; is scoped to your organization — a key can never reach another tenant. The listed scopes in each operation's apiKey requirement are the scopes that key must hold. The tokenUrl is nominal: keys are minted in the dashboard.
Body
The create/update body for a scheduled report. dashboardId (must exist in the org) and name are required, plus at least one valid recipient email. The rest default: cadence daily, hourLocal 7, tz UTC, formats ["pdf","link"], delivery email, enabled true. formats may be any subset of link/csv/pdf (all live; pdf is a headless-chromium print of the real charts). delivery: slack is 422'd in v1 (no house Slack sender yet).
255daily, weekly, monthly 0 <= x <= 23link, csv, pdf email, slack Response
The created schedule.
A scheduled report: "email the digest every at ". The analytics worker sweeps enabled schedules, composes each digest via the SAME metric-registry compile path the live dashboard uses (so the emailed numbers equal the on-screen numbers), and delivers a clean HTML email (link always; CSV attached when requested; PDF of the real charts attached when requested and a renderer is available) through Resend. lastSentAt is empty until the first successful send.