REST API Testing for Human Beings
RequestFlow is a visual, node-based REST API testing tool. Design API test workflows by connecting nodes on a canvas instead of writing scripts or managing configuration files.
RequestFlow's visual node-based workflow editor
RequestFlow takes a visual approach to API testing. Build workflows by dragging nodes onto a canvas and connecting them. See your data flow, add conditional logic, run scripts, and validate responses in a graphical interface.
Useful for:
- Testing API workflows with multiple requests
- Debugging API flows by inspecting data at each step
- Building reusable test scenarios
Build API test flows using a drag-and-drop node editor. Connect HTTP requests, data transformations, conditionals, and assertions visually.
Complex API workflows made simple with visual connections
-
Endpoint Nodes - HTTP client supporting REST methods (GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS)
- Authentication: None (default), Basic Auth, or Bearer tokens
- Path and query variable substitution from upstream nodes with automatic URL encoding
- Custom headers, timeouts, user agents, and content types
- Response validation with configurable accepted (200, 201 by default) and rejected (404, 401, 500) status codes
-
Payload Nodes - Data source management
- Load messages from files or define inline JSON
- Define path variables and query parameters (e.g.,
http://api/{userId}?{status}) - Inject data into your workflow
-
Script Nodes - JavaScript execution for data transformation
- Access message context: Request.body, Request.query, Request.path, Request.context
- Transform responses, extract values, manipulate data
-
Assertion Nodes - Validate API responses
- Built-in assertions: equals, contains, true/false checks
- Access response data and write custom validation logic
-
Conditional Nodes - Workflow branching (under development)
- JavaScript conditions for dynamic execution paths
- Enable/disable branches based on runtime data
- Note: Full condition evaluation implementation in progress
-
Delay Nodes - Timing control
- Add configurable delays between operations
- Millisecond precision
-
Viewer Nodes - Data inspection
- View messages at any workflow step
- JSONPath filtering for data structures
- Export responses to JSON files
-
External Nodes - Workflow composition
- Reference nodes from other graphs
- Configurable execution conditions
-
Group Nodes - Visual organization (under development)
- Planned: Color-coded grouping for related nodes
- Planned: Keep workflows organized
- Note: Basic structure exists but UI and workflow integration not yet implemented
Configuring HTTP requests with authentication and headers
Switch between environments (dev, staging, production) and define variables. Use {variable} syntax anywhere in your requests.
Manage multiple environments with ease
Inspect data at each step of your workflow: request bodies, response headers, query parameters, and path variables.
Inspect response data at any workflow step
Built-in JavaScript engine (QJSEngine) with JSONPath library for data manipulation and assertions.
Write custom JavaScript for data transformation and logic
Filter JSON responses using JSONPath expressions. Export filtered data for analysis.
Filter data with powerful JSONPath expressions
Save your workflows as .rqfl project files. Organize multiple test scenarios, version control your tests, and share them with your team.
Choose between dark and light themes.
Configure HTTP or SOCKS5 proxy with optional authentication in Settings.
- Ctrl+D - Duplicate selected node
- Delete - Delete selected nodes and edges
- F2 - Rename selected node with dialog prompt
- Ctrl+F - Find and navigate to nodes
- Mouse Wheel - Zoom in/out (no Ctrl required)
- Middle Mouse Button - Pan canvas
Quick access to recently opened projects from the File menu. Sample projects are automatically discovered from the samples/ directory and accessible via File > Sample projects.
Import API definitions from Swagger JSON files (Tools > Swagger Import). Imported endpoints appear in the Inventory panel where you can drag and drop them directly onto the canvas as pre-configured Endpoint nodes with URL, HTTP method, and parameters already set.
Pre-built binaries are available for Windows, macOS, and Linux:
- Windows: Installer with all dependencies included (Windows 10/11, 64-bit)
- macOS: Universal binary for Intel and Apple Silicon (macOS 10.14+)
- Linux: AppImage for major distributions (Ubuntu 20.04+, Fedora, etc.)
- Download
RequestFlow-macOS.dmgfrom the releases page - Open the DMG file (double-click)
- Drag
RequestFlow.appto the Applications folder shortcut - Eject the DMG
- Important: Before first launch, remove quarantine attributes by running this in Terminal:
xattr -cr /Applications/RequestFlow.app
- On first launch: Right-click the app in Applications and select "Open" (required for unsigned apps)
- Click "Open" in the security dialog that appears
- The app will now run normally
Note: Since the app is currently unsigned, macOS Gatekeeper requires these extra steps. The xattr -cr command removes quarantine attributes that cause the "damaged" error, and right-click → Open bypasses the signature requirement.
- Download
RequestFlow-Linux-x86_64.AppImagefrom the releases page - Make it executable:
chmod +x RequestFlow-Linux-x86_64.AppImage - Run it:
./RequestFlow-Linux-x86_64.AppImage
- Download
RequestFlow-Windows-x64.zipfrom the releases page - Extract the ZIP file to your preferred location
- Run
RequestFlow.exe
Requirements:
- Qt 5.15.2+ or Qt 6.x
- C++17 compatible compiler (MSVC 2019+, GCC, or Clang)
- Qt modules: Core, GUI, Network, Widgets, QML, SVG, OpenGL
git clone https://github.com/fatehmtd/RequestFlow.git
cd RequestFlow/RequestFlowApp
qmake RequestFlow.pro
makeSee CONTRIBUTING.md for detailed build instructions and development setup.
Scenario: Fetch a user, then fetch their posts using the user ID.
-
Create environment - Add a variable
baseUrl=https://jsonplaceholder.typicode.com -
Add Payload Node - Define path variables:
userId=1
-
Add first Endpoint Node - Configure:
- URL:
{baseUrl}/users/{userId} - Method: GET
- Connect Payload → Endpoint
- URL:
-
Add Script Node - Extract user data:
Response.body = Request.body; Response.context.userName = Request.body.name;
Connect Endpoint → Script
-
Add second Endpoint Node - Fetch posts:
- URL:
{baseUrl}/posts?userId={userId} - Method: GET
- Connect Script → Endpoint
- URL:
-
Add Assertion Node - Validate response:
Assert.true(Request.body.length > 0, "User should have posts");
Connect Endpoint → Assertion
-
Add Viewer Node - Inspect final data
- Set JSONPath filter:
$[0].titleto see first post title - Connect Assertion → Viewer
- Set JSONPath filter:
-
Run - Click Execute and watch data flow through each node
RequestFlow is in active development and represents an early release. While the core features are functional and ready for testing, you may encounter bugs, rough edges, or undefined behavior. This is expected for a young project, and we're working continuously to improve stability and add polish.
What this means for you:
- The application is usable for real API testing workflows
- Some edge cases may not be handled gracefully yet
- Features are being added and refined regularly
- Your bug reports and feedback directly improve the project
- Breaking changes may occur as we refine the architecture
We need your help! This is a community-driven project, and contributions are essential:
- Report bugs you encounter via GitHub Issues
- Share feature ideas and use cases to shape the roadmap
- Contribute code for bug fixes, features, or improvements
- Improve documentation by clarifying confusing parts or adding examples
- Test on your platform and report platform-specific issues
By using RequestFlow in this early stage, you're helping build a better tool for the entire community. We appreciate your patience and contributions!
We welcome contributions! Whether it's bug fixes, new features, documentation, or UI improvements, your help makes RequestFlow better for everyone.
Ways to contribute:
- Report bugs and suggest features via GitHub Issues
- Implement new node types or workflow capabilities
- Improve the UI/UX
- Write documentation and tutorials
- Fix platform-specific issues
- Add test coverage
See CONTRIBUTING.md for guidelines on code style, pull requests, and development workflow.
- Qt 6.x - UI and networking
- C++17 - Core logic
- QGraphicsView - Node-based editor
- QJSEngine - JavaScript execution
- QNetworkAccessManager - HTTP client
RequestFlow is open source software licensed under the MIT License.
Created and maintained by Fateh Benmerzoug, Ph.D
- Email: [email protected]
- Website: fatehmtd.github.io/RequestFlow
- GitHub: @fatehmtd
RequestFlow is proudly built with the Qt Framework - a powerful cross-platform application development framework. Qt enables us to deliver a native experience on Windows, macOS, and Linux from a single codebase.
Qt Modules Used:
- Qt Widgets - Modern, responsive UI components
- Qt Network - HTTP/HTTPS client functionality
- Qt SVG - Scalable vector graphics for crisp icons
- Qt QML/Quick - Declarative UI elements
- QGraphicsView - High-performance node-based canvas
We're grateful to the Qt Company and the Qt open source community for making this project possible.
Special thanks to the open source community for inspiration and support.
Start building visual API workflows today. Download RequestFlow and see the difference.