Update a product
Changes the fields you send and leaves the rest alone - nothing is required. Send null to clear a nullable field (categoryId, barcode, costPrice, …); omit it to keep what is there. images and features are arrays and replace wholesale, so read the product first if you are adding to one.
A barcode or sku is only checked for collisions when you actually send it, so re-saving a product without touching its codes never conflicts with itself.
Set isActive: false to retire a product rather than deleting it - that keeps its sales history intact and takes it off the till.
Authorizations
Organization-scoped bearer credential: a customer API key (1club_sk_live_...) or an MCP OAuth access token.
Path Parameters
Body
Fields accepted when updating a product. Send only what changes; null clears a nullable field, and an omitted field is left alone. At least one field is required.
2555000x >= 0x >= 0Limit the product to one club; null sells it everywhere.
From GET /v1/platform/product-categories
Stock-keeping code. Scannable at the till, so it must be unused by any other product, package, plan or access card in the organization.
64Must be unused by any other product, package, plan or access card in the organization.
64Public, Member_only, Private Replaces the whole list. Use already-hosted URLs.
Replaces the whole list.
Response
The updated product
A product the organization sells over the counter.
Club the product is sold at; null when available organization-wide.
Product category it is grouped under.
Stock-keeping code, if the gym uses one.
Scanned at the till. Unique across everything scannable in the organization.
What a customer pays, in the organization currency.
What the gym pays for it; null when not tracked. Never shown to customers.
False for a product taken off the till without deleting its history.
Who may see it on customer-facing surfaces.
Public, Member_only, Private Per-product VAT rate; takes precedence over the revenue account default at the till.