{"slug":"opor-ayam","title":"Opor Ayam","region":"Java","cuisine":"Indonesian","course":"Main","protein":"Chicken","dietary":["halal-friendly"],"allergens":["coconut","candlenut"],"tags":["coconut","chicken","Eid","family"],"culture":{"code":"ID","regionLabel":"Java","tasteProfile":"Gentle coconut, candlenut body, coriander, lemongrass, soft chicken.","culturalCue":"Mild family-table cooking often served with ketupat or lontong.","dataCue":"Good for festive-menu planning because it connects chicken, rice cake, sambal, and sides."},"promise":"Keep coconut sauce silky and aromatic.","difficulty":"Intermediate","prep":"25 min","cook":"50 min","total":"1 hr 15 min","servings":"4 servings","spice":1,"bumbuBase":"bumbu putih, candlenut, coriander, coconut milk","verification":{"status":"editorial-review","kitchenTested":false,"decisiveVisualsReal":false,"namedTester":null,"testDate":null,"indexableDiagnosticEvidence":false,"missing":["continuous real cook","not-ready/ready/too-far photographs","named tester","independent second test"]},"ingredients":[{"id":"chicken-opor","name":{"en":"chicken pieces","id":"potongan ayam"},"role":"braised protein","group":"protein","amount":"1 kg","source":{"indonesia":"pasar poultry stall","australia":"supermarket bone-in chicken pieces"}},{"id":"shallot-opor","name":{"en":"shallots","id":"bawang merah"},"role":"sweet base for bumbu putih","group":"fresh","amount":"100 g","source":{"indonesia":"pasar or supermarket","australia":"Asian grocer or supermarket shallots"}},{"id":"garlic-opor","name":{"en":"garlic","id":"bawang putih"},"role":"savoury base that must turn glossy","group":"fresh","amount":"30 g","source":{"indonesia":"pasar or supermarket","australia":"any supermarket"}},{"id":"candlenut","name":{"en":"candlenut","id":"kemiri"},"role":"creamy body for bumbu putih","group":"spices","amount":"5 nuts","source":{"indonesia":"pasar spice stall","australia":"Indonesian grocer"},"warning":"Toast or fry in paste; do not eat raw candlenut."},{"id":"coriander-opor","name":{"en":"coriander seed","id":"ketumbar"},"role":"warm spice under the coconut sauce","group":"spices","amount":"2 tsp","source":{"indonesia":"pasar spice stall or supermarket","australia":"Asian grocer or supermarket spice aisle"}},{"id":"cumin-opor","name":{"en":"cumin","id":"jintan"},"role":"small warm accent in the gentle sauce","group":"spices","amount":"0.5 tsp","source":{"indonesia":"pasar spice stall or supermarket","australia":"Asian grocer or supermarket spice aisle"}},{"id":"lemongrass-opor","name":{"en":"lemongrass","id":"serai"},"role":"fresh aroma through the coconut braise","group":"fresh","amount":"2 stalks","source":{"indonesia":"pasar herb stall","australia":"Asian grocer or supermarket herb fridge"}},{"id":"galangal-opor","name":{"en":"galangal","id":"lengkuas"},"role":"piney warmth in the braising aromatics","group":"fresh","amount":"30 g","source":{"indonesia":"pasar herb stall","australia":"Asian grocer freezer or fresh produce fridge"},"swap":"ginger only if galangal is impossible"},{"id":"coconut-opor","name":{"en":"coconut milk","id":"santan"},"role":"silky sauce","group":"pantry","amount":"600 ml","source":{"indonesia":"fresh or boxed santan","australia":"Asian grocer cans"}},{"id":"ketupat","name":{"en":"rice cake","id":"ketupat atau lontong"},"role":"starchy side for sauce","group":"pantry","amount":"600 g","source":{"indonesia":"pasar during holidays, supermarket packs","australia":"Asian grocer vacuum packs or steamed rice"}},{"id":"fried-shallot-opor","name":{"en":"fried shallots","id":"bawang goreng"},"role":"crisp garnish over the mild sauce","group":"garnish","amount":"30 g","source":{"indonesia":"warung, pasar, supermarket","australia":"Asian grocer jar or homemade"}},{"id":"salam-opor","name":{"en":"Indonesian bay leaf","id":"daun salam"},"role":"distinctive savoury leaf aroma in the pale braise","group":"fresh","amount":"3 leaves","source":{"indonesia":"pasar or supermarket herb pack","australia":"Indonesian grocer fridge or freezer"},"warning":"Ordinary bay leaf is not the same ingredient."},{"id":"salt-opor","name":{"en":"fine salt","id":"garam halus"},"role":"seasons the coconut sauce after the chicken is tender","group":"pantry","amount":"2 tsp","source":{"indonesia":"warung or supermarket","australia":"any supermarket"}},{"id":"palm-sugar-opor","name":{"en":"palm sugar","id":"gula aren"},"role":"small sweet balance in the mild coconut sauce","group":"pantry","amount":"1 tsp","source":{"indonesia":"pasar or supermarket","australia":"Indonesian or Asian grocer"}},{"id":"oil-opor","name":{"en":"neutral oil","id":"minyak netral"},"role":"fries the bumbu putih until glossy","group":"pantry","amount":"2 tbsp","source":{"indonesia":"warung or supermarket","australia":"any supermarket"}}],"method":[{"title":"Make bumbu putih","time":"10 min","detail":"Blend garlic, shallot, candlenut, coriander, and aromatics into a pale paste.","cue":"Smooth paste that smells nutty.","mistake":"Raw candlenut tastes chalky and should be cooked.","ingredientIds":["shallot-opor","garlic-opor","candlenut","coriander-opor","cumin-opor"]},{"title":"Fry until glossy","time":"8 min","detail":"Cook paste with lemongrass, salam leaf, and galangal until sweet-smelling.","cue":"Pale paste with shiny oil at the edges.","mistake":"Undercooked garlic dominates the sauce.","ingredientIds":["lemongrass-opor","galangal-opor","salam-opor","oil-opor"]},{"title":"Braise chicken gently","time":"35 min","detail":"Add chicken and coconut milk, then simmer without boiling hard.","cue":"Small bubbles and creamy yellow sauce.","mistake":"A hard boil splits the coconut fat.","ingredientIds":["chicken-opor","coconut-opor"]},{"title":"Season and rest","time":"12 min","detail":"Season with salt and a little sugar, then rest off heat.","cue":"Silky sauce coating chicken.","mistake":"Serving immediately can taste thin.","ingredientIds":["salt-opor","palm-sugar-opor"]},{"title":"Serve with rice cake","time":"10 min","detail":"Serve with ketupat, lontong, or rice and fried shallot.","cue":"Soft chicken with gentle coconut richness.","mistake":"Too much garnish can overpower the mild sauce.","ingredientIds":["ketupat","fried-shallot-opor"]}],"visuals":{"header":{"src":"/generated/ai/headers/opor-ayam.jpg","alt":"Opor Ayam finished-dish reference","role":"finished-dish reference","evidenceStatus":"prototype-placeholder"},"sequence":[{"shotId":"opor-ayam-step-1","position":1,"src":"/generated/ai/method-steps/opor-ayam-1-make-bumbu-putih.png","alt":"Opor Ayam: Make bumbu putih","evidenceStatus":"prototype-placeholder","title":"Make bumbu putih","cookDuration":"10 min","action":"Blend garlic, shallot, candlenut, coriander, and aromatics into a pale paste.","visualCue":"Smooth paste that smells nutty.","avoid":"Raw candlenut tastes chalky and should be cooked.","suggestedClipSeconds":6,"framing":"close instructional cooking frame"},{"shotId":"opor-ayam-step-2","position":2,"src":"/generated/ai/method-steps/opor-ayam-2-fry-until-glossy.png","alt":"Opor Ayam: Fry until glossy","evidenceStatus":"prototype-placeholder","title":"Fry until glossy","cookDuration":"8 min","action":"Cook paste with lemongrass, salam leaf, and galangal until sweet-smelling.","visualCue":"Pale paste with shiny oil at the edges.","avoid":"Undercooked garlic dominates the sauce.","suggestedClipSeconds":6,"framing":"close instructional cooking frame"},{"shotId":"opor-ayam-step-3","position":3,"src":"/generated/ai/method-steps/opor-ayam-3-braise-chicken-gently.png","alt":"Opor Ayam: Braise chicken gently","evidenceStatus":"prototype-placeholder","title":"Braise chicken gently","cookDuration":"35 min","action":"Add chicken and coconut milk, then simmer without boiling hard.","visualCue":"Small bubbles and creamy yellow sauce.","avoid":"A hard boil splits the coconut fat.","suggestedClipSeconds":6,"framing":"close instructional cooking frame"},{"shotId":"opor-ayam-step-4","position":4,"src":"/generated/ai/method-steps/opor-ayam-4-season-and-rest.png","alt":"Opor Ayam: Season and rest","evidenceStatus":"prototype-placeholder","title":"Season and rest","cookDuration":"12 min","action":"Season with salt and a little sugar, then rest off heat.","visualCue":"Silky sauce coating chicken.","avoid":"Serving immediately can taste thin.","suggestedClipSeconds":6,"framing":"close instructional cooking frame"},{"shotId":"opor-ayam-step-5","position":5,"src":"/generated/ai/method-steps/opor-ayam-5-serve-with-rice-cake.png","alt":"Opor Ayam: Serve with rice cake","evidenceStatus":"prototype-placeholder","title":"Serve with rice cake","cookDuration":"10 min","action":"Serve with ketupat, lontong, or rice and fried shallot.","visualCue":"Soft chicken with gentle coconut richness.","avoid":"Too much garnish can overpower the mild sauce.","suggestedClipSeconds":6,"framing":"finished plate, 45-degree editorial frame"}],"videoBlueprint":{"version":1,"order":"strict","defaultAspectRatios":["9:16","16:9"],"transition":"clean cut on visible state change","narrationSource":"method.action","cueOverlaySource":"method.visualCue","safetyNote":"Generated media must never override measured temperatures, allergen notes, or the written method."}},"sourcing":{"melbourne":["Best source: use an Indonesian or broader Asian grocer for shallots, garlic, candlenut; buy chicken pieces, coconut milk, rice cake from a supermarket or butcher if quality is better there.","Hard-to-find watch: ask for the Bahasa names (bawang merah, bawang putih, kemiri) and keep candlenut close to the recipe because it changes the identity of Opor Ayam.","Acceptable swaps: galangal: ginger only if galangal is impossible.","Do not swap lightly: candlenut, Indonesian bay leaf carries the dish cue and should stay close to the recipe.","Fresh vs packaged: buy shallots, garlic, lemongrass fresh or frozen from grocers; packaged candlenut, coriander seed, cumin is fine when labels are clean and dates are current.","Storage: refrigerate fresh aromatics and proteins, keep dry spices sealed, and store opened sauces according to the label before the next cook.","Price confidence: medium-high; pantry staples repeat across recipes, while specialty items are the budget swing.","Weeknight shortcut: choose the ketupat bowl path, then keep the same pan cue: Keep coconut sauce silky and aromatic."],"jakarta":["Best source: pasar stalls are the first stop for bawang merah, bawang putih, kemiri; use supermarkets for sealed pantry items, coconut products, noodles, and sauces.","Hard-to-find watch: check freshness and supplier trust for bawang merah, bawang putih, kemiri, especially when the ingredient defines the dish.","Acceptable swaps: galangal: ginger only if galangal is impossible.","Do not swap lightly: candlenut, Indonesian bay leaf carries the Java cue for Opor Ayam; change it only after you understand the visual stage.","Fresh vs packaged: buy herbs and aromatics fresh when possible, but packaged pantry staples are fine if the aroma is clean and the date is current.","Storage: keep herbs dry and cool, chill proteins quickly, and store opened santan, sauces, or spice pastes safely after shopping.","Price confidence: medium-high; pasar produce is usually predictable, but beef, seafood, nuts, and holiday sides can move.","Weeknight shortcut: use local delivery for routine staples, then buy shallots, garlic, lemongrass fresh when the pan cue depends on aroma."]},"provenance":[{"sourceName":"Bango - Resep Opor Ayam Kampung","sourceUrl":"https://www.bango.co.id/r/resep-opor-ayam-kampung%2C-menu-andalan-favorit-keluarga.html/258107","sourceType":"recipe-reference","confidence":"medium","method":"Cross-checks chicken, santan, bumbu putih, candlenut, coriander, cumin, ginger, and gentle coconut simmering.","supports":["coconut braise","bumbu putih","gentle simmer"],"caveat":"Bumbu Lens keeps the warning on split santan and heat control because texture is the common home-cook failure.","status":"external-source","reviewedOn":"2026-07-10"},{"sourceName":"Midori / Wikimedia Commons, CC BY-SA 3.0","sourceUrl":"https://commons.wikimedia.org/wiki/File:Opor_ayam.JPG","sourceType":"visual-source","status":"external-source","confidence":"limited","reviewedOn":"2026-07-10","method":"Used as a finished-dish visual reference only.","supports":["finished-dish appearance","image credit boundary"],"caveat":"A finished-dish image does not validate ingredient quantities, timing, safety, or the method sequence."},{"sourceName":"Bumbu Lens editorial method audit","sourceUrl":null,"sourceType":"internal-audit","status":"internal-review","confidence":"medium","reviewedOn":"2026-07-10","method":"Reviewed Opor Ayam as an ordered cook flow with visual cues, common mistakes, and recovery notes.","supports":["method sequence","visual checkpoints","mistake and recovery notes"],"caveat":"Use this as editorial guidance; run a tested-kitchen pass before publishing nutrition, safety guarantees, or commercial pack quantities."},{"sourceName":"Bumbu Lens Melbourne/Jakarta sourcing heuristic","sourceUrl":null,"sourceType":"local-sourcing","status":"needs-reverification","confidence":"medium","reviewedOn":"2026-07-10","method":"Mapped ingredient groups to likely Melbourne grocer, supermarket, butcher, pasar, and Jakarta supermarket paths.","supports":["Melbourne sourcing","Jakarta sourcing","volatile availability boundary"],"caveat":"Ingredient availability, price, and store stock change; verify with local grocers before travel, bulk shopping, or holiday cooking."}],"faq":[{"question":"Can opor ayam be spicy?","answer":"Traditional opor is mild; serve sambal on the side instead of adding chilli to the pot."},{"question":"How do I stop coconut milk splitting?","answer":"Keep the simmer gentle and stir often once coconut milk is added."},{"question":"What is the decisive ready cue for Opor Ayam?","answer":"Keep coconut sauce silky and aromatic. Look for silky coating on chicken: Sauce thickens slightly after heat is off."},{"question":"What should I do if Opor Ayam misses its cue?","answer":"A hard boil splits the coconut fat. Lower the heat immediately, skim or stir gently, and continue at a small simmer until the surface calms."},{"question":"How should I scale Opor Ayam?","answer":"Scale the measured ingredients with the serving count, then scale the vessel or work in batches. Keep the same visual finish - silky coating on chicken - rather than forcing the original timer."},{"question":"Which substitutions are tested for Opor Ayam?","answer":"galangal: ginger only if galangal is impossible"},{"question":"Which Opor Ayam ingredients should not be swapped casually?","answer":"candlenut: Toast or fry in paste; do not eat raw candlenut.; Indonesian bay leaf: Ordinary bay leaf is not the same ingredient."}],"freshness":{"lastReviewed":"2026-07-10","stableFields":["dish identity","method sequence","visual cues","ingredient roles"],"volatileFields":["city availability","price confidence","store-specific sourcing"],"sourcingPolicy":"Use Bumbu Lens city guidance as a shopping route, then verify availability with local grocers before travel or bulk purchasing."},"schemaVersion":"1.0","entity":{"type":"recipe","id":"opor-ayam"},"publication":{"status":"editorial-review","canonicalIndexable":false},"canonicalUrl":"https://www.bumbulens.com/recipes/opor-ayam","dataUrl":"https://www.bumbulens.com/recipes/opor-ayam/data.json","inLanguage":"en-AU","links":{"self":{"href":"https://www.bumbulens.com/recipes/opor-ayam/data.json","mediaType":"application/json"},"canonical":{"href":"https://www.bumbulens.com/recipes/opor-ayam","mediaType":"text/html"}},"actions":[{"id":"read_recipe_data","actor":"agent","label":"Read the recipe entity","method":"GET","href":"https://www.bumbulens.com/recipes/opor-ayam/data.json","mediaType":"application/json"},{"id":"view_recipe","actor":"human","label":"View Opor Ayam","method":"GET","href":"https://www.bumbulens.com/recipes/opor-ayam","mediaType":"text/html"},{"id":"start_guided_cook","actor":"human","label":"Start guided cook for Opor Ayam","method":"GET","href":"https://www.bumbulens.com/cook/opor-ayam","mediaType":"text/html"},{"id":"build_shopping_list","actor":"human","label":"Build the Opor Ayam shopping list","method":"GET","href":"https://www.bumbulens.com/recipes/opor-ayam/shopping","mediaType":"text/html"}]}