A valid request URL is required to generate request examples{
"success": true,
"data": {
"id": "rsch_1f8a",
"dashboardId": "dsh_9a12",
"name": "Monthly billing digest",
"cadence": "monthly",
"hourLocal": 8,
"tz": "America/New_York",
"recipients": [
"owner@acme.com",
"cfo@acme.com"
],
"formats": [
"pdf",
"csv",
"link"
],
"delivery": "email",
"enabled": true,
"lastSentAt": "2026-07-07T11:00:00.000Z",
"createdAt": "2026-06-01T00:00:00.000Z",
"updatedAt": "2026-07-12T10:30:00.000Z"
}
}{
"type": "about:blank",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"code": "<string>",
"errors": [
{
"field": "<string>",
"message": "<string>"
}
]
}{
"type": "about:blank",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"code": "<string>",
"errors": [
{
"field": "<string>",
"message": "<string>"
}
]
}{
"type": "about:blank",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"code": "<string>",
"errors": [
{
"field": "<string>",
"message": "<string>"
}
]
}{
"type": "about:blank",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"code": "<string>",
"errors": [
{
"field": "<string>",
"message": "<string>"
}
]
}{
"type": "about:blank",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"code": "<string>",
"errors": [
{
"field": "<string>",
"message": "<string>"
}
]
}Update a scheduled report
Replace a schedule’s mutable fields (same validation + defaults as create). The server never touches lastSentAt (the worker owns it). 404 if absent/cross-org.
A valid request URL is required to generate request examples{
"success": true,
"data": {
"id": "rsch_1f8a",
"dashboardId": "dsh_9a12",
"name": "Monthly billing digest",
"cadence": "monthly",
"hourLocal": 8,
"tz": "America/New_York",
"recipients": [
"owner@acme.com",
"cfo@acme.com"
],
"formats": [
"pdf",
"csv",
"link"
],
"delivery": "email",
"enabled": true,
"lastSentAt": "2026-07-07T11:00:00.000Z",
"createdAt": "2026-06-01T00:00:00.000Z",
"updatedAt": "2026-07-12T10:30:00.000Z"
}
}{
"type": "about:blank",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"code": "<string>",
"errors": [
{
"field": "<string>",
"message": "<string>"
}
]
}{
"type": "about:blank",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"code": "<string>",
"errors": [
{
"field": "<string>",
"message": "<string>"
}
]
}{
"type": "about:blank",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"code": "<string>",
"errors": [
{
"field": "<string>",
"message": "<string>"
}
]
}{
"type": "about:blank",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"code": "<string>",
"errors": [
{
"field": "<string>",
"message": "<string>"
}
]
}{
"type": "about:blank",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"code": "<string>",
"errors": [
{
"field": "<string>",
"message": "<string>"
}
]
}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.
Path Parameters
The report-schedule id (from listReportSchedules / createReportSchedule).
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 updated 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.
Show child attributes
Show child attributes
Show child attributes
Show child attributes