Esto sale de tu navegador. Va a api.github.com. Envía la petición que has escrito al servidor que has puesto en la URL.
Un banco de trabajo para APIs HTTP que corre entero en tu navegador: ni servidor, ni cuenta, ni extensión. Hace cuatro cosas: lanza peticiones y te explica por qué fallan, convierte colecciones entre Postman, Bruno, Insomnia, OpenAPI, HAR y curl, genera código en once lenguajes, y compara dos versiones de una API para decirte qué rompe.
Lo que NO es: un sustituto de Postman o Bruno. Una página web no puede llamar a localhost ni a cualquier API que no publique cabeceras CORS — eso no es una limitación de esta herramienta, es cómo funcionan los navegadores. Para tu API local, un cliente de escritorio. Aquí, en cambio, tienes lo que ellos no pueden darte: saber qué hizo el navegador.
Cuando una petición a otro dominio falla, el navegador dice TypeError: Failed to fetch y nada más. Con ese mensaje no se distingue «mi servidor está caído» de «mi servidor contestó y el navegador me tapó la respuesta» — dos problemas con arreglos opuestos.
Esta herramienta los separa: al fallar, lanza una segunda petición opaca a la misma dirección. Esa el navegador sí la manda y no la rechaza por CORS. Si se completa, tu servidor contestó y lo que falta son cabeceras. Si tampoco, no se llegó al servidor y CORS no tiene nada que ver.
Postman y Bruno no pueden hacer esto: son programas de escritorio y CORS no les aplica.
Con métodos como PUT, PATCH o DELETE, con un Content-Type que no sea de formulario, o con cualquier cabecera propia, el navegador manda antes una petición OPTIONS pidiendo permiso. Si tu servidor no la contesta, la petición real no llega a salir aunque tu API funcione perfectamente.
La herramienta te lo dice antes de enviar y te señala cuál de las tres cosas lo provoca, porque el arreglo es distinto en cada caso.
El navegador solo deja leer siete cabeceras (content-type, cache-control…). El resto están ahí —las ves en la pestaña Red— pero JavaScript no puede tocarlas salvo que el servidor las publique con Access-Control-Expose-Headers.
Si te falta tu X-RateLimit-Remaining, no es un fallo: es eso. La herramienta te avisa cuando solo llegan las siete.
Lo mismo al enviar: hay cabeceras que el navegador no deja poner (Host, Origin, Cookie, User-Agent…). Se descartan y se te dice cuáles, en vez de fingir que se enviaron.
Pega o suelta un export de Postman, Insomnia, un HAR del navegador, una especificación OpenAPI (JSON o YAML), un fichero .bru de Bruno o un puñado de comandos curl: el formato se reconoce solo. Sale como colección de Bruno (un .zip con su árbol de carpetas), como colección de Postman o como comandos curl.
Por qué aquí y no en un conversor web cualquiera: una colección exportada lleva tus tokens dentro. Es exactamente el fichero que no deberías subir a un servidor ajeno para convertirlo. Aquí no sale del navegador — y la herramienta te enumera las credenciales que encuentra, enmascaradas, para que sepas lo que estás a punto de compartir.
Los scripts de Postman (pm.test, pm.environment) y de Bruno son código contra un entorno que aquí no existe: no se traducen. Los campos de fichero guardan la ruta del disco de quien exportó, no el contenido. Las plantillas de Insomnia solo tienen valor dentro de Insomnia.
Todo eso aparece como aviso al importar. Una migración que se come los scripts sin mencionarlo es de la que te enteras en producción.
La petición que tengas montada, lista para pegar en once destinos: cURL, fetch, axios, Python (requests), HTTPie, Go, Java, C#, PHP, PowerShell y Rust.
No son ejemplos ilustrativos: van con sus import, con los escapes de cada lenguaje —un apóstrofo en el cuerpo no te parte el comando— y con los detalles que se hacen mal por costumbre (en C# el Content-Type va en el contenido y no en las cabeceras; en Go un import sin usar no compila).
Pega dos especificaciones OpenAPI y te dice qué cambió y cuáles de esos cambios rompen a un cliente que ya existe. Esa es la pregunta de verdad antes de desplegar, y es lo que un diff de colores no contesta.
Parejas que se ven iguales en un diff y significan lo contrario: añadir un parámetro opcional no rompe nada, añadirlo obligatorio sí; añadir un valor a una lista no rompe, quitarlo sí; quitar un parámetro de query se ignora, quitar uno de ruta cambia la URL.
Cada hallazgo dice por qué, no solo qué: un veredicto sin el porqué obliga a creerte, y con él se puede discutir. El informe sale en Markdown para pegarlo en un pull request.
Convertir, generar código y comparar especificaciones no mandan nada a ninguna parte: pasan enteros dentro de tu navegador.
Enviar una petición sí sale, evidentemente: va al servidor que tú escribas, con tus cabeceras y tu cuerpo. La primera vez se te enseña exactamente lo que se va a enviar —método, dirección, cada cabecera y el cuerpo— con las credenciales tapadas pero contadas. Después, el aviso de al lado del botón sigue diciendo a qué máquina va cada envío.
Y para poder diagnosticar un fallo se manda una segunda petición a esa misma dirección, sin cabeceras y sin leer la respuesta, solo para saber si el servidor está vivo.
Esto sale de tu navegador. Va a api.github.com. Envía la petición que has escrito al servidor que has puesto en la URL.