Making REST calls without extra installs
Every major operating system already includes CLI tools, scripting environments, or system
utilities that can make HTTP/REST requests — no need to install anything like Postman or a Python
package just to try this API. curl (used throughout the rest of this guide) is the
most portable choice, but here are the built-in alternatives on each platform.
1. Universal cross-platform native tools
These work out of the box on almost all modern operating systems (Windows 10+, macOS, Linux):
curl
- Availability: pre-installed on macOS, Linux distributions, and Windows 10/11 (via
curl.exe). - Capabilities: full HTTP support, custom headers, payload methods (
GET,POST,PUT,DELETE,PATCH).
curl -X POST "https://api.example.com/data" \
-H "Content-Type: application/json" \
-d '{"key": "value"}'
Standard web browsers (Chrome, Edge, Safari, Firefox)
- Availability: any graphical OS environment.
- Capabilities: the address bar handles basic
GETrequests directly; the browser's developer console runs the native JavaScriptfetchAPI forPOST/PUT/DELETEwithout any external tools.
Run in the browser's developer console (F12):
fetch('https://api.example.com/data', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ key: 'value' })
});
2. Windows-native tools
PowerShell (Invoke-RestMethod & Invoke-WebRequest)
- Availability: Windows 7+ (Windows PowerShell 2.0+) and PowerShell Core.
- Capabilities:
Invoke-RestMethodparses a JSON response directly into native PowerShell objects.
Invoke-RestMethod -Uri "https://api.example.com/data" -Method Post -ContentType "application/json" -Body '{"key":"value"}'
Command Prompt (via Windows Script Host / VBScript / JScript)
- Availability: legacy Windows environments where PowerShell is blocked or unavailable.
- Capabilities: uses native COM objects (
MSXML2.ServerXMLHTTPorMicrosoft.XMLHTTP).
script.vbs:
Set req = CreateObject("MSXML2.ServerXMLHTTP.6.0")
req.open "GET", "https://api.example.com/data", False
req.send
WScript.Echo req.responseText
Windows certutil trick (GET requests)
- Availability: all Windows versions (built for certificate services, but doubles as an HTTP file downloader).
certutil -urlcache -f "https://api.example.com/data" response.json
3. Linux & Unix-native tools
wget
- Availability: default on almost all GNU/Linux systems.
- Capabilities: file downloads, payload posting, and custom HTTP header manipulation.
wget --method=POST \
--header="Content-Type: application/json" \
--body-data='{"key":"value"}' \
-O - "https://api.example.com/data"
Bash's native /dev/tcp sockets (zero external tools)
- Availability: systems running a Bash binary compiled with network socket support.
- Capabilities: raw HTTP/1.1 requests over native file descriptors.
exec 3<>/dev/tcp/api.example.com/80
echo -e "GET /data HTTP/1.1\r\nHost: api.example.com\r\nConnection: close\r\n\r\n" >&3
cat <&3
Pre-installed system interpreters (Python / Perl)
- Availability: Python ships with almost every Linux distro (RHEL, Ubuntu, Debian) and older macOS releases.
python3 -c "import urllib.request; print(urllib.request.urlopen('https://api.example.com/data').read().decode())"
4. macOS-native tools
AppleScript / Open Scripting Architecture (OSA)
- Availability: pre-installed on modern macOS.
- Capabilities: interacts with URL resources natively, or calls
curlin a background subshell.
do shell script "curl -s 'https://api.example.com/data'"
Swift (via the swift CLI)
- Availability: macOS with the Command Line Tools installed.
- Capabilities: runs a standard Foundation
URLSessionREST request inline from the command line.
swift -e "import Foundation; let data = try? Data(contentsOf: URL(string: \"https://api.example.com/data\")!); print(String(data: data!, encoding: .utf8)!)"
Every example above targets a placeholder api.example.com — swap in this
API's own base URL and paths from the API guide to try it for real.