Postman – API Development and Testing Platform
What is Postman?
Postman is a comprehensive API development platform that simplifies every stage of the API lifecycle—from design and testing to documentation and monitoring. Originally created as a Chrome extension for testing REST APIs, Postman has evolved into a full-featured platform used by millions of developers worldwide to build, test, and collaborate on API development.
The platform provides an intuitive interface for constructing HTTP requests, examining responses, and automating test workflows. Developers can create collections of API requests, write test scripts, mock servers, generate documentation, and monitor API performance—all within a unified environment that supports individual developers and large teams alike.
Postman has become an essential tool in modern software development, where APIs form the backbone of application architecture. Whether you’re developing RESTful services, GraphQL endpoints, WebSocket connections, or SOAP services, Postman provides the tools needed to ensure API quality and reliability.
Key Features and Capabilities
Request Builder
Postman’s request builder provides a visual interface for constructing API requests of any complexity. Support for all HTTP methods (GET, POST, PUT, PATCH, DELETE, OPTIONS, HEAD), custom headers, query parameters, request body types, and authentication schemes makes it easy to interact with any API.
The interface displays response data in formatted views including Pretty, Raw, and Preview modes, with support for JSON, XML, HTML, and other content types. Response headers, cookies, and timing information provide comprehensive insight into API behavior.
Collections
Collections organize related API requests into logical groups, enabling developers to structure their work by project, feature, or workflow. Collections support folder hierarchies, shared variables, pre-request scripts, and tests that apply to all contained requests.
Collection runners execute multiple requests in sequence, enabling automated testing workflows. Variables can be passed between requests, simulating real-world usage patterns and multi-step processes.
Environment Variables
Environments store variables that customize request behavior across different contexts—development, staging, production, or different API versions. Switching environments instantly updates all variable references throughout collections, eliminating manual URL and credential changes.
Testing and Automation
Postman’s built-in testing framework uses JavaScript to validate API responses. Tests can verify status codes, response times, data structure, and content. Test results aggregate across collection runs, providing quality metrics and regression detection.
Mock Servers
Mock servers simulate API endpoints based on saved examples, enabling frontend development before backend completion. Teams can define expected responses and share mock servers, allowing parallel development without waiting for actual API implementation.
API Documentation
Postman automatically generates interactive documentation from collections. Published documentation includes request details, example responses, and a “Run in Postman” button that imports the collection directly. Documentation stays synchronized with collection changes.
Monitors
API monitors schedule collection runs at regular intervals, continuously verifying API health and performance. Alerts notify teams of failures or performance degradation, enabling proactive incident response.
System Requirements
Desktop Application
Postman desktop runs on Windows 10 or later (64-bit), macOS 10.13 or later, and Linux distributions with libgconf support. The application requires approximately 300 MB of disk space and 4 GB RAM minimum, with 8 GB recommended for large collections.
Web Application
The Postman web interface works in modern browsers and provides most desktop features. Some advanced features like intercepting browser requests require the desktop application.
Installation Guide
Installing on Windows
Install Postman on Windows using the official installer or package managers:
# Download from official website
# https://www.postman.com/downloads/
# Install using Chocolatey
choco install postman
# Install using Winget
winget install Postman.Postman
# Install using Scoop
scoop bucket add extras
scoop install postman
Installing on macOS
Install Postman on macOS:
# Install using Homebrew
brew install --cask postman
# Download from official website
# https://www.postman.com/downloads/
# Or download from Mac App Store
Installing on Linux
Install Postman on Linux distributions:
# Install using Snap (recommended)
sudo snap install postman
# Manual installation
wget https://dl.pstmn.io/download/latest/linux64 -O postman-linux-x64.tar.gz
sudo tar -xzf postman-linux-x64.tar.gz -C /opt
sudo ln -s /opt/Postman/Postman /usr/local/bin/postman
# Create desktop entry
cat > ~/.local/share/applications/postman.desktop << EOF
[Desktop Entry]
Type=Application
Name=Postman
Icon=/opt/Postman/app/resources/app/assets/icon.png
Exec=/opt/Postman/Postman
Categories=Development;
EOF
# Arch Linux (AUR)
yay -S postman-bin
Getting Started with Postman
Creating Your First Request
Launch Postman and click "New" to create a request. Select the HTTP method, enter the URL, and click "Send" to execute the request:
Example GET Request:
Method: GET
URL: https://jsonplaceholder.typicode.com/posts/1
Example POST Request:
Method: POST
URL: https://jsonplaceholder.typicode.com/posts
Headers:
Content-Type: application/json
Body (raw JSON):
{
"title": "Test Post",
"body": "This is test content",
"userId": 1
}
Understanding the Interface
Request Panel:
- Method selector (GET, POST, PUT, etc.)
- URL bar with variable support
- Params tab (query parameters)
- Authorization tab
- Headers tab
- Body tab (form-data, x-www-form-urlencoded, raw, binary, GraphQL)
- Pre-request Script tab
- Tests tab
- Settings tab
Response Panel:
- Body (Pretty, Raw, Preview)
- Cookies
- Headers
- Test Results
- Response time and size
Essential Keyboard Shortcuts
General Navigation
Ctrl/Cmd + N - New tab
Ctrl/Cmd + T - New tab
Ctrl/Cmd + W - Close tab
Ctrl/Cmd + S - Save request
Ctrl/Cmd + Shift + S - Save request as
Ctrl/Cmd + Enter - Send request
Ctrl/Cmd + Alt + C - Open console
Ctrl/Cmd + , - Open settings
Ctrl/Cmd + / - Show keyboard shortcuts
Request Building
Ctrl/Cmd + L - Focus URL bar
Ctrl/Cmd + B - Toggle sidebar
Ctrl/Cmd + Shift + P - Find and replace
Ctrl/Cmd + O - Open request
Ctrl/Cmd + E - Select environment
Ctrl/Cmd + Alt + E - Open environment quick look
Collection Operations
Ctrl/Cmd + Shift + N - New collection
Ctrl/Cmd + Shift + F - New folder
Ctrl/Cmd + D - Duplicate request
Alt + Click - Select multiple items
Working with Variables
Variable Types
Global Variables:
- Available across all workspaces
- Set: pm.globals.set("varName", "value")
- Get: pm.globals.get("varName")
- Use: {{varName}}
Environment Variables:
- Scoped to selected environment
- Set: pm.environment.set("varName", "value")
- Get: pm.environment.get("varName")
- Use: {{varName}}
Collection Variables:
- Scoped to collection
- Set: pm.collectionVariables.set("varName", "value")
- Get: pm.collectionVariables.get("varName")
Local Variables:
- Scoped to single request execution
- Set: pm.variables.set("varName", "value")
- Get: pm.variables.get("varName")
Data Variables:
- From external data files (CSV, JSON)
- Use: {{varName}}
Variable Priority (highest to lowest)
1. Local variables
2. Data variables
3. Environment variables
4. Collection variables
5. Global variables
Dynamic Variables
{{$guid}} - UUID v4 string
{{$timestamp}} - Current Unix timestamp
{{$isoTimestamp}} - ISO 8601 timestamp
{{$randomInt}} - Random integer 0-1000
{{$randomUUID}} - Random UUID
{{$randomAlphaNumeric}} - Random alphanumeric character
{{$randomBoolean}} - Random boolean
{{$randomEmail}} - Random email address
{{$randomUserName}} - Random username
{{$randomFirstName}} - Random first name
{{$randomLastName}} - Random last name
{{$randomCity}} - Random city name
{{$randomCountry}} - Random country name
Writing Tests
Basic Test Structure
// Test status code
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
// Test response time
pm.test("Response time is less than 500ms", function () {
pm.expect(pm.response.responseTime).to.be.below(500);
});
// Test headers
pm.test("Content-Type is JSON", function () {
pm.response.to.have.header("Content-Type", "application/json");
});
// Test JSON response
pm.test("Response has required fields", function () {
const jsonData = pm.response.json();
pm.expect(jsonData).to.have.property("id");
pm.expect(jsonData).to.have.property("title");
pm.expect(jsonData.id).to.be.a("number");
});
Advanced Test Patterns
// Test array responses
pm.test("All items have required properties", function () {
const jsonData = pm.response.json();
jsonData.forEach(function(item) {
pm.expect(item).to.have.property("id");
pm.expect(item).to.have.property("name");
});
});
// Test against JSON schema
const schema = {
"type": "object",
"properties": {
"id": { "type": "integer" },
"title": { "type": "string" },
"completed": { "type": "boolean" }
},
"required": ["id", "title"]
};
pm.test("Schema is valid", function () {
pm.response.to.have.jsonSchema(schema);
});
// Chain requests using variables
const jsonData = pm.response.json();
pm.environment.set("userId", jsonData.id);
// Conditional tests
if (pm.response.code === 200) {
pm.test("Success response structure", function () {
const jsonData = pm.response.json();
pm.expect(jsonData.success).to.be.true;
});
} else {
pm.test("Error response structure", function () {
const jsonData = pm.response.json();
pm.expect(jsonData.error).to.exist;
});
}
Pre-request Scripts
Common Use Cases
// Generate timestamp
pm.environment.set("timestamp", Date.now());
// Generate random data
pm.environment.set("randomEmail",
`test${Math.floor(Math.random() * 10000)}@example.com`);
// Calculate signature
const crypto = require('crypto-js');
const timestamp = Date.now().toString();
const signature = crypto.HmacSHA256(timestamp, pm.environment.get("apiSecret"));
pm.environment.set("signature", signature.toString());
// Get OAuth token (simplified)
pm.sendRequest({
url: pm.environment.get("authUrl"),
method: 'POST',
header: {
'Content-Type': 'application/json'
},
body: {
mode: 'raw',
raw: JSON.stringify({
client_id: pm.environment.get("clientId"),
client_secret: pm.environment.get("clientSecret"),
grant_type: 'client_credentials'
})
}
}, function (err, res) {
pm.environment.set("accessToken", res.json().access_token);
});
Authentication Methods
Supported Auth Types
API Key:
- Add to header or query parameter
- Key: X-API-Key, Value: your_api_key
Bearer Token:
- Header: Authorization: Bearer your_token
Basic Auth:
- Username and password encoded in Base64
- Header: Authorization: Basic base64(user:pass)
OAuth 2.0:
- Authorization Code
- Implicit
- Client Credentials
- Password Credentials
- Supports PKCE
OAuth 1.0:
- Consumer key/secret
- Token/Token secret
- Signature methods: HMAC-SHA1, RSA-SHA1, PLAINTEXT
AWS Signature:
- Access Key / Secret Key
- Region and Service
Digest Auth:
- Username/Password with digest authentication
NTLM Auth:
- Windows authentication
Hawk Auth:
- Hawk authentication scheme
Akamai EdgeGrid:
- Akamai API authentication
Collection Runner and Newman
Collection Runner
Collection Runner Options:
- Environment selection
- Iteration count
- Delay between requests
- Data file (CSV/JSON)
- Keep variable values
- Run order
- Save responses
Newman CLI
# Install Newman
npm install -g newman
# Run collection
newman run collection.json
# Run with environment
newman run collection.json -e environment.json
# Run with iterations
newman run collection.json -n 10
# Run with data file
newman run collection.json -d data.csv
# Generate HTML report
npm install -g newman-reporter-html
newman run collection.json -r html --reporter-html-export report.html
# Generate JUnit report for CI/CD
newman run collection.json -r junit --reporter-junit-export results.xml
# Combine reporters
newman run collection.json -r cli,html,junit
# Set environment variables
newman run collection.json --env-var "baseUrl=https://api.example.com"
# Bail on first failure
newman run collection.json --bail
Mock Servers
Creating Mock Servers
Setup Steps:
1. Create collection with requests
2. Add example responses to requests
3. Create mock server from collection
4. Use mock URL in requests
Example Configuration:
- Request: GET /users/1
- Example Response:
Status: 200
Body: {
"id": 1,
"name": "John Doe",
"email": "john@example.com"
}
Mock URL format:
https://{{mockId}}.mock.pstmn.io/users/1
API Documentation
Generating Documentation
Documentation Includes:
- Request descriptions
- Parameter details
- Example requests/responses
- Authentication requirements
- "Run in Postman" button
Markdown Support:
- Headers
- Code blocks
- Lists
- Links
- Images
- Tables
Postman Pricing
Free Plan
Includes unlimited collections, collaboration for up to 3 users, 1,000 API calls/month for mock servers and monitors, basic integrations, and public documentation.
Basic Plan
At $14/user/month, adds unlimited API calls, role-based access, external integrations, and audit logs.
Professional Plan
At $29/user/month, includes advanced roles, private API Network, 24/7 support, and custom domains for documentation.
Enterprise Plan
Custom pricing provides SSO/SAML, advanced audit logs, dedicated support, and custom integrations.
Best Practices
Organization
Collection Structure:
??? Project Name
? ??? Authentication
? ? ??? Login
? ? ??? Refresh Token
? ? ??? Logout
? ??? Users
? ? ??? Get All Users
? ? ??? Get User by ID
? ? ??? Create User
? ? ??? Update User
? ? ??? Delete User
? ??? Products
? ??? List Products
? ??? Get Product
Testing Strategy
Test Categories:
1. Status code verification
2. Response time validation
3. Schema validation
4. Data integrity checks
5. Business logic validation
6. Error handling verification
7. Security tests
Conclusion
Postman has become indispensable for API development, providing comprehensive tools that span the entire API lifecycle. From simple request testing to complex automated workflows, its intuitive interface and powerful features serve developers at all skill levels.
The platform's collaboration features, documentation generation, and CI/CD integration through Newman make it equally valuable for individual developers and enterprise teams. Whether you're exploring a new API, developing robust test suites, or maintaining API documentation, Postman provides the tools to work efficiently and effectively.
Download Options
Download Postman – API Development and Testing Platform
Version 10.21
File Size: 300 MB
Download NowSafe & Secure
Verified and scanned for viruses
Regular Updates
Always get the latest version
24/7 Support
Help available when you need it