Uptimeify Docs
OrganizationReports

Create Report

Creates an organization-level report configuration. Requires a plan that includes organization reports and available report quota.

POST /api/organization/reports

Creates a recurring organization report. The organization is derived from your authenticated session or API token. Requires organization admin (API tokens act as organization admins). Read-only users cannot create reports.

Request Body

FieldTypeRequiredNotes
namestringyes1–200 chars.
enabledbooleannoDefault true.
frequency"daily" | "weekly" | "monthly"noDefault monthly.
weekdayinteger 0–6when weekly0 = Sunday.
dayOfMonthinteger 1–28when monthlyCapped at 28.
sendHourinteger 0–23noDefault 2, in timezone.
timezonestringnoIANA tz, default Europe/Berlin.
scopeMode"all" | "customers" | "tags"noDefault all.
scopeCustomerIdsinteger[]when customersMust belong to your organization.
scopeTagIdsinteger[]when tagsMust belong to your organization.
inclusionMode"all" | "problems" | "threshold"noDefault all.
problemSignalsobjectno{ incident, downtimeMinutes, sslDaysLt, responseBreach }.
thresholdUptimeLtnumberwhen thresholde.g. 99.9.
thresholdResponseGtinteger (ms)when threshold
sendWhenEmptybooleannoSend an "all clear" report when no site matches. Default false.
sectionsobjectnoSix booleans toggling report sections.
monitorTypesstring[]noWhich monitor types the report covers. One or more of website, dns, dnsbl, domain, icmp, smtp, ssh, tcp, ftp, imap. Default: all 10. Must contain at least one entry.
sectionsByTypeobjectnoPer-type section toggles: { "<monitorType>": { "<sectionKey>": boolean } }. Legal sectionKeys depend on the type — see Section keys by monitor type below. Sending a section key that isn't legal for its type is rejected with 400 Bad Request.
groupByCustomerbooleannoSub-group each monitor type's table by customer. Default false.
format"email" | "email_pdf"noDefault email_pdf.
recipientEmailsstring[]noAgency-side email recipients (max 50).
recipientUserIdsstring[]noOrganization team member user ids (max 50).

Section keys by monitor type

Monitor typeLegal sectionKeys
website, dns, icmp, smtp, ssh, tcp, ftp, imapfleetSummary, worstPerformers, perMonitorTable, incidentLog
website (additionally)sslExpiry
dnsbldnsblStatus
domaindomainExpiry

Example (cURL)

BASE_URL="https://uptimeify.io"
TOKEN="<your-api-token>"

curl -X POST "$BASE_URL/api/organization/reports" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Weekly Ops Digest",
    "frequency": "weekly",
    "weekday": 1,
    "scopeMode": "all",
    "inclusionMode": "problems",
    "problemSignals": { "incident": true, "downtimeMinutes": 5, "sslDaysLt": 14, "responseBreach": true },
    "format": "email_pdf",
    "recipientEmails": ["ops@agency.io"]
  }'

Response

{
  "id": "3f1c9c1e-8d2a-4c7e-9b1a-2d5f6a7b8c90",
  "name": "Weekly Ops Digest",
  "enabled": true,
  "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"],
  "recipientUserIds": []
}

Common errors

  • 401 Unauthorized — not authenticated.
  • 403 Forbidden (forbidden) — not an organization admin.
  • 400 (invalidReportSchedule) — weekly without weekday, or monthly without dayOfMonth.
  • 400 (invalidReportScope) — scope ids are not owned by your organization, or threshold mode without a threshold.
  • 400 Bad Request — a sectionsByType entry contains a sectionKey that isn't legal for its monitor type (see Section keys by monitor type), or monitorTypes is an empty array.

On this page