Generador y constructor de comandos cURL
Construye comandos curl en tu navegador: define método, cabeceras, autenticación y cuerpo, y obtén el comando listo para copiar al instante. Presets para Bearer, POST JSON y subida de archivos. Gratis, privado, sin registro.
Nuestro equipo verifica el constructor de comandos curl frente al comportamiento real de curl para métodos HTTP (GET/POST/PUT/PATCH/DELETE), esquemas de autenticación (Bearer, Basic, cabeceras de API-key), tipos de cuerpo (JSON sin formato, formulario urlencoded, subida de archivo multipart) e indicadores de opción (-L, -k, -v, -i, --compressed, -o, tiempos de espera, proxy) — con entrecomillado de comillas simples seguro para el shell y codificación correcta de la cadena de consulta.
¿Qué es un comando curl?
curl es una herramienta de línea de comandos para transferir datos a través de HTTP y docenas de otros protocolos. Un comando curl es el nombre del binario, un conjunto de indicadores y una URL — por ejemplo curl -X POST https://api.example.com/users -H 'Content-Type: application/json' -d '{"name":"Ada"}'. Como curl viene instalado en prácticamente cualquier sistema Linux, macOS y Windows moderno, es la forma universal de probar una API, reproducir una petición desde la documentación o comprobar el estado de un servicio desde un script de CI. La concisión que lo hace poderoso también hace difícil recordarlo, que es exactamente por qué un constructor visual ayuda.
Todo comando curl tiene la misma anatomía. El método (-X GET, -X POST, …) establece el verbo HTTP y usa GET por defecto. La URL es el endpoint, con los parámetros de consulta añadidos después de ?. Las cabeceras (-H 'Clave: Valor', repetibles) llevan metadatos como Accept y Content-Type. La autenticación es simplemente una cabecera especial — -H 'Authorization: Bearer …' para un token, -u usuario:contraseña para autenticación Basic o una -H 'X-API-Key: …' personalizada. El cuerpo (-d para datos sin formato o de formulario, -F para multipart y subidas de archivos) lleva el payload. Por último, los indicadores de opción como -L (seguir redirecciones), -i (incluir cabeceras de respuesta) y -v (verbose) modulan el comportamiento. Esta herramienta presenta cada una de esas partes como un campo de formulario y reconstruye el comando en tiempo real.
Recurre a un generador de comandos curl cuando de otro modo estarías luchando con el entrecomillado, olvidando la cabecera Content-Type en un POST JSON, o ensamblando manualmente una subida multipart. El constructor resuelve el entrecomillado seguro para el shell con comillas simples, codifica tu cadena de consulta y adjunta las cabeceras correctas para cada tipo de cuerpo — y entonces copias un comando en el que puedes confiar. Para una referencia exhaustiva indicador por indicador con más de 40 ejemplos ejecutables, lee la hoja de referencia de curl; para codificar valores de cadena de consulta complicados puedes usar nuestro codificador de URL.
Todo ocurre en tu navegador. Tus tokens, credenciales, URL y cuerpos de petición se ensamblan con JavaScript del lado del cliente y nunca se envían a ningún lugar — así que puedes construir comandos contra endpoints de producción reales con claves de API reales y nada abandona tu dispositivo.
# Plain GET — curl defaults to GET
curl https://api.example.com/users
# GET with a Bearer token (auth is just a header)
curl https://api.example.com/me \
-H 'Authorization: Bearer YOUR_TOKEN'
# POST a JSON body — note the Content-Type header
curl -X POST https://api.example.com/users \
-H 'Content-Type: application/json' \
-d '{"name":"Ada","role":"admin"}'
# Multipart file upload — '@' reads the file from disk
curl -X POST https://api.example.com/upload \
-F 'file=@report.pdf' \
-F 'title=Q3 report' Características principales
Constructor visual de peticiones
Presenta toda la petición como campos de formulario — método, URL, parámetros de consulta, cabeceras, autenticación, cuerpo y opciones — en lugar de tener que memorizar el orden de los indicadores y el entrecomillado. Sin más dudas sobre si la URL va antes o después del -d.
Comando en tiempo real con Copiar y Exportar
El comando curl se reconstruye con cada pulsación de tecla al pie de la página. Cópialo al portapapeles con un solo clic, o usa Exportar .sh para descargar un script de shell ejecutable que puedes añadir directamente a un repositorio o a un trabajo de CI.
Soporte completo de autenticación
Token Bearer, autenticación Basic (-u usuario:contraseña) y cabeceras personalizadas de API-key, emitidas cada una en el formato exacto que esperan los servidores. Elige el esquema, pega la credencial y se genera la cabecera Authorization o personalizada correcta.
Todos los tipos de cuerpo
JSON sin formato (con la cabecera Content-Type correspondiente añadida automáticamente), campos de formulario application/x-www-form-urlencoded y subidas multipart/form-data donde cualquier campo puede convertirse en archivo con el prefijo @.
Seis presets con un solo clic
GET con Bearer, POST JSON, Subida de formulario, Autenticación básica, Descarga -o y Depuración verbose rellenan todo el formulario con un toque. Comienza desde una petición funcional para las tareas de API más habituales y ajústala desde ahí.
Salida multilínea y en una sola línea
Alterna entre un comando compacto en una sola línea para pegado rápido y una versión multilínea con continuaciones de barra invertida, fácil de leer en un script o revisar en un pull request. El mismo comando, dos formatos.
Privacidad 100% basada en el navegador
Los tokens, URL, cabeceras y cuerpos de petición se ensamblan íntegramente en el lado del cliente y nunca abandonan tu dispositivo — verifícalo en la pestaña Red. Seguro para endpoints de producción y credenciales reales con cero exposición de datos.
Diseñado para el flujo de trabajo con DevTools
Pensado para el ciclo diario de probar API y reproducir peticiones desde la opción «Copiar como cURL» de DevTools del navegador. Una pestaña Convertir que analiza un comando curl pegado y lo transforma en fetch, requests, Go, PHP, Ruby y Node.js se lanzará en la próxima versión.
Alternativas a curl y clientes HTTP
HTTPie
CLI, sintaxis amigable para humanosUna CLI moderna con salida en color y una sintaxis más concisa (http POST api.example.com/users name=Ada). Establece Content-Type JSON por defecto. Más amigable para uso interactivo; curl gana en ubicuidad y portabilidad para scripts.
wget
CLI, orientado a descargasIdeal para descargas recursivas y mirroring de sitios; sigue redirecciones y reintenta por defecto. Más débil que curl para métodos arbitrarios, cabeceras personalizadas y pruebas de API. A menudo viene preinstalado junto con curl en Linux.
Postman
Aplicación GUIUna interfaz gráfica completa para construir, guardar y compartir peticiones con colecciones, entornos y sincronización en equipo. Ideal para exploración de API; puede importar/exportar curl. Más pesado que un comando de una línea para comprobaciones rápidas o CI.
Insomnia
Aplicación GUIUna alternativa de código abierto más ligera a Postman con un constructor de peticiones limpio e importación/exportación de curl. Útil para organizar peticiones de API; como Postman, es más de lo que necesitas para una llamada scripted puntual.
fetch() / requests
Clientes HTTP en códigoJavaScript fetch() y Python requests son la forma de hacer la llamada desde el código de la aplicación. Construye y verifica la petición como curl primero, luego tradúcela — la próxima pestaña Convertir generará el equivalente en fetch, requests y otros clientes.
Ejemplos de comandos curl
Petición GET simple
curl https://api.example.com/users
Sin indicador de método, curl usa GET por defecto. Es la petición más sencilla posible: obtiene un recurso e imprime el cuerpo de la respuesta en tu terminal. Añade parámetros de consulta en el constructor y se codifican automáticamente al final de la URL (?page=2&limit=50).
GET con token Bearer
curl https://api.example.com/me \ -H 'Authorization: Bearer YOUR_TOKEN'
La llamada autenticada más habitual contra una REST API. El preset de autenticación Bearer añade la cabecera Authorization: Bearer … por ti. Para inspeccionar el contenido de un JWT antes de enviarlo, pega el token en nuestro decodificador JWT.
POST con cuerpo JSON
curl -X POST https://api.example.com/users \
-H 'Content-Type: application/json' \
-d '{"name":"Ada","role":"admin"}' El elemento fundamental del generador de peticiones curl POST: el tipo de cuerpo JSON establece -X POST, adjunta la cabecera Content-Type: application/json y envía el payload con -d. Formatea las respuestas de la API con nuestro formateador JSON.
POST con formulario (urlencoded)
curl -X POST https://api.example.com/login \ -H 'Content-Type: application/x-www-form-urlencoded' \ -d 'username=ada&password=s3cret'
Envío clásico de formulario HTML. Cada par -d campo=valor se une con & y se envía como application/x-www-form-urlencoded. curl codifica en URL los caracteres reservados; construye los campos en la sección de cuerpo del formulario y la herramienta ensambla la cadena por ti.
Subida de archivo multipart
curl -X POST https://api.example.com/upload \ -F 'file=@report.pdf' \ -F 'title=Q3 report'
El comando de subida de archivos con curl usa -F para multipart/form-data. Añade el prefijo @ a un valor para adjuntar un archivo del disco; mezcla campos de archivo y de texto libremente. curl establece el límite multipart y el Content-Type automáticamente — nunca lo configures manualmente.
Descarga a un archivo
curl -L -o archive.zip \ https://example.com/files/archive.zip
Guarda el cuerpo de la respuesta en un archivo con nombre usando -o, y -L sigue las redirecciones hacia la URL real de descarga (habitual en CDN y enlaces de activos de versiones). Usa -O en lugar de -o para conservar el nombre de archivo del servidor.
Autenticación básica
curl -u ada:s3cret \ https://api.example.com/private
La autenticación básica de curl usa -u usuario:contraseña; curl codifica las credenciales en Base64 en una cabecera Authorization: Basic … al transmitirlas. Envía siempre la autenticación básica sobre HTTPS — Base64 es codificación, no cifrado, y es trivialmente reversible.
Depuración verbose
curl -v -i https://api.example.com/health
Cuando una petición falla, -v imprime la línea de petición completa, cada cabecera enviada y recibida, y el apretón de manos TLS; -i incluye las cabeceras de respuesta en la salida del cuerpo. El primer recurso cuando una API devuelve el código de estado incorrecto.
Cómo construir un comando curl
- 1
Elige el método HTTP
Selecciona GET, POST, PUT, PATCH, DELETE, HEAD u OPTIONS. curl usa GET por defecto; elegir POST u otro verbo añade
-X MÉTODOal comando generado. O pulsa un preset para establecer el método y un cuerpo compatible con un solo clic. - 2
Introduce la URL y los parámetros de consulta
Escribe la URL de la petición (p. ej.
https://api.example.com/users). Añade parámetros de consulta como pares clave/valor y la herramienta los codifica en URL y añade?clave=valor&…a la URL automáticamente — no es necesaria ninguna codificación manual. - 3
Añade cabeceras y autenticación
Añade cabeceras de petición como pares clave/valor y luego elige un esquema de autenticación: Ninguna, token Bearer, Basic (usuario/contraseña) o una cabecera personalizada de API-key. Se genera la cabecera
Authorizationo personalizada correcta en el formato exacto que espera el servidor. - 4
Configura el cuerpo de la petición
Para POST/PUT/PATCH, elige un tipo de cuerpo: pega JSON sin formato (la cabecera
Content-Typese añade por ti), construye campos de formulario urlencoded, o ensambla una subida multipart y convierte cualquier campo en archivo con el prefijo@. - 5
Activa las opciones
Activa los indicadores que necesites — seguir redirecciones (
-L), TLS inseguro (-k), verbose (-v), incluir cabeceras (-i), comprimido (--compressed), salida a archivo (-o), tiempo de espera de conexión o proxy (-x). Cada activación actualiza el comando en tiempo real. - 6
Copia, exporta o restablece
Copia el comando terminado, usa Exportar .sh para descargarlo como script, o Restablecer para limpiar el formulario. Usa el interruptor Multilínea para alternar entre salida en una sola línea y con continuaciones de barra invertida antes de copiar.
Errores comunes en curl
Falta -X con un método que tiene cuerpo
Enviar un cuerpo con -d implica POST, pero si necesitas PUT o PATCH debes indicarlo explícitamente con -X. Olvidarlo envía el cuerpo como POST y el servidor devuelve el estado incorrecto o rechaza la petición.
# Intentaba un PATCH, pero -d solo implica POST
curl -d '{"role":"admin"}' \
https://api.example.com/users/7 # Establece el verbo explícitamente
curl -X PATCH -d '{"role":"admin"}' \
-H 'Content-Type: application/json' \
https://api.example.com/users/7 Falta Content-Type en un POST JSON
Enviar JSON con -d NO establece la cabecera Content-Type — curl usa application/x-www-form-urlencoded por defecto. La mayoría de las API entonces no pueden analizar el cuerpo y devuelven un 400 o 415. Adjunta siempre el tipo de contenido JSON (o usa el preset de cuerpo JSON, que lo añade por ti).
# El servidor recibe urlencoded, no JSON — 400/415
curl -X POST https://api.example.com/users \
-d '{"name":"Ada"}' # Declara el tipo de contenido JSON
curl -X POST https://api.example.com/users \
-H 'Content-Type: application/json' \
-d '{"name":"Ada"}' Escape con comillas simples vs dobles
Dentro de las comillas dobles el shell expande $, comillas inversas y !, distorsionando el JSON o fallando con una $variable dentro del payload. Las comillas simples pasan el cuerpo literalmente. Usa comillas simples para los cuerpos JSON; cambia a comillas dobles solo en cmd.exe, que no respeta las comillas simples.
# $name es expandido por el shell a cadena vacía
curl -d "{\"user\":\"$name\"}" \
https://api.example.com/users # Las comillas simples envían el cuerpo literalmente
curl -d '{"user":"$name"}' \
https://api.example.com/users Usar -d en una petición GET
Añadir -d a una petición la convierte silenciosamente en POST. Si querías un GET con parámetros de consulta, ponlos en la URL (o usa -G para añadir los datos de -d a la cadena de consulta). Un -d en un GET es una de las razones más comunes de «mi GET no funciona».
# -d convierte esto en POST, no en GET curl -d 'page=2&limit=50' \ https://api.example.com/users
# La cadena de consulta en la URL lo mantiene como GET curl 'https://api.example.com/users?page=2&limit=50'
Continuación de línea en Windows: ^ vs \
La barra invertida (\) continúa un comando en la siguiente línea en bash, Git Bash y WSL. En cmd.exe el carácter de continuación es el acento circunflejo (^), y PowerShell usa una comilla invertida (`` ` ``). Pegar un comando con continuación de barra invertida en cmd lo rompe — cambia esta herramienta a salida en una sola línea para cmd de Windows.
:: cmd.exe — la barra invertida no es carácter de continuación
curl -X POST https://api.example.com/users \
-d '{"name":"Ada"}' :: cmd.exe — una línea, o usa ^ para continuar
curl -X POST https://api.example.com/users -d "{\"name\":\"Ada\"}" Espacios en la URL sin codificar
Un espacio en bruto (o &, #, ?) en una URL o valor de consulta rompe el comando — el shell divide el argumento y curl ve una URL truncada. Codifica en porcentaje el valor (un espacio se convierte en %20) o deja que curl lo codifique con --data-urlencode. Los campos de parámetros de consulta de esta herramienta codifican automáticamente.
# El espacio divide el argumento — curl ve dos args curl https://api.example.com/search?q=hello world
# Codifica el espacio (o entrecomilla toda la URL) curl 'https://api.example.com/search?q=hello%20world'
Casos de uso habituales
- Prueba de REST API
- Construye y envía peticiones contra un endpoint REST sin salir de la terminal: establece el método, pega un token Bearer, envía un cuerpo JSON y lee la respuesta. La forma más rápida de confirmar que una API funciona antes de escribir el código del cliente.
- Reproducir una petición desde la documentación
- La documentación de la API muestra endpoints y parámetros, pero rara vez un comando completo listo para copiar. Rellena el método, la URL, las cabeceras y la autenticación aquí y obtén un comando curl que funciona tal cual — sin luchar con el entrecomillado ni cabeceras
Content-Typefaltantes. - Scripts de prueba de humo en CI/CD
- Genera un comando curl para una comprobación de estado o una prueba de humo post-despliegue, luego usa Exportar .sh para añadirlo a un pipeline. Añade
--connect-timeouty--max-timepara que un endpoint colgado no pueda bloquear la compilación, y comprueba los códigos de estado con-w. - Subida y descarga de archivos
- Ensambla una subida
multipart/form-datacon-F campo=@archivo, o construye una descarga con-L -o nombre_de_archivoque sigue las redirecciones hacia un CDN. Codifica primero los nombres de archivo o valores de consulta complicados con nuestro codificador de URL. - Depuración de webhooks
- Reproduce un payload de webhook enviando el mismo cuerpo JSON que el proveedor envía, con las cabeceras de firma y
Content-Typecorrectas. Reproduce la petición exacta localmente para depurar por qué tu manejador la rechazó. - Informes de errores reproducibles
- Pega un único comando curl autocontenido en un informe de error o PR para que cualquiera pueda reproducir la petición exacta — método, cabeceras, marcador de autenticación y cuerpo. Mucho más claro que describir la petición en prosa.
- Aprender los indicadores de curl
- Ve cómo cada elección del formulario se corresponde con un indicador real — elige autenticación Basic y observa cómo aparece
-u, añade un cuerpo JSON y ve cómo se adjunta la cabeceraContent-Type. Una forma práctica de aprender la sintaxis, combinada con nuestra hoja de referencia de curl. - Preparar una petición para convertir a código
- Construye y verifica la petición como curl primero, luego tradúcela al cliente HTTP de tu aplicación. La próxima pestaña Convertir transformará un comando curl pegado en fetch, requests, Go, PHP, Ruby y Node.js — comienza desde un comando curl que sabes que funciona.
Referencia de indicadores y sintaxis de curl
- Entrecomillado y escape del shell
- La herramienta envuelve los valores entre comillas simples, la forma más segura en shells POSIX porque nada dentro de una cadena entre comillas simples se expande. Una comilla simple literal dentro de un valor se emite como la secuencia
'\''(cierra comilla, comilla escapada, reabre comilla). Encmd.execambia a comillas dobles; Git Bash y WSL ejecutan los comandos con comillas simples generados sin cambios. - -d vs --data-raw vs --data-binary
-d/--dataelimina los saltos de línea y retornos de carro del cuerpo — válido para paresclave=valor, con pérdida para contenido multilínea.--data-rawes lo mismo pero no tratará un@inicial como nombre de archivo.--data-binaryenvía los bytes exactamente como se proporcionan (usa@archivopara subir contenidos de archivo brutos). Los tres implican POST salvo que se anule el método.- Multipart (-F) vs urlencoded (-d)
-F campo=valorproducemultipart/form-datacon un límite generado — necesario para subidas de archivos (-F archivo=@ruta) y formularios mixtos de archivos y texto.-d campo=valorproduceapplication/x-www-form-urlencoded, una cadena única unida por&. Nunca establezcasContent-Typemanualmente para multipart; curl calcula el límite y establece la cabecera por sí mismo.- Codificación de la cabecera de autenticación
- La autenticación Bearer envía
Authorization: Bearer <token>literalmente (RFC 6750). La autenticación Basic de-u usuario:contraseñase codifica en Base64 comoAuthorization: Basic <base64>al transmitirla — es codificación, no cifrado, así que usa HTTPS. Una API key es cualquier cabecera personalizada que requiera el servicio, p. ej.X-API-Key: <valor>. - Codificación de la cadena de consulta
- Los parámetros de consulta añadidos en el constructor se codifican en porcentaje y se añaden como
?clave=valor&clave2=valor2. Los caracteres reservados (espacios,&,=,#) se escapan para que la URL sea válida. Para los campos del cuerpo que deban codificarse, el propio--data-urlencodede curl gestiona la codificación en el momento de la petición. - Comportamiento de las redirecciones (-L)
- Sin
-L, curl imprime una respuesta 301/302 y se detiene. Con-Lsigue la cabeceraLocationhasta la URL final. Ten en cuenta que curl elimina la cabeceraAuthorizationcuando una redirección cruza a un host diferente (un comportamiento de seguridad por defecto); usa--location-trustedsolo cuando entiendas las implicaciones. - Respuestas comprimidas
--compressedañade una cabeceraAccept-Encodingque anuncia compatibilidad con gzip/deflate/brotli y descomprime la respuesta de forma transparente, ahorrando ancho de banda. El cuerpo descodificado es idéntico al de una petición sin comprimir — es puramente una optimización de la transferencia, seguro de activar en la mayoría de llamadas a la API.- Salida: -o vs -O
-o nombre_de_archivoescribe el cuerpo de la respuesta en un archivo que tú nombras;-Olo guarda con el nombre de archivo remoto de la ruta de la URL. Ambos suprimen el volcado normal por stdout. Combínalos con-Lpara que las redirecciones se resuelvan al activo real antes de escribir el archivo.
Buenas prácticas para peticiones curl
- Nunca codifiques secretos en comandos compartidos
- Un comando curl que pegas en un PR, un ticket o un chat será leído por otros e indexado por herramientas. Reemplaza los tokens y contraseñas por un marcador (
YOUR_TOKEN) o referencia una variable de entorno (-H "Authorization: Bearer $API_TOKEN"). Para credenciales largas, curl puede leer una cabecera de un archivo con-H @archivocabecerapara que el secreto nunca aparezca en el historial del shell. - Prefiere --data-binary @archivo para payloads binarios
- Cuando el cuerpo es un archivo cuyos bytes importan — una imagen, un payload firmado, JSON donde el espacio en blanco es significativo — usa
--data-binary @archivoen lugar de-d @archivo. El-dsimple elimina los saltos de línea y retornos de carro, corrompiendo silenciosamente el contenido binario y multilínea.--data-binaryenvía el archivo exactamente como está en el disco. - Entrecomilla los valores de las cabeceras
- Envuelve siempre los valores de
-Hentre comillas:-H 'Content-Type: application/json'. Sin entrecomillar, el espacio después de los dos puntos divide el argumento y curl ve una cabecera malformada. Las comillas simples también evitan que el shell expanda$,*y otros caracteres especiales dentro del valor — exactamente lo que esta herramienta emite por defecto. - Usa --compressed para ahorrar ancho de banda
- Añade
--compresseden llamadas a la API y descargas para solicitar codificación gzip/brotli y que curl descomprima de forma transparente. Para las API con mucho JSON, esto puede reducir el tamaño de la transferencia en un 70-90% sin ningún cambio en la respuesta que ves — una mejora gratuita en scripts que sondean endpoints repetidamente. - Fija los tiempos de espera en los scripts
- En cualquier contexto automatizado, añade
--connect-timeouty--max-timepara que un endpoint lento o colgado no pueda bloquear un pipeline indefinidamente. Una comprobación de estado con--max-time 10falla rápido y permite que tu CI continúe. Combínalo con--retry Npara absorber fallos de red transitorios sin rendirse de inmediato. - Verifica con -v antes de automatizar
- Antes de incluir un comando curl en un script o trabajo cron, ejecútalo una vez con
-vpara ver la línea de petición exacta, las cabeceras y el apretón de manos TLS. Es la forma más rápida de detectar un método incorrecto, unContent-Typefaltante o una cabecera de autenticación que no se adjuntó — depura interactivamente y luego elimina-vpara producción.
Preguntas frecuentes
¿Qué hace esta herramienta?
.sh o alterna entre salida en una sola línea y multilínea. Es un generador de comandos curl pensado para el flujo de trabajo diario de probar una REST API, reproducir una petición desde la documentación o insertar un comando reproducible en un informe de error. Para una referencia más completa sobre los propios indicadores, consulta nuestra hoja de referencia de curl. ¿Se suben mis datos (tokens, URL) a algún servidor?
¿Cómo envío una petición POST con JSON en curl?
curl -X POST <url> -H 'Content-Type: application/json' -d '{…}'. Dos partes son esenciales: el indicador -d (o --data) lleva el cuerpo, y la cabecera Content-Type: application/json le dice al servidor cómo analizarlo — si omites la cabecera, muchos frameworks ignoran o interpretan mal el payload. Las versiones modernas de curl (7.82+) también ofrecen el atajo --json, que establece la cabecera y el cuerpo juntos. Tras la llamada, pega la respuesta en nuestro formateador JSON para visualizarla y validarla. ¿Cómo añado un token Bearer a una petición curl?
Authorization con el valor Bearer YOUR_TOKEN, o elige el preset «GET con Bearer» y pega tu token. El comando generado es curl <url> -H 'Authorization: Bearer YOUR_TOKEN'. La palabra Bearer, un espacio y luego el token — ese formato exacto es requerido por la especificación Bearer de OAuth 2.0 (RFC 6750). Para inspeccionar las reclamaciones y la caducidad de un token antes de enviarlo, decodifícalo con nuestro decodificador JWT. ¿Cómo subo un archivo con curl?
curl -X POST <url> -F 'file=@/ruta/al/archivo'. El prefijo @ indica a curl que lea el archivo del disco y lo envíe como multipart/form-data; puedes añadir más campos -F tanto para archivos como para valores de texto en la misma petición. No establezcas la cabecera Content-Type manualmente para multipart — curl genera el límite y establece la cabecera automáticamente, y sobreescribirla rompe la subida. Para un PUT de un solo archivo, curl usa -T archivo <url>. ¿Puedo importar un comando copiado desde DevTools del navegador («Copiar como cURL»)?
-H en la sección de cabeceras y la URL en el campo URL. ¿En qué se diferencia curl en Windows?
cmd.exe se usan comillas dobles (") alrededor de los valores y el acento circunflejo (^) para la continuación de línea, y las comillas simples no tienen un significado especial. En PowerShell, curl es un alias de Invoke-WebRequest a menos que llames a curl.exe explícitamente, y las reglas de entrecomillado vuelven a ser distintas. La opción más sencilla es Git Bash o WSL, donde los comandos con comillas simples al estilo Unix que genera esta herramienta se ejecutan sin cambios. Si debes usar cmd, cambia el comando generado a una sola línea y reemplaza el entrecomillado '…' por "…". ¿Cuál es la diferencia entre -d, --data-raw y --data-binary?
-d (alias --data) envía un cuerpo y elimina los saltos de línea y retornos de carro de los datos — válido para pares clave=valor de formulario, arriesgado para JSON que ocupa varias líneas. --data-raw es idéntico pero no trata un @ inicial como nombre de archivo, por lo que es la opción segura cuando tus datos pueden comenzar literalmente con @. --data-binary envía los bytes exactamente como se proporcionan, sin eliminar saltos de línea — el indicador correcto para subir el contenido bruto de un archivo (--data-binary @archivo.json) o cualquier payload donde el espacio en blanco sea significativo. Los tres implican POST salvo que se anule el método. ¿Cómo envío cookies con curl?
-b para enviar cookies y -c para guardarlas. -b 'nombre=valor' envía una cadena de cookie literal, mientras que -b cookies.txt lee cookies de un archivo con formato Netscape. Para capturar las cookies que establece un servidor (por ejemplo, tras un inicio de sesión), añade -c cookies.txt para escribirlas en un almacén y reutiliza ese almacén con -b cookies.txt en la siguiente petición. Este constructor se centra en cabeceras, autenticación y cuerpo; para una cabecera de cookie también puedes añadir una cabecera Cookie: nombre=valor en la sección de cabeceras. ¿Cómo sigo las redirecciones?
-L manualmente. Por defecto, curl imprime la respuesta 301/302 y se detiene; -L le indica que siga la cabecera Location hasta el destino final. Es imprescindible para enlaces de descarga detrás de CDN, URL acortadas y API que redirigen HTTP a HTTPS. Combínalo con -o nombre_de_archivo para guardar un archivo descargado una vez que se resuelve la redirección. ¿Cómo establezco un tiempo de espera para una petición?
--connect-timeout <segundos>, que limita cuánto espera curl para establecer la conexión. Para un límite sobre la transferencia completa — conexión más descarga — añade --max-time <segundos> al comando generado manualmente. Fijar tiempos de espera es una buena práctica en cualquier script o prueba de humo de CI: sin ellos, un endpoint colgado puede bloquear tu pipeline indefinidamente. Combínalo con --retry N si quieres que curl reintente los fallos transitorios. Herramientas relacionadas
Ver todas las herramientas →Generador htpasswd — bcrypt, Apache MD5 (apr1) y Basic Auth
Web & API
Genera entradas htpasswd con bcrypt, Apache MD5 (apr1), SHA-1 y más. Obtén configuración lista para pegar en Apache, nginx y Docker. 100% en tu navegador — sin subidas.
Generador de etiquetas meta y Open Graph
Web & API
Genera etiquetas meta Open Graph, Twitter Card y SEO con vista previa en vivo de Google, Facebook y X. 100% gratis, en el navegador, sin registro — copia y pega el código.
Probador de nginx location — por qué gana ese bloque
Web & API
Qué bloque location de nginx gana — y por qué perdieron los demás. Probador gratuito para =, ^~, ~ y ~*, todo en tu navegador.
Calculadora de Subredes IPv4
Web & API
Calcula dirección de red, broadcast, rango de hosts utilizables, máscara de subred y comodín de cualquier bloque CIDR IPv4. Admite enlaces punto a punto /31 (RFC 3021), divide bloques en subredes y todo corre en tu navegador.
Decodificador traceparent — W3C Trace Context
Web & API
Deja de contar dígitos hex. Decodificador traceparent gratis y online — todo en tu navegador, sin subidas. Trace ID, span ID, 8 bits trace-flags, tracestate, Datadog/X-Ray/B3.
Descifrado AES — Compatible con OpenSSL y CryptoJS
Herramientas de Seguridad
Descifra AES en línea — GCM/CBC/CTR, frase de contraseña o clave sin procesar, detecta automáticamente el formato "U2FsdGVkX1" de OpenSSL y CryptoJS. 100 % en el navegador, las claves nunca salen de la página.