Heat 1 tablespoon oil in a large sauté pan over medium.
Add 1 teaspoon turmeric, ½ teaspoon cardamom, ½ teaspoon cinnamon and ½ teaspoon cloves; cook 30 seconds. Add 1 chopped onion and 1 teaspoon kosher salt and cook, stirring frequently, until starting to soften, 4 minutes.
Add 1 tablespoon garlic, 1 tablespoon ginger, and 1 chopped serrano; cook 2 minutes.
Stir in 1 diced tomato and cook 1 minute.
Add ½ cup cilantro and cook 3 minutes; deglaze with 1 tablespoon vinegar, scraping up any browned bits. Cook until evaporated then remove from heat.
Transfer mixture to a blender and blend until a smooth curry paste is formed.
Add 3 tablespoons curry paste to a large bowl with ground 1 pound chicken, 2 cups chopped spinach, remaining ½ cup cilantro and ¼ teaspoon salt. Form into 24 meatballs using a #40 scoop or about 1 ½ tablespoons meat mixture per meatball.
Heat remaining 1 tablespoon oil in now-empty sauté pan over medium. Add meatballs in an even layer and cook until browned on all sides, about 10 minutes (you may need to do this in batches to avoid crowding the pan).
Meanwhile, add 1 can coconut milk (or 1 cup yogurt) to blender with remaining curry paste and blend until smooth.
Add curry sauce to pan with meatballs, bring to a low simmer and cook until meatballs are cooked through, 5–8 minutes.
Season with salt to taste. Serve with cooked brown rice, jeera rice, phulka (roti), or naan and fresh cilantro.