Menu

Conversor de cURL

Converta qualquer comando curl em fetch, axios, Python requests, Go, PHP e mais.

Última atualização

Cole o comando curlCole um comando curl para começar
JavaScript (fetch)
Cole um comando curl acima para gerar código em 12 linguagens.

O que é um conversor de cURL?

Um conversor de cURL transforma um comando curl — o formato que aparece em toda documentação de API, exportação do Postman e resposta de assistente de IA — em código pronto para colar na linguagem que você usa de verdade. Cabeçalhos, query strings, corpos JSON, uploads multipart, autenticação básica e cookies são todos preservados, então você não precisa traduzir a requisição na mão.

curl é a forma universal de descrever uma requisição HTTP, mas você raramente *executa* curl em produção. Você executa JavaScript fetch, Python requests, net/http do Go ou o que sua stack usar. Esta ferramenta cobre essa lacuna: cole o curl, clique numa aba, copie o código.

Tudo roda localmente no navegador. Seu comando curl, cabeçalhos e tokens nunca saem da sua máquina — útil quando você está colando comandos com bearer tokens reais ou cookies de sessão.

O que você vai aprender enquanto converte

  • As flags do curl correspondem a conceitos específicos em todo cliente HTTP: -H é um cabeçalho de requisição, -d é o corpo, -X é o método, -u é autenticação básica e -F é um campo de formulário multipart.
  • Se o curl encontra um corpo (-d, --data, -F) e não tem -X, ele assume POST por padrão — o mesmo padrão da maioria dos clientes, então um -X omitido vira POST na saída.
  • Corpos JSON são diferentes de corpos de formulário. Content-Type: application/json significa que o corpo é enviado literalmente; application/x-www-form-urlencoded significa que pares chave/valor são unidos com &.

Como converter curl em código passo a passo

  1. Cole seu comando curl

    Solte o comando completo — incluindo as continuações de linha \ que vêm da documentação copiada — na caixa de entrada. O parser normaliza aspas inteligentes e marcadores de prompt do PowerShell automaticamente.

  2. Escolha a linguagem alvo

    As abas cobrem JavaScript fetch, TypeScript, Node axios, Python requests, Python httpx, Go, PHP, Ruby, Java HttpClient, C# HttpClient, HTTPie e PowerShell. Trocar de aba é grátis — o parse roda só uma vez.

  3. Inspecione a requisição parseada

    Abra o painel *Requisição parseada* para confirmar que o método, a URL, os cabeçalhos, o tipo de corpo e opções como insecure ou follow redirects foram interpretados como você esperava.

  4. Copie e ajuste a autenticação

    Copie o código gerado para o seu projeto. Se o curl tinha um bearer token ou cookie, troque o valor literal por uma variável de ambiente antes de fazer commit.

Referência rápida das flags do cURL

As flags que este conversor entende e o que elas viram no código gerado.

FlagSignificadoExemplo
-X, --requestMétodo HTTP-X POST
-H, --headerCabeçalho de requisição (pode repetir)-H 'Accept: application/json'
-d, --dataCorpo da requisição — codifica em URL por padrão-d 'name=Ada&age=30'
--data-rawCorpo sem expansão de @arquivo--data-raw '$body'
--data-urlencodeCodifica em percent-encoding uma parte do corpo--data-urlencode 'q=hello world'
-F, --formCampo de formulário multipart (use @arquivo para arquivos)-F 'avatar=@photo.jpg'
-u, --userAutenticação básica → Authorization: Basic …-u alice:s3cret
-G, --getPromove o corpo para query string e envia GET-G -d 'q=ada'
-b, --cookieCabeçalho de cookie-b 'session=abc'
-A, --user-agentCabeçalho User-Agent-A 'MyApp/1.0'
-L, --locationSeguir redirecionamentos 3xx-L
-k, --insecurePula verificação de TLS (só em dev!)-k
--compressedAceita resposta em gzip/deflate/br--compressed
--max-timeTimeout total da requisição em segundos--max-time 30

Exemplos de conversão de cURL

GET com query string e cabeçalho de autenticação

curl
curl 'https://api.example.com/v1/lessons?limit=20&track=python' \  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.demo'
JavaScript (fetch)
const response = await fetch('https://api.example.com/v1/lessons?limit=20&track=python', {  method: 'GET',  headers: {    'Authorization': 'Bearer eyJhbGciOiJIUzI1NiJ9.demo'  }});const data = await response.json();

Parâmetros de query na URL ficam na URL — o conversor não os separa em um objeto params para fetch. No axios e no requests você vai ver eles extraídos para params / params= por uma questão de legibilidade.

POST com corpo JSON

curl
curl 'https://api.example.com/v1/users' \  -H 'Content-Type: application/json' \  --data-raw '{"name":"Ada","age":36}'
Python (requests)
import requests
headers = {    'Content-Type': 'application/json',}json_data = {"name":"Ada","age":36}
response = requests.post('https://api.example.com/v1/users', headers=headers, json=json_data)response.raise_for_status()

Quando o corpo é um JSON válido e o Content-Type é application/json, o conversor usa json= para o requests e data: (objeto parseado) para o axios. A string literal original é preservada se o JSON.parse falhar — nunca é reescrita.

Upload multipart de arquivo

curl
curl 'https://api.example.com/upload' \  -F 'caption=Hello' \  -F 'photo=@./avatar.jpg'
Python (requests)
import requests
files = {    'caption': (None, 'Hello'),    'photo': open('./avatar.jpg', 'rb'),}
response = requests.post('https://api.example.com/upload', files=files)response.raise_for_status()

-F field=@file vira um upload de arquivo real (open('…', 'rb') em Python, FormData.append em JavaScript). Campos -F simples viram valores de formulário comuns. A pré-visualização no navegador mostra um placeholder TODO para os blobs de arquivo que você precisa fornecer em tempo de execução.

Autenticação básica + cookie

curl
curl 'https://api.example.com/me' \  -u alice:s3cret \  -b 'session=2f9a; theme=dark'
JavaScript (fetch)
const response = await fetch('https://api.example.com/me', {  method: 'GET',  headers: {    'Authorization': 'Basic YWxpY2U6czNjcmV0',    'Cookie': 'session=2f9a; theme=dark'  }});

Autenticação básica é unificada em um único cabeçalho Authorization. Cookies são unidos com ; e enviados num único cabeçalho Cookie — exatamente o que o curl faz no protocolo.

Erros comuns ao converter curl

  • Colar curl com aspas inteligentes (', ', ", ") de algum blog — elas parecem aspas, mas quebram o parsing do shell. O conversor normaliza, mas copie o comando original se puder.
  • Deixar -k (--insecure) em produção. Isso desativa a verificação do certificado TLS — tranquilo em dev local, perigoso em tráfego real.
  • Esquecer que --data-raw e --data se comportam diferente — --data faz URL-encoding na entrada. Use --data-raw para corpos JSON que contêm @ ou &.

Perguntas frequentes sobre o Conversor de cURL

Quais linguagens o conversor suporta?
Doze alvos prontos: JavaScript (fetch), TypeScript (fetch), Node (axios), Python (requests), Python (httpx), Go (net/http), PHP (curl), Ruby (Net::HTTP), Java (HttpClient), C# (HttpClient), HTTPie e PowerShell (Invoke-RestMethod). Todos são gerados a partir da mesma representação parseada — trocar de aba é instantâneo.
Ele lida com uploads multipart e flags -F?
Sim. -F field=value vira um campo de formulário comum, -F file=@path vira um upload real usando FormData (JS), files= (Python), CURLFile (PHP) e assim por diante. Caminhos de arquivo aparecem como placeholders TODO que você precisa ligar a um File, Buffer ou stream em tempo de execução.
Meu comando curl é enviado para algum servidor?
Não. O parser e todos os geradores de código rodam no seu navegador. Bearer tokens, cookies e corpos de requisição nunca saem da sua máquina — por padrão, a gente até mascara eles na pré-visualização da *Requisição parseada*.
Por que meu curl do Windows fica diferente?
O curl.exe do Windows (e CMD/PowerShell) usa ^ ou crase \` como continuação de linha e pode escapar strings de forma diferente. O conversor normaliza os padrões mais comuns do Windows, mas se algo parecer errado depois de colar, tente copiar o comando em uma única linha.
Ele suporta requisições GraphQL?
Sim — uma requisição GraphQL é só um POST com um corpo JSON contendo query e variables. Cole o curl, e o conversor gera um POST JSON normal na linguagem alvo. Lide com o formato da resposta ({ data, errors }) do mesmo jeito que faria em qualquer cliente GraphQL.
Posso colar um curl exportado do Postman?
Sim. A exportação *Code → cURL* do Postman é totalmente suportada, incluindo a formatação em várias linhas com \. Também funciona o curl gerado pelo *Copy as cURL* do DevTools do Chrome e do Firefox.
fetch ou axios — qual saída devo escolher?
Use fetch se seu projeto já tem (ele vem nativo nos navegadores e no Node moderno). Use axios se você precisar de parsing automático de JSON, interceptors, retries ou eventos de progresso — recursos que o fetch não oferece de fábrica.

Saiba mais

Outras ferramentas para desenvolvedores

Coddy programming languages illustration

Aprenda a programar com o Coddy

COMEÇAR