Preheat oven to 400°F (200°C). Spread bones in a single layer on a rimmed baking sheet and roast for 30–40 minutes, turning once halfway, until deeply browned and fragrant. (Optional for chicken; highly recommended for beef.)
Transfer roasted bones to a large stockpot and add the chopped onion, carrots, celery, smashed garlic, bay leaves, peppercorns, and apple cider vinegar. Let sit for 20–30 minutes before adding water.
Add enough cold filtered water to cover bones by about 2 inches (5 cm), then bring to a rolling boil over high heat, which usually takes 15–20 minutes.
As the broth boils, skim off any gray or brown foam with a ladle for the first 10–15 minutes, then reduce heat to low to maintain a very gentle simmer.
Simmer chicken bones for 12–24 hours, or beef bones for 24–48 hours, checking every few hours and adding water as needed to keep the bones submerged.
About 30 minutes before finishing, add a small handful of fresh parsley and a few sprigs of thyme if desired for a brighter, aromatic flavor.
Turn off heat, let cool 15–20 minutes, then ladle broth through a fine-mesh strainer into a large bowl; discard all solids and strain a second time through cheesecloth for extra clarity.
Refrigerate broth overnight, then remove the solidified fat layer from the top, taste, and season with sea salt starting with 1 teaspoon, adding more as needed.