Skip to content
2 minute readFixedAgent-ready

Prices under $10, sub-cent prices and cost floors fixed

Charm endings no longer push cheap prices up, sub-cent prices never round to zero, and a price is never below the unit cost you send unless you save guardrails that allow it.

The API reference in dark mode showing the compute price operation and its request body.

Several edge cases in the price you get back from a compute call are fixed. Some answers change, always toward the price the model actually recommends.

  • A .99 ending is added only when it moves the price by 3% or less, and the nearest ending wins, below the price as readily as above. A price of $1.01 used to come back as $1.99, and $0.46 as $0.99; under $10 the ending could add up to 116%. The psychological pricing function still always sets an ending, the nearest one inside your range and above cost.
  • Prices are returned in whole cents without ever rounding under a floor. A unit cost of $0.002, or a minimum of $0.001, used to give a price of $0; it is now $0.01. When no whole-cent price fits between your minimum and maximum, the minimum wins and the explanation says so.
  • A workspace that never saved price guardrails is now held to the default rule never to price below the unit cost you send. Before, only a saved rule did, so a $30 cost could come back as a $20 price. No other guardrail applies until you save them, and you can save never_below_cost: false to allow a lower price.
  • A min_price above max_price is refused with a 400 and code: conflicting_pricing_inputs, like other inputs that contradict each other, instead of quietly returning the maximum.
  • An A/B elasticity measured with a control price more than 5% away from your current price is capped at 0.5 confidence, and the explanation says the test was run at a different price.
  • When a price is held under cost by the top of the default range, the explanation now says so rather than naming a maximum price you never sent.
  • A lowercase currency code comes back uppercase.
  • A custom model or external function with no model provider or endpoint set up now answers 503 and says so, instead of quietly returning the default optimizer's price under its name. Your fallback chain, if you have one, still answers.