Run pricing is now one base with two equal cuts. A run’s base is the model provider’s list cost for the tokens it actually used plus a $0.001 per-job overhead — sized so that 10% of the overhead alone is exactly one credit, the minimum billable unit, which stops either cut from rounding to nothing on a cheap model. The platform takes 10% of that base; the app’s owner takes their markup — also a percentage of the same base, defaulting to 10% — and keeps 100% of it. The 10% platform fee that used to come out of publisher earnings is gone.
What this replaces: compute was billed at a 1.2× multiplier, the owner’s markup was a percentage of that already-marked-up figure, and the platform then took 10% of the markup. On a representative gpt-5.6-terra run that meant the platform earned about twice what the creator did. Now the two are equal at the default markup.
What a run costs now. A representative gpt-5.6-terra run (6,000 in / 1,684 out) goes from $0.0532 to $0.0496, and the creator’s take goes from $0.004352 to $0.004126. Expensive runs get a little cheaper; very cheap runs get dearer, because the $0.001 overhead is now a bigger share of a small base — a Workers AI chat turn moves from 4 credits to 15 at a 0% markup, or 16 at the new 10% default. The /models/ catalog shows list price + 10% rather than list × 1.2.
Existing apps: your stored markup is now measured against a different number. Markup used to be a percentage of the marked-up billable amount and is now a percentage of the base. On the terra run above that is $0.004352 → $0.004126; on a cheap model it goes up, because the overhead is inside the base your markup is figured on. We did not silently rescale anyone’s rate, because “10%” now cleanly means 10% of a run’s base cost. Adjust it on the slider any time.
New apps start at a 10% markup instead of 0%, so a published app earns from its first run without anyone having to find the setting. Forks do the same.
Markup is now a slider on your app’s Settings tab, with a live preview of what each setting pays you per run — priced against your app’s own average run once it has traffic — plus a 30-day projection.
In-app purchases and app subscriptions have been removed. POST /v1/app-api/purchase, /subscribe, /entitlements, the subscription-cancel endpoint, the matching SDK methods (ss.purchase, ss.subscribe, ss.entitlements), and owner-declared plans are all gone. They were the only lanes that moved credits directly between wallets with no metered compute involved, which is exactly what made a card top-up convertible into redeemable earnings once the fee on earnings went to zero. Publisher earnings now arise only from usage markup, where an owner pays compute plus margin to receive markup — strictly lossy at every markup level, so there is no round trip to arbitrage. Free promotional credits still can never become cash.
API change: GET /v1/models renames pricing.cost_multiplier_bps to pricing.platform_margin_bps (now 1000), and pricing.job_overhead_micros is 100. POST /v1/app-api/estimate additionally returns base_micros, platform_micros, and markup_micros so a client never has to re-derive the split.