---
title: "Update license expiration"
method: PATCH
path: "/v3/licenses/{id}/expires-at"
tags: ["Licenses"]
---

# Update license expiration

`PATCH /v3/licenses/{id}/expires-at`

Extend a license expiration, or convert a license from perpetual to subscription and vice-versa.

## Path parameters

- `id` string, required

## Request body

- LicenseExpiresAtUpdateRequestModel
  - `expiresAt` string, date-time, nullable — Set to null to make the license perpetual and vice-versa.

## Response `200`

OK

- LicenseDto
  - `id` string, required
  - `createdAt` string, date-time, required
  - `updatedAt` string, date-time, required
  - `key` string, required
  - `revoked` boolean, required
  - `suspended` boolean, required
  - `perpetual` boolean, required
  - `totalActivations` integer, required
  - `totalDeactivations` integer, required
  - `validity` integer, nullable
  - `expirationStrategy` 'immediate' | 'delayed' | 'rolling', nullable
  - `subscriptionInterval` string, nullable
  - `subscriptionStartTrigger` 'creation' | 'activation'
  - `fingerprintMatchingStrategy` 'fuzzy' | 'exact' | 'loose', required
  - `allowedActivations` integer, required
  - `allowedDeactivations` integer, required
  - `type` 'node-locked' | 'hosted-floating' | 'on-premise-floating', required
  - `allowedFloatingClients` integer, required
  - `serverSyncGracePeriod` integer, required
  - `serverSyncInterval` integer, required
  - `allowedClockOffset` integer, required
  - `cryptoBindingEnabled` boolean, required
  - `disableClockValidation` boolean, required
  - `expiringSoonEventOffset` integer, required
  - `leaseDuration` integer, required
  - `leasingStrategy` 'per-machine' | 'per-instance', required
  - `effectiveDate` string, date-time, nullable
  - `expiresAt` string, date-time, nullable
  - `activatedAt` string, date-time, nullable
  - `lastUsedAt` string, date-time, nullable
  - `allowVmActivation` boolean, required
  - `allowContainerActivation` boolean, required
  - `allowClientLeaseDuration` boolean, required
  - `userLocked` boolean, required
  - `requireAuthentication` boolean, required
  - `disableGeoLocation` boolean, required
  - `notes` string, nullable
  - `productId` string, required
  - `entitlementSetId` string, nullable
  - `productVersionId` string, nullable
  - `maintenancePolicyId` string, nullable
  - `maintenanceExpiresAt` string, date-time, nullable
  - `currentReleaseVersion` string, nullable
  - `maxAllowedReleaseVersion` string, nullable
  - `organizationId` string, nullable
  - `organization` OrganizationDto
    - `id` string, required
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required
    - `organizationAlias` string, nullable
    - `name` string, required
    - `email` string, required
    - `description` string, required
    - `allowedUsers` integer, required
    - `address` AddressDto, required
      - `addressLine1` string, nullable
      - `addressLine2` string, nullable
      - `city` string, nullable
      - `state` string, nullable
      - `country` string, nullable
      - `postalCode` string, nullable
    - `resellerId` string, nullable
    - `reseller` ResellerDto
      - `id` string, required
      - `createdAt` string, date-time, required
      - `updatedAt` string, date-time, required
      - `name` string, required
      - `email` string, required
      - `description` string, required
      - `allowedUsers` integer, required
      - `allowedOrganizations` integer, required
  - `userId` string, nullable
  - `user` UserDto
    - `id` string, required
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required
    - `name` string, required
    - `firstName` string, required
    - `lastName` string, required
    - `email` string, required
    - `role` string, required
    - `twoFactorEnabled` boolean, required
    - `googleSsoEnabled` boolean, required
    - `lastLoginAt` string, date-time, nullable
    - `company` string, nullable
    - `allowCustomerPortalAccess` boolean, required
    - `roles` string[], required
    - `lastSeenAt` string, date-time, nullable
    - `organizationId` string, nullable
    - `organization` OrganizationDto
      - `id` string, required
      - `createdAt` string, date-time, required
      - `updatedAt` string, date-time, required
      - `organizationAlias` string, nullable
      - `name` string, required
      - `email` string, required
      - `description` string, required
      - `allowedUsers` integer, required
      - `address` AddressDto, required
        - `addressLine1` string, nullable
        - `addressLine2` string, nullable
        - `city` string, nullable
        - `state` string, nullable
        - `country` string, nullable
        - `postalCode` string, nullable
      - `resellerId` string, nullable
      - `reseller` ResellerDto
        - `id` string, required
        - `createdAt` string, date-time, required
        - `updatedAt` string, date-time, required
        - `name` string, required
        - `email` string, required
        - `description` string, required
        - `allowedUsers` integer, required
        - `allowedOrganizations` integer, required
    - `resellerId` string, nullable
    - `reseller` ResellerDto
      - `id` string, required
      - `createdAt` string, date-time, required
      - `updatedAt` string, date-time, required
      - `name` string, required
      - `email` string, required
      - `description` string, required
      - `allowedUsers` integer, required
      - `allowedOrganizations` integer, required
    - `metadata` AdminMetadataDto[], required
      - `id` string, required
      - `createdAt` string, date-time, required
      - `updatedAt` string, date-time, required
      - `key` string, required
      - `value` string, nullable
      - `viewPermissions` ViewPermission[], required
      - `visible` boolean, required
    - `tags` string[], required
  - `resellerId` string, nullable
  - `reseller` ResellerDto
    - `id` string, required
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required
    - `name` string, required
    - `email` string, required
    - `description` string, required
    - `allowedUsers` integer, required
    - `allowedOrganizations` integer, required
  - `additionalUserIds` string[], required
  - `allowedIpRange` string, nullable
  - `allowedIpRanges` string[], required
  - `allowedIpAddresses` string[], required
  - `disallowedIpAddresses` string[], required
  - `allowedCountries` string[], required
  - `disallowedCountries` string[], required
  - `metadata` AdminMetadataDto[], required
    - `id` string, required
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required
    - `key` string, required
    - `value` string, nullable
    - `viewPermissions` ViewPermission[], required
    - `visible` boolean, required
  - `meterAttributes` AdminLicenseMeterAttributeDto[], required
    - `id` string, required
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required
    - `name` string, required
    - `allowedUses` integer, required
    - `totalUses` integer, required
    - `grossUses` integer, required
    - `floating` boolean, required
    - `viewPermissions` ViewPermission[], required
    - `visible` boolean, required
  - `tags` string[], required

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found
- `429` — Too Many Requests
- `500` — Server Error

---

[API](https://skmtc.net/cryptlex/apis/cryptlex-web-api.md) · [All operations](https://skmtc.net/cryptlex/apis/cryptlex-web-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/cryptlex/cryptlex-web-api/versions/ec1259c12475/schema)
