Skip to main content
GET
/
v1
/
features
curl -X GET "https://api.flexprice.io/v1/features?limit=20" \
  -H "Authorization: Bearer YOUR_API_KEY"
{
  "data": [
    {
      "id": "feat_abc123",
      "name": "API Calls",
      "lookup_key": "api_calls",
      "type": "METERED",
      "description": "REST API access with usage tracking",
      "meter_id": "meter_xyz789",
      "unit_singular": "API call",
      "unit_plural": "API calls",
      "metadata": {},
      "created_at": "2024-01-15T10:00:00Z",
      "updated_at": "2024-01-15T10:00:00Z"
    },
    {
      "id": "feat_def456",
      "name": "Advanced Analytics",
      "lookup_key": "advanced_analytics",
      "type": "BOOLEAN",
      "description": "Access to advanced analytics dashboard",
      "metadata": {},
      "created_at": "2024-01-10T08:30:00Z",
      "updated_at": "2024-01-10T08:30:00Z"
    },
    {
      "id": "feat_ghi789",
      "name": "Team Members",
      "lookup_key": "team_members",
      "type": "STATIC",
      "description": "Number of team members allowed",
      "metadata": {},
      "created_at": "2024-01-05T12:00:00Z",
      "updated_at": "2024-01-05T12:00:00Z"
    }
  ],
  "total": 3,
  "limit": 20,
  "offset": 0
}

Query Parameters

type
string
Filter by feature typeValues: BOOLEAN, METERED, STATIC
lookup_key
string
Filter by exact lookup key
meter_id
string
Filter by associated meter ID (returns only METERED features)
limit
integer
default:"10"
Number of features to return per page (max 100)
offset
integer
default:"0"
Number of features to skip for pagination
sort_by
string
default:"created_at"
Field to sort byValues: created_at, updated_at, name, type
sort_order
string
default:"desc"
Sort orderValues: asc, desc

Response

data
array
Array of feature objects
total
integer
Total number of features matching the filter criteria
limit
integer
Number of features returned per page
offset
integer
Number of features skipped
curl -X GET "https://api.flexprice.io/v1/features?limit=20" \
  -H "Authorization: Bearer YOUR_API_KEY"
{
  "data": [
    {
      "id": "feat_abc123",
      "name": "API Calls",
      "lookup_key": "api_calls",
      "type": "METERED",
      "description": "REST API access with usage tracking",
      "meter_id": "meter_xyz789",
      "unit_singular": "API call",
      "unit_plural": "API calls",
      "metadata": {},
      "created_at": "2024-01-15T10:00:00Z",
      "updated_at": "2024-01-15T10:00:00Z"
    },
    {
      "id": "feat_def456",
      "name": "Advanced Analytics",
      "lookup_key": "advanced_analytics",
      "type": "BOOLEAN",
      "description": "Access to advanced analytics dashboard",
      "metadata": {},
      "created_at": "2024-01-10T08:30:00Z",
      "updated_at": "2024-01-10T08:30:00Z"
    },
    {
      "id": "feat_ghi789",
      "name": "Team Members",
      "lookup_key": "team_members",
      "type": "STATIC",
      "description": "Number of team members allowed",
      "metadata": {},
      "created_at": "2024-01-05T12:00:00Z",
      "updated_at": "2024-01-05T12:00:00Z"
    }
  ],
  "total": 3,
  "limit": 20,
  "offset": 0
}

Common Use Cases

List all features to display in your pricing page or admin panel:
features = client.features.list(
    limit=100,
    sort_by="name",
    sort_order="asc"
)

for feature in features.data:
    print(f"{feature.name} ({feature.type})")
Get all usage-based features for analytics or billing setup:
curl -X GET "https://api.flexprice.io/v1/features?type=METERED" \
  -H "Authorization: Bearer YOUR_API_KEY"
When implementing feature gates in your application:
const features = await client.features.list({
  lookupKey: "advanced_analytics"
});

const feature = features.data[0];
if (feature) {
  // Use feature.id for entitlement checks
}