Uptimeify Docs
OrganizationReports

Update Report

Updates an organization report configuration. All fields are optional; at least one must be provided.

PATCH /api/organization/reports/:id

Partially updates a report configuration. :id is the report's id (a UUID). The organization is derived from your authenticated session or API token, and the report must belong to it. Requires organization admin (API tokens act as organization admins). Read-only users cannot update reports.

Only send the fields you want to change. Cross-field validation (schedule and scope) is re-run against the merged result — a PATCH that only changes frequency to weekly without also sending weekday fails if the existing report has no weekday set.

Request Body

Same fields as Create Report, all optional — but at least one field must be present:

FieldTypeNotes
namestring1–200 chars.
enabledboolean
frequency"daily" | "weekly" | "monthly"
weekdayinteger 0–6 | nullRequired (effectively) when the resulting frequency is weekly.
dayOfMonthinteger 1–28 | nullRequired (effectively) when the resulting frequency is monthly.
sendHourinteger 0–23
timezonestringIANA tz.
scopeMode"all" | "customers" | "tags"
scopeCustomerIdsinteger[]Must belong to your organization.
scopeTagIdsinteger[]Must belong to your organization.
inclusionMode"all" | "problems" | "threshold"
problemSignalsobject{ incident, downtimeMinutes, sslDaysLt, responseBreach }.
thresholdUptimeLtnumber | null
thresholdResponseGtinteger (ms) | null
sendWhenEmptyboolean
sectionsobjectSix booleans toggling report sections.
monitorTypesstring[]One or more of website, dns, dnsbl, domain, icmp, smtp, ssh, tcp, ftp, imap. Cannot be sent as an empty array.
sectionsByTypeobjectPer-type section toggles: { "<monitorType>": { "<sectionKey>": boolean } }. Legal sectionKeys depend on the type — see Section keys by monitor type. Sending a section key that isn't legal for its type is rejected with 400 Bad Request.
groupByCustomerbooleanSub-group each monitor type's table by customer.
format"email" | "email_pdf"
recipientEmailsstring[]Max 50.
recipientUserIdsstring[]Max 50.

Example (cURL)

BASE_URL="https://uptimeify.io"
TOKEN="<your-api-token>"
REPORT_ID="3f1c9c1e-8d2a-4c7e-9b1a-2d5f6a7b8c90"

curl -X PATCH "$BASE_URL/api/organization/reports/$REPORT_ID" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "enabled": false,
    "recipientEmails": ["ops@agency.io", "cs@agency.io"]
  }'

Response

{
  "id": "3f1c9c1e-8d2a-4c7e-9b1a-2d5f6a7b8c90",
  "name": "Weekly Ops Digest",
  "enabled": false,
  "frequency": "weekly",
  "weekday": 1,
  "dayOfMonth": null,
  "sendHour": 2,
  "timezone": "Europe/Berlin",
  "scopeMode": "all",
  "inclusionMode": "problems",
  "monitorTypes": ["website", "dns", "dnsbl", "domain", "icmp", "smtp", "ssh", "tcp", "ftp", "imap"],
  "sectionsByType": {},
  "groupByCustomer": false,
  "format": "email_pdf",
  "recipientEmails": ["ops@agency.io", "cs@agency.io"],
  "recipientUserIds": []
}

Common errors

  • 401 Unauthorized — not authenticated.
  • 403 Forbidden (forbidden) — not an organization admin.
  • 404 Not Found (notFound) — no report with this id exists for your organization.
  • 400 (invalidReportSchedule) — the resulting weekly config has no weekday, or the resulting monthly config has no dayOfMonth.
  • 400 (invalidReportScope) — scope ids are not owned by your organization, or the resulting threshold mode has no threshold.
  • 400 Bad Request — a sectionsByType entry contains a sectionKey that isn't legal for its monitor type, or monitorTypes is sent as an empty array.

On this page