How prices work
The API computes sell prices the way the game does, to the copper, and checks itself against the prices the game
computed for every recipe, aging and quality. 1 silver is 100 copper and 1 gold is 100 silver; every amount comes
as copper plus a display string.
GET /v1/items/milk-stout/price?ingredients=expensive&aging=grand_reserve&quality=superior
{
"method": "recipe",
"per_serving": { "copper": 1173, "display": "11s 73c" },
"steps": [
{ "step": "base", "copper": 669 },
{ "step": "aging", "copper": 869, "add_copper": 200 },
{ "step": "quality", "copper": 1173, "multiplier": 1.35 }
],
"verified_by_game": true
}
The steps
- Base price per serving: the value of the ingredients plus the recipe's labor cost, divided by the
servings the recipe makes. It is recursive: malt and wort are priced with the same rule. When the recipe takes
"any malt",
ingredients=cheapestorexpensivedecides which one counts. - Aging adds 10 % (young), 20 % (reserve) or 30 % (grand reserve) of the base, for products that can age.
- Crafter quality multiplies by 1.15 (advanced) or 1.35 (superior).
- Perks from the menu pages raise the price of their category:
perks=beer:10,dessert:5. Accepted names:starter,meat,vegetables,fish,pasta_rice,broth,dessert,cocktail,beer,liqueur.
The game drops the fractions of a copper at each step, and so does the API.
Fields worth knowing
verified_by_game:truewhen the game computed the same value;nullfor combinations it did not compute.playable: the game's "cheapest" picks the cheapest grain for every malt even when the recipe asks for a specific one.playable.per_servingis the price a player can really reach.method:recipe,legacy(old recipes priced by an older formula) orraw(a fixed value).
Customer trends and the menu price slider are not included: they depend on the state of a save.