Uptimeify Docs
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:

  • packageType can contain the configured package key or the package display name of the organization. Known aliases such as aquisition_test are normalized automatically. A value that resolves to no package of this organization is rejected with 400 and data.code invalidPackageType; 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.

FieldTypeDefaultDescription
allowSelfServiceboolean|nullnull (inherit)Whether the customer may create and manage self_service monitors
maxSelfServiceUrlsnumber|nullnull (inherit)Cap on the customer's total self_service monitors across all monitor types
canEditManagedbooleanfalseException: lets this customer edit managed monitors (class flips stay org-only). Changes are written to the audit log.
enableEmailAlertsboolean|nullnull (inherit)Channel-type policy override: email alerts
enableSmsAlertsboolean|nullnull (inherit)Channel-type policy override: SMS alerts
enableWebhookAlertsboolean|nullnull (inherit)Channel-type policy override: webhooks
enableIntegrationAlertsboolean|nullnull (inherit)Channel-type policy override: integrations
enablePostRequestEscalationboolean|nullnull (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

  • 400 Invalid Customer identifier
  • 400 Invalid packageId / packageType for this organization (data.code: invalidPackageType)
  • 401 Unauthorized
  • 403 Forbidden / Organization ID not found
  • 404 Customer not found
  • 500 Failed to update customer

On this page