FREE); enter anything greater than 0 and it is unlock (UNLOCK). There is no third option.
A trial is not a separate billing type; it is two parameters on an unlock Expert (allowTrial and freeTrialPerUser). Metered billing does not exist for the Expert product — that term belongs to a separate vocabulary used by Apps and the open platform.
Figures on this page verified 2026-08-11; sources listed under “Sources of truth” at the end.
The two billing types
The derivation is hard-coded server-side and cannot be bypassed:
- Changing the price from 199 to 0 automatically converts the Expert from
UNLOCKtoFREE— there is no separate switch to flip - The
billing_typecolumn can only ever hold one of these two values; any other value mentioned in third-party docs or older versions does not apply to Experts
Parameter bounds (enforced server-side)
The following constraints are enforced by the API layer’s schema. Out-of-range values return 400 — they are never silently clamped:
The price is an integer and does not accept decimals. Entering 99,901 is rejected:
How trial turns resolve
Trial turns resolve in two layers, with the Expert-level value taking precedence over the global one:
So “entering 0 means no trial” is wrong — entering 0 delegates to the global default, and users still get 3 turns. To genuinely disable trials you must set
allowTrial to 0:
How to configure it
1
Open the Expert editor in Studio
Open your Expert and switch to the “Billing” tab.
2
Enter the price
0 for free; any positive integer for unlock. The billing type derives automatically — there is nothing else to select.
3
Configure the trial (only meaningful for unlock Experts)
Set
freeTrialPerUser (1–10) if you need a definite number of turns; turn off the “allow trial” switch to disable trials entirely. Trials do not apply to free Experts.4
Save and submit for review
Saving only writes the draft row. For an already-published Expert, a new price does not reach users until you publish a new version and it passes review; the old price stays live in the meantime.
Boundaries and failure states
I changed the price but the marketplace still shows the old one
I changed the price but the marketplace still shows the old one
This is by design, not a caching problem. For a PUBLISHED Expert, the public-facing surface reads the latest approved record in
expert_release, not the draft row you are editing. A price change takes effect only via “publish new version → review approved.” The old version stays live throughout review.Saving returns 409 while a submission is pending
Saving returns 409 while a submission is pending
That Expert already has a version under review (
pending_submission_id is non-null), which locks the draft row against edits. Withdraw the pending submission in Studio, or wait for the review outcome, before changing the price.Are existing purchasers affected by a price increase?
Are existing purchasers affected by a price increase?
No. An unlock is a one-time permanent entitlement; price changes apply only to new users afterwards.
If I switch a paid Expert to free, is past revenue clawed back?
If I switch a paid Expert to free, is past revenue clawed back?
No. Completed unlock transactions and already-credited diamond revenue are unaffected by later price changes.
Does buying my own Expert count as revenue?
Does buying my own Expert count as revenue?
No. Creator self-purchases are excluded from revenue to prevent gaming.
Verifying your configuration
After the release passes review, open the Expert’s marketplace page in a private window using an account that is not yours, and check each item:- The price on the marketplace card matches what you entered (free Experts show “Free,” not “0 credits”)
- Start a conversation; when the trial turns run out, an unlock prompt appears with the turn count you expected
- If you disabled trials, the very first message should require purchase, with no free turns at all
Your revenue
- Unlock (
UNLOCK) — each time a user unlocks, you receive diamond revenue at the share rate for your creator level - Free (
FREE) — no direct revenue; typically used as a funnel alongside paid Experts
Sources of truth
Verified 2026-08-11. Sources:
- Billing type derivation:
services/core/src/db/service/expert.ts - Parameter validation ranges:
services/core/src/routes/marketplace-expert/index.ts - Trial turn rules and the default of 3:
services/core/src/db/service/expert-trial.ts - The App product’s separate vocabulary:
packages/db/src/constants/billing-type.ts
expert_trial_turns is an ops-configurable platform setting; this page documents only the default and the fallback rule.Next steps
Publish to the Marketplace
Pricing set — time to go live
Revenue System
Share rates and level thresholds

