Skip to main content

Pricing Strategies

A pricing strategy is the actual pricing rule inside a plan. If a pricing plan is the “Pro Plan” container, strategies are the line items: “0.01perAPIcall,""0.01 per API call," "49/month platform fee,” “5,000 calls for 99then99 then 0.03 overage.” A plan can have multiple strategies. Most plans combine a few:
  • A usage strategy for per-event billing (tied to a signal)
  • A recurring strategy for a fixed monthly fee
  • A onetime strategy for a setup fee
  • A seat_based strategy for per-user pricing
Each strategy has a charge type (what kind of charge) and a pricing model (how the math works).

Charge types


Pricing models

The pricing model determines how the rate math works for usage and seat_based strategies.

Flat

Every unit costs the same price. Simple multiplication.

Graduated

Different rates for different quantity ranges — like tax brackets. Each range is charged at its own rate.

Volume

Total quantity determines ONE rate for ALL units. The more you use, the cheaper each unit gets — but the rate applies to everything, not just the overflow.

Credit Pool

Flat fee for a pool of units, then per-unit overage. You pay the pool price whether you use 1 unit or all of them. Only after exceeding the pool does the overage rate kick in.
Tier layout for credit pool:
The first tier’s rate is the flat pool price (not per-unit). The second tier’s rate is the per-unit overage rate.

Create pricing strategies (bulk)

In plain English: Add one or more pricing strategies to a plan. You can create all your strategies in one call — send an array. Method & URL:
The request body is an array of strategies (even if you’re only creating one). Required fields per strategy:
  • name (string) — Strategy name, e.g. “API Call Pool”
  • agentId (UUID) — Which agent this strategy belongs to
  • chargeType (string) - One of: usage, recurring, onetime, seat_based
Optional fields:
  • signalId (UUID) — Required if chargeType is usage. The signal this strategy prices.
  • pricingModel (string) - One of: flat, graduated, volume, credit_pool. Required for usage and seat_based.
  • billingFrequency (string)monthly or yearly (default: monthly)
  • tiers (array) — Tier configuration. Each tier has lower (number), upper (number or null), rate (number).
  • rate (number) — Flat rate. Used when pricingModel is flat or there are no tiers.
  • minimumCommitment (number) — Minimum units/seats to bill for, even if actual usage is lower.
  • active (boolean, default true) — Whether this strategy is active.
  • tags (string[]) — Tags for categorization.
Example — create three strategies in one call:
What you get back (201 Created): Array of created strategies with IDs. Using the SDK:
Common errors:
  • 400 Bad Request — Missing required fields, or signalId not provided for a usage strategy.
  • 404 Not Found — Plan, agent, or signal not found in this org.

List pricing strategies

Method & URL:
Query parameters:
  • chargeType - Filter by charge type (usage, recurring, onetime, seat_based)
  • pricingModel — Filter by pricing model (flat, graduated, volume, credit_pool)
  • active — Filter by active status (true or false)
  • page, limit — Pagination (default: page 1, limit 10)
Using the SDK:

Get a pricing strategy

Method & URL:
Using the SDK:

Update a pricing strategy

Method & URL:
All fields are optional. Only send what you want to change. Example — change the overage rate on a credit pool strategy:
Using the SDK:

Bulk update + create

In plain English: Update existing strategies and create new ones in a single call. Useful when reconfiguring an entire plan. Method & URL:
Request body:

Delete a pricing strategy

Method & URL:
Soft-delete (sets deletedAt, doesn’t destroy data). Using the SDK:

How strategies fit in the billing chain