Coût total du lot de recette
Quatre ingrédients pour une fournée de 4 parts, chacun avec sa quantité et son prix unitaire, donnent un total de 7,7 et 1,925 par part dans votre monnaie. Réutilisez les mêmes prix et changez seulement les quantités pour agrandir la recette. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Portions
- 4
- Nombre d'ingrédients
- 4
- Coût total
- 7,7
- Coût par portion
- 1,925
Cuisiniers à domicile, entreprises de meal-prep, cuisines de traiteur et étudiants en coût alimentaire ont tous besoin de la même réponse pratique : combien coûte le lot entier, et combien coûte chaque portion une fois le rendement en assiettes connu. Ce calculateur de coût total de lot accepte chaque ingrédient comme quantité et prix unitaire, multiplie les lignes, somme le total du lot et divise par un nombre de portions strictement positif afin que vous puissiez tarifer des menus, comparer des recettes ou figer un budget courses avant d’acheter. Contrairement à un outil par portion qui attend des totaux de ligne déjà additionnés, cette capacité sépare quantité et coût unitaire pour réutiliser les prix du garde-manger entre recettes et ne modifier que les quantités.
Quand calculer le coût d'une fournée entière
Traiteurs indépendants et ghost kitchens tarifent plateaux et menus livraison à partir de quantités réelles et de prix unitaires fournisseurs, non d’un total sur un post-it. Étudiants en cuisine et cours de food cost ont besoin d’un oracle déterministe qui rejette zéro portion au lieu de renvoyer l’infini ou un NaN silencieux qu’un correcteur défectueux traiterait comme un succès.
Blogs de recettes et pages SEO qui ciblent le calcul du coût total d’un lot de recette bénéficient d’un parcours navigateur gratuit identique octet par octet au parcours d’automatisation payant sur le même module pur. L’entrée invalide n’est pas facturée.
Cas d’usage
Tarification traiteur et plateaux
Saisissez quantité et prix unitaire fournisseur pour chaque ingrédient d’un plateau complet, fixez servings au nombre d’assiettes, et cotisez le coût total du lot plus le coût par portion.
Meal-prep et recettes mises à l’échelle
Réutilisez une table de coûts unitaires du garde-manger entre recettes, ne changez que quantités et portions, et comparez le food cost en passant de la taille familiale au volume.
Questions fréquentes
Que se passe-t-il si servings vaut zéro ou est négatif ?
Un nombre de portions non positif ne définit pas de coût par portion et n’est pas facturé.
La conversion monétaire est-elle incluse ?
La capacité multiplie uniquement quantités par coûts unitaires et divise par portions ; elle ne convertit ni monnaies ni systèmes de mesure.
Comment le coût par part est-il calculé ?
La quantité de chaque ingrédient est multipliée par son prix unitaire, les lignes sont additionnées pour obtenir le total de la fournée, puis ce total est divisé par le nombre de parts : 7,7 pour 4 parts donne 1,925.
Puis-je réutiliser les mêmes prix pour plusieurs recettes ?
Oui. Comme la quantité et le prix unitaire restent séparés, vous gardez votre tableau de prix et ne changez que les quantités et le nombre de parts, par exemple pour passer de 4 assiettes à 40.
Dans quelle unité saisir la quantité ?
Dans l'unité où vous achetez ou mesurez chaque ingrédient : kilos de farine, litres de lait ou œufs à la pièce. Le prix unitaire doit correspondre à une de ces mêmes unités.
Outils associés
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/batch-recipe-cost \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"ingredients":[{"name":"Flour","quantity":2,"unit_cost":1.25},{"name":"Eggs","quantity":6,"unit_cost":0.35},{"name":"Milk","quantity":1,"unit_cost":1.1},{"name":"Butter","quantity":0.25,"unit_cost":8}],"servings":4}'const res = await fetch("https://api.kit.forhosting.com/cook/batch-recipe-cost", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"ingredients": [
{
"name": "Flour",
"quantity": 2,
"unit_cost": 1.25
},
{
"name": "Eggs",
"quantity": 6,
"unit_cost": 0.35
},
{
"name": "Milk",
"quantity": 1,
"unit_cost": 1.1
},
{
"name": "Butter",
"quantity": 0.25,
"unit_cost": 8
}
],
"servings": 4
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/cook/batch-recipe-cost",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"ingredients": [
{
"name": "Flour",
"quantity": 2,
"unit_cost": 1.25
},
{
"name": "Eggs",
"quantity": 6,
"unit_cost": 0.35
},
{
"name": "Milk",
"quantity": 1,
"unit_cost": 1.1
},
{
"name": "Butter",
"quantity": 0.25,
"unit_cost": 8
}
],
"servings": 4
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/cook/batch-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":2,"unit_cost":1.25},{"name":"Eggs","quantity":6,"unit_cost":0.35},{"name":"Milk","quantity":1,"unit_cost":1.1},{"name":"Butter","quantity":0.25,"unit_cost":8}],"servings":4}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"ingredients":[{"name":"Flour","quantity":2,"unit_cost":1.25},{"name":"Eggs","quantity":6,"unit_cost":0.35},{"name":"Milk","quantity":1,"unit_cost":1.1},{"name":"Butter","quantity":0.25,"unit_cost":8}],"servings":4}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/cook/batch-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": 2,
"unit_cost": 1.25
},
{
"name": "Eggs",
"quantity": 6,
"unit_cost": 0.35
},
{
"name": "Milk",
"quantity": 1,
"unit_cost": 1.1
},
{
"name": "Butter",
"quantity": 0.25,
"unit_cost": 8
}
],
"servings": 4
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "cook.batch_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.
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. |
Notes techniques
Une validation en échec — surtout des portions nulles ou négatives — renvoie invalid_input et n’est pas facturée.
Comment le coût du lot se construit à partir de la quantité et du coût unitaire
Le total d’un lot de recette n’est pas un chiffre unique saisi de mémoire ; c’est la somme de chaque ligne d’ingrédient du service complet. Les libellés name optionnels n’affectent pas le calcul ; ils rendent seulement la liste des lignes lisible lorsque vous affichez les résultats à côté d’une liste de courses ou d’une fiche menu. Les listes vides et plus de deux cents lignes sont rejetées afin qu’un import incontrôlé n’épuise pas le budget du worker. La chaîne formula renvoyée à chaque succès rappelle le contrat en trois étapes : coût de ligne égal à quantité fois coût unitaire, coût total égal à la somme des lignes, coût par portion égal au total sur les portions. Pour chaque ligne vous fournissez une quantité finie non négative dans l’unité d’achat ou de mesure — kilogrammes de farine, litres de lait, pièces d’œufs, bouteilles d’huile — et un unit_cost fini non négatif, prix d’une de ces unités dans une seule devise. La capacité multiplie quantity par unit_cost pour obtenir le line_cost de la ligne, puis additionne tous les line_cost pour obtenir total_cost du lot entier. Le coût par portion est total_cost divisé par servings, de sorte que la même liste d’épicerie s’exprime en coût de plateau traiteur et en coût par assiette sans ressaisir les prix.
Contrat d’entrée, règle des portions et forme de la réponse
Exemple : farine deux unités à un virgule vingt-cinq, œufs six à zéro virgule trente-cinq, lait un à un virgule un, beurre zéro virgule vingt-cinq à huit, pour quatre portions, donne des coûts de ligne deux virgule cinq, deux virgule un, un virgule un et deux, un total de lot sept virgule sept et un coût par portion un virgule neuf deux cinq. Champs manquants, valeurs non finies et quantités ou coûts unitaires hors limite absolue échouent sans débiter le compte. Envoyez un corps JSON avec deux champs obligatoires. ingredients est un tableau non vide d’objets ; chaque objet doit inclure quantity et unit_cost comme nombres finis non négatifs, et peut inclure un name optionnel. servings est un nombre fini strictement supérieur à zéro : zéro et les valeurs négatives échouent avec invalid_input car un lot sans assiettes ne définit pas de coût par portion. Les alias acceptés incluent items, list et lines pour le tableau, et portions, people, yield et serves pour le nombre de portions, afin que tableurs et constructeurs de formulaires conservent leurs noms de colonnes. En succès la réponse renvoie ingredient_count et un tableau ingredients normalisé avec index, name, quantity, unit_cost et line_cost pour chaque ligne ; servings arrondi pour un JSON stable ; total_cost ; cost_per_serving ; une chaîne formula ; un message court pour les bannières d’interface ; et un tableau steps qui parcourt chaque multiplication et la division finale. Conservez une seule devise pour tous les unit_cost ; le calculateur ne convertit ni monnaies ni systèmes d’unités : il multiplie et divise uniquement les nombres que vous envoyez.
Où une API de coût total de lot de recette trouve sa place
Marques de meal-prep et cuisines scolaires suivent le coût du lot et le coût par portion lorsqu’elles passent une recette de base de quatre à quarante assiettes, en ne changeant que les quantités tout en réutilisant la même table de unit_cost. Les applications de budget courses peuvent appeler l’API après un scan code-barres qui résout les prix unitaires, puis stocker total_cost et cost_per_serving à côté du nombre d’invités prévu.
Cas d'intégration
Cours de cuisine et notation LMS
Notez les devoirs de food cost avec un total et un coût par portion déterministes qui rejettent zéro portion comme invalid_input au lieu de renvoyer l’infini.
Questions techniques
Comment calculer le coût total d’un lot de recette à partir des ingrédients ?
Envoyez un tableau ingredients d’objets avec quantity et unit_cost (name optionnel), plus un servings positif. L’API multiplie chaque ligne, somme le lot et renvoie total_cost et cost_per_serving.
Faut-il saisir des coûts de ligne déjà additionnés ou quantité et prix unitaire ?
Saisissez quantity et unit_cost séparément. Le calculateur construit chaque line_cost comme quantity × unit_cost pour réutiliser les prix unitaires entre recettes sans prémultiplier à la main.
Combien coûte le calculateur de coût total de lot de recette ?
L’outil navigateur est gratuit. Les requêtes API utilisent le solde KIT prépayé à $0.002 par appel réussi ; l’entrée invalide n’est pas facturée.