Coût total d’une recette
Le calculateur de coût total d’une recette additionne la contribution de chaque ingrédient.
Lancer gratuitement
Indiquez la quantité réellement utilisée et le prix d’une unité correspondante : l’outil multiplie ces valeurs, puis totalise la recette. Il est particulièrement utile lorsque le prix d’un emballage ne révèle pas le coût de la portion consommée. Le calcul est déterministe, transparent et adapté aux budgets domestiques, devis de traiteur, fiches de boulangerie, menus ou automatisations par API.
Préparez des quantités et des prix aux unités concordantes
Pour chaque ingrédient, saisissez la quantité employée et le prix d’une unité. Les deux valeurs doivent désigner la même unité. Si une recette utilise 0.5 kilogramme de farine, indiquez le prix au kilogramme ; pour quatre œufs, indiquez le prix par œuf. Convertissez au préalable le prix du conditionnement si nécessaire. Ainsi, un sac de 2 kilogrammes coûtant 6 correspond à 3 par kilogramme. Le nom est facultatif, mais il facilite la vérification et l’archivage des lignes. Les quantités et prix peuvent valoir zéro pour l’eau, les dons ou les articles de réserve auxquels vous choisissez de ne pas affecter de coût. Les valeurs négatives et les données qui ne sont pas des nombres finis sont refusées. Employez une seule devise sur toutes les lignes : le calculateur effectue l’arithmétique, mais ne convertit pas les monnaies et ne déduit pas les unités des noms.
Comprenez le calcul du total de la recette
Le coût d’une ligne est la quantité multipliée par le prix unitaire ; le total est la somme de toutes les lignes. Imaginons une pâte contenant 1.5 kilogramme de farine à 1.20 par kilogramme, quatre œufs à 0.35 chacun et 0.25 kilogramme de beurre à 6.40 par kilogramme. Ces lignes valent 1.80, 1.40 et 1.60 : la recette complète coûte donc 4.80 dans la devise choisie. La réponse fournit, pour chaque ingrédient, la quantité normalisée, le prix unitaire et le coût calculé, puis le total et une formule lisible. Ce détail permet de repérer un ingrédient onéreux ou de contrôler le résultat indépendamment. Un arrondi constant stabilise les résultats JSON entre environnements tout en conservant une précision suffisante. Aucune connexion réseau, base tarifaire, valeur aléatoire ou heure n’intervient : des entrées valides identiques donnent toujours la même sortie.
Exploitez le résultat pour le budget et la production
Le total représente les ingrédients consommés par toute la recette, et non la somme réglée en magasin ni un prix de vente conseillé. Un emballage peut coûter davantage que la portion utilisée, puisque le reste servira à une autre préparation. Le résultat n’intègre pas automatiquement la main-d’œuvre, l’énergie, l’emballage, la livraison, les pertes, les taxes, les frais généraux ou la marge. Ajoutez ces postes à votre méthode de tarification lorsqu’ils sont pertinents. Pour une production répétée, conservez vos prix unitaires normalisés, actualisez-les après un changement fournisseur, puis relancez la recette. Vous pouvez aussi comparer des variantes en modifiant une quantité ou un prix et en laissant les autres lignes fixes. Le calculateur du navigateur convient aux estimations rapides ; l’API coûte $0.002 par requête et permet un chiffrage reproductible dans les stocks, commandes et menus. Notez toujours la devise et les unités avec le résultat.
Cas d’usage
Chiffrer une fournée
Multipliez les quantités de farine, beurre, sucre et autres ingrédients par leurs prix unitaires avant de fixer le budget.
Comparer des variantes
Modifiez une quantité ou le prix unitaire d’un fournisseur, puis comparez le nouveau total à la formule d’origine.
Automatiser le coût des menus
Transmettez des lignes structurées par API et enregistrez un total déterministe dans votre processus de cuisine ou de traiteur.
Questions fréquentes
Combien coûte un calcul ?
Le tarif de l’API est de $0.002 par requête. Vous pouvez aussi utiliser gratuitement le calculateur dans votre navigateur.
Comment calcule-t-on le coût d’un ingrédient ?
La quantité est multipliée par le prix unitaire, puis toutes les lignes sont additionnées pour obtenir le total.
Les unités de quantité et de prix doivent-elles concorder ?
Oui. Une quantité en kilogrammes exige un prix au kilogramme ; des pièces exigent un prix par pièce.
Puis-je saisir une valeur négative ou du texte ?
Non. Quantités et prix doivent être des nombres finis supérieurs ou égaux à zéro ; sinon, une erreur de saisie est renvoyée.
Le total comprend-il main-d’œuvre, frais ou bénéfice ?
Non. Il additionne uniquement les ingrédients fournis. Ajoutez séparément main-d’œuvre, emballage, pertes, taxes, frais et marge.
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/cook/recipe-cost \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"ingredients":[{"name":"Flour","quantity":1.5,"unit_price":1.2},{"name":"Eggs","quantity":4,"unit_price":0.35},{"name":"Butter","quantity":0.25,"unit_price":6.4}]}'const res = await fetch("https://api.kit.forhosting.com/cook/recipe-cost", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"ingredients": [
{
"name": "Flour",
"quantity": 1.5,
"unit_price": 1.2
},
{
"name": "Eggs",
"quantity": 4,
"unit_price": 0.35
},
{
"name": "Butter",
"quantity": 0.25,
"unit_price": 6.4
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/cook/recipe-cost",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"ingredients": [
{
"name": "Flour",
"quantity": 1.5,
"unit_price": 1.2
},
{
"name": "Eggs",
"quantity": 4,
"unit_price": 0.35
},
{
"name": "Butter",
"quantity": 0.25,
"unit_price": 6.4
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/cook/recipe-cost", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"ingredients":[{"name":"Flour","quantity":1.5,"unit_price":1.2},{"name":"Eggs","quantity":4,"unit_price":0.35},{"name":"Butter","quantity":0.25,"unit_price":6.4}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"ingredients":[{"name":"Flour","quantity":1.5,"unit_price":1.2},{"name":"Eggs","quantity":4,"unit_price":0.35},{"name":"Butter","quantity":0.25,"unit_price":6.4}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/cook/recipe-cost", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"ingredients": [
{
"name": "Flour",
"quantity": 1.5,
"unit_price": 1.2
},
{
"name": "Eggs",
"quantity": 4,
"unit_price": 0.35
},
{
"name": "Butter",
"quantity": 0.25,
"unit_price": 6.4
}
]
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "cook.recipe_cost",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Limites
min_ingredients | 1 |
max_ingredients | 200 |
max_value | 1000000000000 |
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |