Marinate the chicken:
In a large bowl, combine the yogurt, ginger-garlic paste, turmeric, chili powder, garam masala, and salt. Add the chicken pieces and mix well to coat. Cover and refrigerate for at least 30 minutes, or overnight for best results.
Cook the rice:
In a large pot, bring water to a boil with cloves, cardamom, cinnamon, bay leaf, and salt. Add the soaked basmati rice and cook until 70% done (parboiled). Drain the rice and set aside.
Cook the chicken:
Heat oil or ghee in a deep skillet or pot over medium heat. Add the cumin seeds and let them sizzle. Add the sliced onions and cook until golden brown. Stir in the tomatoes and cook until softened.
Layer the biryani:
Add the marinated chicken to the skillet and cook until the chicken is partially cooked, about 8–10 minutes. Layer the parboiled rice over the chicken mixture. Sprinkle with chopped cilantro, mint, and saffron milk if using.
Steam the biryani:
Cover the pot with a tight-fitting lid. Reduce the heat to low and cook for 20–25 minutes, allowing the flavors to meld and the rice to fully cook.
Serve:
Gently fluff the rice with a fork before serving. Serve hot with raita, a simple cucumber yogurt sauce, or a fresh salad.