The answer here works for a single project, Azure DevOps Rest API - Unable To Create New Iteration
But fails when you loop through multiple projects as it seems the way the the API works in the link above it creates an iteration which has a name which is unique across all projects, rather than an iteration name that can be used across multiple projects.
I've come to the conclusion that this isn't possible reading through all the docs / info I can find online. So checking to see if anyone here has found a solution to this. And for this requirement, the iteration names need to be identical across all projects due to reasons I won't bore you with here. This feature is available via the user interface when adding an iteration, so seems odd that it doesn't work via the APIs.
Error Message:
{
"$id": "1",
"innerException": null,
"message": "VS402371: Classification node name Sprint 2020-06-24 is already in use by a different child of parent classification node {GUID removed}. Choose a different name and try again.",
"typeName": "Microsoft.TeamFoundation.WorkItemTracking.Server.Metadata.ClassificationNodeDuplicateNameException, Microsoft.TeamFoundation.WorkItemTracking.Server",
"typeKey": "ClassificationNodeDuplicateNameException",
"errorCode": 0,
"eventId": 3200
}