Uptimeify Docs
Organization

Request Data Export

Queues a complete export of your organization's content as JSON and CSV, delivered as a downloadable ZIP and announced by email.

POST /api/organization/data-export

Starts a full export of everything your organization holds in Uptimeify: customers, monitors of every type, incidents and incident updates, maintenance windows, notification channels, tags, status pages, reports and their run history, billing records, team members, API token metadata, incident-management configuration and history, and (unless you opt out) the raw check history behind your monitors.

The request returns immediately with 202 Accepted. The bundle is built in the background; when it is ready, an email with a download link goes to the recipients, and the export appears as ready in GET /api/organization/data-export.

Request body

FieldTypeDefaultDescription
includeCheckHistorybooleantrueInclude raw per-check rows. This is the bulk of the bundle; set false for a configuration-only export.
recipientEmailsstring[]administrators of the organizationWho receives the "export is ready" email. Every address must belong to a member of this organization. Max 20.

Example (cURL)

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

curl -X POST "$BASE_URL/api/organization/data-export" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "includeCheckHistory": true
  }'

Response

{
  "id": "0f0f2f6a-2b3b-4a2f-9a7c-3e5f8c1d2b44",
  "status": "queued",
  "format": "json_csv",
  "includeCheckHistory": true,
  "recipientEmails": ["admin@youragency.com"],
  "sizeBytes": null,
  "retentionCutoff": null,
  "expiresAt": null,
  "downloadCount": 0,
  "lastDownloadedAt": null,
  "error": null,
  "manifest": null,
  "createdAt": "2026-07-30T09:12:44.101Z",
  "startedAt": null,
  "completedAt": null
}

What the bundle contains

A ZIP with both formats plus an index:

  • manifest.json, every section with its row count, the retention cutoff per package, and completeness flags
  • README.txt, what is included, what is redacted, what is incomplete
  • json/<section>.json, full-fidelity records
  • csv/<section>.csv, the same records, flat and spreadsheet-ready

Three rules bound the contents:

  • Retention. Time-series data (check history, alert deliveries, SMS log) reaches back as far as the data retention of the packages your customers are on. Older rows are not withheld, they no longer exist.
  • Credentials. Passwords, webhook secrets, integration and ingest tokens, API token hashes and SMTP passwords are replaced with [redacted]. The surrounding record is exported in full.
  • Rolling windows. organization/audit-log holds administrative actions (who did what, from which IP and user agent). It is a rolling recent-activity window (30 days by default), not a permanent record. Its note in manifest.json states the window the export covers.

Raw check history is capped per monitor type (100,000 newest rows by default). A capped section is flagged with truncated in manifest.json; pull the remainder per monitor via GET /api/websites/{id}/check-history?format=csv and the equivalent endpoints of the other monitor types.

truncated also marks a section whose source could not be read while the export ran. Such a section carries a note beginning with INCOMPLETE and zero rows, which is not a claim that the section is empty. Request a new export to retry.

Rate limits

  • One export at a time per organization (409 exportAlreadyRunning).
  • One request per organization every 6 hours (429 exportCooldown).
  • A finished export stays downloadable for 7 days, then the file is deleted and the record flips to expired.

Common errors

  • 400 User must belong to an organization when no organization can be derived from the session or token
  • 400 Recipients must be members of this organization (data.code: invalidExportRecipient) when recipientEmails contains an outside address
  • 401 Unauthorized when you are not authenticated
  • 403 Forbidden when your role cannot administer the organization
  • 409 An export is already being generated (data.code: exportAlreadyRunning)
  • 429 An export was already requested within the last 6 hours (data.code: exportCooldown)

On this page