A cloud-based identity and access management service for securing user authentication and resource access
Hi Hai,
Taking your sixth question first, because I think it is the one that matters and it has a documented answer: no, POST /invitations is not the intended path for customer onboarding in an External ID tenant.
The invitations API belongs to B2B collaboration, which is a workforce tenant feature for inviting partners and vendors as guests. An External ID tenant is CIAM, and the supported way to bring customers in is a self-service sign-up user flow, which creates member accounts rather than guests. So what you have built is a workforce pattern running inside a customer tenant.
I cannot prove that is what triggers the block, and I will not pretend otherwise. But it would explain something your own testing already shows: the rate controls did not help. You checked for existing addresses, stopped retrying, went sequential, and stopped on the first 403, and new tenants still get blocked. That is not how a rate limit behaves. It is how an anti-abuse signal behaves when the shape of the activity is unexpected for that kind of tenant.
It is worth knowing that you are the fourth report of this I have seen in about ten weeks, and the four together say something none of them says alone:
Paul Stirpe, July: brand new tenant, around ten guests invited by hand from the portal, then blocked. He reproduced it deliberately. https://learn.microsoft.com/en-us/answers/questions/5960612/why-is-my-tenant-suddenly-not-allowing-me-to-invit
Jorrit Wagenaar, September: tenant over four months old, eleven invitations in a single day from the portal, blocked ever since. https://learn.microsoft.com/en-us/answers/questions/6005246/error-when-inviting-external-users-in-ms-azure-use
Samuel Carswell, September: bulk import through Graph on a production directory, blocked mid-import with the same message you are getting. https://learn.microsoft.com/en-us/answers/questions/6007216/invitations-are-blocked-for-this-directory-due-to
Different volumes, different tenant ages, portal in two cases and Graph in the other two, same outcome. So there is no threshold number to stay under, which is the answer to your fifth question even though it is not the answer you wanted.
Two other things from those threads that bear on what you asked. Jorrit's block has been in place for three months, so this does not appear to time out on its own, which matters for your point about operational sustainability. And the portal reports it as a generic "Insufficient privileges" error rather than the suspicious-activity message, which is why several people spend days checking role assignments. You are seeing the real message because you are going through Graph.
On your third question, whether the same application, admin account or Function outbound IP can get multiple tenants flagged: I do not know, and I have not seen it documented anywhere. But you are the only one of the four who has reproduced this across multiple tenants while holding the app, the admin account and the egress IP constant, so your own setup is the best evidence anyone has on that, and it is worth putting exactly that way to support.
If you do move to a sign-up user flow, it would be genuinely useful to report back here whether the blocks stop. Between the four threads there is still no documented fix, and that would be the closest thing to one.