Make birista (crispy onions): deep fry sliced onions until golden brown and crispy. Drain on paper. These are the flavour base of the biryani.
Marinate chicken: mix yoghurt, ginger-garlic paste, biryani masala, half the birista, half the mint and coriander, and salt. Marinate for 2 hours or overnight.
Par-cook the rice: boil water with salt and whole spices. Add soaked rice and cook until 70% done — it should still have a slight bite. Drain and set aside.
Layer the biryani: spread the marinated chicken at the bottom of a heavy pot. Layer par-cooked rice on top. Scatter remaining birista, mint, and coriander. Drizzle saffron milk and ghee over everything.
Seal the pot tightly with a lid (use foil under the lid to trap steam). Cook on high heat for 5 minutes, then reduce to the lowest flame and cook for 25-30 minutes.
Open the seal carefully. Gently mix from the sides without breaking the rice. Serve hot with raita and sliced onions.