Organization
Upsert Package Config
Creates a new package config (by :packageType) or updates an existing one. packageType is a free-form identifier chosen by the organization, and customer endpoints can later reference that same key.
PATCH /api/package-configs/:packageType
This endpoint is the source of truth for alerting-related defaults like alertConsecutiveChecks and feature flags like enableEmailAlerts.
Request Body
All fields are optional and can be updated over time.
If you want a human-friendly package label in the UI, set displayName in addition to the technical packageType key.
{
"displayName": "Pro Care",
"maxUrls": 100,
"dataRetentionMonths": 12,
"checkIntervalMinutes": 1,
"checkLocations": 3,
"notificationDelayMinutes": 0,
"reminderDelayMinutes": 10,
"alertConsecutiveChecks": 3,
"alertLocationThreshold": "majority",
"alertLocationThresholdCount": 2,
"alertReminderInterval": 60,
"enableEmailAlerts": true,
"enableSmsAlerts": true,
"enableWebhookAlerts": true,
"enableIntegrationAlerts": true,
"enableMaintenanceWindows": true,
"enablePdfReports": true,
"notes": "Default for PRO customers"
}Example (cURL)
BASE_URL="https://uptimeify.io"
TOKEN="<your-api-token>"
curl -X PATCH "$BASE_URL/api/package-configs/pro" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"displayName":"Pro Care",
"maxUrls":100,
"dataRetentionMonths":12,
"checkIntervalMinutes":1,
"checkLocations":3,
"notificationDelayMinutes":0,
"reminderDelayMinutes":10,
"alertConsecutiveChecks":3,
"alertLocationThreshold":"majority",
"alertLocationThresholdCount":2,
"alertReminderInterval":60,
"enableEmailAlerts":true,
"enableSmsAlerts":true,
"enableWebhookAlerts":true,
"enableIntegrationAlerts":true,
"enableMaintenanceWindows":true,
"enablePdfReports":true,
"notes":"Default for PRO customers"
}'Response
Returns the created/updated package config.
{
"id": 10,
"packageType": "pro",
"displayName": "Pro Care",
"maxUrls": 100,
"dataRetentionMonths": 12,
"checkIntervalMinutes": 1,
"checkLocations": 3,
"notificationDelayMinutes": 0,
"reminderDelayMinutes": 10,
"alertConsecutiveChecks": 3,
"alertLocationThreshold": "majority",
"alertLocationThresholdCount": 2,
"alertReminderInterval": 60,
"enableEmailAlerts": true,
"enableSmsAlerts": true,
"enableWebhookAlerts": true,
"enableIntegrationAlerts": true,
"enableMaintenanceWindows": true,
"enablePdfReports": true,
"notes": "Default for PRO customers",
"createdAt": "2026-02-26T12:00:00.000Z",
"updatedAt": "2026-02-26T12:00:00.000Z"
}Notes:
- The organization is derived automatically from your authenticated session or API token.
- The body-based variant
PATCH /api/package-configsis also supported whenpackageTypeis sent in the request body. - The legacy route
PATCH /api/organizations/:organizationPublicId/package-configs/:packageTyperemains supported for compatibility. - The plural org-less alias
PATCH /api/organizations/package-configs/:packageTypeis also supported. - Global admins need an active organization context in the authenticated session for the org-less route.
Common errors
400 Package type is requiredwhen:packageTypeis missing400 Organization ID is required in the authenticated sessionwhen no organization can be derived from the current session/token401 Unauthorizedwhen you are not logged in403 Forbiddenwhen you cannot access the organization
Authorization note:
- Write access is required (organization admin or global admin).