Skip to main content
Assigns features to a pricing plan. You can add a single feature or multiple features in a batch request. Features that are already assigned to the plan are silently skipped.

Endpoint

POST /api/v1/projects/{slug}/plans/{planId}/features

Authentication

Authorization
string
required
Bearer token with your API key. Requires read_write permission.

Path Parameters

slug
string
required
The project’s URL-friendly slug identifier.
planId
number
required
The plan’s unique ID.

Body Parameters

You can use either the single-feature format or the batch format.

Single Feature

featureId
number
required
The ID of the feature to assign to the plan.
multiplier
number
Multiplier for the feature (e.g. 3 means 3x the base limit). Defaults to 1.

Batch (Multiple Features)

features
array
Array of feature assignments to add in a single request.

Response

added
number
Number of features newly assigned to the plan.
skipped
number
Number of features skipped because they were already assigned.
features
array
Updated list of all plan-feature associations with full feature details.

Example — Single Feature

curl -X POST https://cuprice.io/api/v1/projects/my-saas-app/plans/201/features \
  -H "Authorization: Bearer cpk_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "featureId": 103,
    "multiplier": 2
  }'
{
  "added": 1,
  "skipped": 0,
  "features": [
    {
      "id": 301,
      "multiplier": 5,
      "feature": {
        "id": 101,
        "name": "AI Prompts",
        "featureType": "Limits",
        "basePrice": 10
      }
    },
    {
      "id": 302,
      "multiplier": 1,
      "feature": {
        "id": 102,
        "name": "Team Members",
        "featureType": "Standart",
        "basePrice": 5
      }
    },
    {
      "id": 310,
      "multiplier": 2,
      "feature": {
        "id": 103,
        "name": "API Calls",
        "featureType": "Usage Based",
        "basePrice": 15
      }
    }
  ]
}

Example — Batch Add

curl -X POST https://cuprice.io/api/v1/projects/my-saas-app/plans/200/features \
  -H "Authorization: Bearer cpk_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "features": [
      { "featureId": 101, "multiplier": 1 },
      { "featureId": 102, "multiplier": 3 },
      { "featureId": 104, "multiplier": 1 }
    ]
  }'
{
  "added": 2,
  "skipped": 1,
  "features": [
    {
      "id": 300,
      "multiplier": 1,
      "feature": {
        "id": 101,
        "name": "AI Prompts",
        "featureType": "Limits",
        "basePrice": 10
      }
    },
    {
      "id": 311,
      "multiplier": 3,
      "feature": {
        "id": 102,
        "name": "Team Members",
        "featureType": "Standart",
        "basePrice": 5
      }
    },
    {
      "id": 312,
      "multiplier": 1,
      "feature": {
        "id": 104,
        "name": "Priority Support",
        "featureType": "Standart",
        "basePrice": 20
      }
    }
  ]
}
In the batch example, feature 101 was already assigned to the plan, so it was skipped (added: 2, skipped: 1).

Errors

StatusDescription
400Missing featureId or invalid feature IDs
401Invalid or missing API key
403API key does not have read_write permission
404Project, plan, or feature not found