Convertidor de cURL a Python

Pega un comando curl, por ejemplo uno copiado de la pestaña Red de tu navegador o de la documentación de una API, y obtén la misma petición como código Python con la biblioteca requests. Los cuerpos JSON pasan a diccionarios de Python, así que son fáciles de editar.

Funciona en tu navegador: nada de lo que escribes se envía a ningún sitio.

Cómo usarlo

  1. Pega el comando curl. Puede empezar por curl o $ curl, y también valen los comandos de varias líneas terminadas en \.
  2. Copia el código Python y ejecútalo con la biblioteca requests instalada (pip install requests).
  3. Revisa la nota bajo el resultado por si algo no se ha convertido.

Cómo funciona

El comando se divide como lo haría una shell y luego se lee cada opción:

  • El método sale de -X; si no, es POST cuando hay cuerpo o formulario, HEAD con -I y GET en los demás casos. Los métodos estándar usan requests.get, requests.post, etc.; los demás, requests.request.
  • Las cabeceras (-H, -A, -b, -e, y -u como autenticación Basic) van a un diccionario headers.
  • Un cuerpo JSON con tipo de contenido JSON pasa a json_data (true → True, null → None); los demás cuerpos, a una cadena data; los campos -F, a files. Con -G, los datos se añaden a la URL.

Ejemplo resuelto

curl -X POST https://api.example.com/items -H 'Content-Type: application/json' -d '{"name":"x","ok":true}'

se convierte en

import requests

headers = {
    'Content-Type': 'application/json',
}

json_data = {
    'name': 'x',
    'ok': True,
}

response = requests.post('https://api.example.com/items', headers=headers, json=json_data)
print(response.status_code)
print(response.text)

Consejos

  • Los comandos copiados del navegador llevan cookies y tokens. Quítalos o pásalos a variables de entorno antes de compartir el código.
  • Usa response.json() en lugar de response.text cuando la API devuelva JSON.
  • Para JavaScript, convierte el mismo comando con cURL a fetch.

Preguntas frecuentes

¿Qué opciones de curl se convierten?

-X, -H, -d y sus variantes --data, --data-urlencode, --json, -u, -F, -G, -I, -A, -b, -e y --url, con comillas ', " y $'…' y continuaciones de línea con barra invertida. Las opciones que solo cambian el comportamiento de curl, como -L, -s o --compressed, se descartan.

¿Cuándo se usa json= en lugar de data=?

Cuando la petición tiene un tipo de contenido JSON (puesto con -H o añadido por --json) y el cuerpo es JSON válido. Entonces el cuerpo se escribe como diccionario de Python y se pasa con json=. Cualquier otro cuerpo se pasa como cadena con data=.

¿En qué se convierte -u user:pass?

En una cabecera Authorization con Basic y user:pass en Base64, la misma cabecera que envía curl. Si lo prefieres, puedes sustituirla por auth=('user', 'pass').

¿Cómo se convierten las subidas de archivos?

Los campos -F pasan a un diccionario files. Los campos de texto se escriben como (None, 'value') y los archivos como open('name', 'rb'). Asegúrate de que la ruta del archivo es correcta donde se ejecuta el script.

¿Qué no se convierte?

Los proxies, los tiempos de espera, los certificados, -k y las opciones de salida no tienen equivalente directo aquí y se descartan o se listan bajo el resultado. Añade tú timeout= o verify= a la llamada si los necesitas.

Más en Desarrollo

Todas las herramientas de la categoría: Desarrollo ·Actualizado el 4 de noviembre de 2026

Opciones de privacidad

Google Analytics nos muestra qué herramientas se usan y si funcionan. Puede usar cookies. Tu elección se guarda en este navegador.