Menu

Convertidor de cURL

Convierte cualquier comando curl en fetch, axios, Python requests, Go, PHP y más.

Última actualización

Pega el comando curlPega un comando curl para empezar
JavaScript (fetch)
Pega un comando curl arriba para generar código en 12 lenguajes.

¿Qué es un convertidor de cURL?

Un convertidor de cURL transforma un comando curl —el formato que emiten todas las documentaciones de APIs, exportaciones de Postman y asistentes de IA— en código listo para pegar en tu lenguaje de programación real. Las cabeceras, query strings, cuerpos JSON, subidas multipart, autenticación básica y cookies se trasladan automáticamente, así no tienes que traducir la petición a mano.

curl es la forma universal de describir una petición HTTP, pero rara vez *ejecutas* curl en producción. Ejecutas JavaScript fetch, Python requests, el net/http de Go o lo que use tu stack. Esta herramienta cubre ese hueco: pegas el curl, haces clic en una pestaña y copias el código.

Todo se ejecuta localmente en tu navegador. Tu comando curl, las cabeceras y los tokens nunca salen de tu máquina — útil cuando pegas comandos con bearer tokens o cookies de sesión reales.

Lo que aprenderás al convertir

  • Las flags de curl se corresponden con conceptos concretos en cualquier cliente HTTP: -H es una cabecera de petición, -d es un cuerpo, -X es el método, -u es autenticación básica, -F es un campo de formulario multipart.
  • Si curl detecta un cuerpo (-d, --data, -F) y no hay -X, usa POST por defecto — el mismo valor por defecto de la mayoría de clientes, así que un -X no especificado también se convierte en POST en la salida.
  • Los cuerpos JSON son distintos de los cuerpos de formulario. Content-Type: application/json significa que el cuerpo se envía literal; application/x-www-form-urlencoded significa que los pares clave/valor se unen con &.

Cómo convertir curl a código paso a paso

  1. Pega tu comando curl

    Coloca el comando completo —incluyendo las continuaciones de línea \ copiadas de la documentación— en el cuadro de entrada. El parser normaliza automáticamente las comillas tipográficas y los marcadores de prompt de PowerShell.

  2. Elige el lenguaje de destino

    Las pestañas cubren JavaScript fetch, TypeScript, Node axios, Python requests, Python httpx, Go, PHP, Ruby, Java HttpClient, C# HttpClient, HTTPie y PowerShell. Cambiar de pestaña es gratis — el parseo se hace una sola vez.

  3. Inspecciona la petición parseada

    Abre el panel *Petición parseada* para confirmar que el método, la URL, las cabeceras, el tipo de cuerpo y opciones como insecure o follow redirects se han interpretado como esperabas.

  4. Copia y ajusta la autenticación

    Copia el código generado en tu proyecto. Si el curl incluía un bearer token o una cookie, sustituye el valor literal por una variable de entorno antes de hacer commit.

Referencia rápida de flags de cURL

Las flags que entiende este convertidor y a qué se corresponden en el código generado.

FlagSignificadoEjemplo
-X, --requestMétodo HTTP-X POST
-H, --headerCabecera de petición (repetible)-H 'Accept: application/json'
-d, --dataCuerpo de la petición — codifica en URL por defecto-d 'name=Ada&age=30'
--data-rawCuerpo sin expansión de @file--data-raw '$body'
--data-urlencodeCodifica en porcentaje una parte del cuerpo--data-urlencode 'q=hello world'
-F, --formCampo de formulario multipart (usa @file para archivos)-F 'avatar=@photo.jpg'
-u, --userAutenticación básica → Authorization: Basic …-u alice:s3cret
-G, --getPromueve el cuerpo a query string, envía GET-G -d 'q=ada'
-b, --cookieCabecera Cookie-b 'session=abc'
-A, --user-agentCabecera User-Agent-A 'MyApp/1.0'
-L, --locationSigue redirecciones 3xx-L
-k, --insecureOmite la verificación TLS (¡solo para desarrollo!)-k
--compressedAcepta respuesta gzip/deflate/br--compressed
--max-timeTimeout total de la petición en segundos--max-time 30

Ejemplos de conversión de cURL

GET con query string y cabecera de autenticación

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();

Los parámetros de query que ya están en la URL se quedan en la URL — el convertidor no los separa en un objeto params aparte para fetch. Para axios y requests, los verás extraídos a params / params= por legibilidad.

POST de un cuerpo 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()

Cuando el cuerpo se parsea como JSON y el Content-Type es application/json, el convertidor emite json= para requests y data: (objeto parseado) para axios. Si JSON.parse falla, se conserva la cadena literal original — nunca se reescribe.

Subida de archivo multipart

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 se convierte en una subida de archivo real (open('…', 'rb') en Python, FormData.append en JavaScript). Los campos -F planos se convierten en valores de formulario normales. La vista previa del navegador muestra un marcador TODO para los blobs de archivo que tendrás que proporcionar en tiempo de ejecución.

Autenticación 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'  }});

La autenticación básica se colapsa en una única cabecera Authorization. Las cookies se unen con ; y se envían como una sola cabecera Cookie — igual que hace curl en la red.

Errores habituales al convertir curl

  • Pegar curl con comillas tipográficas (', ', ", ") sacadas de un blog — parecen comillas pero rompen el parseo de la shell. El convertidor las normaliza, pero copia el comando original siempre que puedas.
  • Dejar -k (--insecure) en producción. Desactiva la verificación del certificado TLS — bien para desarrollo local, peligroso en tráfico real.
  • Olvidar que --data-raw y --data se comportan de forma distinta — --data codifica la entrada en URL. Usa --data-raw para cuerpos JSON que incluyan @ o &.

Preguntas frecuentes sobre el convertidor de cURL

¿Qué lenguajes soporta el convertidor?
Doce destinos listos para usar: JavaScript (fetch), TypeScript (fetch), Node (axios), Python (requests), Python (httpx), Go (net/http), PHP (curl), Ruby (Net::HTTP), Java (HttpClient), C# (HttpClient), HTTPie y PowerShell (Invoke-RestMethod). Todos se generan a partir de la misma representación parseada — cambiar de pestaña es instantáneo.
¿Maneja subidas multipart y flags -F?
Sí. -F field=value se convierte en un campo de formulario normal, -F file=@path se convierte en una subida de archivo real usando FormData (JS), files= (Python), CURLFile (PHP), etcétera. Las rutas a archivos aparecen como marcadores TODO que tendrás que conectar a un File, Buffer o stream en tiempo de ejecución.
¿Se envía mi comando curl a un servidor?
No. El parser y todos los generadores de código se ejecutan en tu navegador. Los bearer tokens, cookies y cuerpos de petición nunca salen de tu máquina — por defecto incluso los enmascaramos en la vista previa de *Petición parseada*.
¿Por qué mi curl de Windows se ve distinto?
curl.exe en Windows (y CMD/PowerShell) usa ^ o el acento grave \` como continuaciones de línea y a veces entrecomilla las cadenas de forma diferente. El convertidor normaliza los patrones más habituales de Windows, pero si un pegado se ve mal, prueba a copiar el comando en una sola línea.
¿Soporta peticiones GraphQL?
Sí — una petición GraphQL no es más que un POST con un cuerpo JSON que contiene query y variables. Pega el curl y el convertidor emitirá un POST JSON normal en el lenguaje que elijas. Maneja la forma de la respuesta ({ data, errors }) igual que en cualquier cliente GraphQL.
¿Puedo pegar un curl exportado desde Postman?
Sí. La exportación *Code → cURL* de Postman está totalmente soportada, incluido su formato multilínea con \. También funciona el curl producido por *Copy as cURL* en las DevTools de Chrome y Firefox.
fetch vs axios — ¿qué salida debería elegir?
Usa fetch si tu proyecto ya lo trae (viene de serie en los navegadores y en Node moderno). Usa axios si necesitas parseo automático de JSON, interceptores de petición, reintentos o eventos de progreso — funcionalidades que fetch no ofrece de fábrica.

Más información

Otras herramientas para desarrolladores

Coddy programming languages illustration

Aprende a programar con Coddy

COMENZAR