Conversor de cURL y constructor de peticiones HTTP
Se envía desde tu navegador: la API debe permitir CORS, y los navegadores descartan headers como Cookie y User-Agent.
Parámetros de consulta
Headers
Autenticación
curl 'https://jsonplaceholder.typicode.com/posts/1'
Aquí aparecen las peticiones que envías o guardas. Se quedan en este navegador.
Cómo funciona
Pega un comando cURL en el cuadro de arriba y pulsa Importar. La fuente más cómoda es tu navegador: en las herramientas para desarrolladores abre la pestaña Red, haz clic derecho en una petición y elige Copiar como cURL. Funcionan tanto la variante bash como la cmd, y también los comandos escritos a mano, con comillas simples, comillas dobles, cadenas $'...' y líneas partidas con una barra invertida, un acento circunflejo o una comilla invertida. El comando se separa en método, URL, headers y body, y cada campo queda editable.
Qué lee el importador. `-X` o `--request` fija el método. `-H` añade un header. `-d`, `--data`, `--data-raw`, `--data-binary` y `--data-urlencode` fijan el body; si hay varios, se unen con `&`, igual que hace curl. Un body sin `-X` convierte la petición en POST, y un body sin Content-Type recibe application/x-www-form-urlencoded, también como en curl. `--json` pone un body JSON con sus dos headers. `-u usuario:contraseña` se convierte en un header Authorization Basic, `-A` en User-Agent, `-e` en Referer y `-b` en Cookie. `-G` pasa los datos a la query string e `-I` envía un HEAD. Los campos `-F` se convierten en campos urlencoded, porque una página web no puede reproducir la subida de un archivo de tu disco. Las opciones que no cambian la petición, como `-L`, `-k`, `-s`, `-v` y `--compressed`, se descartan.
Crear una petición desde cero. Elige el método (GET, POST, PUT, PATCH, DELETE, HEAD u OPTIONS), escribe la URL (la tabla Parámetros de consulta muestra sus parámetros decodificados, uno por fila: cambias un valor, añades o quitas una fila y la URL se reescribe con la codificación correcta, así que `a&b` pasa a ser `a%26b`), añade filas con “+ Añadir header” y escribe un body. El selector Autenticación añade el header Authorization por ti: Token Bearer, o Basic a partir de un usuario y una contraseña (codificados en Base64 como usuario:contraseña). Un header Authorization importado va a parar a ese selector, así que el token se edita en un solo sitio. Formatear JSON indenta el body con dos espacios y te avisa si no es JSON válido.
Código en cinco lenguajes. El panel Código reescribe la petición como cURL, fetch de JavaScript, axios, Python requests o HTTPie, y se actualiza mientras escribes. Cuando el Content-Type es JSON, fetch recibe un body `JSON.stringify({...})`, axios un objeto normal y Python un payload `json=` con true, false y null cambiados por True, False y None. La salida cURL entrecomilla cada valor para una shell POSIX, así que una URL o un body con un apóstrofo sobrevive a la ida y vuelta. Copiar pone en el portapapeles la pestaña activa.
Enviarla. Enviar lanza la petición con el fetch del navegador y muestra el código de estado, el tiempo que ha tardado, los headers de la respuesta y el body, formateado si es JSON. La petición va de tu navegador directamente a la API, sin pasar por un servidor nuestro. Eso tiene dos consecuencias. La API tiene que permitir peticiones cross-origin (CORS): las API públicas suelen hacerlo, las internas y de administración a menudo no, y en ese caso la página te dice que la petición falló y te sugiere ejecutar el cURL en una terminal. Y los navegadores no dejan que una página fije algunos headers, entre ellos Cookie, User-Agent, Referer y Host, así que quedan fuera de la petición enviada aunque aparezcan en el código generado.
Historial. Cada petición que envías, y las que guardas con el botón Guardar, entra en un historial con las 30 últimas. Haz clic en una para cargarla de nuevo en el constructor. La lista vive en el localStorage de este navegador y en ningún otro sitio, lo que también significa que una petición guardada conserva ahí su header Authorization: usa Borrar historial en un equipo compartido.
Preguntas frecuentes
¿Cómo convierto un comando cURL a fetch o a Python?
- Pégalo en el cuadro de importación, pulsa Importar y elige la pestaña fetch o Python en el panel Código. El comando se separa en método, URL, headers y body, y cada pestaña reescribe esa petición: `fetch()` con un objeto de headers para JavaScript, `requests.request()` para Python, además de axios y HTTPie. Copiar se lleva el código de la pestaña en la que estás.
¿Sirve como alternativa a Postman?
- Para peticiones sueltas, sí: crea un GET o un POST con headers, autenticación y un body JSON, envíalo, lee la respuesta y conserva un historial. No sustituye a Postman del todo. No hay colecciones, entornos, variables ni scripts de test, y las peticiones salen del navegador, así que la API tiene que permitir CORS. Si una API no lo permite, copia el cURL y ejecútalo en una terminal.
¿Por qué Enviar falla con un error de CORS?
- Porque la API no acepta peticiones desde otros sitios web. Una página solo puede leer la respuesta de otro origen cuando el servidor contesta con un header Access-Control-Allow-Origin que lo permite. Postman y curl no son páginas web, así que ignoran CORS; esta herramienta no puede. Copia el cURL y ejecútalo en una terminal, o prueba con una API que envíe ese header.
¿Cómo copio una petición como cURL en Chrome o Firefox?
- Abre las herramientas para desarrolladores (F12), ve a la pestaña Red, recarga la página, haz clic derecho en la petición que quieres y elige Copiar y luego Copiar como cURL. Chrome en Windows ofrece Copiar como cURL (cmd) y Copiar como cURL (bash); los dos se importan aquí. Firefox tiene Copiar como cURL en el mismo menú.
¿Por qué no se envían mis headers Cookie y User-Agent?
- Porque los navegadores prohíben que una página web los fije. Cookie, User-Agent, Referer, Host, Origin y algunos más están en la lista de nombres de header prohibidos de la especificación fetch, así que el navegador los quita de la petición que envía la página. Siguen apareciendo en el código generado, que es lo que quieres cuando lo ejecutas fuera del navegador.
¿Cómo envío una petición POST con JSON usando curl?
- Con `curl -X POST https://api.example.com/items -H 'Content-Type: application/json' -d '{"name":"Ada"}'`, o desde curl 7.82 con la forma más corta `curl --json '{"name":"Ada"}' https://api.example.com/items`. `-X POST` es opcional, porque `-d` ya implica POST. Crea la petición aquí y la pestaña cURL escribe el comando con las comillas ya resueltas.
¿Cómo añado un token Bearer o autenticación Basic?
- Elige Token Bearer o Basic en el selector Autenticación. Bearer añade `Authorization: Bearer <token>`; Basic pide un usuario y una contraseña y añade `Authorization: Basic` seguido del Base64 de usuario:contraseña, el mismo header que curl construye con `-u usuario:contraseña`. Base64 es una codificación, no un cifrado, así que trata un header Basic como si fuera la propia contraseña.
¿Se guardan mis peticiones y tokens en algún sitio?
- Solo en tu navegador. Importar, editar y generar código no hace ninguna petición de red; Enviar hace exactamente una, a la URL que escribiste. El Historial se guarda en el localStorage de este navegador, incluido cualquier header Authorization, y nunca se sube. Usa Borrar historial al terminar si el equipo es compartido.
Opciones de curl que lee el conversor
Qué hace cada opción con la petición y qué hace el importador con ella.
| Opción | Significado | En el constructor |
|---|---|---|
| -X, --request | Método HTTP | Selector de método |
| -H, --header | Añade un header a la petición | Fila de header |
| -d, --data, --data-raw, --data-binary | Body de la petición; implica POST | Body, varios se unen con & |
| --data-urlencode | Campo del body codificado para URL | Body |
| --json | Body JSON más los headers Content-Type y Accept | Body y dos filas de header |
| -F, --form | Campo multipart/form-data | Campo urlencoded del body (sin archivos) |
| -u, --user | Autenticación Basic | Autenticación: Basic |
| -A, --user-agent | Header User-Agent | Fila de header (los navegadores no la envían) |
| -e, --referer | Header Referer | Fila de header (los navegadores no la envían) |
| -b, --cookie | Header Cookie | Fila de header (los navegadores no la envían) |
| -G, --get | Envía los datos como query string | Se añaden a la URL |
| -I, --head | Petición HEAD | Método: HEAD |
| -L, -k, -s, -v, --compressed | Seguir redirecciones, omitir la comprobación TLS, modo silencioso, modo detallado, aceptar gzip | Se ignoran |
Significado de las opciones según el manual de curl (curl.se/docs/manpage.html). --json requiere curl 7.82.0 o posterior.