Hello Taranjeet Malik, Thanks for reaching out on Microsoft Q&A and really appreciate your patience while we looked into this.
Thanks for the detailed description of your setup that helps a lot.
Ievgen Zasid is correct on checking DNS resolution, NSG/UDR, and symmetric routing. Those are always the first things to validate in VNet-integrated APIM deployments, so credit where due.
Now, adding on top of that:
- APIM internal mode traffic limitation
In Internal VNet mode, the APIM data plane is only reachable through its private IP within the VNet (or peered VNets) or over private connectivity options such as ExpressRoute, VPN Gateway, or Application Gateway with private link.
So yes, what the Microsoft engineer said matches the documented behavior APIM will not respond to requests where the source appears as a public IP (like Cloudflare’s ranges) unless that traffic is properly routed into the private IP space of the VNet.
2. Why traffic doesn’t show up in APIM/App Insights
The fact that you see Azure Firewall “allow” logs but no hits at APIM or in VNet Flow Logs on the APIM subnet strongly suggests asymmetric routing or that the traffic never actually resolves to APIM’s private IP. Since Cloudflare rewrites the source to its public ranges, APIM likely drops this traffic because it doesn’t match an internal/private source reachable over the VNet.
- Cloudflare with APIM internal mode — supported options
If you want to continue with Cloudflare as the frontend, you’ll typically need one of these approaches:
- Place an Application Gateway (with WAF) or Azure Front Door Premium (with Private Link to APIM) between Cloudflare and APIM. These can terminate TLS at the edge and forward to APIM’s private IP.
- Alternatively, if ExpressRoute is used, ensure Cloudflare can forward to APIM’s private IP address (not the control plane public IP). This usually requires a Cloudflare-to-Azure setup that supports private routing, which isn’t the default SaaS proxying model.
- Tier differences (Developer/Consumption vs. v2 tiers)
There’s no tier where an Internal mode APIM suddenly starts accepting traffic from public IP sources. The behavior is consistent across v1/v2 SKUs. The difference between “classic” and “v2” tiers is mainly in networking architecture (availability zones, scaling, migration path), not this fundamental routing rule.
References:
Hope this helps clarify the behavior and next steps. Please let us know if you need further guidance. Thank you!