Alternar tema

A API da OpenAI vive expirando? Crie um proxy particular com Workers, grátis e mais estável

Easton editorial illustration: global cache relay

Introdução

Na semana passada, eu queria desenvolver um aplicativo com ChatGPT. Terminei o código do frontend, mas, ao chamar a API, a conexão expirou — a OpenAI não pode ser acessada diretamente da China. Testei alguns serviços de proxy comprados no Taobao, mas sempre fiquei com receio de que não fossem confiáveis e de que minha API Key vazasse. Também pensei em contratar uma VPS, mas isso custaria algumas dezenas de yuans por mês, além do trabalho para configurar e manter o servidor.

Depois descobri a solução com Cloudflare Workers: não custa nada e fica pronta em 5 minutos. Estou usando há mais de dois meses e gostei muito — além de estável, ela é mais rápida do que muitos proxies pagos. Neste artigo, compartilho todo o processo de configuração, com um código pronto para usar.

Por que escolher o Cloudflare Workers?

100 mil por dia
Cota de requisições gratuitas
Mais de 300
Nós de CDN no mundo
5 minutos
Tempo total de implantação
Source: Dados oficiais da Cloudflare

Custo zero e capacidade suficiente para desenvolvedores individuais

O plano gratuito do Workers oferece 100 mil requisições por dia e mil por minuto. Talvez você se pergunte se algo gratuito realmente funciona bem. Eu também pensei assim no início. Mas, depois de usar, percebi que essa cota é mais do que suficiente para desenvolvimento pessoal, estudos ou projetos pequenos.

Vamos fazer as contas: se cada requisição levar, em média, 2 segundos e você fizer chamadas sem parar durante uma jornada de 8 horas, ainda assim serão pouco mais de 2 mil requisições. Para consumir uma cota de 100 mil, seria preciso manter esse ritmo por vários dias.

Sem servidor para comprar e sem dor de cabeça

Em uma solução tradicional, você precisa contratar uma VPS, instalar o Nginx, configurar um proxy reverso e ainda se preocupar com a possibilidade de o servidor cair. Com Workers, nada disso é necessário — a Cloudflare cuida de toda a infraestrutura, e você só precisa escrever algumas linhas de código.

O Workers também roda na rede global de CDN da Cloudflare. Em teoria, ele pode ser mais rápido do que um único servidor montado por você, já que a Cloudflare tem nós em mais de 300 cidades ao redor do mundo.

Proteção nativa para a API Key

Esse ponto é especialmente importante. Se você chamar a API da OpenAI diretamente pelo frontend, a chave ficará exposta no navegador e qualquer pessoa poderá vê-la ao abrir as ferramentas de desenvolvedor. Com o Workers como camada intermediária, o frontend chama apenas o endereço do seu Worker, enquanto a API Key real permanece armazenada com segurança nas variáveis de ambiente da Cloudflare.

"Em agosto de 2025, a Cloudflare firmou uma parceria com a OpenAI para integrar os modelos de código aberto da OpenAI diretamente ao Workers AI, oferecendo gratuitamente uma cota diária de 10.000 Neurons"

- Anúncio oficial da Cloudflare

Uma nova vantagem em 2025

Em agosto de 2025, a Cloudflare também firmou uma parceria com a OpenAI e integrou diretamente ao Workers AI os modelos de código aberto da empresa. Isso significa que, além de atuar como proxy para a API original, você pode usar os modelos oferecidos pela própria Cloudflare, com uma cota diária gratuita de 10.000 Neurons.

Preparativos antes da configuração

Os preparativos são bem simples. Você vai precisar de:

Contas e recursos:

  • Uma conta Cloudflare (o cadastro é gratuito e leva poucos minutos)
  • Uma API Key da OpenAI ou do Claude (provavelmente você já tem uma)
  • Um domínio (opcional, pois o Workers oferece gratuitamente um subdomínio .workers.dev)

Conhecimentos técnicos:

  • Noções básicas de JavaScript (basta entender uma requisição fetch)
  • Entendimento básico de HTTP

Tempo necessário:

  • Primeira configuração: 5 a 10 minutos
  • Depois de se familiarizar: 3 minutos

Na prática: crie um proxy da OpenAI em 5 minutos

Etapa 1: crie o Worker

Entre no painel da Cloudflare e localize “Workers & Pages” no menu lateral. Clique em “Create Application” e selecione “Create Worker”.

A Cloudflare atribui automaticamente um nome aleatório ao seu Worker (por exemplo, aged-shadow-1234). Você pode trocá-lo por algo de sua preferência, como “openai-proxy”. Depois, clique em “Deploy” para fazer a implantação.

Nesse momento, você já terá um Worker em execução, embora ele ainda não faça nada.

Etapa 2: escreva o código

Clique em “Edit Code” para abrir o editor e cole o código abaixo:

export default {
  async fetch(request, env) {
    const url = new URL(request.url);
    // Substitui o domínio pelo endereço da API da OpenAI
    url.hostname = 'api.openai.com';
    // Cria uma nova requisição
    const newRequest = new Request(url, {
      method: request.method,
      headers: request.headers,
      body: request.body
    });
    // Encaminha a requisição e retorna a resposta
    const response = await fetch(newRequest);
    // Trata o acesso entre origens com CORS
    const newResponse = new Response(response.body, response);
    newResponse.headers.set('Access-Control-Allow-Origin', '*');
    newResponse.headers.set('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
    newResponse.headers.set('Access-Control-Allow-Headers', 'Content-Type, Authorization');
    return newResponse;
  }
};

Em termos simples, esse código faz o seguinte:

  1. Recebe a requisição enviada pelo frontend
  2. Troca o domínio do endereço da requisição por api.openai.com
  3. Encaminha a requisição modificada para a OpenAI
  4. Devolve ao frontend a resposta da OpenAI sem alterações
  5. Também resolve o problema de acesso entre origens (CORS)

Clique em “Save and Deploy” para salvar.

Etapa 3: faça um teste

Depois da implantação, você verá a URL do Worker, por exemplo, https://openai-proxy.你的名字.workers.dev.

Faça um teste com curl (substitua YOUR_API_KEY pela sua chave da OpenAI):

curl https://openai-proxy.你的名字.workers.dev/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "model": "gpt-3.5-turbo",
    "messages": [{"role": "user", "content": "Hello!"}]
  }'

Se você receber uma resposta normal da OpenAI, parabéns: deu certo!

Avançado: suporte a vários serviços de IA

Proxy para a API do Claude

A estrutura da API do Claude é um pouco diferente da OpenAI, principalmente nos headers da requisição. Modifique o código para oferecer suporte ao Claude:

export default {
  async fetch(request, env) {
    const url = new URL(request.url);
    // Identifica o serviço pelo caminho
    if (url.pathname.startsWith('/claude')) {
      // Remove o prefixo /claude e encaminha para a Anthropic
      url.pathname = url.pathname.replace('/claude', '');
      url.hostname = 'api.anthropic.com';
    } else {
      // O padrão é a OpenAI
      url.hostname = 'api.openai.com';
    }
    const newRequest = new Request(url, {
      method: request.method,
      headers: request.headers,
      body: request.body
    });
    const response = await fetch(newRequest);
    const newResponse = new Response(response.body, response);
    newResponse.headers.set('Access-Control-Allow-Origin', '*');
    return newResponse;
  }
};

Agora, o acesso a /claude/v1/messages será encaminhado para a API do Claude.

Proxy para a API do Gemini

O endpoint da API do Gemini, do Google, é generativelanguage.googleapis.com. Basta adicionar uma condição:

if (url.pathname.startsWith('/gemini')) {
  url.pathname = url.pathname.replace('/gemini', '');
  url.hostname = 'generativelanguage.googleapis.com';
}

Assim, um único Worker consegue atuar como proxy para três serviços de IA.

Boas práticas de segurança

Não insira a API Key diretamente no código

Talvez você tenha visto tutoriais que colocam a API Key diretamente no código do Worker. Não faça isso! O código é armazenado como texto simples e pode acabar sendo compartilhado por engano.

O jeito correto é usar variáveis de ambiente. Nas configurações do Worker, localize “Variables and Secrets” e adicione uma variável de ambiente:

  • Nome: OPENAI_API_KEY
  • Valor: sua API Key
  • Tipo: selecione “Secret” (armazenamento criptografado)

Depois, use-a no código desta forma:

export default {
  async fetch(request, env) {
    // Lê a API Key da variável de ambiente
    const apiKey = env.OPENAI_API_KEY;
    // Modifica o header e adiciona a API Key
    const headers = new Headers(request.headers);
    headers.set('Authorization', `Bearer ${apiKey}`);
    // O restante do código é igual ao anterior...
  }
};

Assim, o frontend não precisa enviar a API Key, o que torna a solução mais segura.

Adicione um token de autenticação personalizado

Se você tem receio de que alguém descubra a URL do Worker e abuse do serviço, pode adicionar uma camada simples de autenticação:

export default {
  async fetch(request, env) {
    // Verifica o token personalizado
    const authToken = request.headers.get('X-Custom-Auth');
    if (authToken !== env.MY_SECRET_TOKEN) {
      return new Response('Unauthorized', { status: 401 });
    }
    // Se a verificação passar, continua processando a requisição...
  }
};

Defina MY_SECRET_TOKEN nas variáveis de ambiente e envie esse header personalizado nas chamadas feitas pelo frontend.

Monitore o uso

O painel da Cloudflare tem uma aba Analytics que mostra o número diário de requisições, a taxa de erros e outros dados. Vale a pena verificá-la regularmente para perceber com antecedência qualquer risco de ultrapassar a cota gratuita.

Você também pode configurar um alerta: em “Notifications”, crie uma regra para receber um e-mail quando o número de requisições se aproximar de 100 mil.

Problemas comuns e soluções

Requisições lentas ou expirando

Se as respostas estiverem muito lentas, o nó atribuído ao Worker talvez não seja o ideal.

Solução: vincule um domínio personalizado. A Cloudflare otimiza a rota de acordo com a configuração DNS do seu domínio, o que costuma ser um pouco mais rápido do que usar o domínio gratuito .workers.dev.

Nas configurações do Worker, selecione “Triggers” → “Add Custom Domain”, informe seu domínio (por exemplo, api.yourdomain.com) e siga as instruções para adicionar o registro DNS.

Erros 403 ou 401

Geralmente, esses erros estão relacionados à API Key:

  1. Confira se o nome da Key na variável de ambiente é o mesmo usado no código
  2. Verifique se a API Key é válida e tem saldo disponível
  3. Confira se a OpenAI ou o Claude impõem restrições regionais (embora o Workers tenha distribuição global, alguns nós podem ser identificados)

Dica de depuração: adicione um log ao código:

console.log('API Key:', env.OPENAI_API_KEY ? 'configurada' : 'não configurada');

Depois, consulte os logs em tempo real na aba “Logs” do Worker.

O que fazer se a cota gratuita não for suficiente?

Se 100 mil requisições realmente não forem suficientes - por exemplo, em um projeto comercial - você pode considerar o plano pago:

  • Plano pago do Workers: US$ 5 por mês, com 10 milhões de requisições
  • Excedente: US$ 0,50 por milhão de requisições

Sinceramente, para aplicações pequenas e médias, esse preço é muito mais vantajoso do que contratar uma VPS. Além disso, você não precisa se preocupar com a manutenção do servidor, e o tempo economizado vale ainda mais.

US$ 5 por mês
Preço inicial do plano pago
10 milhões
Cota de requisições do plano pago
US$ 0,50
Excedente por milhão de requisições
Source: Preços da Cloudflare

Sugestões de otimização:

  1. Implemente cache no frontend para não repetir chamadas idênticas
  2. Use APIs em lote, quando disponíveis, para reduzir o número de requisições
  3. Durante o desenvolvimento, use dados mock em vez de chamar sempre a API real

Conclusão

Depois de tudo isso, as principais vantagens da solução de proxy com Workers se resumem a três pontos:

  • Custo zero: a cota gratuita é mais do que suficiente para desenvolvimento pessoal
  • Facilidade: a configuração leva 5 minutos e usa menos de 30 linhas de código
  • Segurança: a API Key é armazenada com segurança e não fica exposta

Essa solução é especialmente adequada para estudos, desenvolvimento de demos e projetos pequenos. Se você também procura uma forma estável de acessar APIs de IA, vale muito a pena experimentar o Workers.

Comece a montar o seu agora mesmo! Salve este artigo para consultar quando surgir alguma dúvida. Se você encontrar outros problemas durante a configuração, conte nos comentários — também quero saber o que mais pode ser melhorado.

Os projetos de código aberto mencionados no artigo também são muito bons, principalmente o chatgptProxyAPI e o worker-openai-proxy. O código é bem claro e vale a pena estudá-lo no GitHub.

Qual solução você usa atualmente para acessar APIs de IA? Vamos conversar nos comentários?

FAQ

O plano gratuito do Cloudflare Workers é suficiente?
Para desenvolvimento pessoal e projetos pequenos, é mais do que suficiente.

Cota do plano gratuito:
• 100 mil requisições por dia
• Mil requisições por minuto
• Mesmo usando sem parar durante uma jornada de 8 horas, você faria pouco mais de 2 mil chamadas

Só vale considerar o plano pago em projetos comerciais ou cenários de alta concorrência (US$ 5 por mês, com 10 milhões de requisições).
Um proxy com Workers fica mais lento do que acessar a OpenAI diretamente?
Em teoria, ele acrescenta uma latência de 50 a 100 ms, mas, na prática, essa diferença quase não é perceptível.

Vantagens:
• A Cloudflare tem nós de CDN em mais de 300 cidades ao redor do mundo
• Em algumas regiões, acessar o Workers pode ser mais rápido do que se conectar diretamente à OpenAI

Ao vincular um domínio personalizado, a Cloudflare otimiza as rotas e pode melhorar ainda mais a velocidade.
Como evitar o vazamento da API Key?
Use variáveis de ambiente da Cloudflare do tipo Secret para armazenar a API Key. Assim, o código do frontend nunca expõe a chave.

Medidas adicionais de segurança:
• Adicione um token de autenticação personalizado (header X-Custom-Auth)
• Somente clientes que conhecem o token conseguem fazer chamadas
• Se estiver preocupado com o vazamento da URL do Worker, vincule um domínio personalizado e configure uma lista de IPs permitidos
O Workers consegue atuar como proxy para OpenAI, Claude e Gemini ao mesmo tempo?
Sim, sem nenhum problema.

Use prefixos de caminho para diferenciar os serviços:
o O caminho padrão encaminha para a OpenAI
o O caminho /claude encaminha para o Claude
o O caminho /gemini encaminha para o Gemini

Um único Worker dá conta dos três principais serviços de IA com menos de 50 linhas de código.
Como monitorar o uso e os custos do Workers?
Na aba Workers Analytics do painel da Cloudflare, você pode acompanhar:
• Número de requisições
• Taxa de erros
• Tempo de resposta e outras métricas

Também é possível criar uma regra em Notifications para receber um e-mail automaticamente quando o volume se aproximar de 100 mil requisições.

O plano pago ainda oferece logs e dados de rastreamento mais detalhados.

10 min de leitura · Publicado em: 1 dez 2025 · Atualizado em: 4 set 2026

Comentários

Entre com GitHub para comentar

Easton BlogEaston Blog