Single placement with feedback

Place

VegetationMutationResult r = VegetationAPI.PlaceWithFeedback(area, position, treeType, seed);
if (r.affectedCount == 1)
    RegisterGeneratedObject(position, r.perType[0].typeId);

Scatter placement with rejected-count feedback

Paint

VegetationMutationResult r = VegetationAPI.PaintWithFeedback(area, center, 4f, flowerType, 80, seed);
Debug.Log($"Placed {r.affectedCount}/{r.requestedCount}; blocked/rejected {r.rejectedCount}");

Query before mutation

Count

VegetationInstanceCountResult nearby = VegetationAPI.GetVisibleInstanceCounts(area, center, 3f);
foreach (VegetationTypeCount item in nearby.perType)
    Debug.Log($"{item.typeId}: {item.count}");

4. Keep hot loops batched

Do not call query/report APIs every frame over huge radii. Use them at generation/gameplay decision points; use broad source generation for millions of ambient instances.