to navigate · to open See all results
PATCH / PUT /api/v1/subscriptions/{record}

Update a subscription

Update the supplied detail fields on an existing subscription.

Last updated

Request

PATCH / PUT /api/v1/subscriptions/{record}

Requires subscriptions:update. See token permissions. Every listed permission is required for this endpoint.

Send Authorization: Bearer YOUR_API_TOKEN and Accept: application/json. Send request bodies as JSON with Content-Type: application/json.

record is the numeric subscription ID in your token’s organization.

Request body

Field Type Usage
category_id integer Optional on update. Subscription category ID from options.
name string Optional on update. Up to 255 characters; cannot be empty when supplied.
vendor_name string or null Optional. Up to 255 characters.
plan_type string or null Optional. Up to 255 characters.
price_model string Optional on update. lump_sum or per_license. Free subscriptions have no billing details.
license_count integer or null Optional when already set. The resulting per-license configuration must have a count of 1–100,000,000.
billing_frequency string For recurring updates: monthly, Quarterly, or yearly (case-sensitive). Purchases use upfront automatically on creation; use upfront for later purchase billing edits.
cost number or null Optional for paid subscriptions. 0–999,999,999.99.
custom_fields object Optional when retaining the category; only supplied values change. Key values by field ID. Changing category requires all of its required fields. Discover them with creation options.
custom_field_times object Optional. Key HH:mm times by date-field ID; also supply the matching custom_fields date.

Example

Set ASSETCENTER_API_TOKEN as described in the quick start. Replace example record and option IDs with values from your organization.

cURL / Bash
curl --request PATCH "https://my.assetcenter.app/api/v1/subscriptions/123" \
  --header "Authorization: Bearer $ASSETCENTER_API_TOKEN" \
  --header "Accept: application/json" \
  --header "Content-Type: application/json" \
  --data '{"vendor_name":"Example Software"}'

Response

200 OK. Example response; IDs, values, and timestamps will differ in your organization.

JSON
{
  "data": {
    "id": 123,
    "name": "Team software",
    "vendor_name": "Example Software",
    "plan_type": null,
    "status": "available",
    "category_id": 9,
    "license_count": 10,
    "billing_type": "subscription",
    "billing_frequency": "monthly",
    "cost": "12.00",
    "created_at": "2026-09-07T16:00:00.000000Z",
    "updated_at": "2026-09-07T16:00:00.000000Z"
  }
}

Behavior and constraints

PATCH and PUT both update only the supplied fields. Supply at least one writable field. Unknown fields, lifecycle status, assignments, and file uploads are rejected. These inventory updates have no idempotency replay protection. The billing type is fixed at creation. Free subscriptions reject billing edits. Billing changes record history; contracts use the dedicated contract action. Restore cancelled or retired subscriptions before editing.

Errors

401 means the token is missing, expired, revoked, or not a customer API token. 403 means a required permission or administrator access is missing. 404 means the record or child record is unavailable in this organization. 422 identifies invalid or unsupported input; inspect the errors object when present. 409 indicates a conflicting state or concurrent change; inspect the message and refresh the record before deciding how to proceed. 429 means a rate limit was reached. See error handling and rate limits.