Pular para o conteúdo

Guias de migraçãoVindo do Cloudflare AI Gateway

Saindo do Cloudflare AI Gateway sem nada obrigando você a isso

Aqui não há aquisição, modo de manutenção nem aviso de descontinuação. O AI Gateway está em disponibilidade geral, foi desenvolvido ativamente ao longo de 2026 e o seu núcleo é gratuito numa conta que você já tem — então a pergunta que esta página responde não é como migrar, mas se vale migrar. Ela começa com três números que você pode medir no seu próprio gateway, dois dos quais dizem para ficar.

As contas do INFRO são self-service. O catálogo, a documentação e o contrato da API são públicos, o gateway está implantado, e tudo o que vai além da v1 está marcado para depois. Planos e teste

Situação atual

Nada obriga a isso

O AI Gateway está em disponibilidade geral e foi ativamente desenvolvido ao longo de 2026 — limites de gastos em junho, User Insights em agosto. O núcleo é gratuito em qualquer conta da Cloudflare. Se alguma página disser o contrário, confira com o changelog em vez de acreditar.

A sobreposição é maior do que era

Os dois produtos ficam no caminho da requisição, precificam cada requisição, atribuem o gasto a um usuário ou equipe, recusam uma requisição em um teto em dólares e exportam OpenTelemetry. Há um ano, esta comparação era gateway versus plano de controle. Já não é mais.

Uma pergunta decide

Se alguém precisa defender o número de custo perante uma pessoa que não o produziu. Se ninguém precisa, o gateway gratuito é a ferramenta certa e este guia deve terminar aqui. Se alguém precisa, é disso que trata o resto da página.

Cada uma está no seu próprio gateway ou no seu próprio calendário, e cada uma produz uma resposta, não uma ponderação. Duas das três encerram a decisão a favor da Cloudflare, que é a distribuição honesta — a maioria das equipes que estão lendo isto deveria manter o que tem.

  1. Sua taxa de acertos de cache

    Análises no seu gateway, ao longo de um mês que parecia normal. A Cloudflare as informa por gateway.

    Este é o ponto que pode encerrar a decisão sozinho. O INFRO também tem um cache de respostas por correspondência exata para chat completions, mas ele começa vazio, fica desativado até você ativá-lo, tem chave por projeto e ambiente da chave e, por padrão, armazena apenas requisições determinísticas (temperature 0 ou uma seed). Calcule que parcela dos seus acertos veio de requisições que se encaixam nisso; o resto vira chamadas ao provedor depois da mudança, cobradas pelo seu provedor. Se essa parcela for grande, ficar é a melhor resposta e nenhum recurso do resto desta página pesa mais.

  2. Se o Unified Billing está ativado

    As configurações do seu gateway. Se a Cloudflare está comprando a sua inferência, é aqui que isso aparece.

    Se estiver ativado, você não tem um problema de configuração, tem um de compras. O INFRO nunca compra inferência, então mudar significa abrir a sua própria conta em cada provedor que você usa, o que leva o tempo que o onboarding de fornecedores levar. Descubra agora, não na terceira semana.

  3. Com que frequência alguém de fora da engenharia pergunta sobre o número

    Não um dashboard. Suas conversas do último trimestre com financeiro, compras e preços.

    Se a resposta for nunca, o gateway gratuito é a ferramenta certa e este guia deve terminar aqui — isso não é uma saída educada, é a recomendação correta. Um plano de controle justifica uma assinatura quando um número de custo precisa ser defendido perante alguém que não o produziu, e não antes.

Esta seção está acima das diferenças de propósito e, ao contrário dos outros guias deste conjunto, não aponta para um terceiro produto. Ela aponta para o que você já roda.

Esta seção fica acima do mapeamento de propósito. O Cloudflare AI Gateway é um bom produto que não custa nada para rodar, e o resultado correto mais comum de ler esta página é você fechá-la e manter o que tem. Não há aquisição aqui, nem modo de manutenção, nem aviso de descontinuação para apressar você — os motivos abaixo não são amaciantes antes de uma refutação, são a resposta sempre que um deles for verdadeiro.

Vale considerar a mudança quando o número de custo tem público: o financeiro perguntando por que a fatura de modelos mudou, uma margem voltada ao cliente que você precisa sustentar, várias equipes compartilhando provedores e discordando sobre quem gastou o quê. É o ponto em que um número que ninguém conferiu com uma fatura deixa de bastar, e é a única afirmação desta página que a documentação da própria Cloudflare ainda não responde.

Fique onde está quando

  • O gateway está fazendo o trabalho dele e ninguém faz perguntas sobre o número. Um plano de controle justifica o preço quando alguém de fora da engenharia precisa agir sobre o número de custo. Se isso não aconteceu, ele ainda não o justificou.
  • Você precisa de guardrails ou DLP no caminho da requisição. A Cloudflare examina o prompt e a resposta em busca de conteúdo nocivo e pode bloquear ou sinalizar dados sensíveis antes que cheguem a um provedor. Os guardrails do INFRO são por padrões (PII, segredos, seus termos, apenas chat completions); os guardrails por categoria de segurança da Cloudflare não têm equivalente.
  • Você roda Workers AI, ou a Cloudflare compra a sua inferência pelo Unified Billing. O INFRO não opera inferência e nunca compra nenhuma: antes de uma mudança você precisaria das suas próprias contas em cada provedor, o que é um passo comercial, não de configuração.
  • Seu roteamento depende de ramificações condicionais ou divisões percentuais. As rotas do INFRO são destinos por prioridade ou ponderados sobre as suas próprias conexões; um if/else sobre o conteúdo da requisição não tem equivalente e precisaria ir para a sua aplicação.
  • O cache de respostas carrega carga real em requisições que o INFRO não colocaria em cache. O cache do INFRO corresponde apenas a requisições exatas de chat completion, com chave por projeto e ambiente da chave e, por padrão, só as determinísticas (temperature 0 ou uma seed); toda requisição fora disso volta ao seu provedor depois da mudança.
  • Estar em um único fornecedor é o ponto. Uma única fatura, um conjunto de funções de conta e uma relação de suporte é um motivo legítimo para escolher o gateway de uma plataforma, e acrescentar um segundo fornecedor desfaz isso.

Se mais de uma destas for verdade, feche esta página. Preferimos perder a avaliação a ganhá-la e ser a resposta errada seis semanas depois.

Os objetos da Cloudflare comparados aos nossos, lidos na documentação pública deles em 20 de setembro de 2026 e conferidos com o que o gateway de fato implementa. Cinco linhas dizem que não temos nada; são essas que vale ler primeiro.

Cloudflare AI GatewayO que faz láNo INFRO
GatewaydiferenteUm objeto nomeado na sua conta da Cloudflare. Ele é dono dos logs, do cache, dos limites de taxa e das regras de gastos; um segundo ambiente significa um segundo gateway.Não existe objeto de gateway. Uma organização é dona da política e do faturamento; projetos, chaves e o ambiente de uma chave definem o escopo. Um segundo ambiente é uma propriedade da chave, e não um segundo endpoint.
`/compat/chat/completions`mesmo formatoChat compatível com OpenAI em https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_id}/compat, com modelos endereçados como provider/model.Chat compatível com OpenAI em https://api.infro.io/v1, com modelos endereçados como vendor/model. Mesmo cliente, mesmo formato de requisição e resposta, inclusive streaming, chamadas de ferramentas e saídas estruturadas.
Caminhos específicos por provedordiferenteUm caminho por provedor que repassa para a API do próprio provedor, de modo que cada um mantém o seu formato de requisição nativo.Um formato normalizado por modalidade: /chat/completions, /images/generations, /images/edits, /audio/speech, /audio/transcriptions e /videos, que retorna um job assíncrono. As APIs nativas dos provedores não passam por proxy — uma chamada escrita para a Messages API da Anthropic ou o generateContent do Gemini precisa migrar para o formato compatível.
Chaves de provedor armazenadasdiferenteChaves mantidas por gateway com aliases, selecionadas por requisição com um header cf-aig-byok-alias e usadas antes do Unified Billing quando ambos estão presentes.Conexões mantidas por organização, seladas, com saúde e último erro visíveis. Qual delas atende uma requisição é decidido pelo ambiente da chave e pela rota, não por um header que o chamador envia.
Unified BillingnadaA Cloudflare compra a inferência do provedor e cobra você por ela, com uma taxa sobre créditos comprados.Nada, deliberadamente. O INFRO nunca compra inferência e nunca fica com uma parte do gasto com modelos; seus provedores faturam você diretamente nas suas próprias tarifas. Se a Cloudflare está comprando a sua, você precisa das suas próprias contas de provedor antes que uma mudança seja possível.
`cf-aig-metadata`diferenteAté cinco entradas de texto, número ou booleano por requisição, enviadas como header, que aparecem nos logs e podem ser usadas como dimensão de limite de gastos.Um objeto metadata no corpo da requisição, nunca repassado ao upstream: user_id, session_id e qualquer número de chaves em tags, filtradas no log de requisições como tag.<key>. Todo lugar onde você define o header hoje é uma edição.
`cf-aig-custom-cost`diferenteSuas tarifas negociadas de entrada, saída e cache, enviadas por requisição como um header, substituindo o custo público do modelo naquela chamada.Tarifas armazenadas no console por modelo e, opcionalmente, por provedor, aplicadas a toda requisição correspondente, com usage.price_source na resposta dizendo qual tarifa produziu o número. Incluído a partir do plano Team.
Limites de gastosmesmo formatoOrçamentos em dólares sobre uma janela móvel ou fixa, com escopo por modelo, provedor ou metadados personalizados, avaliados antes de o provedor ser chamado, retornando 429 no teto ou recorrendo a um modelo mais barato. Até 20 regras por gateway.Orçamentos em organização, projeto, membro e chave, avaliados antes de o provedor ser chamado, retornando 402 budget_exceeded com limiares de alerta que você define. Têm como escopo o modelo de objetos e não metadados, de modo que o teto de um projeto não depende de o chamador lembrar de um header.
Roteamento dinâmicodiferenteUm grafo de rotas composto em um editor visual ou em JSON — ramificações condicionais sobre o corpo da requisição, headers ou metadados, divisões percentuais, nós de taxa e de orçamento, publicado sem deploy. Disponível no endpoint compatível com OpenAI.Rotas nomeadas com destinos por prioridade ou ponderados sobre as suas próprias conexões, com verificação de saúde e failover antes do primeiro byte da resposta. Não há ramificação condicional sobre o conteúdo da requisição; uma rota if/else precisa ir para a sua aplicação.
`cf-aig-max-attempts`diferenteAté cinco tentativas de repetição com atraso configurável e backoff constante, linear ou exponencial, definidas por requisição e funcionando com qualquer endpoint de provedor.Novas tentativas e failover são política da rota, e não headers por requisição, então o comportamento é configurado uma vez no console e vale para todo chamador daquela rota. Uma requisição que falha em todos os destinos registra cada tentativa no seu trace.
CachediferenteRespostas servidas do cache da Cloudflare em vez do provedor, por latência e por custo.Um cache de respostas por correspondência exata para chat completions, desativado por padrão e ativado por organização ou projeto, com um campo cache no corpo por requisição ou headers X-INFRO-Cache, onde a Cloudflare usa headers cf-aig-*. Ele não faz cache de outros endpoints e tem chave por projeto e ambiente da chave, então nada é compartilhado entre eles.
Guardrails e DLPdiferenteOs guardrails avaliam o prompt e a resposta contra categorias de segurança; o DLP examina ambos em busca de informações sensíveis e substitui a resposta por um 400 ou sinaliza o achado em um header cf-aig-dlp. Nenhuma das páginas desses recursos diz como são cobrados, então não dizemos.Guardrails por padrões em chat completions: bloquear, mascarar ou sinalizar PII, chaves de API e termos próprios. Sem classificadores por categoria de segurança.
Workers AInadaModelos hospedados pela própria Cloudflare, chamados pelo mesmo gateway que os provedores de terceiros.Nada. O INFRO não opera inferência própria — ele roteia para contas que você mantém em provedores. Uma carga de trabalho no Workers AI não tem destino aqui.
LogsdiferentePrompts, respostas, tokens, custo, duração e user agent, sujeitos a um limite de armazenamento por gateway. Quando o limite é atingido, novos logs deixam de ser salvos até que os antigos sejam excluídos, ou a exclusão automática seja ativada para descartar os mais antigos.Metadados da requisição — status, modelo, provedor, rota, tokens, latência, custo estimado — mantidos por 7, 14, 30 ou 90 dias, conforme o plano. A captura de prompts e respostas vem desativada por padrão e tem uma janela própria, mais curta.
Exportação OpenTelemetrymesmo formatoSpans para o seu próprio collector seguindo as convenções semânticas de GenAI, com gen_ai.usage.cost e quaisquer metadados personalizados como atributos de span.Spans enviados ao seu próprio coletor a partir do caminho da requisição, com o endpoint e os headers definidos no console. Incluído a partir do plano Team.

Nossa leitura da documentação publicada da Cloudflare, não um teste nem um benchmark. O produto deles evolui rápido — limites de gastos chegaram em junho de 2026 e User Insights em agosto —, então confira qualquer linha que decida algo para você no changelog deles, não nesta página. Todas as fontes e a data em que as abrimos estão listadas no rodapé.

Dois argumentos para a conexão, e o id do modelo mantém o formato. O trabalho está nos cabeçalhos: alguns viram um campo do corpo, e os cabeçalhos de nova tentativa não têm para onde ir, porque aqui as novas tentativas são política de rota, e não algo que quem chama envia.

Antes · 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",
    },
  },
);

Depois · 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.

A URL base e a chave

https://api.infro.io/v1, com uma chave de gateway do INFRO no header padrão Authorization: Bearer — ou seja, os argumentos baseURL e apiKey que o seu cliente já tem. O id da conta e o id do gateway na URL da Cloudflare não têm equivalente: uma chave do INFRO já identifica a organização, o projeto e o ambiente a que pertence.

O id do modelo não muda de formato

Ambos endereçam modelos como fornecedor, barra, modelo. Os ids em si ainda precisam ser conferidos — GET /v1/models lista exatamente o que a sua chave pode chamar, que é o que as suas próprias contas conectadas atendem, e um modelo que nenhuma conexão cobre retorna 503 no_provider_connected nomeando o provedor a conectar, em vez de falhar de forma vaga.

Os headers saem

cf-aig-metadata vira o objeto metadata no corpo: user_id, session_id e qualquer outra coisa em tags. cf-aig-max-attempts, cf-aig-retry-delay e cf-aig-backoff não viram nada, porque novas tentativas e failover são configurados na rota, e não enviados por requisição. cf-aig-custom-cost passa uma vez para o console, e cf-aig-byok-alias é substituído pelo ambiente da chave.

A migração não precisa ser uma virada de chave. Os dois gateways são endpoints HTTPS comuns para os quais um cliente compatível com OpenAI pode apontar, então um serviço pode rodar aqui enquanto todo o resto fica onde está, e os dois logs de requisições podem ser lidos lado a lado por uma semana. É também assim que se verifica a parte desta página em que você deve confiar menos — se os dois produtos concordam sobre quanto custou uma requisição —, e vale fazer isso antes da decisão, não depois.

Quatro coisas, e a lista é curta de propósito. Limites de gastos, atribuição por identidade, tarifas personalizadas e exportação OpenTelemetry também existem na Cloudflare — isto é o que sobra depois da sobreposição.

A estimativa é conferida com a cobrança do próprio provedor
A documentação de limites de gastos da Cloudflare diz que o acompanhamento de custos é uma estimativa feita com o melhor esforço a partir de contagens de tokens e preços de modelos, e que se deve consultar o dashboard do provedor para os valores exatos de cobrança. É uma descrição precisa do que um gateway sabe por conta própria, e o número por requisição do INFRO é uma estimativa nos mesmos termos. O que difere é o passo seguinte: uma passagem diária lê as suas próprias APIs de custo da OpenAI e da Anthropic com uma credencial de administrador separada que você concede deliberadamente, armazena o valor informado ao lado da estimativa e relata a variação. Dois provedores, no plano Business — um provedor sem adaptador não mostra variação em vez de uma variação zero, o endpoint da Anthropic exclui o Priority Tier, e Bedrock, Vertex e Azure mantêm o custo na cobrança da nuvem que os envolve.
Suas tarifas negociadas ficam no plano de controle, não em um header
Os dois produtos podem precificar pelas tarifas que os seus contratos de fato preveem. Na Cloudflare elas viajam por requisição em cf-aig-custom-cost, o que significa que todo serviço que chama um modelo guarda uma cópia dos seus termos comerciais e uma renegociação é um deploy em todos eles. Aqui elas são inseridas uma vez, por modelo e, opcionalmente, por provedor, por quem é dono do contrato — e usage.price_source em cada requisição diz se o número veio da sua tarifa, da sua tarifa para aquele provedor ou da tarifa publicada pelo fornecedor. Incluído a partir do plano Team.
A unidade é uma organização, não um gateway
Um gateway da Cloudflare é configurado por quem tem a função na conta da Cloudflare, e a identidade por requisição chega como metadados personalizados ou do Access. O INFRO tem organizações, projetos, ambientes e chaves com escopo próprio, cinco funções, listas de permissões de modelos nos níveis de organização, projeto e chave e um log de auditoria de quem mudou qual política e quando — tudo isso no plano de entrada. Isso importa quando várias equipes compartilham provedores e a pergunta passa a ser qual equipe pode chamar este modelo e quem aprovou isso. SSO de diretório e SCIM estão incluídos a partir do plano Business.
Uma renderização longa é um job, não uma requisição mantida aberta
A geração de vídeo é enviada com POST /v1/videos e retorna um job que você lê com GET /v1/jobs/{id} ou recebe em um webhook assinado, e a mídia pronta é re-hospedada atrás de uma URL assinada que expira, para que sobreviva à janela de retenção do próprio provedor. É medida e atribuída exatamente como um chat completion, que é a parte que importa para um produto com muita mídia: o gasto mais difícil de ver costuma ser o que não tem formato de token.

O que não é levado

Não há importador, e o último item desta lista é o que define cronogramas. Leia-o antes de se comprometer com uma data.

  • Seus logs. Não há importador e nenhum está planejado. Exporte do gateway o que precisar antes de parar de enviar tráfego a ele — e lembre-se de que o log dele é um limite de armazenamento, e não uma janela de tempo, então o que está lá pode já ser mais curto do que você pensa.
  • Respostas em cache. As entradas do cache de outro produto não migram; o cache do INFRO começa vazio e se enche com o seu próprio tráfego, e corresponde apenas a requisições exatas, nunca a parecidas.
  • Políticas de guardrails por categoria de segurança. Não há onde pousar: os guardrails do INFRO casam padrões (PII, segredos e termos próprios) e não classificam nada.
  • Modelos do Workers AI. O INFRO roteia para contas de provedor que você mantém e não opera inferência, então uma carga de trabalho nos modelos da própria Cloudflare não tem destino.
  • Grafos de rotas dinâmicas. Destinos por prioridade e ponderados levam uma cadeia de fallback, mas ramificações condicionais e divisões percentuais não — elas precisam ser refeitas na sua aplicação ou deixadas para trás.
  • Unified Billing. Se a Cloudflare está comprando a sua inferência hoje, você precisa antes das suas próprias contas em cada provedor. É um passo comercial com prazo próprio, não uma mudança de configuração, e é a única coisa desta lista que pode atrasar uma mudança por semanas.

Se o número de custo tem um público

Esse é o caso para o qual este produto foi construído, e é o único nesta página que a própria documentação da Cloudflare ainda não responde. O contrato da API está publicado na íntegra, inclusive as partes que ainda não existem, para você decidir antes de escrever qualquer coisa. Ou conte o que você está rodando — se a resposta for que você deve ficar no gateway que já tem, é essa a resposta que vai receber.

Fontes

Cada afirmação desta página sobre a Cloudflare vem de uma destas fontes, com a data em que a lemos. Nada é inferido de um teste, de um benchmark ou de uma conversa — e, quando uma página não resolvia algo, o guia diz isso em vez de supor.