⚠️ IMPORTANT SECURITY NOTICE⚠️ This project is intended for local development use only. It has not been security audited and contains a PHP proxy that could be dangerous if exposed to the public internet.
- DO NOT deploy this to production
- DO NOT expose the proxy.php to the internet
- Run this tool on localhost ONLY
- Use only for development and testing purposes
Transmit is a modern, feature-rich API testing platform built with React. It provides an intuitive interface for testing HTTP APIs, managing collections of requests, and analyzing responses.
- Support for all standard HTTP methods (GET, POST, PUT, DELETE, PATCH, OPTIONS, HEAD)
- Organized request configuration tabs:
- Headers
- Parameters
- Body (JSON, form-data, x-www-form-urlencoded)
- Authentication
- Settings
- No Auth
- Basic Auth
- Bearer Token
- API Key (Header or Query Parameter)
- Create and manage collections of API requests
- Organize requests within collections
- Rename or delete collections
- Import and export collections
- Save frequently used requests
- Formatted response viewing with syntax highlighting
- Multiple response view modes:
- Pretty (formatted)
- Raw
- Table view for array responses
- Response information tabs:
- Body
- Headers
- Cookies
- Info (status, time, size)
- Copy response data to clipboard
- Download response data
- Automatic request history tracking
- View and reuse previous requests
- Clear history option
- Environment variable support with {{variable}} syntax
- Configurable request timeouts
- SSL verification settings
- HTTP version selection
- Redirect handling
- Cookie management
- Clone the repository:
git clone https://github.com/yourusername/transmit.git
cd transmit- Install dependencies:
npm install-
PHP Proxy Setup: The project includes a
proxy.phpfile in the root directory that handles API requests. This proxy is necessary to avoid CORS issues and provide additional functionality.-
Configuration Requirements:
- PHP 7.4 or higher
- cURL extension enabled
- JSON extension enabled
-
Setup Steps:
# If using PHP's built-in server for development php -S localhost:8000Or configure in Apache/Nginx:
# Apache (.htaccess) <FilesMatch "\.php$"> SetHandler application/x-httpd-php </FilesMatch>
# Nginx location ~ \.php$ { include fastcgi_params; fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; }
-
Default Configuration: The proxy automatically:
- Handles CORS headers
- Processes incoming headers
- Manages cookies
- Supports all HTTP methods
- Handles SSL certificates
-
-
Update the proxy URL: In
src/components/Transmit/utils/request.js:const PROXY_URL = 'http://localhost:8000/proxy.php'; // Update this to match your setup
-
Start the development server:
npm run dev- Select the HTTP method from the dropdown
- Enter the request URL
- Configure request details in the tabs below:
- Add headers in the Headers tab
- Set query parameters in the Params tab
- Configure request body in the Body tab (for POST, PUT, PATCH)
- Set authentication in the Auth tab
- Adjust request settings in the Settings tab
- Click "Send" to make the request
- Create a collection using the "+" button in the sidebar
- Save requests to collections using the "Save" button
- Organize requests by collection
- Rename or delete collections using the context menu
- Click on saved requests to load them
- Click the "History" button in the sidebar to view request history
- Click on any historical request to load it
- Use the clear button to remove history
- View the response in the bottom panel
- Switch between different views:
- Body: View the response content
- Headers: See response headers
- Cookies: View response cookies
- Info: See request/response metrics
- Use the copy or download buttons to export response data
See DEVELOPMENT.md for technical details and customization guides.
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to your branch
- Create a Pull Request
The included proxy.php file should be properly secured in production:
- Update CORS headers:
header('Access-Control-Allow-Origin: *'); // Restrict to your domain in production- Add request validation:
// Validate incoming requests
if (!filter_var($requestData['url'], FILTER_VALIDATE_URL)) {
http_response_code(400);
exit(json_encode(['error' => 'Invalid URL']));
}- Consider adding rate limiting and other security measures for production use.
- Report bugs by creating issues
- Request features through the issue tracker
- Read the documentation for detailed information
- Built with React and Bootstrap
- Uses PrismJS for syntax highlighting
- Inspired by popular API testing tools

