A lightweight, secure, web-based API testing tool with built-in CORS proxy support and password protection. Single HTML file - no installation required.
- Password Protection: SHA-256 hashed password authentication
- Session-Based: Auto-locks on page refresh
- Local CORS Proxy: Keep API calls secure on localhost
- Encrypted Storage: Optional encryption for sensitive request data
- All HTTP Methods: GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS
- Request Components:
- URL parameters with key-value editor
- Custom headers with common presets
- Multiple body types: Raw, JSON, Form URL Encoded
- Authentication: None, Bearer Token, Basic Auth, API Key
- Response Handling:
- Syntax-highlighted JSON/XML/HTML responses
- Status code and timing information
- Copy-to-clipboard functionality
- Full headers display
- Collections & Groups: Organize requests by projects/environments
- Save & Load: localStorage-based request library
- Import/Export: JSON-based backup and restore
- Auto-Backup (Optional): Automatically exports to file with every change (can be toggled in Settings)
- Built-in Status Monitor: Real-time proxy online/offline detection
- Multiple Proxy Options:
- π Local (Secure) - Recommended
- AllOrigins
- CORSProxy.io
- Custom proxy URL
- One-Click Start Instructions: GUI-integrated proxy startup guide
- Light/Dark Theme: Toggle between themes with persistent preference (moon/sun icon in header)
- Settings Dialog: Centralized settings for auto-backup preferences and app information
- Split-Pane Interface: Sidebar | Request | Response
- Toast Notifications: Non-blocking success/error messages
- Form-Urlencoded Editor: Visual key-value field editor
- Auto URL Encoding: Toggle for form values
- Common Presets: Quick-add common headers and parameters
Simply open index.html in any modern web browser. No server or installation required!
Default Password: admin123
- Enter your API endpoint URL
- Select HTTP method (GET, POST, etc.)
- Add headers, params, or body as needed
- Click "Send Request"
If you get CORS errors:
- Check "CORS Proxy" checkbox
- If proxy is offline, click "π Start Proxy" button
- Follow instructions (double-click
start_proxy.bat) - Proxy status will turn green when running
standalone-api-client/
β
βββ index.html # Main application (single-file, fully functional)
βββ local_cors_proxy.py # Local CORS proxy server (Python/Flask)
βββ start_proxy.bat # Windows batch file to start proxy
β
βββ README.md # This file
βββ PASSWORD_SETUP.md # Password configuration guide
βββ CORS_PROXY_EXPLAINED.md # CORS proxy documentation
βββ .gitignore # Git ignore patterns
- Modern web browser (Chrome, Firefox, Edge, Safari)
- That's it! No other dependencies.
- Python 3.7+
- Flask and flask-cors (auto-installed by
start_proxy.bat)
Install manually:
pip install flask flask-cors- Password Setup Guide - How to change password and manage authentication
- CORS Proxy Explained - Understanding and using the local proxy
- Select "GET" method
- Enter URL:
https://api.example.com/users - Click "Send Request"
- Select "POST" method
- Enter URL:
https://api.example.com/users - Go to "Body" tab β Select "Raw"
- Enter JSON:
{ "name": "John Doe", "email": "john@example.com" } - In Headers tab, add:
Content-Type: application/json - Click "Send Request"
- Select "POST" method
- Go to "Body" tab β Select "Form URL Encoded"
- Click "+ Add Field" to add key-value pairs
- Toggle "Auto URL Encode" if needed
- Click "Send Request"
- Go to "Auth" tab
- Select "Bearer Token"
- Enter your token
- Click "Send Request"
- Configure your request
- Click "πΎ Save" button
- Enter name and group
- Request is saved to localStorage
- Click "π₯ Export" button
- JSON file downloads with all requests
- Share or backup the file
- Import later with "π€ Import" button
Auto-backup automatically exports your requests to a JSON file every time you make changes (with 5-second debouncing for performance).
To Enable/Disable:
- Click "βοΈ Settings" button in the header
- Toggle "Enable auto-backup" checkbox
- Setting is saved immediately and persists across sessions
When Enabled:
- Automatically exports after every save, update, or delete
- Creates timestamped JSON files in your Downloads folder
- Provides an extra safety net beyond localStorage
- Uses 5-second debouncing to avoid excessive file creation
Default: Enabled (can be disabled anytime)
- Click the moon icon (π) in the header to toggle to dark theme
- Click the sun icon (βοΈ) to toggle back to light theme
- Theme preference is saved automatically and persists across sessions
- Works on both the login screen and main application
- Default password:
admin123(change immediately!) - SHA-256 hashed (not stored in plaintext)
- Session-based (expires on page refresh)
- Manual lock button available
See Password Setup Guide for detailed instructions.
- All data stored in browser's localStorage
- Optional encryption for sensitive requests
- Export functionality for backup
- No data sent to external servers (except your API calls)
- Runs locally on
localhost:8080 - No data sent to third-party proxies (when using local option)
- Filters problematic headers
- Health check endpoint for monitoring
See CORS Proxy Guide for security details.
Problem: Request fails with CORS error Solution:
- Enable "CORS Proxy" checkbox
- Select "π Local (Secure)"
- Click "π Start Proxy" button
- Follow instructions to start proxy
- Wait for status to show "Proxy Online" (green)
Problem: Can't login with password Solution:
- Open
index.htmlin text editor - Find line:
const passwordHash = "..." - Replace with default hash:
240be518fabd2724ddb6f04eeb1da5967448d7e831c08c8fa822809f74c720a9 - Save file and try password:
admin123
Problem: Saved requests disappear Solution:
- Check browser's localStorage is enabled
- Try exporting requests as backup (JSON file)
- Check browser console (F12) for errors
- Click "π§ Cleanup" button to remove corrupted data
Problem: Proxy shows offline even after starting Solution:
- Check Python is installed:
python --version - Install dependencies:
pip install flask flask-cors - Check port 8080 is not in use
- Look for error messages in proxy terminal window
- Try manual start:
python local_cors_proxy.py
Contributions are welcome! Here's how:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes
- Commit:
git commit -m 'Add amazing feature' - Push:
git push origin feature/amazing-feature - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Inspired by Postman and Insomnia API clients
- Built for developers who need a lightweight, portable API testing solution
- No external dependencies in the main application
- Open an issue for bugs or feature requests
- Check existing issues before creating new ones
- Provide detailed information for faster resolution
- Request history tracking
- Environment variables support
- Collection sharing via URL
- Request chaining/workflows
- GraphQL support
- WebSocket testing
- Request templates library
- Custom theme colors
- Keyboard shortcuts
Built with β€οΈ for developers who value simplicity and security
β Star this repo if you find it useful!