Customers
Update Customer
Updates customer details.
PATCH /api/customers/:customerPublicId
Authentication
BASE_URL="https://uptimeify.io"
TOKEN="<your-api-token>"Request Body
All fields are optional. Omitted fields keep their current values.
{
"name": "New Name",
"email": "new@deinkunde.com",
"status": "active",
"packageType": "business", // configured packageType or displayName for the organization
"notificationEmail": "alerts@customer-a.de",
"notificationPhoneNumber": "+491701234567",
"monthlyReportsEnabled": true,
"customFields": {
"internalReference": "KD-999"
}
}Notes:
packageTypecan contain the configured package key or the package display name of the organization. Known aliases such asaquisition_testare normalized automatically. A value that resolves to no package of this organization is rejected with400anddata.codeinvalidPackageType; it is no longer stored as-is.
Ownership & permission overrides (optional)
These fields control the customer's managed vs. self-service permissions and channel-type policy. They are organization-write gated: a customer-scoped caller's writes to these fields are silently ignored server-side.
null means inherit from the customer's package config.
| Field | Type | Default | Description |
|---|---|---|---|
allowSelfService | boolean|null | null (inherit) | Whether the customer may create and manage self_service monitors |
maxSelfServiceUrls | number|null | null (inherit) | Cap on the customer's total self_service monitors across all monitor types |
canEditManaged | boolean | false | Exception: lets this customer edit managed monitors (class flips stay org-only). Changes are written to the audit log. |
enableEmailAlerts | boolean|null | null (inherit) | Channel-type policy override: email alerts |
enableSmsAlerts | boolean|null | null (inherit) | Channel-type policy override: SMS alerts |
enableWebhookAlerts | boolean|null | null (inherit) | Channel-type policy override: webhooks |
enableIntegrationAlerts | boolean|null | null (inherit) | Channel-type policy override: integrations |
enablePostRequestEscalation | boolean|null | null (inherit) | Channel-type policy override: POST-request escalation |
The legacy notificationChannels JSONB override is deprecated: channel-type policy lives in the enable* fields above.
Example Request
curl -X PATCH "$BASE_URL/api/customers/6bfec6f6-245a-47ce-843b-157d97d56f88" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Customer A GmbH (Updated)",
"monthlyReportsEnabled": true
}'Example Response
{
"id": 101,
"publicId": "6bfec6f6-245a-47ce-843b-157d97d56f88",
"organizationId": 1,
"name": "Customer A GmbH (Updated)",
"email": "contact@customer-a.de",
"notificationPhoneNumber": "+491701234567",
"notificationEmail": "alerts@customer-a.de",
"packageId": 3,
"status": "active",
"monthlyReportsEnabled": true,
"customFields": {
"internalReference": "KD-999"
},
"notificationChannels": null,
"notificationTargets": null,
"updatedAt": "2026-02-26T19:37:00.000Z"
}Common Errors
400Invalid Customer identifier400Invalid packageId / packageType for this organization (data.code:invalidPackageType)401Unauthorized403Forbidden / Organization ID not found404Customer not found500Failed to update customer