Skip to content

Features

The three kinds of entitlement, and the codes your app checks.

A feature is one thing a plan can grant. You define your features in a catalog, and each one has a code and a kind. The code is a stable key your application checks; the kind decides how the feature is enforced.

Codes

Every feature has a code, a short stable key like seats, workflows.active, or ai.copilot. Your application gates on the code, never on a plan name. That way you can rename or restructure plans without touching the code that checks entitlements.

The three kinds

Kind What it is Example
Switch A feature that is on or off. Access to the API, a premium report.
Limit A cap on how many of something a customer can hold at once. Seats, projects, active workflows.
Quota An allowance used up over a period, then reset. AI copilot questions per month.

A switch holds a yes or no. A limit and a quota both hold a number, but they behave differently: a limit caps a running total that goes up and down as things are added and removed, while a quota is consumed over a period and starts fresh each period.

Quotas reset on a period

Because a quota is an allowance, it needs a period to reset on: a day, a week, or a month. "500 copilot questions per month" is a quota with a monthly reset. When the period turns over, the allowance is full again.

In the API

Manage your feature catalog through the POST /v1/features endpoint and the rest of the /v1/features routes. See the API reference. Attaching features to plans is on the next page.

Edge cases

  • Gate on codes, not plan names. The code is the stable thing; plans change.
  • A switch is a yes or no; a limit and a quota are numbers. The kind decides which.
  • Only quotas reset. A limit is a standing cap, not something that refills.