Meterd

Product Catalog API

Manage applications, environments, features, and plans.

Applications

Create application

POST/v1/applications
FieldTypeRequiredDescription
namestringYesDisplay name
slugstringYesURL-safe identifier
json
{
  "name": "My SaaS App",
  "slug": "my-saas-app"
}

List applications

GET/v1/applications

Returns all applications for the authenticated tenant.

Update application

PATCH/v1/applications/:id
json
{ "name": "Renamed App" }

Environments

Create environment

POST/v1/applications/:app_id/environments
FieldTypeRequiredDescription
namestringYesDisplay name (e.g., "Production")
slugstringYesURL-safe identifier (e.g., "production")
json
{
  "name": "Production",
  "slug": "production"
}

List environments

GET/v1/applications/:app_id/environments

Returns all environments for a given application.

Features

Create feature

POST/v1/features
FieldTypeRequiredDescription
keystringYesUnique feature key
namestringYesDisplay name
descriptionstringNoHuman-readable description
unitstringNoUnit of measurement (e.g., "requests", "seats")
default_quota_limitnumberNoDefault quota limit for this feature
json
{
  "key": "api-requests",
  "name": "API Requests",
  "description": "Number of API requests per billing period",
  "unit": "requests",
  "default_quota_limit": 10000
}

List features

GET/v1/features

Returns all features for the authenticated tenant.

Get feature by key

GET/v1/features/:key

Retrieve a single feature by its key.

Update feature

PATCH/v1/features/:id
json
{ "name": "Updated Feature Name", "default_quota_limit": 20000 }

Plans

Create plan

POST/v1/applications/:app_id/plans
FieldTypeRequiredDescription
namestringYesDisplay name (e.g., "Pro")
slugstringYesURL-safe identifier (e.g., "pro")
is_free_tierbooleanNoWhether this is the free tier (default: false)
json
{
  "name": "Pro",
  "slug": "pro",
  "is_free_tier": false
}

List plans

GET/v1/applications/:app_id/plans

Returns all plans for a given application.

Update plan

PATCH/v1/plans/:id
json
{ "name": "Pro Plus", "is_free_tier": false }

Plan-Feature Bindings

Bind features to plans with specific quota limits, reset periods, and enforcement modes.

Set plan-feature quota

PUT/v1/plans/:plan_id/features/:feature_id
FieldTypeRequiredDescription
quota_limitnumberYesUsage limit for this feature on this plan
reset_periodstringYes"monthly" | "daily" | "yearly" | "never"
enforcementstringYes"hard_cap" | "soft_cap"
json
{
  "quota_limit": 50000,
  "reset_period": "monthly",
  "enforcement": "hard_cap"
}

List plan features

GET/v1/plans/:plan_id/features

Returns all feature bindings for a given plan, including their quota limits and enforcement settings.

Remove plan-feature binding

DELETE/v1/plans/:plan_id/features/:feature_id

Removes a feature from a plan. Existing customers on this plan will lose quota enforcement for this feature.