Guides de migrationDepuis Cloudflare AI Gateway
Quitter Cloudflare AI Gateway quand rien ne vous y oblige
Il n'y a ici ni rachat, ni mode maintenance, ni avis d'abandon. AI Gateway est en disponibilité générale, a été activement développé tout au long de 2026, et son cœur est gratuit sur un compte que vous détenez déjà — la question à laquelle répond cette page n'est donc pas comment migrer, mais s'il faut le faire. Elle commence par trois chiffres que vous pouvez mesurer sur votre propre passerelle, dont deux disent de rester.
Les comptes INFRO sont en libre-service. Le catalogue, la documentation et le contrat d'API sont publics, la passerelle est déployée, et tout ce qui va au-delà de la v1 est marqué Plus tard. Offres et essai
Où en sont les choses
Rien ne vous y force
AI Gateway est en disponibilité générale et a été activement développé tout au long de 2026 — limites de dépenses en juin, User Insights en août. Le cœur est gratuit sur tout compte Cloudflare. Si une page vous dit un jour le contraire, vérifiez-la dans le journal des modifications plutôt que de la croire.
Le recouvrement est plus large qu'avant
Les deux produits se placent dans le chemin de la requête, tarifent chaque requête, attribuent les dépenses à un utilisateur ou à une équipe, refusent une requête à un plafond en dollars et exportent en OpenTelemetry. Il y a un an, cette comparaison opposait passerelle et plan de contrôle. Ce n'est plus le cas.
Une question tranche
Si quelqu'un doit défendre le chiffre du coût devant une personne qui ne l'a pas produit. Si personne ne le doit, la passerelle gratuite est le bon outil et ce guide devrait s'arrêter ici. Si quelqu'un le doit, c'est le sujet du reste de la page.
Chacune se mesure sur votre propre passerelle ou dans votre propre agenda, et chacune donne une réponse plutôt qu'une considération. Deux des trois tranchent en faveur de Cloudflare, et c'est la répartition honnête — la plupart des équipes qui lisent ceci devraient garder ce qu'elles ont.
Votre taux de succès du cache
L'analytique de votre passerelle, sur un mois qui semblait normal. Cloudflare la rapporte par passerelle.
C'est le point qui peut trancher à lui seul. INFRO a aussi un cache de réponses à correspondance exacte pour les complétions de chat, mais il démarre vide, est désactivé tant que vous ne l'activez pas, est indexé par projet et par environnement de clé, et ne stocke par défaut que des requêtes déterministes (température 0 ou un seed). Calculez quelle part de vos succès provenait de requêtes qui entrent dans ce cadre ; le reste devient des appels au fournisseur après une migration, facturés par votre fournisseur. Si cette part est grande, rester est la meilleure réponse et aucune fonctionnalité du reste de cette page ne pèse davantage.
Si Unified Billing est activé
Les paramètres de votre passerelle. Si Cloudflare achète votre inférence, c'est là que c'est indiqué.
S'il est activé, vous n'avez pas un problème de configuration, vous avez un problème d'achat. INFRO n'achète jamais d'inférence : partir signifie donc ouvrir votre propre compte chez chaque fournisseur que vous utilisez, ce qui prend autant de temps que l'intégration de vos fournisseurs. Renseignez-vous dès maintenant plutôt qu'en troisième semaine.
À quelle fréquence quelqu'un hors de l'ingénierie s'interroge sur ce chiffre
Pas un tableau de bord. Votre dernier trimestre de discussions avec la finance, les achats et la tarification.
Si la réponse est jamais, la passerelle gratuite est le bon outil et ce guide devrait s'arrêter ici — ce n'est pas une sortie polie, c'est la bonne recommandation. Un plan de contrôle mérite un abonnement au moment où un chiffre de coût doit être défendu devant quelqu'un qui ne l'a pas produit, et pas avant.
Cette section est placée avant les différences à dessein et, contrairement aux autres guides de cette série, elle ne vous oriente pas vers un troisième produit. Elle vous oriente vers celui que vous utilisez déjà.
Cette section se trouve volontairement au-dessus de la correspondance. Cloudflare AI Gateway est un bon produit qui ne coûte rien à exploiter, et l'issue correcte la plus fréquente de la lecture de cette page est que vous la fermiez et gardiez ce que vous avez. Il n'y a ici ni acquisition, ni mode maintenance, ni avis de dépréciation pour vous presser — les raisons ci-dessous ne sont pas des adoucissants avant une réfutation, elles sont la réponse chaque fois que l'une d'elles est vraie.
La migration vaut la peine d'être envisagée quand le chiffre du coût a un public : la finance qui demande pourquoi la facture des modèles a bougé, une marge côté client à tenir, plusieurs équipes qui partagent des fournisseurs et ne s'accordent pas sur qui a dépensé quoi. C'est là qu'un chiffre que personne n'a confronté à une facture cesse de suffire, et c'est la seule affirmation de cette page à laquelle la documentation de Cloudflare ne répond pas déjà.
Restez où vous êtes quand
- La passerelle fait son travail et personne ne pose de questions sur le chiffre. Un plan de contrôle mérite son prix quand quelqu'un hors de l'ingénierie doit agir sur le chiffre du coût. Si cela n'est pas arrivé, il ne l'a pas encore mérité.
- Il vous faut des garde-fous ou de la DLP sur le chemin de la requête. Cloudflare analyse le prompt et la réponse à la recherche de contenu nuisible, et peut bloquer ou signaler des données sensibles avant qu'elles n'atteignent un fournisseur. Les garde-fous d'INFRO fonctionnent par motifs (PII, secrets, vos termes, complétions de chat uniquement) ; les garde-fous par catégorie de sécurité de Cloudflare n'ont pas d'équivalent.
- Vous utilisez Workers AI, ou Cloudflare achète votre inférence via Unified Billing. INFRO n'exploite aucune inférence et n'en achète jamais : avant de migrer, il vous faudrait vos propres comptes chez chaque fournisseur, ce qui est une démarche commerciale et non de configuration.
- Votre routage dépend de branches conditionnelles ou de répartitions en pourcentage. Les routes d'INFRO sont des cibles par priorité ou pondérées sur vos propres connexions ; un if/else sur le contenu de la requête n'a pas d'équivalent et devrait passer dans votre application.
- Le cache de réponses porte une vraie charge sur des requêtes qu'INFRO ne mettrait pas en cache. Le cache d'INFRO ne couvre que les requêtes de complétion de chat à correspondance exacte, indexées par projet et par environnement de clé, et par défaut seulement les déterministes (température 0 ou un seed) ; toute requête hors de ce cadre retourne chez votre fournisseur après une migration.
- Être chez un seul fournisseur est le but. Une seule facture, un seul jeu de rôles de compte, une seule relation de support sont une raison légitime de choisir une passerelle de plateforme, et ajouter un second fournisseur la défait.
Si plus d'une de ces affirmations est vraie, fermez cette page. Nous préférons perdre l'évaluation que la gagner et être la mauvaise réponse six semaines plus tard.
Les objets de Cloudflare face aux nôtres, d'après leur documentation publique lue le 20 septembre 2026 et vérifiés par rapport à ce que la passerelle implémente réellement. Cinq lignes indiquent que nous n'avons rien ; ce sont celles à lire en premier.
| Cloudflare AI Gateway | Ce que cela y fait | Dans INFRO |
|---|---|---|
| Passerelledifférent | Un objet nommé sur votre compte Cloudflare. Il possède les journaux, le cache, les limites de débit et les règles de dépenses ; un second environnement signifie une seconde passerelle. | Il n'y a pas d'objet passerelle. Une organisation possède la politique et la facturation ; les projets, les clés et l'environnement d'une clé la délimitent. Un second environnement est une propriété de la clé et non un second endpoint. |
| `/compat/chat/completions`même forme | Chat compatible OpenAI sous https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_id}/compat, avec les modèles adressés sous la forme provider/model. | Chat compatible OpenAI sous https://api.infro.io/v1, avec les modèles adressés sous la forme vendor/model. Même client, même forme de requête et de réponse, y compris le streaming, les appels d'outils et les sorties structurées. |
| Chemins propres à chaque fournisseurdifférent | Un chemin par fournisseur qui transmet à l'API propre de ce fournisseur, si bien que chacun garde sa forme de requête native. | Une forme normalisée par modalité : /chat/completions, /images/generations, /images/edits, /audio/speech, /audio/transcriptions, et /videos, qui renvoie un job asynchrone. Les API natives des fournisseurs ne sont pas proxifiées — un appel écrit pour l'API Messages d'Anthropic ou le generateContent de Gemini doit passer à la forme compatible. |
| Clés de fournisseur stockéesdifférent | Clés détenues par passerelle avec alias, sélectionnées par requête avec un en-tête cf-aig-byok-alias, et utilisées avant Unified Billing quand les deux sont présents. | Connexions détenues par organisation, chiffrées, avec leur état de santé et leur dernière erreur visibles. Celle qui sert une requête est décidée par l'environnement de la clé et la route, pas par un en-tête envoyé par l'appelant. |
| Unified Billingrien | Cloudflare achète l'inférence auprès du fournisseur et vous la facture, avec des frais sur les crédits achetés. | Rien, délibérément. INFRO n'achète jamais d'inférence et ne prélève jamais de part des dépenses de modèles ; vos fournisseurs vous facturent directement à vos propres tarifs. Si Cloudflare achète actuellement le vôtre, il vous faut vos propres comptes fournisseurs avant qu'une migration soit possible. |
| `cf-aig-metadata`différent | Jusqu'à cinq entrées de type chaîne, nombre ou booléen par requête, envoyées comme en-tête, apparaissant dans les journaux et utilisables comme dimension de limite de dépenses. | Un objet metadata dans le corps de la requête, jamais transmis en amont : user_id, session_id, et autant de clés que vous voulez sous tags, filtrées dans le journal des requêtes sous la forme tag.<key>. Partout où vous définissez l'en-tête aujourd'hui, c'est une modification. |
| `cf-aig-custom-cost`différent | Vos tarifs négociés d'entrée, de sortie et de cache, envoyés par requête dans un en-tête, qui remplacent le coût public du modèle pour cet appel. | Tarifs enregistrés dans la console par modèle et, au besoin, par fournisseur, appliqués à toute requête correspondante, avec usage.price_source dans la réponse indiquant quel tarif a produit le chiffre. Inclus à partir de l'offre Team. |
| Limites de dépensesmême forme | Budgets en dollars sur une fenêtre glissante ou fixe, rattachés à un modèle, un fournisseur ou une métadonnée personnalisée, évalués avant l'appel au fournisseur, renvoyant 429 au plafond ou basculant vers un modèle moins cher. Jusqu'à 20 règles par passerelle. | Budgets au niveau de l'organisation, du projet, du membre et de la clé, évalués avant l'appel au fournisseur, renvoyant 402 budget_exceeded avec des seuils d'alerte que vous définissez. Rattachés au modèle d'objets plutôt qu'aux métadonnées, de sorte que le plafond d'un projet ne dépend pas de l'appelant qui pense à envoyer un en-tête. |
| Routage dynamiquedifférent | Un graphe de routes composé dans un éditeur visuel ou en JSON — branches conditionnelles sur le corps de la requête, les en-têtes ou les métadonnées, répartitions en pourcentage, nœuds de débit et de budget, publiés sans déploiement. Disponible sur l'endpoint compatible OpenAI. | Routes nommées avec cibles par priorité ou pondérées sur vos propres connexions, avec contrôle de santé et basculement avant le premier octet de la réponse. Il n'y a pas de branchement conditionnel sur le contenu de la requête ; une route if/else doit passer dans votre application. |
| `cf-aig-max-attempts`différent | Jusqu'à cinq tentatives avec un délai configurable et un backoff constant, linéaire ou exponentiel, défini par requête et fonctionnant avec n'importe quel endpoint de fournisseur. | Les nouvelles tentatives et le basculement sont une politique de route et non des en-têtes par requête : le comportement est configuré une fois dans la console et s'applique à chaque appelant de cette route. Une requête qui échoue sur chaque cible signale chaque tentative dans sa trace. |
| Cachedifférent | Des réponses servies depuis le cache de Cloudflare plutôt que depuis le fournisseur, pour la latence et pour le coût. | Un cache de réponses à correspondance exacte pour les complétions de chat, désactivé par défaut et activé par organisation ou par projet, avec un champ de corps cache par requête ou des en-têtes X-INFRO-Cache là où Cloudflare utilise des en-têtes cf-aig-*. Il ne met pas en cache les autres endpoints, et il est indexé par projet et par environnement de clé, de sorte que rien n'est partagé entre eux. |
| Garde-fous et DLPdifférent | Les garde-fous évaluent le prompt et la réponse par rapport à des catégories de sécurité ; la DLP analyse les deux à la recherche d'informations sensibles et remplace soit la réponse par un 400, soit signale le constat dans un en-tête cf-aig-dlp. Aucune des deux pages de fonctionnalités n'indique comment elles sont facturées : nous ne le disons donc pas. | Garde-fous par motifs sur les complétions de chat : bloquer, masquer ou signaler les PII, les clés API et vos propres termes. Pas de classificateurs de catégories de sécurité. |
| Workers AIrien | Les modèles hébergés par Cloudflare lui-même, appelés via la même passerelle que les fournisseurs tiers. | Rien. INFRO n'exploite aucune inférence propre — il route vers des comptes que vous détenez chez des fournisseurs. Une charge de travail sur Workers AI n'a pas de destination ici. |
| Journauxdifférent | Prompts, réponses, tokens, coût, durée et agent utilisateur, dans la limite d'un stockage par passerelle. Quand la limite est atteinte, les nouveaux journaux cessent d'être enregistrés jusqu'à suppression des plus anciens, ou jusqu'à l'activation de la suppression automatique des plus anciens. | Métadonnées des requêtes — statut, modèle, fournisseur, route, tokens, latence, coût estimé — conservées 7, 14, 30 ou 90 jours selon l'offre. La capture des prompts et des complétions est désactivée par défaut et a sa propre fenêtre, plus courte. |
| Export OpenTelemetrymême forme | Spans vers votre propre collecteur selon les conventions sémantiques GenAI, portant gen_ai.usage.cost et toute métadonnée personnalisée comme attributs de span. | Des spans envoyés depuis le chemin des requêtes vers votre propre collecteur, avec l'endpoint et les en-têtes définis dans la console. Inclus à partir de l'offre Team. |
Notre lecture de la documentation publiée par Cloudflare, pas un essai ni un benchmark. Leur produit évolue vite — les limites de dépenses sont arrivées en juin 2026 et User Insights en août — vérifiez donc toute ligne déterminante pour vous dans leur changelog plutôt que sur cette page. Chaque source et la date à laquelle nous l'avons ouverte figurent au bas de la page.
Deux arguments pour la connexion, et l'identifiant de modèle garde sa forme. Le travail est dans les en-têtes : certains deviennent un champ du corps, et les en-têtes de nouvelle tentative n'ont plus de place du tout, car ici les nouvelles tentatives relèvent de la politique de route et non de ce qu'envoie l'appelant.
Avant · Cloudflare AI Gateway
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.CF_API_TOKEN,
baseURL:
`https://gateway.ai.cloudflare.com/v1/${process.env.CF_ACCOUNT_ID}` +
`/${process.env.CF_GATEWAY_ID}/compat`,
});
const completion = await client.chat.completions.create(
{
model: "anthropic/claude-opus-5",
messages,
},
{
headers: {
"cf-aig-metadata": JSON.stringify({
user_id: "user_8f21",
feature: "summarizer",
}),
"cf-aig-max-attempts": "3",
},
},
);Après · INFRO
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.INFRO_API_KEY,
baseURL: "https://api.infro.io/v1",
});
const completion = await client.chat.completions.create({
// The model id keeps its shape: vendor, slash, model.
model: "anthropic/claude-opus-5",
messages,
// Annotations move out of headers and into the body. Recorded on the
// request, never forwarded upstream, and ignored by any OpenAI-compatible
// backend that does not know the field — so the same call still runs
// elsewhere.
metadata: {
user_id: "user_8f21",
tags: { feature: "summarizer" },
},
});
// Retries and failover are not here. They are route policy, set once in the
// console, so cf-aig-max-attempts has nothing to become.L'URL de base et la clé
https://api.infro.io/v1, avec une clé de passerelle INFRO dans l'en-tête standard Authorization: Bearer — ce sont donc les arguments baseURL et apiKey que votre client a déjà. L'identifiant de compte et l'identifiant de passerelle de l'URL Cloudflare n'ont pas d'équivalent : une clé INFRO identifie déjà l'organisation, le projet et l'environnement auxquels elle appartient.
L'identifiant du modèle ne change pas de forme
Les deux adressent les modèles sous la forme fournisseur, barre oblique, modèle. Les identifiants eux-mêmes sont à vérifier — GET /v1/models liste exactement ce que votre clé peut appeler, c'est-à-dire ce que servent vos propres comptes connectés, et un modèle qu'aucune connexion ne couvre renvoie 503 no_provider_connected en nommant le fournisseur à connecter plutôt que d'échouer de façon floue.
Les en-têtes disparaissent
cf-aig-metadata devient l'objet metadata dans le corps : user_id, session_id, et tout le reste sous tags. cf-aig-max-attempts, cf-aig-retry-delay et cf-aig-backoff n'ont rien à devenir, car les nouvelles tentatives et le basculement se configurent sur la route et ne sont pas envoyés par requête. cf-aig-custom-cost passe une fois pour toutes dans la console, et cf-aig-byok-alias est remplacé par l'environnement de la clé.
La migration n'a pas à être une bascule d'un coup. Les deux passerelles sont des endpoints HTTPS ordinaires vers lesquels un client compatible OpenAI peut pointer : un service peut donc tourner ici pendant que tout le reste reste en place, et les deux journaux de requêtes peuvent être lus côte à côte pendant une semaine. C'est aussi la façon de vérifier la partie de cette page à laquelle vous devriez le moins faire confiance — si les deux produits s'accordent sur le coût d'une requête — et cela vaut la peine d'être fait avant la décision plutôt qu'après.
Quatre choses, et la liste est volontairement courte. Les limites de dépenses, l'attribution par identité, les tarifs personnalisés et l'export OpenTelemetry existent aussi chez Cloudflare — voici ce qui reste une fois le recoupement retiré.
- L'estimation est confrontée à la facturation propre du fournisseur
- La documentation des limites de dépenses de Cloudflare dit que le suivi des coûts est une estimation faite au mieux à partir du nombre de tokens et des tarifs des modèles, et renvoie au tableau de bord du fournisseur pour les montants exacts. C'est une description exacte de ce qu'une passerelle sait par elle-même, et le chiffre par requête d'INFRO est une estimation dans des conditions identiques. Ce qui diffère, c'est l'étape suivante : un passage quotidien lit vos propres API de coûts OpenAI et Anthropic avec un identifiant d'administration distinct que vous accordez délibérément, stocke le chiffre déclaré à côté de l'estimation et rapporte l'écart. Deux fournisseurs, avec l'offre Business — un fournisseur sans adaptateur n'affiche aucun écart plutôt qu'un écart de zéro, l'endpoint d'Anthropic exclut le Priority Tier, et Bedrock, Vertex et Azure gardent leur coût dans la facturation du cloud qui les entoure.
- Vos tarifs négociés vivent dans le plan de contrôle, pas dans un en-tête
- Les deux produits peuvent tarifer d'après les tarifs que portent réellement vos contrats. Sur Cloudflare, ils voyagent par requête dans
cf-aig-custom-cost, ce qui signifie que chaque service qui appelle un modèle détient une copie de vos conditions commerciales et qu'une renégociation est un déploiement sur tous. Ici, ils sont saisis une fois, par modèle et, au besoin, par fournisseur, par la personne qui détient le contrat — etusage.price_sourcesur chaque requête indique si le chiffre vient de votre tarif, de votre tarif pour ce fournisseur ou du tarif public de l'éditeur. Inclus à partir de l'offre Team. - L'unité est une organisation plutôt qu'une passerelle
- Une passerelle Cloudflare est configurée par la personne qui détient le rôle du compte Cloudflare, et l'identité par requête arrive sous forme de métadonnées personnalisées ou depuis Access. INFRO a des organisations, des projets, des environnements et des clés avec leur propre périmètre, cinq rôles, des listes d'autorisation de modèles au niveau de l'organisation, du projet et de la clé, et un journal d'audit de qui a modifié quelle politique et quand — le tout sur l'offre d'entrée. Cela compte au moment où plusieurs équipes partagent des fournisseurs et où la question devient quelle équipe peut appeler ce modèle et qui l'a approuvé. Le SSO d'annuaire et SCIM sont inclus à partir de l'offre Business.
- Un long rendu est un job, pas une requête maintenue ouverte
- La génération vidéo est soumise avec
POST /v1/videoset renvoie un job que vous lisez avecGET /v1/jobs/{id}ou recevez sur un webhook signé, et le média terminé est réhébergé derrière une URL signée qui expire, afin de survivre à la fenêtre de rétention du fournisseur. Elle est mesurée et attribuée exactement comme une complétion de chat, ce qui compte pour un produit riche en médias : les dépenses les plus difficiles à voir sont généralement celles qui n'ont pas la forme d'un token.
Ce qui n'est pas repris
Il n'y a pas d'outil d'import, et le dernier point de cette liste est celui qui détermine le calendrier. Lisez-le avant de vous engager sur une date.
- Vos journaux. Il n'y a pas d'outil d'import et aucun n'est prévu. Exportez de la passerelle tout ce dont vous avez besoin avant de cesser d'y envoyer du trafic — et rappelez-vous que son journal est un plafond de stockage et non une fenêtre de temps : ce qu'il contient est peut-être plus court que vous ne le pensez.
- Des réponses en cache. Les entrées du cache d'un autre produit ne sont pas transférées ; le cache d'INFRO démarre vide et se remplit à partir de votre propre trafic, et il ne correspond qu'à des requêtes exactes, jamais à des requêtes voisines.
- Politiques de garde-fous par catégorie de sécurité. Elles n'ont nulle part où atterrir : les garde-fous d'INFRO recherchent des motifs (PII, secrets et vos propres termes) et ne classifient rien.
- Les modèles Workers AI. INFRO route vers des comptes fournisseurs que vous détenez et n'exploite aucune inférence : une charge de travail sur les modèles propres de Cloudflare n'a donc pas de destination.
- Graphes de routes dynamiques. Les cibles par priorité et pondérées reprennent une chaîne de repli, mais les branches conditionnelles et les répartitions en pourcentage non — elles doivent être reconstruites dans votre application ou abandonnées.
- Unified Billing. Si Cloudflare achète votre inférence aujourd'hui, il vous faut d'abord vos propres comptes chez chaque fournisseur. C'est une démarche commerciale avec son propre délai, pas un changement de configuration, et c'est la seule chose de cette liste qui peut retarder une migration de plusieurs semaines.
Si le chiffre de coût a un public
C'est le cas pour lequel ce produit est conçu, et c'est le seul de cette page auquel la documentation de Cloudflare ne répond pas déjà. Le contrat d'API est publié en intégralité, y compris les parties qui n'existent pas encore, pour que vous puissiez décider avant d'écrire quoi que ce soit. Ou dites-nous ce que vous faites tourner — si la réponse est de rester sur la passerelle que vous avez, c'est la réponse que vous obtiendrez.
Sources
Chaque affirmation de cette page sur Cloudflare provient de l'une de ces sources, avec la date de lecture. Rien n'est déduit d'un essai, d'un benchmark ou d'une conversation — et quand une page ne tranchait pas un point, le guide le dit au lieu de deviner.
- Cloudflare AI Gateway — Pricinglu le 20 sept. 2026
- Cloudflare AI Gateway — Spend limitslu le 20 sept. 2026
- Cloudflare AI Gateway — Unified Billinglu le 20 sept. 2026
- Cloudflare AI Gateway — Dynamic routinglu le 20 sept. 2026
- Cloudflare AI Gateway — Bring your own keyslu le 20 sept. 2026
- Cloudflare AI Gateway — Custom costslu le 20 sept. 2026
- Cloudflare AI Gateway — Request handlinglu le 20 sept. 2026
- Cloudflare AI Gateway — Logginglu le 20 sept. 2026
- Cloudflare AI Gateway — Custom metadatalu le 20 sept. 2026
- Cloudflare AI Gateway — User Insightslu le 20 sept. 2026
- Cloudflare AI Gateway — OpenTelemetry integrationlu le 20 sept. 2026
- Cloudflare AI Gateway — OpenAI-compatible chat completionslu le 20 sept. 2026
- Cloudflare AI Gateway — Supported providerslu le 20 sept. 2026
- Cloudflare AI Gateway — Guardrailslu le 20 sept. 2026
- Cloudflare AI Gateway — Data loss preventionlu le 20 sept. 2026
- Cloudflare changelog — Control AI costs with spend limitslu le 20 sept. 2026
- Cloudflare changelog — User Insightslu le 20 sept. 2026