---
title: "Update a product"
method: PATCH
path: "/v1/admin/products/{id}"
tags: ["Admin Billing"]
---

# Update a product

`PATCH /v1/admin/products/{id}`

## Path parameters

- `id` string, required

## Request body

- UpdateProductDto
  - `name` string — Product name
  - `description` string — Product description
  - `category` 'homeowner_plan' | 'pro_plan' | 'generation_credits_pack' | 'marketplace_template' — Product category
  - `stripePriceId` string — Stripe price ID
  - `price` integer — Product price in cents
  - `currency` string — Currency code
  - `billingType` 'one_time' | 'recurring' — Billing type
  - `billingInterval` 'day' | 'week' | 'month' | 'year', nullable — Billing interval
  - `billingIntervalCount` integer, nullable — Number of intervals between billings
  - `entitlements` union — Product entitlements
    - object
      - `entitlementType` 'allocated', required — Entitlement type for subscription plans
      - `creditsAllocated` integer, required — Monthly credits allocated to the plan
      - `features` string[] — Plan features
      - `capabilities` string[]
      - `policies` object
        - `floorplanRecognition` union
          - object
            - `mode` 'ai', required
            - `humanAssistance` 'optional', required
            - `creditPolicy` 'metered', required
          - object
            - `mode` 'human', required
            - `creditPolicy` 'included', required
    - object
      - `entitlementType` 'purchase', required — Entitlement type for credit packs
      - `creditsPurchase` integer, required — Number of credits in the pack
  - `active` boolean — Active status of product

## Response `201`

Product updated successfully

- ProductApiResponseDto
  - `success` boolean, required — Indicates if the request was successful
  - `message` string, required — Human readable message
  - `data` union, required — Response data
    - object
      - `id` string, uuid, required — Unique identifier of the product
      - `active` boolean, required — Whether the product is active
      - `name` string, required — Product name
      - `description` string, required — Product description
      - `stripeProductId` string, nullable — Stripe product ID
      - `stripePriceId` string, required — Stripe price ID
      - `price` integer, required — Product price in cents
      - `currency` string, required — Currency code
      - `createdAt` unknown, required
      - `updatedAt` unknown, required
      - `billingType` 'one_time', required — Billing type
      - `category` 'generation_credits_pack', required — Product category
      - `billingInterval` unknown
      - `billingIntervalCount` unknown
      - `entitlements` object, required — Credit pack entitlements
        - `entitlementType` 'purchase', required — Entitlement type for credit packs
        - `creditsPurchase` integer, required — Number of credits in the pack
    - object
      - `id` string, uuid, required — Unique identifier of the product
      - `active` boolean, required — Whether the product is active
      - `name` string, required — Product name
      - `description` string, required — Product description
      - `stripeProductId` string, nullable — Stripe product ID
      - `stripePriceId` string, required — Stripe price ID
      - `price` integer, required — Product price in cents
      - `currency` string, required — Currency code
      - `createdAt` unknown, required
      - `updatedAt` unknown, required
      - `billingType` 'recurring', required — Billing type
      - `category` 'homeowner_plan', required — Product category
      - `billingInterval` 'day' | 'week' | 'month' | 'year', nullable — Billing interval
      - `billingIntervalCount` integer, nullable — Number of intervals between billings
      - `entitlements` object, required — Plan entitlements
        - `entitlementType` 'allocated', required — Entitlement type for subscription plans
        - `creditsAllocated` integer, required — Monthly credits allocated to the plan
        - `features` string[] — Plan features
        - `capabilities` string[]
        - `policies` object
          - `floorplanRecognition` union
            - object
              - …
            - object
              - …
    - object
      - `id` string, uuid, required — Unique identifier of the product
      - `active` boolean, required — Whether the product is active
      - `name` string, required — Product name
      - `description` string, required — Product description
      - `stripeProductId` string, nullable — Stripe product ID
      - `stripePriceId` string, required — Stripe price ID
      - `price` integer, required — Product price in cents
      - `currency` string, required — Currency code
      - `createdAt` unknown, required
      - `updatedAt` unknown, required
      - `billingType` 'recurring', required — Billing type
      - `category` 'pro_plan', required — Product category
      - `billingInterval` 'day' | 'week' | 'month' | 'year', nullable — Billing interval
      - `billingIntervalCount` integer, nullable — Number of intervals between billings
      - `entitlements` object, required — Plan entitlements
        - `entitlementType` 'allocated', required — Entitlement type for subscription plans
        - `creditsAllocated` integer, required — Monthly credits allocated to the plan
        - `features` string[] — Plan features
        - `capabilities` string[]
        - `policies` object
          - `floorplanRecognition` union
            - object
              - …
            - object
              - …
  - `timestamp` string, date-time, required — Timestamp of the response

---

[API](https://skmtc.dev/maket/apis/virtual-architect-api.md) · [All operations](https://skmtc.dev/maket/apis/virtual-architect-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/maket/virtual-architect-api/revisions/7635e6f94477/schema)
