included_range_days) and the destinations it fans out to.
Destinations are not configured in this API: they are integration destinations created via the Integrations API. Use GET /v4/scheduled-reports/destinations to discover what’s available for the project, then reference the destination by {type, id} when creating or updating a report.
Key concepts
- Send time —
send_atis a UTC time-of-day inHH:MMformat, aligned to 30-minute slots ("00:00"…"23:30"). The daily job runs within a few minutes of this time. - Coverage window —
included_range_daysis the number of days of data bundled into each delivery. Only three values are supported:1,3,7. - Status — Reports are
"draft"(paused, no deliveries) or"active"(scheduled). - Environment — Each report targets a single environment:
"sandbox"or"production". - Send test —
POST /v4/scheduled-reports/{report_id}/send-testtriggers an immediate one-off delivery. Rate-limited to one call per minute per report (returns429if exceeded).
send_at values
Must be in UTC HH:MM, aligned to 30-minute slots, "00:00" to "23:30":
"23:45" is invalid (not aligned). "12:15" is invalid (not aligned). "24:00" is invalid (out of range).
included_range_days values
Only three values are accepted:
status values
environment values
Destinations
A destination is a{type, id} pair. type is a namespaced kind; id is the destination’s opaque identifier. The only type currently exposed is target_integration, which points at an integration destination created via the Integrations API (typically a webhook, Slack channel, or email endpoint).
Call GET /v4/scheduled-reports/destinations to enumerate all valid destinations for a project before creating or updating a report.
Available endpoints
Example: create an active daily report at 09:00 UTC
201 Created):
Example: partial update (pause a report)
PUT accepts a partial body — omit any field to keep it unchanged. To pause a report, send only the new status:
Example: send a one-off test
Useful when verifying destination credentials or report content:202 Accepted immediately; the delivery runs asynchronously.
The send-test endpoint is rate-limited to one call per minute per report. Repeated calls within 60 seconds return 429 Too Many Requests with a Retry-After: 60 header.