Update Organization
Updates the organization from your authenticated session.
PATCH /api/organization
Request Body
{
"name": "New Name",
"companyName": "New Company Name",
"street": "New Street",
"postalCode": "54321",
"city": "New City",
"country": "US",
"vatId": "US123",
"countryCode": "AT",
"billingEmail": "new@deinkunde.com",
"requireMfaAdmins": true,
"requireMfaEditors": false,
"requireMfaReadonly": false,
"requireMfaCustomers": false,
"defaultNotificationChannels": {
"email": true,
"sms": false,
"webhook": true,
"integrations": false
},
"defaultNotificationTargets": {
"email": "both", // customer, organization, both
"sms": "organization",
"webhook": "organization",
"integrations": "customer"
}
}Example (cURL)
BASE_URL="https://uptimeify.io"
TOKEN="<your-api-token>"
curl -X PATCH "$BASE_URL/api/organization" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"name": "New Name",
"billingEmail": "new@deinkunde.com"
}'Notes:
-
The organization is derived automatically from your authenticated session or API token.
-
The legacy route
PATCH /api/organizations/:organizationPublicIdremains supported for compatibility. -
The plural org-less alias
PATCH /api/organizationsis also supported. -
Global admins need an active organization context in the authenticated session for the org-less route.
-
countryCodeis the organization's billing country as an ISO-3166-1 alpha-2 code (two letters, case-insensitive on input, always stored and returned uppercased). It determines VAT treatment: reverse charge under AGB § 10.2 requires this to be an EU member state other than Germany. -
Writing
vatIdorcountryCode(either one, in the same request or separately) resetsvatIdStatustounverified. A previousvalidverdict never survives an edit to either field, re-validate with Validate VAT ID after the change to restore reverse-charge eligibility. -
Quota changes are not symmetric. A change whose
quotaMonthlyPriceCentsis higher than the organization's current one takes effect immediately, and the difference is charged pro rata for the rest of the current billing period. A change whose price is lower does not take effect immediately: under AGB § 10.5 it is scheduled for the end of the current billing period, and no credit is issued for the unused part of the higher plan. Until it fires, the organization keeps its current plan and every quota field on the organization still describes that plan. Direction is decided by price alone, never by the monitor limit, so a tier that costs less for more monitors is still a reduction. -
A scheduled reduction is returned as
pendingQuotaChangeon both this endpoint and Get Organization Details; it isnullwhen nothing is scheduled. There is at most one scheduled change per organization: a second reduction replaces the first, and an increase supersedes it (otherwise you would be silently dropped back at the period boundary). To call one off without changing plan, use Cancel Scheduled Quota Change, re-sending the current tier here counts as unchanged and will not do it. -
A reduction below the organization's current monitor usage is rejected up front with
400. The same check runs again when the change is applied: if the organization has grown past the new limit in the meantime, the reduction is abandoned rather than applied, and the organization keeps the higher plan. -
requireMfaAdmins,requireMfaEditors,requireMfaReadonlyandrequireMfaCustomers(all boolean) independently force two-step verification for four different audiences, set any subset of the four to roll MFA out incrementally. A user's audience is not simply their role. Every user in the organization is either a team member or a customer user:- Team member: an
admin, or aneditor/readonlymember with no explicit customer assignments (no rows inuser_customer_access). - Customer user: an
editororreadonlymember scoped to one or more specific customers (at least one row inuser_customer_access), regardless of role.
requireMfaAdmins,requireMfaEditorsandrequireMfaReadonlycover TEAM members only, an editor or readonly member who is scoped to specific customers is not covered byrequireMfaEditors/requireMfaReadonly, even when that switch is on.requireMfaCustomerscovers every customer user instead, whatever their role. An admin is never customer-scoped (admins always have unrestricted access), sorequireMfaCustomersnever applies to one,requireMfaAdminsis the only switch that can ever force MFA on an admin.Platform-wide enforcement for platform admins/supporters is a separate, operator-only environment flag (
MFA_ENFORCE_PLATFORM_ADMINS, default off) and is not affected by these fields. Any of the four can be set by an organization admin, not just a global admin, but only from a real, logged-in user session. A request whose body includes any ofrequireMfaAdmins,requireMfaEditors,requireMfaReadonlyorrequireMfaCustomersis rejected with403 nonUserSessionForbiddenwhen called with an API token or agent access token, even an organization-scoped one with admin-level access, otherwise a leaked token could dismantle the organization's MFA posture on its own. - Team member: an
-
Changing any of the four fields, in either direction (on or off), is rejected with
400 mfaRequiredForActorunless the acting admin already has two-step verification enabled on their own account. Turning one on with no factor of your own would immediately lock you out of your own organization on the next request (if the switch covers your own audience); turning one off is gated the same way so a forced-but-unenrolled admin cannot use these fields to escape their own organization's MFA requirement.
Common errors
400 Invalid request bodywhen the payload does not match the schema400 Organization ID is required in the authenticated sessionwhen no organization can be derived from the current session/token400 mfaRequiredForActorwhen settingrequireMfaAdmins,requireMfaEditors,requireMfaReadonlyorrequireMfaCustomers(any of them, eithertrueorfalse) while the caller's own account does not have two-step verification enabled403 nonUserSessionForbiddenwhen the request body includesrequireMfaAdmins,requireMfaEditors,requireMfaReadonlyorrequireMfaCustomersand the caller is an API token or agent access token rather than a real user session401 Unauthorizedwhen you are not logged in403 Forbiddenwhen you do not have admin access to update the organization
Response
Returns the updated organization object, plus pendingQuotaChange describing a reduction that was scheduled by this request:
{
"pendingQuotaChange": {
"effectiveAt": "2026-08-01T00:00:00.000Z",
"quotaWebsitesLimit": 25,
"quotaMonthlyPriceCents": 6900
}
}pendingQuotaChange is null when the request scheduled nothing, including when it applied an increase immediately. effectiveAt is the first instant at which the new plan applies: the next UTC month start for a monthly cycle, the end of the paid term for a yearly one.
See Error Codes for error responses.
Update Billing Details
Updates billing information for the organization in your authenticated session.
Cancel Scheduled Quota Change
Cancels a quota reduction that was scheduled for the end of the current billing period, so the organization keeps its current plan. Answers cancelled:false, not 404, when nothing is scheduled.