import { Autumn } from 'autumn-js'
const autumn = new Autumn()
const result = await autumn.plans.update({
planId: "pro_plan",
name: "Pro Plan (Updated)",
price: {
amount: 15,
interval: "month",
},
});from autumn_sdk import Autumn
autumn = Autumn(secret_key="am_sk_test...")
res = autumn.plans.update(
plan_id="pro_plan",
name="Pro Plan (Updated)",
price={
"amount": 15,
"interval": "month",
},
create_in_stripe=True,
archived=False,
)curl --request POST \
--url https://api.useautumn.com/v1/plans.update \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'x-api-version: <x-api-version>' \
--data '
{
"plan_id": "pro_plan",
"name": "Pro Plan (Updated)",
"price": {
"amount": 15,
"interval": "month"
}
}
'{
"id": "pro",
"name": "Pro Plan",
"description": null,
"group": null,
"version": 1,
"version_slug": "v1",
"active": true,
"addOn": false,
"autoEnable": false,
"price": {
"amount": 10,
"interval": "month",
"display": {
"primaryText": "$10",
"secondaryText": "per month"
}
},
"items": [
{
"featureId": "messages",
"included": 100,
"unlimited": false,
"reset": {
"interval": "month"
},
"price": {
"amount": 0.5,
"interval": "month",
"billingUnits": 100,
"billingMethod": "usage_based",
"maxPurchase": null
},
"display": {
"primaryText": "100 messages",
"secondaryText": "then $0.5 per 100 messages"
}
},
{
"featureId": "users",
"included": 0,
"unlimited": false,
"reset": null,
"price": {
"amount": 10,
"interval": "month",
"billingUnits": 1,
"billingMethod": "prepaid",
"maxPurchase": null
},
"display": {
"primaryText": "$10 per Users"
}
}
],
"createdAt": 1771513979217,
"env": "sandbox",
"archived": false,
"baseVariantId": null,
"config": {
"ignore_past_due": false
},
"billing_controls": {},
"metadata": {}
}
Update a plan
Updates an existing plan. Creates a new version unless disableVersion is set.
Use this to modify plan properties, pricing, or feature configurations. See Adding features to plans for item configuration.
import { Autumn } from 'autumn-js'
const autumn = new Autumn()
const result = await autumn.plans.update({
planId: "pro_plan",
name: "Pro Plan (Updated)",
price: {
amount: 15,
interval: "month",
},
});from autumn_sdk import Autumn
autumn = Autumn(secret_key="am_sk_test...")
res = autumn.plans.update(
plan_id="pro_plan",
name="Pro Plan (Updated)",
price={
"amount": 15,
"interval": "month",
},
create_in_stripe=True,
archived=False,
)curl --request POST \
--url https://api.useautumn.com/v1/plans.update \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'x-api-version: <x-api-version>' \
--data '
{
"plan_id": "pro_plan",
"name": "Pro Plan (Updated)",
"price": {
"amount": 15,
"interval": "month"
}
}
'{
"id": "pro",
"name": "Pro Plan",
"description": null,
"group": null,
"version": 1,
"version_slug": "v1",
"active": true,
"addOn": false,
"autoEnable": false,
"price": {
"amount": 10,
"interval": "month",
"display": {
"primaryText": "$10",
"secondaryText": "per month"
}
},
"items": [
{
"featureId": "messages",
"included": 100,
"unlimited": false,
"reset": {
"interval": "month"
},
"price": {
"amount": 0.5,
"interval": "month",
"billingUnits": 100,
"billingMethod": "usage_based",
"maxPurchase": null
},
"display": {
"primaryText": "100 messages",
"secondaryText": "then $0.5 per 100 messages"
}
},
{
"featureId": "users",
"included": 0,
"unlimited": false,
"reset": null,
"price": {
"amount": 10,
"interval": "month",
"billingUnits": 1,
"billingMethod": "prepaid",
"maxPurchase": null
},
"display": {
"primaryText": "$10 per Users"
}
}
],
"createdAt": 1771513979217,
"env": "sandbox",
"archived": false,
"baseVariantId": null,
"config": {
"ignore_past_due": false
},
"billing_controls": {},
"metadata": {}
}
Updating Items
When updatingitems, you must provide the complete items array. The new array replaces the existing configuration entirely.
To update a single feature’s configuration while keeping others unchanged, include all existing items with the modified values.
Common Use Cases
await autumn.plans.update({
planId: "pro_plan",
price: { amount: 15, interval: "month" }
});
await autumn.plans.update({
planId: "pro_plan",
price: null // Removes the base price
});
await autumn.plans.update({
planId: "pro_plan",
items: [
{
featureId: "messages",
included: 2000, // Increased from 1000
reset: { interval: "month" }
}
]
});
await autumn.plans.update({
planId: "old_plan",
archived: true
});
await autumn.plans.update({
planId: "pro_plan",
name: "Pro Plan (Updated)",
newPlanId: "pro_plan_v2" // Optional: change the plan ID
});
Body Parameters
Response
{
"id": "pro",
"name": "Pro Plan",
"description": null,
"group": null,
"version": 1,
"version_slug": "v1",
"active": true,
"addOn": false,
"autoEnable": false,
"price": {
"amount": 10,
"interval": "month",
"display": {
"primaryText": "$10",
"secondaryText": "per month"
}
},
"items": [
{
"featureId": "messages",
"included": 100,
"unlimited": false,
"reset": {
"interval": "month"
},
"price": {
"amount": 0.5,
"interval": "month",
"billingUnits": 100,
"billingMethod": "usage_based",
"maxPurchase": null
},
"display": {
"primaryText": "100 messages",
"secondaryText": "then $0.5 per 100 messages"
}
},
{
"featureId": "users",
"included": 0,
"unlimited": false,
"reset": null,
"price": {
"amount": 10,
"interval": "month",
"billingUnits": 1,
"billingMethod": "prepaid",
"maxPurchase": null
},
"display": {
"primaryText": "$10 per Users"
}
}
],
"createdAt": 1771513979217,
"env": "sandbox",
"archived": false,
"baseVariantId": null,
"config": {
"ignore_past_due": false
},
"billing_controls": {},
"metadata": {}
}
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
Body
The ID of the plan to update.
1^[a-zA-Z0-9_-]+$Display name of the plan.
1Whether the plan is an add-on.
Whether the plan is automatically enabled.
The price of the plan. Set to null to remove the base price.
Show child attributes
Show child attributes
Feature configurations for this plan. Each item defines included units, pricing, and reset behavior.
Show child attributes
Show child attributes
Plans offered as assignable licenses under this plan. The full set replaces existing links.
Show child attributes
Show child attributes
The free trial of the plan. Set to null to remove the free trial.
Show child attributes
Show child attributes
Miscellaneous plan-level configuration flags.
Show child attributes
Show child attributes
Plan-level billing controls used as customer defaults.
Show child attributes
Show child attributes
Arbitrary key-value metadata defined by you for your own use (e.g. UI copy, feature highlights). Values can be any JSON-serializable value. Shared across all versions of the plan.
Show child attributes
Show child attributes
The base plan this plan should be linked to as a variant. Set to null to detach it from its base plan.
1^[a-zA-Z0-9_-]+$The new ID to use for the plan. Can only be updated if the plan has not been used by any customers.
1^[a-zA-Z0-9_-]+$Apply the update diff to all versions of this plan. Mutually exclusive with disable_version.
Show child attributes
Show child attributes
Force versioning even when no customers exist. Mutually exclusive with disable_version.
Variant plan IDs to apply this update to. Empty or omitted means no propagation.
Parent plan versions that should receive this license-plan update.
Show child attributes
Show child attributes
Additive variant updates for this base plan. Missing variants are created when name is provided.
Show child attributes
Show child attributes
Whether this is the org's default plan. Cannot be true on a variant.
Response
OK
A plan defines a set of features, pricing, and entitlements that can be attached to customers.
Unique identifier for the plan.
Display name of the plan.
Optional description of the plan.
Group identifier for organizing related plans. Plans in the same group are mutually exclusive.
Version number of the plan. Incremented when plan configuration changes.
Whether this is an add-on plan that can be attached alongside a main plan.
If true, this plan is automatically attached when a customer is created. Used for free plans.
Base recurring price for the plan. Null for free plans or usage-only plans.
Show child attributes
Show child attributes
Feature configurations included in this plan. Each item defines included units, pricing, and reset behavior for a feature.
Show child attributes
Show child attributes
Unix timestamp (ms) when the plan was created.
Environment this plan belongs to ('sandbox' or 'live').
sandbox, live Whether the plan is archived. Archived plans cannot be attached to new customers.
Miscellaneous plan-level configuration flags.
Show child attributes
Show child attributes
Arbitrary key-value metadata defined by you for your own use. Shared across all versions of the plan.
Show child attributes
Show child attributes
Deprecated. Use variant_details.base_plan_id instead. If this is a variant, the ID of the base plan it was created from.
User-facing version identity. Defaults to v{n} when the version is minted.
Whether this is the active version of the plan. At most one version is active.
Payment processors this plan is connected to. Omitted when unset.
Show child attributes
Show child attributes
Free trial configuration. If set, new customers can try this plan before being charged.
Show child attributes
Show child attributes
Plan-level billing controls used as customer defaults.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Details about how this variant relates to its latest base plan.
Show child attributes
Show child attributes