to navigate · to open See all results
POST /api/v1/subscriptions

Create a subscription

Create a new subscription in your organization.

Last updated

Request

POST /api/v1/subscriptions

Requires subscriptions:create. 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.

Request body

Field Type Usage
category_id integer Required on creation. Subscription category ID from options.
name string Required on creation. 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.
billing_type string Creation only, required. free, purchase, or subscription.
price_model string Required for paid creation. lump_sum or per_license. Free subscriptions have no billing details.
license_count integer or null Required for per-license pricing. 1–100,000,000.
billing_frequency string Required for recurring creation: 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.
billing_date string or null Creation only, paid subscriptions. Optional YYYY-MM-DD.
contract_term string or null Creation only, recurring subscriptions. one_year, two_year, three_year, four_year, or five_year. Required with contract dates or automatic renewal.
contract_start_date string or null Creation only, recurring subscriptions. Optional YYYY-MM-DD.
contract_end_date string or null Creation only, recurring subscriptions. Required with a term, start date, or automatic renewal; on or after the start date.
auto_renew boolean Creation only, recurring subscriptions. Optional.
custom_fields object Optional unless the category has required fields. Key values by field ID. Use the category options to discover fields. Changing category requires its required fields.
custom_field_times object Optional. Key HH:mm times by date-field ID; also supply the matching custom_fields date.

Fetch available values before choosing IDs. IDs and required fields vary by organization.

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 POST "https://my.assetcenter.app/api/v1/subscriptions" \
  --header "Authorization: Bearer $ASSETCENTER_API_TOKEN" \
  --header "Accept: application/json" \
  --header "Content-Type: application/json" \
  --data '{"category_id":9,"name":"Team software","billing_type":"subscription","price_model":"per_license","license_count":10,"billing_frequency":"monthly","cost":12}'

Response

201 Created. Example response; IDs, values, and timestamps will differ in your organization.

JSON
{
  "data": {
    "id": 123,
    "name": "Team software",
    "vendor_name": null,
    "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

Required: category_id, name, and billing_type, plus required category fields and conditional billing fields below. Creation respects plan limits. Use only the fields listed here; assignments, status, IDs, timestamps, and file uploads are not writable through this endpoint. Each successful POST creates a new record. Inventory creation has no idempotency replay protection.

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. 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.