---
title: "Update a product."
method: PATCH
path: "/v2/products/{product_id}"
tags: ["Products"]
---

# Update a product.

`PATCH /v2/products/{product_id}`

## Path parameters

- `product_id` string, required

## Request body

- ProductUpdateRequest
  - `name` string
  - `description` string, nullable
  - `stripe_product_id` string, nullable
  - `metadata` unknown

## Response `200`

Success.

- Product
  - `id` string, required — LedgerUp resource identifier.
  - `name` string, required
  - `description` string, nullable, required
  - `stripe_product_id` string, nullable, required
  - `metadata` unknown, required
  - `created_at` integer, required — Unix timestamp in seconds.
  - `updated_at` integer, required — Unix timestamp in seconds.
  - `archived_at` integer, required — Unix timestamp in seconds.

## Other responses

- `400` — Bad request, invalid header, invalid amount/quantity/currency, or text validation failure.
- `401` — Missing or invalid API key.
- `403` — API key lacks the required permission, or reset was attempted outside the test namespace.
- `408` — Request exceeded the 30 second timeout.
- `413` — Request body exceeded the 256 KiB limit.
- `415` — Write request content type was not application/json.
- `422` — Semantically invalid request, such as a service period with start greater than end.
- `429` — Rate limit exceeded.
- `500` — Internal server error or queue failure.

---

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