Appearance
Update Plan
Update fields on a pricing plan. Only include fields you want to change.
PATCH /v1/products/:id/plans/:planIdPath Parameters
| Parameter | Description |
|---|---|
id | Product ID |
planId | Plan ID |
Request Body
| Field | Type | Description |
|---|---|---|
name | string | Plan name |
slug | string | URL slug |
billingCycle | string | e.g. monthly, yearly, lifetime |
price | number | Plan price |
currency | string | ISO currency code |
siteLimit | number | Activation seats per license |
shortDescription | string | One-liner for pricing cards |
description | string | Longer description |
isPublic | boolean | Show on public pricing |
originalPrice | number | Strike-through compare-at price |
badge | string | Marketing badge |
polarProductId | string | Manual override of the linked Polar product |
stripePriceId | string | Manual override of the linked Stripe price |
status | string | Plan status |
Response
json
{
"data": {
"message": "Plan updated"
}
}Example
bash
curl -X PATCH "https://api.packedge.dev/v1/products/prd_xxx/plans/plan_xxx" \
-H "Authorization: Bearer pk_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"price": 129,
"badge": "Best value"
}'Notes
- When a Stripe/Polar account is connected, price / currency / cycle changes automatically re-create the linked provider products (the old Polar products are archived), while name / description changes patch them in place
- A
polarProductId/stripePriceIdyou pass explicitly wins over the auto-sync - The public pricing cache is invalidated on every change
