Skip to main content

Overview

Update a feature’s name, display settings, or archive status. The feature type and ID cannot be changed if the feature is in use by customers.

Endpoint

POST /v1/features.update

Request Body

feature_id
string
required
The unique identifier of the feature to update.Example: "api-calls", "seats", "credits"
new_feature_id
string
The new ID for this feature. Can only be changed if the feature is not being used by any customers.Example: "api-requests" (renaming from "api-calls")
name
string
Update the human-readable name displayed in dashboards.Example: "API Requests" (updating from "API Calls")
display
object
Update display names for the feature in billing UI.
archived
boolean
Archive or unarchive the feature. Archived features are hidden from the dashboard but remain accessible via the API.Set to true to archive, false to unarchive.

Response

Returns the updated feature object.
id
string
The feature identifier (updated if new_feature_id was provided).
name
string
The updated feature name.
type
enum
Feature type (cannot be changed via update).
consumable
boolean
Whether the feature is consumable (cannot be changed via update).
archived
boolean
The updated archived status.
display
object
The updated display settings.
credit_schema
array
Credit schema (only for credit_system features, cannot be changed via update).

Examples

const response = await fetch('https://api.autumn.com/v1/features.update', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    feature_id: 'api-calls',
    name: 'API Requests',
    display: {
      singular: 'API request',
      plural: 'API requests'
    }
  })
});

const feature = await response.json();
console.log(feature);

Update Name and Display

Request
{
  "feature_id": "api-calls",
  "name": "API Requests",
  "display": {
    "singular": "API request",
    "plural": "API requests"
  }
}
Response
{
  "id": "api-calls",
  "name": "API Requests",
  "type": "metered",
  "consumable": true,
  "archived": false,
  "display": {
    "singular": "API request",
    "plural": "API requests"
  }
}

Archive a Feature

Request
{
  "feature_id": "old-feature",
  "archived": true
}
Response
{
  "id": "old-feature",
  "name": "Old Feature",
  "type": "metered",
  "consumable": true,
  "archived": true,
  "display": {
    "singular": "unit",
    "plural": "units"
  }
}

Rename Feature ID

Request
{
  "feature_id": "api-calls",
  "new_feature_id": "api-requests"
}
Response
{
  "id": "api-requests",
  "name": "API Calls",
  "type": "metered",
  "consumable": true,
  "archived": false,
  "display": {
    "singular": "API call",
    "plural": "API calls"
  }
}

Important Notes

Type and Consumable Cannot Be ChangedThe type and consumable properties cannot be modified after feature creation. If you need to change these, create a new feature and migrate customers to it.
Feature ID RestrictionsThe new_feature_id parameter can only be used if the feature is not being used by any customers. If customers have this feature in their plans, you must migrate them first.
Archiving vs DeletingArchive features instead of deleting them when they’re used in products or by customers. Archived features remain functional but are hidden from the dashboard.

Use Cases

Rebrand Feature

Update the feature name and display text to match your evolving product terminology.

Deprecate Feature

Archive old features to hide them from the dashboard while maintaining backward compatibility.

Improve Clarity

Update display names to make billing and usage more clear to customers.

Clean Up

Mark test or experimental features as archived to keep your feature list organized.

Error Responses

code
string
Error code identifying the type of error.
message
string
Human-readable error message.

Common Errors

  • feature_not_found - No feature exists with this ID
  • feature_in_use - Cannot change feature_id because it’s used by customers
  • feature_id_exists - The new_feature_id is already taken by another feature
  • invalid_feature_id - Feature ID format is invalid
  • cannot_change_type - Feature type cannot be modified after creation
  • cannot_change_consumable - Consumable property cannot be modified after creation

Build docs developers (and LLMs) love