<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Requestly</title>
    <description>The latest articles on Forem by Requestly (@requestly).</description>
    <link>https://forem.com/requestly</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9423%2F69191449-e29c-406b-ba64-3dcdf3b4026a.jpg</url>
      <title>Forem: Requestly</title>
      <link>https://forem.com/requestly</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/requestly"/>
    <language>en</language>
    <item>
      <title>Introducing Examples in Requestly</title>
      <dc:creator>kanishkrawatt</dc:creator>
      <pubDate>Wed, 18 Mar 2026 09:51:00 +0000</pubDate>
      <link>https://forem.com/requestly/introducing-examples-in-requestly-1ojo</link>
      <guid>https://forem.com/requestly/introducing-examples-in-requestly-1ojo</guid>
      <description>&lt;p&gt;&lt;strong&gt;Testing APIs often means repeating the same request again and again with slight variations.&lt;/strong&gt; Changing parameters, tweaking headers, modifying payloads, and trying edge cases can quickly become repetitive and error prone.&lt;/p&gt;

&lt;p&gt;That’s why we’re introducing &lt;strong&gt;Examples&lt;/strong&gt; in Requestly — a simple way to save, organize, and reuse different versions of your API requests without touching the original.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;What are Examples?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://docs.requestly.com/general/api-client/examples" rel="noopener noreferrer"&gt;Examples&lt;/a&gt; are saved snapshots of an API call, including both the request and its response.&lt;/p&gt;

&lt;p&gt;Each example captures:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Query parameters&lt;/li&gt;
&lt;li&gt;Headers&lt;/li&gt;
&lt;li&gt;Request body&lt;/li&gt;
&lt;li&gt;Response status code&lt;/li&gt;
&lt;li&gt;Response body&lt;/li&gt;
&lt;li&gt;Response headers&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You can attach multiple examples to a single request, all stored under it in the sidebar. This makes it easy to move between different scenarios without duplicating or rewriting requests.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgde2lodxbwid6zjlv0wm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgde2lodxbwid6zjlv0wm.png" alt="Image" width="800" height="413"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Why this matters&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Test multiple scenarios faster&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Instead of manually editing the same request over and over, you can save different cases such as:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Valid responses&lt;/li&gt;
&lt;li&gt;Edge cases&lt;/li&gt;
&lt;li&gt;Error states&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;And switch between them instantly.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Keep everything organized&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Examples are neatly stored under the original request in the sidebar. No clutter. No duplicate requests. Just structured workflows.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Share exact configurations with your team&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Every example is available within your workspace, so your team can:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Use the same request setups&lt;/li&gt;
&lt;li&gt;Debug issues faster&lt;/li&gt;
&lt;li&gt;Stay aligned on API behavior&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Revisit past responses anytime&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Each example stores both the request and its response. This means you can go back and inspect exactly what happened without re-running anything.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;How it works&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;1. Save any request-response as an example&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;It includes both the request configuration and the response it returned. This captures everything in one place, so you can reuse or revisit it anytime.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4wb222jhgmfm9w9pc00u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4wb222jhgmfm9w9pc00u.png" alt="Image" width="800" height="413"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;2. Access from the sidebar&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Examples appear as child items under the main request. Expand the request to view all saved examples and open them in a new tab.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F238yqvxur2joz04twjlb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F238yqvxur2joz04twjlb.png" alt="Image" width="800" height="413"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;3. Manage with ease&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;You can:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Rename&lt;/strong&gt; examples for clarity&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Duplicate&lt;/strong&gt; them to create variations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Delete&lt;/strong&gt; ones you no longer need&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Everything is designed to keep your workflow flexible and clean.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;4. Use examples as templates&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Want to create a new request based on an existing setup? Just use an example as a template and start fresh without modifying the original.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxw3guexxtdj1itijn6lm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxw3guexxtdj1itijn6lm.png" alt="Image" width="800" height="413"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Built for real API workflows&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Request Examples are designed for how developers actually work:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Iterating on APIs&lt;/li&gt;
&lt;li&gt;Testing multiple scenarios&lt;/li&gt;
&lt;li&gt;Collaborating across teams&lt;/li&gt;
&lt;li&gt;Debugging faster&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It removes friction and lets you focus on what matters: building and testing APIs efficiently&lt;/p&gt;

</description>
      <category>requestly</category>
    </item>
    <item>
      <title>Best Postman Alternative in 2026: Faster API Client for Developers</title>
      <dc:creator>kanishkrawatt</dc:creator>
      <pubDate>Fri, 13 Mar 2026 06:28:00 +0000</pubDate>
      <link>https://forem.com/requestly/best-postman-alternative-in-2026-faster-api-client-for-developers-40in</link>
      <guid>https://forem.com/requestly/best-postman-alternative-in-2026-faster-api-client-for-developers-40in</guid>
      <description>&lt;p&gt;API development tools have evolved significantly over the past decade. What began as simple HTTP request tools has grown into complex platforms for testing, documentation, monitoring, and collaboration.&lt;/p&gt;

&lt;p&gt;For many developers, &lt;strong&gt;Postman&lt;/strong&gt; has long been the default API client. However, the &lt;strong&gt;Postman pricing changes introduced in 2026&lt;/strong&gt; have pushed many developers and small teams to start searching for &lt;strong&gt;Postman alternatives&lt;/strong&gt; that are simpler, faster, and more flexible.&lt;/p&gt;

&lt;p&gt;At the same time, tools like &lt;strong&gt;Requestly&lt;/strong&gt; are emerging as strong contenders for developers who want a &lt;strong&gt;lightweight API client without the complexity of a full platform&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In this article, we’ll cover:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What changed in &lt;strong&gt;Postman’s 2026 pricing model&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Why developers are searching for a &lt;strong&gt;Postman alternative&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;How to &lt;strong&gt;import Postman collections into another API client&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Why lightweight API testing tools are gaining popularity&lt;/li&gt;
&lt;li&gt;How Requestly provides a &lt;strong&gt;fast and developer-friendly API client&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Postman Pricing Changes in 2026&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;In March 2026, Postman introduced a major overhaul to its pricing structure. The goal was to simplify the platform by removing fragmented add-ons and consolidating features into fewer plans.&lt;/p&gt;

&lt;p&gt;The new structure consists of four tiers:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Free&lt;/li&gt;
&lt;li&gt;Solo&lt;/li&gt;
&lt;li&gt;Team&lt;/li&gt;
&lt;li&gt;Enterprise&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;One positive change was the removal of many usage restrictions. Activities such as running collections or performing automated testing are now &lt;strong&gt;unlimited across all plans&lt;/strong&gt;, including the free tier.&lt;/p&gt;

&lt;p&gt;This change reflects how large teams actually work today: running frequent tests and validating APIs continuously during development.&lt;/p&gt;

&lt;p&gt;However, the new model introduced a major limitation that has significantly impacted small teams.&lt;/p&gt;

&lt;h3&gt;
  
  
  The End of Free Team Collaboration
&lt;/h3&gt;

&lt;p&gt;The biggest change in Postman’s pricing update is the &lt;strong&gt;restriction of the Free plan to a single user&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Previously, small teams of up to three developers could collaborate for free using shared workspaces. This option no longer exists.&lt;/p&gt;

&lt;p&gt;Now, collaboration requires upgrading to the &lt;strong&gt;&lt;a href="https://www.postman.com/pricing/" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://www.postman.com/pricing/" rel="noopener noreferrer"&gt;Team plan at $23 per user per month&lt;/a&gt;&lt;/strong&gt;&lt;a href="https://www.postman.com/pricing/" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://www.postman.com/pricing/" rel="noopener noreferrer"&gt;.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For many developers searching for a &lt;strong&gt;free Postman alternative&lt;/strong&gt;, this change has become the main trigger for exploring other API testing tools.&lt;/p&gt;

&lt;h3&gt;
  
  
  Example: Cost for a Small Team
&lt;/h3&gt;

&lt;p&gt;Per year Cost for a team of three developers:&lt;/p&gt;

&lt;p&gt;Cost: 3 * 228 = $684&lt;/p&gt;

&lt;p&gt;This means a small team now spends &lt;strong&gt;$684 per year just to collaborate in Postman&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For startups and indie developers, that cost can feel unnecessary when they simply need a fast API client to send requests and test endpoints.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Why Developers Are Searching for a Postman Alternative&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;As Postman expanded into a full API lifecycle platform, the tool naturally became heavier.&lt;/p&gt;

&lt;p&gt;For developers already running:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;IDEs&lt;/li&gt;
&lt;li&gt;Docker containers&lt;/li&gt;
&lt;li&gt;browsers&lt;/li&gt;
&lt;li&gt;databases&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;a heavy API client can slow down development workflows.&lt;/p&gt;

&lt;p&gt;This has created demand for &lt;strong&gt;lightweight Postman alternatives&lt;/strong&gt; that focus on the core job developers actually need:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Sending HTTP requests&lt;/li&gt;
&lt;li&gt;Testing APIs&lt;/li&gt;
&lt;li&gt;Inspecting responses&lt;/li&gt;
&lt;li&gt;Running quick automated tests&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Without the overhead of a large platform.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;A Lightweight Postman Alternative: Requestly&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://requestly.com/" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://requestly.com/" rel="noopener noreferrer"&gt;Requestly&lt;/a&gt;&lt;/strong&gt; offers a modern API client designed for developers who want &lt;strong&gt;speed, simplicity, and flexibility&lt;/strong&gt;. Requestly focuses on making &lt;strong&gt;API testing fast and accessible&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Key advantages include:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://requestly.com/downloads/" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://requestly.com/downloads/" rel="noopener noreferrer"&gt;Lightweight desktop application &lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://requestly.com/#:~:text=just%20one%20click.-,No%20Login%20Required,-Start%20testing%20your" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://requestly.com/#:~:text=just%20one%20click.-,No%20Login%20Required,-Start%20testing%20your" rel="noopener noreferrer"&gt;Login-free API testing &lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://requestly.com/alternatives/postman-alternative/#:~:text=Local%20Workspaces%20%28Desktop%20App%29" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://requestly.com/alternatives/postman-alternative/#:~:text=Local%20Workspaces%20%28Desktop%20App%29" rel="noopener noreferrer"&gt;Local-first development workflow&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://docs.requestly.com/general/imports/postman" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://docs.requestly.com/general/imports/postman" rel="noopener noreferrer"&gt;Easy migration from Postman collections&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For developers looking for a &lt;strong&gt;&lt;a href="https://requestly.com/alternatives/postman-alternative/" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://requestly.com/alternatives/postman-alternative/" rel="noopener noreferrer"&gt;Postman alternative for API testing&lt;/a&gt;&lt;/strong&gt;, Requestly provides a streamlined experience without sacrificing essential functionality.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://requestly.com/alternatives/postman-alternative/#:~:text=Start%20Instantly%2C%20No%20Login%20Needed" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://requestly.com/alternatives/postman-alternative/#:~:text=Start%20Instantly%2C%20No%20Login%20Needed" rel="noopener noreferrer"&gt;API Testing Without Login or Setup&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;One common frustration with developer tools today is the &lt;strong&gt;mandatory sign-in requirement&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Many API clients require users to create an account before they can even send their first request.&lt;/p&gt;

&lt;p&gt;Requestly removes that barrier with a &lt;strong&gt;login-free API client&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Developers can immediately:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Launch the tool&lt;/li&gt;
&lt;li&gt;Send API requests&lt;/li&gt;
&lt;li&gt;Inspect responses&lt;/li&gt;
&lt;li&gt;Start testing endpoints&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This makes Requestly ideal for:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Quick endpoint debugging&lt;/li&gt;
&lt;li&gt;Learning APIs&lt;/li&gt;
&lt;li&gt;Testing third-party services&lt;/li&gt;
&lt;li&gt;Rapid development workflows&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you’re searching for an &lt;strong&gt;API client without login&lt;/strong&gt;, this is one of Requestly’s most developer-friendly features.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://docs.requestly.com/general/imports/postman" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://docs.requestly.com/general/imports/postman" rel="noopener noreferrer"&gt;Import Postman Collections in One Click&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;One of the biggest concerns when switching tools is losing existing work.&lt;/p&gt;

&lt;p&gt;Most teams already have dozens or even hundreds of API collections built in Postman.&lt;/p&gt;

&lt;p&gt;Requestly makes migration simple by supporting &lt;strong&gt;direct import of Postman collections&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;How to Import from Postman&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The process typically takes less than a minute:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Export your collection from Postman&lt;/li&gt;
&lt;li&gt;Open Requestly’s API client&lt;/li&gt;
&lt;li&gt;Import the collection file&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Requestly automatically maps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;folders&lt;/li&gt;
&lt;li&gt;requests&lt;/li&gt;
&lt;li&gt;headers&lt;/li&gt;
&lt;li&gt;parameters&lt;/li&gt;
&lt;li&gt;environment variables&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This allows developers to continue using their existing API workflows without losing any work.&lt;/p&gt;

&lt;p&gt;💡If you have 100+ APIs and looking for developer help, reach out to us here for migration support.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://docs.requestly.com/general/api-client/scripts" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://docs.requestly.com/general/api-client/scripts" rel="noopener noreferrer"&gt;Built-in API Automation and Testing&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Modern API development requires automated validation.&lt;/p&gt;

&lt;p&gt;Requestly supports JavaScript-based scripting for writing tests and validations.&lt;/p&gt;

&lt;p&gt;Developers interact with the API request and response using the &lt;strong&gt;rq&lt;/strong&gt; &lt;strong&gt;object&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Example: Validate Response Status&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
rq.test("Status is 200", () =&amp;gt; {
 rq.expect(rq.response.code).to.equal(200);
});

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;strong&gt;Example: Save Data from Response&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
rq.environment.set("token", rq.response.json().access_token);

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These scripts allow developers to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;validate responses&lt;/li&gt;
&lt;li&gt;store dynamic variables&lt;/li&gt;
&lt;li&gt;create automated testing workflows&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For developers familiar with Postman scripts, the learning curve is minimal.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://requestly.com/alternatives/postman-alternative/#:~:text=Local%20Workspaces%20%28Desktop%20App%29" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://requestly.com/alternatives/postman-alternative/#:~:text=Local%20Workspaces%20%28Desktop%20App%29" rel="noopener noreferrer"&gt;Local-First API Development&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;API collections can be stored directly on the developer’s machine instead of requiring cloud synchronization.&lt;/p&gt;

&lt;p&gt;This offers several advantages:&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Better Security&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Sensitive API keys and tokens remain on local devices.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Faster Performance&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Local storage eliminates network latency when loading large collections.&lt;/p&gt;

&lt;p&gt;For developers searching for a &lt;strong&gt;local API client alternative to Postman&lt;/strong&gt;, this approach can significantly improve productivity.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://requestly.com/alternatives/postman-alternative/" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://requestly.com/alternatives/postman-alternative/" rel="noopener noreferrer"&gt;Postman vs Requestly: Choosing the Right API Client&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Both tools are powerful, but they serve different developer needs.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Choose Postman if:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Your team needs full API lifecycle management&lt;/li&gt;
&lt;li&gt;You require built-in monitoring and governance&lt;/li&gt;
&lt;li&gt;You need advance AI for your APIs&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Choose Requestly if:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;You want a &lt;strong&gt;lightweight Postman alternative&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;You need a &lt;strong&gt;fast API client for daily testing&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;You prefer tools that work &lt;strong&gt;without login requirements&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;You want to &lt;strong&gt;import Postman collections easily&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The Future of API Client
&lt;/h2&gt;

&lt;p&gt;The API development ecosystem is becoming more diverse.&lt;/p&gt;

&lt;p&gt;Large platforms like Postman are evolving into a comprehensive &lt;strong&gt;API operating system&lt;/strong&gt;, offering governance, AI assistance, monitoring, and collaboration features.&lt;/p&gt;

&lt;p&gt;Meanwhile, developer-focused tools like Requestly are proving that many teams simply want a &lt;strong&gt;fast, flexible API client&lt;/strong&gt; without the complexity of a large platform.&lt;/p&gt;

&lt;p&gt;As developers evaluate tools in 2026 and beyond, the choice often comes down to priorities:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Platform governance and enterprise workflows&lt;/li&gt;
&lt;li&gt;Or lightweight tools optimized for developer speed&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For teams looking to move away from heavier tools, Requestly is emerging as one of the &lt;strong&gt;best Postman alternatives for modern API testing&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>requestly</category>
    </item>
    <item>
      <title>Introducing Dynamic Variables: Generate Realistic Test Data Instantly</title>
      <dc:creator>kanishkrawatt</dc:creator>
      <pubDate>Mon, 09 Mar 2026 07:32:00 +0000</pubDate>
      <link>https://forem.com/requestly/introducing-dynamic-variables-generate-realistic-test-data-instantly-100p</link>
      <guid>https://forem.com/requestly/introducing-dynamic-variables-generate-realistic-test-data-instantly-100p</guid>
      <description>&lt;p&gt;Dynamic variables are built-in values that are generated automatically at request execution time. No manual edits. No helper scripts. No duplicate test data issues. If you regularly need timestamps, random values, UUIDs, or unique identifiers in your API requests, dynamic variables handle it for you automatically.&lt;/p&gt;

&lt;p&gt;Unlike environment, collection, or global variables that you define and manage yourself, dynamic variables are available out of the box and generate a fresh value every time a request runs. Under the hood, Requestly uses &lt;a href="https://fakerjs.dev/" rel="noopener noreferrer"&gt;Faker.js&lt;/a&gt; to generate realistic test data, so your payloads don’t look fake or repetitive.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;What are dynamic variables?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://docs.requestly.com/general/api-client/environments-and-variables/dynamic-variables" rel="noopener noreferrer"&gt;Dynamic variables&lt;/a&gt; are special placeholders that resolve to automatically generated values at runtime. They use a $ prefix and are accessed with this template syntax:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;{{$variableName}}&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Every time the request executes, the variable produces a new value.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
{{$randomUUID}} → Generates a new UUID
{{$timestamp}} → Current UNIX timestamp
{{$randomInt}} → Random integer
{{$guid}} → GUID-style identifier

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The key difference: you don’t define these. They’re built-in and ready to use.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Why generating test data is a pain&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Developers and QA teams run into the same problems again and again:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Reused emails or user IDs cause signup and uniqueness checks to fail.&lt;/li&gt;
&lt;li&gt;Manually editing payloads for each run is slow and error-prone.&lt;/li&gt;
&lt;li&gt;Tests break when data already exists in the database.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Dynamic variables take those problems off your plate by producing fresh, realistic inputs every time.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Using Dynamic Variables in Templates&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;You can use dynamic variables anywhere inside a request: URL, Query parameters, Headers, Request body.&lt;/p&gt;

&lt;p&gt;Example request body:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
{

"id": "{{$randomUUID}}",

"email": "{{$randomEmail}}",

"createdAt": "{{$timestamp}}"

}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcsplmqm1hz2u23vf0qtt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcsplmqm1hz2u23vf0qtt.png" alt="Image" width="800" height="509"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Each execution generates a unique user profile&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Using Dynamic Variables in Scripts&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Dynamic variables are also accessible inside scripts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;rq.$variableName()&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
const userId = rq.$randomUUID();

const timestamp = rq.$timestamp();

const email = rq.$randomEmail();

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv22gqw51oggrho23w938.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv22gqw51oggrho23w938.png" alt="Image" width="800" height="509"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Notice they are called like functions in scripts.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Variable Arguments&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Some dynamic variables support &lt;a href="https://docs.requestly.com/general/api-client/environments-and-variables/dynamic-variables#variables-with-arguments" rel="noopener noreferrer"&gt;optional arguments&lt;/a&gt; to customize output.&lt;/p&gt;

&lt;p&gt;Template syntax:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;{{$variableName arg1 arg2 …}}&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
{

"id": "{{$randomAlphaNumeric 10}}",

"email": "{{$randomEmail 'John' 'Doe'}}",

"age": "{{$randomInt 18 65}}",

"price": "{{$randomPrice 10 100 2 '$'}}"

}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This lets you control:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Length of random strings&lt;/li&gt;
&lt;li&gt;Name-based email generation&lt;/li&gt;
&lt;li&gt;Integer ranges&lt;/li&gt;
&lt;li&gt;Price ranges and formatting&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You get flexibility without writing extra logic&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Real-world use cases&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Dynamic variables shine in real workflows:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Signup flows: create unique users for each test run without database cleanup.&lt;/li&gt;
&lt;li&gt;OTP/timestamp tests: generate valid, time-based payloads for authentication flows.&lt;/li&gt;
&lt;li&gt;Load testing: feed randomized inputs to surface edge-case bugs.&lt;/li&gt;
&lt;li&gt;CI/CD pipelines: run reliable, repeatable tests that don’t rely on pre-seeded data.&lt;/li&gt;
&lt;li&gt;Mocking servers: return realistic, variable responses for front-end dev work.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These turn brittle tests into reliable checks and speed up development feedback loops.&lt;/p&gt;

</description>
      <category>requestly</category>
    </item>
    <item>
      <title>How Lodash Can Simplify Your API Testing</title>
      <dc:creator>kanishkrawatt</dc:creator>
      <pubDate>Wed, 19 Nov 2025 11:32:15 +0000</pubDate>
      <link>https://forem.com/requestly/how-lodash-can-simplify-your-api-testing-d82</link>
      <guid>https://forem.com/requestly/how-lodash-can-simplify-your-api-testing-d82</guid>
      <description>&lt;p&gt;API testing can get messy fast. You deal with deeply nested JSON, inconsistent response structures, repetitive validations, and way too much boilerplate. Lodash cuts through all of that. And since Requestly exposes Lodash globally as &lt;code&gt;_&lt;/code&gt; inside your Script Tab, you can start using its utilities instantly, no importing or setup required.This article breaks down how Lodash actually makes API testing easier, with examples you can plug straight into your Requestly scripts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Lodash Is a Game-Changer for API Testing
&lt;/h2&gt;

&lt;p&gt;Most API testing involves tasks like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Extracting values from deeply nested response objects&lt;/li&gt;
&lt;li&gt;  Filtering arrays&lt;/li&gt;
&lt;li&gt;  Checking for missing fields&lt;/li&gt;
&lt;li&gt;  Comparing expected vs actual data&lt;/li&gt;
&lt;li&gt;  Transforming inconsistent data&lt;/li&gt;
&lt;li&gt;  Creating small helpers on the fly&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Doing all that with plain JavaScript works… but it’s verbose, error-prone, and annoying. Lodash gives you battle-tested helpers that simplify all of these into one-liners.&lt;/p&gt;

&lt;h2&gt;
  
  
  Using Lodash Inside Requestly Scripts
&lt;/h2&gt;

&lt;p&gt;You don’t need to install or import anything. Lodash is already available globally as &lt;code&gt;_&lt;/code&gt; inside Requestly’s scripting environment.&lt;br&gt;
&lt;br&gt;
 &lt;code&gt;console.log(_.toUpper('requestly')); // REQUESTLY&lt;/code&gt;&lt;br&gt;
&lt;br&gt;
 This means you can clean, inspect, validate, and transform data right where you're testing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Practical Use Cases for API Testing
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Check if a Field Exists
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;_&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;has&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;responseBody&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;data.user.email&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)){&lt;/span&gt; 
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;❌ Missing email field&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Validate That Two Responses Match
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;expected&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;status&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;active&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;plan&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;premium&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt; 
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;actual&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;responseBody&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;_&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;isEqual&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;expected&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;actual&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;✔️ Profile matches expected structure&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Filter Arrays Cleanly
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;activeUsers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;_&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;responseBody&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;users&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;u&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;u&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;active&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Active:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;activeUsers&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. Map Data for Assertions or Next Requests
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;names&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;_&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;responseBody&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;users&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;u&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;u&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;User names:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;names&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  5. Safely Get Deep Values
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;role&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;_&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;responseBody&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;data.profile.role&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;unknown&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Role:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;role&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  6. Remove Unwanted Fields Before Passing Data Forward
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;sanitized&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;_&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;omit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;responseBody&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;password&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;token&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;sanitized&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Why Lodash Fits Perfectly With Requestly’s Script Runner
&lt;/h2&gt;

&lt;p&gt;Lodash shines in scenarios like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Writing assertions in response scripts&lt;/li&gt;
&lt;li&gt;  Cleaning API responses before chaining requests&lt;/li&gt;
&lt;li&gt;  Normalizing data for comparison&lt;/li&gt;
&lt;li&gt;  Generating structured logs&lt;/li&gt;
&lt;li&gt;  Avoiding brittle manual validations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you run multi-step workflows or collection runs in Requestly, Lodash quickly becomes your go-to toolkit.&lt;/p&gt;

&lt;h2&gt;
  
  
  More Tools Available in Requestly
&lt;/h2&gt;

&lt;p&gt;Requestly provides many other global utilities, third party plugins, and helpful libraries that you can use instantly inside scripts.&lt;br&gt;
Learn more here: &lt;a href="https://docs.requestly.com/general/api-client/import-packages-into-your-scripts" rel="noopener noreferrer"&gt;Import Packages into Your Scripts&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Lodash doesn’t just simplify API testing, it removes friction entirely. Shorter scripts, clearer logic, fewer bugs. And since Requestly includes Lodash globally as &lt;code&gt;_&lt;/code&gt;, you can use it instantly without any setup.&lt;/p&gt;

</description>
      <category>api</category>
      <category>apitesting</category>
      <category>testing</category>
      <category>lodash</category>
    </item>
    <item>
      <title>How to convert OpenAPI spec to Requestly API collection</title>
      <dc:creator>Dinesh Thakur</dc:creator>
      <pubDate>Fri, 31 Oct 2025 06:26:33 +0000</pubDate>
      <link>https://forem.com/requestly/how-to-convert-openapi-spec-to-requestly-api-collection-1354</link>
      <guid>https://forem.com/requestly/how-to-convert-openapi-spec-to-requestly-api-collection-1354</guid>
      <description>&lt;p&gt;If you already have an  &lt;strong&gt;OpenAPI Specification&lt;/strong&gt;  (Swagger) for your API, you don’t need to recreate everything manually. With Requestly’s  &lt;strong&gt;OpenAPI Importer&lt;/strong&gt;, you can instantly convert your  &lt;code&gt;.yaml&lt;/code&gt;  or  &lt;code&gt;.json&lt;/code&gt;  spec file into a fully organized  &lt;strong&gt;API collection&lt;/strong&gt;, ready to explore, test, and document your APIs.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is an OpenAPI Specification?
&lt;/h2&gt;

&lt;p&gt;The  &lt;strong&gt;OpenAPI Specification (OAS)&lt;/strong&gt;  defines a standard, language-agnostic format for describing RESTful APIs. It describes endpoints, request methods, parameters, responses, authentication, and more — typically written in  &lt;strong&gt;YAML&lt;/strong&gt;  or  &lt;strong&gt;JSON&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;OpenAPI specs are commonly used with tools like  &lt;strong&gt;Swagger&lt;/strong&gt;,  &lt;strong&gt;Postman&lt;/strong&gt;, and backend frameworks such as  &lt;strong&gt;FastAPI&lt;/strong&gt;,  &lt;strong&gt;NestJS&lt;/strong&gt;, or  &lt;strong&gt;Spring Boot&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Requestly now makes it easy to bring these specs directly into your workspace — no extra conversions needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Import an OpenAPI Spec into Requestly?
&lt;/h2&gt;

&lt;p&gt;Importing your OpenAPI spec into Requestly saves time and ensures consistency between your API documentation and test collections.&lt;/p&gt;

&lt;p&gt;Here are the main benefits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Instant API Setup&lt;/strong&gt;  — Automatically creates collections and requests for all your endpoints.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Structured Organization&lt;/strong&gt;  — Groups endpoints under tags and paths for easy navigation.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Accurate Data&lt;/strong&gt;  — Automatically includes request methods, headers, and body schemas from the spec.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Ready for Testing&lt;/strong&gt;  — Test endpoints right away with variables, environments, and scripts.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Seamless Migration&lt;/strong&gt;  — Bring your existing Swagger or Postman definitions into Requestly in seconds.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Supported Formats
&lt;/h2&gt;

&lt;p&gt;The OpenAPI importer supports both:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;code&gt;.json&lt;/code&gt;  — JSON format specs (commonly exported from Swagger or code generators).&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;.yaml&lt;/code&gt;  /  &lt;code&gt;.yml&lt;/code&gt;  — YAML format specs (commonly used in backend frameworks).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to Import an OpenAPI Spec in Requestly
&lt;/h2&gt;

&lt;p&gt;Follow these simple steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Open the API Client&lt;/strong&gt;
Go to your &lt;strong&gt;API Client workspace&lt;/strong&gt; in Requestly. Make sure you’re in the workspace where you want to import your API collection.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5y8czdg7hwov65ss6kt7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5y8czdg7hwov65ss6kt7.png" alt="Open the API Client" width="800" height="460"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Import Your OpenAPI File&lt;/strong&gt;
Click &lt;strong&gt;Import → OpenAPI&lt;/strong&gt; and select your &lt;code&gt;.yaml&lt;/code&gt; or &lt;code&gt;.json&lt;/code&gt; file.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzvitwoduhx3porwme1ro.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzvitwoduhx3porwme1ro.png" alt="Import Dropdown" width="800" height="460"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Preview Before Import&lt;/strong&gt;
Requestly will show a preview of what will be imported — including: 
– The collections that will be created
– The environments and variables that will be set up
Review the preview and confirm to complete the import.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbtlh0z3bcrft60xh2r9t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbtlh0z3bcrft60xh2r9t.png" alt="Preview Import - Requestly API" width="800" height="460"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Requestly builds your collection&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;  Each &lt;strong&gt;path&lt;/strong&gt; in your OpenAPI file becomes an individual &lt;strong&gt;request&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;  Requests are grouped under collections named after your API or service.&lt;/li&gt;
&lt;li&gt;  Requestly automatically fills in the &lt;strong&gt;method, URL, headers, and body&lt;/strong&gt; (if defined in the spec).&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  Wrapping Up
&lt;/h2&gt;

&lt;p&gt;Importing your OpenAPI spec into Requestly is the fastest way to set up your API collection — no manual work, no missed endpoints, and no inconsistencies.&lt;br&gt;&lt;br&gt;
Whether you’re migrating from Swagger, Postman, or a backend framework, Requestly helps you centralize your API development, testing, and collaboration in one place.&lt;/p&gt;

&lt;p&gt;👉  &lt;strong&gt;Try it now&lt;/strong&gt;:  &lt;a href="https://app.requestly.io" rel="noopener noreferrer"&gt;Import your OpenAPI file in Requestly&lt;/a&gt;&lt;/p&gt;

</description>
      <category>openapi</category>
      <category>api</category>
      <category>requestly</category>
    </item>
    <item>
      <title>How to Simulate Real User Journeys With Collection Runner</title>
      <dc:creator>kanishkrawatt</dc:creator>
      <pubDate>Wed, 29 Oct 2025 11:05:21 +0000</pubDate>
      <link>https://forem.com/requestly/how-to-simulate-real-user-journeys-with-collection-runner-4b0p</link>
      <guid>https://forem.com/requestly/how-to-simulate-real-user-journeys-with-collection-runner-4b0p</guid>
      <description>&lt;p&gt;In the world of API development and testing, it’s not enough to verify that each endpoint works in isolation. Real users don’t just hit one endpoint, they follow multi-step flows like signing up, logging in, updating data, and retrieving records. To truly validate your product, you need to test how these flows perform from end to end.&lt;/p&gt;

&lt;p&gt;That’s where &lt;strong&gt;Requesty’s Collection Runner&lt;/strong&gt; comes in.&lt;/p&gt;




&lt;h3&gt;
  
  
  Why Simulate User Journeys?
&lt;/h3&gt;

&lt;p&gt;Most critical bugs don’t come from individual endpoints, they come from the interactions between them. A successful login that returns an invalid token, or a profile update that fails silently, can ruin the user experience and go unnoticed if tests don’t mimic real behavior.&lt;/p&gt;

&lt;p&gt;Simulating real user flows helps you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Validate business logic and data dependencies
&lt;/li&gt;
&lt;li&gt;Detect regressions that break chained functionality
&lt;/li&gt;
&lt;li&gt;Catch errors caused by state mismanagement or inconsistent environments
&lt;/li&gt;
&lt;li&gt;Build confidence that your product works as users expect
&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Requesty: A Collection Runner Built for End-to-End Testing
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj5t0bwggsnz5au5pq801.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj5t0bwggsnz5au5pq801.png" alt=" " width="800" height="445"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Requesty’s Collection Runner allows you to create and execute sequences of API requests with full support for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Chained workflows
&lt;/li&gt;
&lt;li&gt;Dynamic variable passing
&lt;/li&gt;
&lt;li&gt;Pre-request scripting and test assertions
&lt;/li&gt;
&lt;li&gt;Environment switching
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here’s how to build and simulate a real-world user journey using it effectively.&lt;/p&gt;




&lt;h3&gt;
  
  
  Example Flow
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;New User Sign-Up → Login → Profile Setup → Data Fetch&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This user journey includes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Creating a new user via &lt;code&gt;POST /register&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Logging in using &lt;code&gt;POST /auth/login&lt;/code&gt; to retrieve a JWT token
&lt;/li&gt;
&lt;li&gt;Setting profile data using &lt;code&gt;PATCH /profile&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Fetching user dashboard data via &lt;code&gt;GET /dashboard&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  Step 1: Create the Flow as a Collection
&lt;/h3&gt;

&lt;p&gt;In Requesty, collections are simply ordered groups of API requests.&lt;br&gt;&lt;br&gt;
Add each step listed above as a separate request in your collection.&lt;/p&gt;


&lt;h3&gt;
  
  
  Step 2: Link Data Between Steps
&lt;/h3&gt;

&lt;p&gt;Use variable chaining to pass values dynamically between requests. For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Capture the &lt;code&gt;userId&lt;/code&gt; and &lt;code&gt;token&lt;/code&gt; from the login response
&lt;/li&gt;
&lt;li&gt;Inject them into headers or URLs in the following steps
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Example test script in /auth/login to extract token and user ID&lt;/span&gt;

&lt;span class="c1"&gt;// Parse the JSON response from the login request&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;rq&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="c1"&gt;// Store the authentication token in the environment&lt;/span&gt;
&lt;span class="nx"&gt;rq&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;environment&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;auth_token&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;token&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Store the user ID in the environment&lt;/span&gt;
&lt;span class="nx"&gt;rq&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;environment&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;user_id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;In the next request (such as &lt;code&gt;PATCH /profile&lt;/code&gt;), include the authorization header as shown below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Authorization: Bearer {{auth_token}}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Test Assertions and Validation
&lt;/h3&gt;

&lt;p&gt;Each step in your API flow can include automated assertions to verify that responses meet expectations. These checks can include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Status codes (e.g., 200, 201, 400)
&lt;/li&gt;
&lt;li&gt;JSON schema compliance
&lt;/li&gt;
&lt;li&gt;Business rules such as &lt;code&gt;"email_verified": true&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Assertions ensure your APIs behave correctly under real-world conditions and that regressions or logic errors are caught early.&lt;/p&gt;




&lt;h3&gt;
  
  
  Run Against Different Environments
&lt;/h3&gt;

&lt;p&gt;Requesty supports environment switching, allowing you to execute the same collection across &lt;strong&gt;development&lt;/strong&gt;, &lt;strong&gt;staging&lt;/strong&gt;, and &lt;strong&gt;production&lt;/strong&gt; without changing base URLs or tokens manually.&lt;br&gt;&lt;br&gt;
This ensures consistency across environments and helps uncover environment-specific issues.&lt;/p&gt;




&lt;h3&gt;
  
  
  Monitor and Share End-to-End Runs
&lt;/h3&gt;

&lt;p&gt;After running your collection, you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Review pass/fail status for each request
&lt;/li&gt;
&lt;li&gt;Track response times and identify slow endpoints
&lt;/li&gt;
&lt;li&gt;Export or share detailed results with your team
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This makes it easier for QA teams, product managers, and DevOps engineers to monitor system health and collaborate on fixing issues efficiently.&lt;/p&gt;




&lt;h3&gt;
  
  
  Real-World Use Cases
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;E-commerce:&lt;/strong&gt; Add item → Checkout → Payment → Receipt
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SaaS Onboarding:&lt;/strong&gt; Create organization → Invite user → Accept invite → Create workspace
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fintech:&lt;/strong&gt; Register → KYC → Deposit funds → View balance
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Testing endpoints in isolation doesn’t reflect how users actually interact with your product.&lt;br&gt;&lt;br&gt;
Simulating complete workflows ensures that your system functions correctly across every step of the user journey.&lt;/p&gt;




&lt;h3&gt;
  
  
  Final Thoughts
&lt;/h3&gt;

&lt;p&gt;End-to-end workflows are where your users truly operate.&lt;br&gt;&lt;br&gt;
To guarantee a reliable experience, you must validate the entire process, not just individual API calls.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Requesty’s Collection Runner&lt;/strong&gt; simplifies this by combining automation, flexibility, and detailed reporting to help you detect issues before they impact users.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ready to simulate your first user journey?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://docs.requestly.com/general/api-client/collection-runner" rel="noopener noreferrer"&gt;Try Requesty Collection Runner today&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>api</category>
      <category>testing</category>
      <category>apiclient</category>
    </item>
    <item>
      <title>Best Ways to Use Collection Runners for API Workflows</title>
      <dc:creator>kanishkrawatt</dc:creator>
      <pubDate>Wed, 29 Oct 2025 10:49:41 +0000</pubDate>
      <link>https://forem.com/requestly/best-ways-to-use-collection-runners-for-api-workflows-2l7k</link>
      <guid>https://forem.com/requestly/best-ways-to-use-collection-runners-for-api-workflows-2l7k</guid>
      <description>&lt;p&gt;Collection runners are one of the most underrated tools in API testing and automation. Whether you’re a developer debugging endpoints or a QA engineer automating tests, a collection runner can save hours of repetitive work and dramatically improve coverage.&lt;/p&gt;

&lt;p&gt;Here are some powerful ways to leverage a collection runner to automate, validate, and scale your API workflows.&lt;/p&gt;




&lt;h3&gt;
  
  
  1. End-to-End Workflow Testing
&lt;/h3&gt;

&lt;p&gt;End-to-end testing involves running a series of API requests that simulate an entire user workflow from start to finish.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; A user journey from account signup, profile setup, and adding items to a cart, to completing a purchase.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scenario:&lt;/strong&gt; Instead of sending each API request manually, chain them in a collection runner. Variables like user IDs or session tokens flow between requests automatically, simulating real-world behavior and uncovering potential issues in the full workflow.&lt;/p&gt;




&lt;h3&gt;
  
  
  2. Data-Driven Testing
&lt;/h3&gt;

&lt;p&gt;Data-driven testing uses external files, like CSV or JSON, to test multiple input combinations automatically.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; Testing login functionality for different user roles and permissions using a CSV containing usernames, passwords, and roles.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scenario:&lt;/strong&gt; Run the collection once to validate dozens of combinations. This helps identify edge cases, such as invalid credentials or restricted access, without repeating manual testing.&lt;/p&gt;




&lt;h3&gt;
  
  
  3. Performance Smoke Testing
&lt;/h3&gt;

&lt;p&gt;Performance smoke testing checks how APIs respond under repeated or high-frequency requests to spot slowdowns or errors.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; Sending the same API request 100 times in a row to measure response times.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scenario:&lt;/strong&gt; Quickly determine if any recent code changes caused response degradation or errors. While not a full load test, it’s perfect for lightweight checks after updates.&lt;/p&gt;




&lt;h3&gt;
  
  
  4. Continuous Integration (CI) Testing
&lt;/h3&gt;

&lt;p&gt;Automating API tests as part of the development pipeline ensures that every code commit maintains API stability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; Running automated tests in Jenkins or GitHub Actions every time new code is pushed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scenario:&lt;/strong&gt; A developer updates a payment endpoint. The collection runner executes pre-configured tests to ensure all flows still work before merging, preventing broken releases.&lt;/p&gt;




&lt;h3&gt;
  
  
  5. Environment-Specific Testing
&lt;/h3&gt;

&lt;p&gt;Testing the same collection against different environments — be it development, staging, or production — without modifying requests.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; Using environment variables for API base URLs and credentials to switch between staging and production.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scenario:&lt;/strong&gt; Run the same workflow in multiple environments to validate consistency and catch environment-specific issues.&lt;/p&gt;




&lt;h3&gt;
  
  
  6. Post-Deployment Sanity Checks
&lt;/h3&gt;

&lt;p&gt;Quick validation of critical endpoints after a new release to ensure the system is functional.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; Checking login, health checks, and payment flows immediately after deployment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scenario:&lt;/strong&gt; A new release goes live. A collection runner executes a small set of essential tests to catch any issues before users are affected.&lt;/p&gt;




&lt;h3&gt;
  
  
  7. Scheduled API Monitoring
&lt;/h3&gt;

&lt;p&gt;Running collections at regular intervals to monitor uptime and API health over time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; Scheduling a collection to run every hour and send alerts if any endpoint fails.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scenario:&lt;/strong&gt; Ensure key endpoints remain operational and catch downtime or errors before they impact users.&lt;/p&gt;




&lt;h3&gt;
  
  
  Final Thoughts
&lt;/h3&gt;

&lt;p&gt;Collection runners transform repetitive API tasks into automated, repeatable workflows. By combining end-to-end testing, data-driven scenarios, environment management, and automated reporting, they make API testing smarter, faster, and more reliable.&lt;/p&gt;

</description>
      <category>api</category>
      <category>testing</category>
      <category>opensource</category>
      <category>apiclient</category>
    </item>
    <item>
      <title>Hacktoberfest 2025 Requestly: Build with us this October</title>
      <dc:creator>Dinesh Thakur</dc:creator>
      <pubDate>Mon, 06 Oct 2025 12:39:30 +0000</pubDate>
      <link>https://forem.com/requestly/hacktoberfest-2025-x-requestly-build-with-us-this-october-30e1</link>
      <guid>https://forem.com/requestly/hacktoberfest-2025-x-requestly-build-with-us-this-october-30e1</guid>
      <description>&lt;p&gt;Hacktoberfest is here—and we’d love your help on  &lt;strong&gt;Requestly&lt;/strong&gt;, our open-source  &lt;strong&gt;API Client + HTTP toolkit&lt;/strong&gt;. First PR or fiftieth, we’ll guide you to ship something meaningful, learn along the way, and earn rewards.&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s Hacktoberfest? (20 seconds)
&lt;/h2&gt;

&lt;p&gt;A month-long open-source celebration every October. Contribute accepted pull/merge requests (and/or no-code contributions), learn from the community, meet folks, and snag rewards. This year, Requestly is taking part in Hacktoberfest.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;How It Works (Quick Overview)&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Every contribution—whether it’s a pull request, a blog post, or a social share—earns you points. The more impactful your contribution, the higher the points. At the end of Hacktoberfest (after Oct 31), we’ll tally up all contributions and announce the winners in the  &lt;strong&gt;second week of November&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We announce Top Contributors of the week on  &lt;a href="https://www.linkedin.com/company/requestly" rel="noopener noreferrer"&gt;linkedin&lt;/a&gt;! Keep an eye out on the leaderboard:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/requestly/requestly/issues/3631" rel="noopener noreferrer"&gt;👉 Leaderboard&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Join Our Community on Discord&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Our  &lt;strong&gt;Discord server&lt;/strong&gt;  is the main place to connect, ask questions, and get updates in real time.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://discord.gg/ZnTGjC4zqD" rel="noopener noreferrer"&gt;👉 Join the Requestly Discord&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once inside, grab the  &lt;strong&gt;Hacktoberfest-Requestly&lt;/strong&gt;  role and jump into the  &lt;strong&gt;#requestly-hacktoberfest&lt;/strong&gt;  channel to chat with the team, find issues, or get guidance on your first PR.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;How to Start (super simple)&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Code &amp;amp; Product&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Visit the repo&lt;/strong&gt;  →  &lt;a href="https://github.com/requestly/requestly/issues" rel="noopener noreferrer"&gt;Requestly GitHub Repo&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Star &amp;amp; fork&lt;/strong&gt;  the repo(s)&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Pick any issue&lt;/strong&gt;  labeled Hacktoberfest&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Raise a PR&lt;/strong&gt;  with a clear description + a quick screen recording (&lt;a href="https://www.loom.com/" rel="noopener noreferrer"&gt;Loom&lt;/a&gt;  or similar).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Share your work on social media for&lt;/strong&gt;  bonus points (see scoring).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Track your points&lt;/strong&gt;  on our  &lt;strong&gt;public leaderboard&lt;/strong&gt;  (updated weekly) (add link).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We review fast and kindly—new contributors are very welcome.&lt;/p&gt;

&lt;p&gt;Points:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;UI change&lt;/strong&gt;  or  &lt;strong&gt;“good first issue”&lt;/strong&gt;  —  &lt;strong&gt;25 pts&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Medium/Senior issue&lt;/strong&gt;  —  &lt;strong&gt;50 pts&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;API Collections (for other projects)&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Requestly’s API Client supports  &lt;strong&gt;local workspaces&lt;/strong&gt;—keep API collections in a local folder inside any project, merge it and your API collection is available on github&lt;/p&gt;

&lt;p&gt;Refer to this case study:  &lt;a href="https://requestly.com/blog/how-upscayl-made-api-testing-repo-native-with-requestly-local-workspace/" rel="noopener noreferrer"&gt;Upscayl Case Study&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Quick steps&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Clone the target project’s repo. (any open source project apart from Requestly)&lt;/li&gt;
&lt;li&gt; In Requestly API Client,  &lt;strong&gt;create a Local Workspace&lt;/strong&gt;  and point it to a folder  &lt;strong&gt;inside the cloned repo&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt; Create a  &lt;strong&gt;Collection&lt;/strong&gt;  named [{Tool name}] API Collections (e.g., Stripe API Collections).&lt;/li&gt;
&lt;li&gt; Raise a PR to add the collection.&lt;/li&gt;
&lt;li&gt; If the  &lt;strong&gt;parent project&lt;/strong&gt;  accepts your PR, you get  &lt;strong&gt;extra points&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;  The parent project must have  &lt;strong&gt;≥ 200 stars&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Points&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;PR raised&lt;/strong&gt;  —  &lt;strong&gt;25 pts&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Merged into parent repo&lt;/strong&gt;  —  &lt;strong&gt;125 pts&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;No-Code Contributions&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Try Requestly&lt;/strong&gt;  (Desktop App or Chrome Extension) and explore features.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Write&lt;/strong&gt;  a blog/article/tutorial about your learnings or a use case
(personal site /  &lt;a href="http://dev.to/"&gt;DEV.to&lt;/a&gt;  / Medium) —  &lt;strong&gt;35 pts&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Social Promotion (Be authentic and use multiple platforms):&lt;/strong&gt;  When you share on social media, don’t just copy and paste content. Add your own thoughts, insights, or experiences so your post feels genuine and offers something valuable to your audience.

&lt;ul&gt;
&lt;li&gt;  First platform (LinkedIn or X) —  &lt;strong&gt;10 pts&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;  Each additional platform (Threads, YouTube Short, Reddit,  &lt;a href="http://dev.to/"&gt;DEV.to&lt;/a&gt;  cross-post) —  &lt;strong&gt;+5 pts each&lt;/strong&gt;,  &lt;strong&gt;cap +15 per post&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;  Duplicate posts without new value  &lt;strong&gt;count once&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;  &lt;strong&gt;Impact bump&lt;/strong&gt;  (stackable):

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;&amp;gt; 1,000 impressions&lt;/strong&gt;  —  &lt;strong&gt;+10 pts&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;&amp;gt; 30 likes&lt;/strong&gt;  —  &lt;strong&gt;+10 pts&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;&amp;gt; 5 reshares&lt;/strong&gt;  —  &lt;strong&gt;+10 pts&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;We’ll spotlight the  &lt;strong&gt;#1 contributor each week&lt;/strong&gt;  on LinkedIn.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;How to Submit Your Work&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;We track PRs on GitHub, but we  &lt;strong&gt;also award points&lt;/strong&gt;  for learnings shared publicly.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;All code contributions will be tracked directly on GitHub.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
You don’t need to fill any form — we’ll automatically review merged PRs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🗣️  &lt;strong&gt;All non-code contributors&lt;/strong&gt;  (like blog posts, tutorials, API collections, or social shares) should  &lt;strong&gt;comment under the relevant sub-issue&lt;/strong&gt;  in our main Hacktoberfest issue:&lt;/p&gt;

&lt;p&gt;👉  &lt;a href="https://github.com/requestly/requestly/issues/3638" rel="noopener noreferrer"&gt;Hacktoberfest 2025 × Requestly&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once your comment is added, our team will review it and award points based on the scoring system listed above.&lt;/p&gt;

&lt;p&gt;The issue and its sub-issues will  &lt;strong&gt;lock on Nov 1, 12:00 AM IST&lt;/strong&gt;, after which we’ll tally all scores and announce winners.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Rewards 🎁&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Bronze (≥ 100 pts)&lt;/strong&gt;  — Digital certificate + LinkedIn shout-out&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Silver (≥ 175 pts)&lt;/strong&gt;  — ₹500 Amazon gift card + Bronze perks&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Gold (≥ 275 pts)&lt;/strong&gt;  — Swag Kit + ₹2000 Amazon gift card&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Hall of Fame&lt;/strong&gt;  — Top 5 overall get a dedicated blog shout-out&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Grand Winner (#1, ≥ 400 pts)&lt;/strong&gt;  — Landing page spotlight + Swag Kit + ₹5000 Amazon gift card&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Shipping note:&lt;/strong&gt;  Swag/gifts are  &lt;strong&gt;India-only&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Timeline (Oct 6–31, 2025)&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;All October:&lt;/strong&gt;  Contribute PRs, comment on issues, ask questions, publish posts, share on social.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;When accepted:&lt;/strong&gt;  We’ll merge and label  &lt;strong&gt;&lt;code&gt;Hacktoberfest-accepted&lt;/code&gt;&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Weekly:&lt;/strong&gt;  Top Contributor of the Week → LinkedIn.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;After Oct 31:&lt;/strong&gt;  We verify points and ship rewards.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Winners announced:&lt;/strong&gt;  After  &lt;strong&gt;12:00 AM, Nov 1, 2025&lt;/strong&gt;  (IST).&lt;br&gt;&lt;br&gt;
We’ll lock the Google Form and tally final points.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;New to Open Source? Start Here&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  Look for a good  &lt;strong&gt;first issue&lt;/strong&gt;—we’ll add plenty for first-timers.&lt;/li&gt;
&lt;li&gt;  Try our  &lt;strong&gt;API Client&lt;/strong&gt;  and  &lt;strong&gt;create an API collection&lt;/strong&gt;  for an open-source project (&lt;a href="https://requestly.com/blog/how-upscayl-made-api-testing-repo-native-with-requestly-local-workspace/" rel="noopener noreferrer"&gt;see the Upscayl case study&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;  Not a coder (yet)?  &lt;strong&gt;Blogs, tutorials, and docs&lt;/strong&gt;  about your learnings  &lt;strong&gt;all count&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Share a short  &lt;strong&gt;LinkedIn/X&lt;/strong&gt;  post—those points add up quickly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your First PR: Quick Checklist&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before you start&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Comment on the issue to get assigned.&lt;/li&gt;
&lt;li&gt;  Ask scope/clarification questions on the thread.&lt;/li&gt;
&lt;li&gt;  Start only after assignment.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;When you open the PR&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Title:&lt;/strong&gt;  feat|fix: concise summary&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Description (template):&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Context:&lt;/strong&gt;  What/why (issue link)&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Approach:&lt;/strong&gt;  How you solved it&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Testing:&lt;/strong&gt;  Steps + expected behavior&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Screens:&lt;/strong&gt;  Before/after or a  &lt;a href="https://www.loom.com/" rel="noopener noreferrer"&gt;60–90s Loom&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;After you open the PR&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Be responsive to review comments.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;What We Review For (fast &amp;amp; friendly)&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Screen recording&lt;/strong&gt;  (fastest way to verify)&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Clarity&lt;/strong&gt;  (description &amp;amp; screenshots)&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Scope&lt;/strong&gt;  (one change per PR)&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Quality&lt;/strong&gt;  (lint/tests pass; no spam or generated noise)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hacktoberfest only counts  &lt;strong&gt;accepted&lt;/strong&gt;  contributions. Spammy PRs are disqualified across the program. We follow the official anti-spam guidelines.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;FAQ&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;How many PRs do I need for rewards?&lt;/strong&gt;&lt;br&gt;
No fixed number—it’s  &lt;strong&gt;points-based&lt;/strong&gt;. Both code and no-code contributions count.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do no-code contributions count?&lt;/strong&gt;&lt;br&gt;
Yes. Try Requestly, write about your learning, and share on social for extra points.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I do both Code and no-code contributions?&lt;/strong&gt;&lt;br&gt;
Yes! Make as many contributions as you can to earn points&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What makes a repo “participating”?&lt;/strong&gt;&lt;br&gt;
Look for the  &lt;strong&gt;hacktoberfest&lt;/strong&gt;  topic on the repository.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Are my social media posts accepted by default?&lt;/strong&gt;&lt;br&gt;
No. Posts must share  &lt;strong&gt;genuine learnings&lt;/strong&gt;. Duplicate/low-value posts won’t earn points.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do you ship gifts internationally?&lt;/strong&gt;&lt;br&gt;
No. Rewards shipping is  &lt;strong&gt;India-only&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Ready? Let’s Build Together&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Visit&lt;/strong&gt;  &lt;a href="https://github.com/requestly/requestly" rel="noopener noreferrer"&gt;&lt;strong&gt;our GitHub repo&lt;/strong&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Pick an issue, raise your PR, and share your work.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;  Stuck?  &lt;strong&gt;Comment on the issue thread&lt;/strong&gt;—we’ll help scope the work or suggest a beginner-friendly alternative.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Happy Contributing!&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
      <category>opensource</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Rethinking API Workspaces for microservice architecture</title>
      <dc:creator>Dinesh Thakur</dc:creator>
      <pubDate>Thu, 25 Sep 2025 12:18:47 +0000</pubDate>
      <link>https://forem.com/requestly/rethinking-api-workspaces-for-microservice-architecture-3e74</link>
      <guid>https://forem.com/requestly/rethinking-api-workspaces-for-microservice-architecture-3e74</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxuxmbcutqu4ggz119e11.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxuxmbcutqu4ggz119e11.png" alt="Hero Image" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In modern development, services rarely live in one giant codebase. Instead, applications are split into  &lt;strong&gt;multiple microservices&lt;/strong&gt;  — each with its own repo, APIs, and logic.&lt;/p&gt;

&lt;p&gt;Testing these APIs is just as important as writing the code, but here’s the problem:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Every service usually has its  &lt;strong&gt;own API requests and environments&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;  Teams often manage these in separate workspaces.&lt;/li&gt;
&lt;li&gt;  Developers who need to test flows across multiple services end up juggling between workspaces.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This slows down debugging and makes collaboration harder.&lt;/p&gt;

&lt;p&gt;Requestly’s  &lt;strong&gt;Multi-Workspace View&lt;/strong&gt;  solves this by letting you keep API collections and environments  &lt;strong&gt;inside each service’s source code&lt;/strong&gt;  and then combine them as needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keeping API Collections Close to the Code
&lt;/h2&gt;

&lt;p&gt;Instead of having a single central workspace for everything, each team can store its own Requestly workspace (collections + environments) alongside the service it belongs to.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;📁 service-a
 ├─ 📁 src
 ├─ 📁 tests
 └─ 📁 requestly-workspace   # Contains API collections + environments

📁 service-b
 ├─ 📁 src
 └─ 📁 requestly-workspace

📁 service-c
 ├─ 📁 src
 └─ 📁 requestly-workspace
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This approach has some big advantages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Version-controlled&lt;/strong&gt;: Workspaces live in Git, just like your code.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Scoped&lt;/strong&gt;: Each service has only the API requests relevant to it.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Discoverable&lt;/strong&gt;: Any new developer can clone the repo and instantly access the APIs for that service.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Mixing Services When You Need Them
&lt;/h2&gt;

&lt;p&gt;Here’s where Multi-Workspace View comes in.&lt;/p&gt;

&lt;p&gt;Say you’re working on a checkout flow that touches:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Service A&lt;/strong&gt;  (Auth)&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Service D&lt;/strong&gt;  (Orders)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of merging their API requests into one messy workspace, you can simply:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Clone both repos (service A and D).&lt;/li&gt;
&lt;li&gt; Open Requestly.&lt;/li&gt;
&lt;li&gt; Load the  &lt;strong&gt;two local workspaces&lt;/strong&gt;  in Multi-Workspace View.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now you have  &lt;strong&gt;both sets of requests + environments&lt;/strong&gt;  available side by side. You can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Call Auth APIs from service A.&lt;/li&gt;
&lt;li&gt;  Call Order APIs from service D.&lt;/li&gt;
&lt;li&gt;  Debug the full flow — without ever switching workspaces or duplicating requests.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This scales beautifully when teams maintain multiple repos but need to collaborate on larger workflows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Benefits of This Approach
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Close to source&lt;/strong&gt;: Workspaces live where APIs are implemented.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Reproducible setups&lt;/strong&gt;: New team members don’t need to hunt for API docs — they get the collections with the code.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Mix &amp;amp; match flexibility&lt;/strong&gt;: Developers can load exactly the services they need (A + D, B + C, etc.) without clutter.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Cross-team collaboration&lt;/strong&gt;: Workspaces can be versioned, reviewed, and shared just like code changes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Getting Started with Multi-Workspace View
&lt;/h2&gt;

&lt;p&gt;Step 1: Open Requestly and navigate to the  &lt;strong&gt;API tab&lt;/strong&gt;  from the sidebar.&lt;/p&gt;

&lt;p&gt;Step 2: In the top-right corner, click on your current workspace name to open the &lt;strong&gt;Workspace Selector&lt;/strong&gt;  dropdown.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl4udnl0v5wo1157o6834.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl4udnl0v5wo1157o6834.png" alt="Workspace Dropdown" width="800" height="508"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 3: Check the boxes next to the local workspaces you want to load together.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzni6w7mrzpy3cafxlfnf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzni6w7mrzpy3cafxlfnf.png" alt="Check Local workspaces" width="800" height="508"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 4: Your chosen workspaces will appear grouped in the selector.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu75sxwdnyxs2ycefmpp1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu75sxwdnyxs2ycefmpp1.png" alt="API Dashboard" width="800" height="508"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: Multi-Workspace View currently works with local workspaces only.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Microservices encourage modularity in code — and your API testing setup should reflect that too. By keeping  &lt;strong&gt;Requestly workspaces next to the service code&lt;/strong&gt;  and using  &lt;strong&gt;Multi-Workspace View&lt;/strong&gt;, you get the best of both worlds:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Organized, version-controlled API collections per service.&lt;/li&gt;
&lt;li&gt;  The flexibility to test across multiple services in one view.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This approach makes API testing more maintainable, collaborative, and aligned with how modern teams ship software.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Sharing Variables Across Workspaces in Requestly</title>
      <dc:creator>Dinesh Thakur</dc:creator>
      <pubDate>Tue, 16 Sep 2025 07:53:04 +0000</pubDate>
      <link>https://forem.com/requestly/sharing-variables-across-workspaces-in-requestly-27md</link>
      <guid>https://forem.com/requestly/sharing-variables-across-workspaces-in-requestly-27md</guid>
      <description>&lt;p&gt;When you’re working on different projects at once, it can be tricky to keep track of things like secret keys, user IDs, or special links. You might have workspaces for each project. But what if you need to use the same piece of information, like a login key, across all of them?&lt;/p&gt;

&lt;p&gt;Copying and pasting is slow and you might make mistakes. Requestly has a cool feature to help with this, called  &lt;strong&gt;Runtime Variables&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Are Runtime Variables?
&lt;/h2&gt;

&lt;p&gt;Think of Runtime Variables as temporary sticky notes for your work in Requestly. They are simple bits of information that you can create and use anywhere.&lt;/p&gt;

&lt;p&gt;They have two key features:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;They Work Everywhere:&lt;/strong&gt;  If you create a runtime variable once you can use it in any workspace right away.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;You Can Save Them for Later:&lt;/strong&gt;  Usually, these “sticky notes” disappear when you close Requestly. But you can toggle them to “Persist”, which saves them for the next time you open the app.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  How do runtime variables work?
&lt;/h2&gt;

&lt;p&gt;The most important thing to know is that Runtime Variables have the highest precendence in Requestly. If another variable has the same name, the Runtime Variable will  &lt;strong&gt;always&lt;/strong&gt;  be used instead.&lt;/p&gt;

&lt;p&gt;Here’s how Requestly decides which variable to use, from most powerful to least powerful:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Runtime Variables&lt;/li&gt;
&lt;li&gt; Environment Variables (Info for a specific setup, like “Testing”)&lt;/li&gt;
&lt;li&gt; Collection Variables (Info for a specific folder of requests)&lt;/li&gt;
&lt;li&gt; Global Variables (General info)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;For example:&lt;/strong&gt;  Let’s say you have a saved link called  &lt;code&gt;{{baseURL}}&lt;/code&gt;  that points to a test website. But for a quick test, you need to use a server running on your own computer.&lt;/p&gt;

&lt;p&gt;Instead of changing your saved settings, you can just create a Runtime Variable also named  &lt;code&gt;{{baseURL}}&lt;/code&gt;  and point it to your local server (like  &lt;code&gt;http://localhost:3000&lt;/code&gt;). Now, all your workspaces will use your local server. When you’re done, just delete the runtime variable, and everything goes back to normal!&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Use Them
&lt;/h2&gt;

&lt;p&gt;Getting started is easy.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; In Requestly, go to the  &lt;strong&gt;API Client&lt;/strong&gt;. And click on  &lt;strong&gt;Runtime&lt;/strong&gt;  &lt;strong&gt;Variables&lt;/strong&gt;  tab on the side.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fngwtlti3bh3nlld8nbrr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fngwtlti3bh3nlld8nbrr.png" alt="Runtime variables - Requestly API Client" width="800" height="535"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; In the variables table, click &lt;strong&gt;+ Add More&lt;/strong&gt; and enter the variable details:

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Key&lt;/strong&gt; – The variable name (e.g., &lt;code&gt;session_id&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Value&lt;/strong&gt; – The value you want to store.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Type&lt;/strong&gt; – Select from &lt;strong&gt;String&lt;/strong&gt;, &lt;strong&gt;Number&lt;/strong&gt;, &lt;strong&gt;Boolean&lt;/strong&gt;, or &lt;strong&gt;Secret&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Persistent&lt;/strong&gt; – Toggle whether the variable should be saved across app restarts.

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Yes&lt;/strong&gt; → Keeps its value after restarting the app.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;No&lt;/strong&gt; → Clears itself automatically on restart.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwfvuztraf5l52vp1glav.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwfvuztraf5l52vp1glav.png" alt="Add New Variable - Requestly API Client" width="800" height="535"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That’s it! Now you can use  &lt;code&gt;{{session_id}}&lt;/code&gt; in any request in any of your workspace.&lt;/p&gt;

&lt;h2&gt;
  
  
  Some Cool Ways to Use Them
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Login Keys:&lt;/strong&gt;  When you get a login key that expires soon, save it as a runtime variable. All your workspaces can now use that same key.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Testing with Different Users:&lt;/strong&gt;  Need to see how your app works for a specific person? Just create a runtime variable like  &lt;code&gt;{{userID}}&lt;/code&gt;  and pop in their ID to test across all your workspaces.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Switching Features On/Off:&lt;/strong&gt;  If you’re testing a new feature that can be turned on or off with a special value, put that value in a runtime variable. This makes it super easy to flip the feature on or off everywhere at once.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Using Multiple Workspaces at Once:&lt;/strong&gt; Requestly lets you open several workspaces side-by-side. Runtime Variables are perfect for this! If you update a variable like &lt;code&gt;{{userID}}&lt;/code&gt;, the change happens everywhere instantly. This is super helpful for testing how different parts of your app work together at the same time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Using Multiple Workspaces at Once:&lt;/strong&gt; Requestly lets you open several workspaces side-by-side. Runtime Variables are perfect for this! If you update a variable like &lt;code&gt;{{userID}}&lt;/code&gt;, the change happens everywhere instantly. This is super helpful for testing how different parts of your app work together at the same time.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>api</category>
      <category>requestly</category>
      <category>testing</category>
    </item>
    <item>
      <title>I Used Every API Client So You Don’t Have To</title>
      <dc:creator>Ronak Kadhi</dc:creator>
      <pubDate>Mon, 08 Sep 2025 07:23:54 +0000</pubDate>
      <link>https://forem.com/requestly/i-used-every-api-client-so-you-dont-have-to-16li</link>
      <guid>https://forem.com/requestly/i-used-every-api-client-so-you-dont-have-to-16li</guid>
      <description>&lt;p&gt;I tested Postman, Insomnia, Bruno, and Requestly head-to-head across real-world scenarios. By the end of this post, you’ll know exactly which one fits your workflow and your team’s size.&lt;/p&gt;

&lt;p&gt;Each of these tools comes with trade-offs that only surface when you least expect them: right in the middle of critical development work.&lt;/p&gt;

&lt;p&gt;These tools are constantly shipping new features, so if you haven’t revisited your setup recently, you might be missing out on significant improvements.&lt;/p&gt;

&lt;p&gt;For context, I’m Jan Hesters, CTO of &lt;a href="https://reactaquad.io" rel="noopener noreferrer"&gt;ReactSquad&lt;/a&gt;. I manage a team of over 20 frontend and full-stack developers who work with complex REST and GraphQL APIs&lt;/p&gt;

&lt;p&gt;every single day. I spent weeks putting these tools through real-world scenarios, so you don’t have to. Here’s what I found.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Tested
&lt;/h2&gt;

&lt;p&gt;To ensure a fair comparison, I used the following scenarios across all four tools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Basic CRUD requests against ReactSquad’s Express starter app (GET, POST, PUT, and DELETE). I evaluated the ease of creating requests, reading responses, and inspecting headers.&lt;/li&gt;
&lt;li&gt;Authentication flows: Basic Auth, OAuth tokens, and API keys. Some clients handle token management automatically, while others require manual configuration&lt;/li&gt;
&lt;li&gt;Advanced features such as request chaining, environment variables, custom scripts, and API mocking. I explored how each tool enables data reuse between requests and test automation.&lt;/li&gt;
&lt;li&gt;Collaboration and storage: Whether collections are stored locally or in the cloud, security implications, and how easy it is to share them with teammates.&lt;/li&gt;
&lt;li&gt;Performance: startup time, memory footprint, and stability under heavy responses. I recorded approximate RAM usage on my laptop (32 GB RAM, Apple M1 Pro with macOS) and noted any crashes or freezes (spoiler: none).
With those criteria in mind, here’s a tool‑by‑tool rundown.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Bruno
&lt;/h2&gt;

&lt;p&gt;Bruno is a fully offline, open-source API client built around a plain-text markup language called Bru. Collections are stored as individual files in your project directory, making them easy to version with Git. There’s no login required, no cloud dependency, and no vendor lock-in.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting started
&lt;/h2&gt;

&lt;p&gt;After launching, Bruno greets you with a minimal interface: a tree view of your Bru files on the left and request/response panes on the right. Creating a request is as simple as adding a &lt;code&gt;.bru&lt;/code&gt; file with YAML-like syntax. Because everything is stored locally, you can use standard Git commands to commit changes and collaborate through pull requests ( &lt;code&gt;commit&lt;/code&gt;, &lt;code&gt;push&lt;/code&gt;, &lt;code&gt;pull&lt;/code&gt;, etc.). There’s no login prompt and no telemetry collection.&lt;/p&gt;

&lt;p&gt;When it comes to security, Bruno is offline-first and account-free by design. Collections are plain text &lt;code&gt;.bru&lt;/code&gt; files in your project, so versioning, access control, and auditability ride on your existing Git workflows rather than a vendor cloud.&lt;/p&gt;

&lt;p&gt;Bruno ships a first-class CLI for running any collection in your CI/CD runners. Run &lt;code&gt;bru run&lt;/code&gt; against a collection, folder, or single request.&lt;/p&gt;

&lt;h2&gt;
  
  
  Unique features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;File-based storage – requests and collections are plain text .bru files saved directly in a folder. This means you can diff, merge, and review API requests likeany other code. Bruno even provides a VS Code extension for syntax highlighting.&lt;/li&gt;
&lt;li&gt;Offline by design – the application doesn’t require an internet connection to start or run. All API calls originate from your machine, not through a proprietary proxy.&lt;/li&gt;
&lt;li&gt;Security &amp;amp; Privacy – fully offline by design. No telemetry, no cloud accounts. All data stays on your machine, which can be a non-negotiable requirement for teams in high-security environments.&lt;/li&gt;
&lt;li&gt;Unlimited collections and runs – there are no artificial limits on how many times you can execute a collection. Paid plans simply add convenience features such as a GUI for Git operations and secret management&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Trade-offs
&lt;/h2&gt;

&lt;p&gt;Because Bruno is relatively young, it lacks some advanced features. There’s no built-in mocking or request interception, and collaboration happens entirely through Git. Scripts are written in JavaScript but are limited compared with Postman’s sandbox. If you’re comfortable with Git and want full control over your API definitions, though, Bruno is a joy to use.&lt;/p&gt;

&lt;h2&gt;
  
  
  Postman
&lt;/h2&gt;

&lt;p&gt;Postman is the established leader in this space and bills itself as a full API development platform. The feature list is enormous: a visual client for REST/GraphQL/SOAP requests, mocked endpoints, monitoring, API documentation, and even AI agents. The free plan supports up to three users and 25 collection runs per month and includes the core API client and a visual workflow editor called Flows. More advanced plans add unlimited seat counts, mock server quotas, private API networks, and role-based access control.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installation and first impressions
&lt;/h2&gt;

&lt;p&gt;Postman offers both a desktop app and a web client. I installed the desktop version and was immediately prompted to sign up. While you can skip account creation and use the lightweight API Client locally, you’ll need an account for workspaces, sync, mocks, monitors, and collaboration. Once inside, the interface feels like an IDE: tabs, sidebars, and pop-up modals compete for attention. Importing a collection from a JSON file is straightforward, and the built-in code generation feature can export your requests to cURL or various languages. Postman’s Postbot assistant (AI) can generate tests and documentation, but after 50 free actions per month you’ll&lt;br&gt;
need to pay.&lt;/p&gt;

&lt;p&gt;Postman takes a cloud-first but flexible approach to security, letting you work completely offline in its lightweight API Client so everything stays local until you sign in. Secrets can also remain on device via Postman Vault, which does not sync. If you opt into the cloud, data is encrypted in transit (TLS) and at rest (AES-256-GCM), and Enterprise plans add BYOK so encryption keys are customer managed.&lt;/p&gt;

&lt;p&gt;If you need headless runs, Postman’s Newman CLI lets you execute any Postman collection from the terminal and wire it into CI easily. Typical flow: newman run collection.json -e env.json, or fetch the latest collection via the Postman API and run it in your pipeline. Newman exits with proper status codes, supports rich reporters (JUnit, HTML), and advanced flags for timeouts, SSL, and data files. Postman also offers a separate Postman CLI if that fits your team better&lt;/p&gt;

&lt;h2&gt;
  
  
  Pros
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Comprehensive feature set – supports REST, GraphQL, SOAP, WebSockets, and more; includes mocks, monitors, and an AI assistant.&lt;/li&gt;
&lt;li&gt;Collaboration – workspaces, commenting, and real-time sync make it easy for teams to share collections and track changes.&lt;/li&gt;
&lt;li&gt;Scripting and automation – powerful JavaScript sandbox for pre-request and post-response scripts. And the Newman CLI-runner allows you to integrate your API tests into your CI/CD pipelines.&lt;/li&gt;
&lt;li&gt;IDE integration – Official VS Code extension to send requests and manage collections from your editor (sign-in required).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Cons
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Resource heavy – the desktop app consumed ~450 MB of RAM during my tests and felt sluggish with large collections; the web version isn’t much lighter.&lt;/li&gt;
&lt;li&gt;Cloud-first design – collections and secrets are stored in Postman’s servers by default. Offline usage is limited and some features require constant connectivity.&lt;/li&gt;
&lt;li&gt;Pricing – the free plan is restrictive (3 users, 25 collection runs/month). Hitting these limits and needing more advanced features quickly pushes you into more expensive paid tiers.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Requestly
&lt;/h2&gt;

&lt;p&gt;When you open Requestly for the first time, it’s different from the other API clients. That’s because Requestly nudges you into its mocking capabilities.&lt;/p&gt;

&lt;p&gt;If Postman/Insomnia/Bruno feel like “API clients first, everything else second,” Requestly flips that script: it leads with interception and mocking. On first run you’re gently pushed to connect an app (e.g., a browser, an app running on your computer, or even an external device) because the core idea is to intercept &amp;amp; change traffic on the fly to unblock frontend work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting started
&lt;/h2&gt;

&lt;p&gt;You’ve got to install both the browser extension and the desktop app of Requestly.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Browser extension (Chrome/Firefox/Edge) allows you to intercept and modify requests right in the browser. You can tweak headers, swap hosts, override response bodies, or stub GraphQL responses while you code. No local proxy setup needed.&lt;/li&gt;
&lt;li&gt;The Desktop app (Mac/Windows) is an open-source local proxy that can intercept traffic from any desktop app (or even mobile simulators) and can be set to system-wide mode. You use it to intercept non-browser traffic to debug APIs from native apps, emulators, or multiple browsers at once.
Requestly starts local and only goes cloud when you ask it to. Local Workspaces keep rules, collections, and environments on your device; Team Workspaces add sync for collaboration. The desktop proxy and much of the tooling are open source, and the company publishes SOC 2 Type II compliance for teams that need formal assurances.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want to integrate Requestly into your CI/CD pipeline, you have to understand that Requestly is rule-driven rather than a traditional “collection runner.” This means you can automate it in two useful ways:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Public API to create, update, and fetch rules and mocks before tests run in CI.&lt;/li&gt;
&lt;li&gt;The Automation SDK Automation SDK (&lt;a href="https://www.npmjs.com/package/@requestly/rq-automation" rel="noopener noreferrer"&gt;@requestly/rq-automation&lt;/a&gt;) to load the extension and apply your rules inside headless browsers with Playwright, Selenium, or Puppeteer.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You can also route terminal and system traffic through the desktop proxy when you need interception outside the browser.&lt;/p&gt;

&lt;h2&gt;
  
  
  What stood out in my tests
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Client-side &amp;amp; system-wide mocking: Override responses in the browser via the extension or at the OS level via the desktop proxy. You can set custom status codes, headers, delays, and entire JSON bodies, and even bulk-generate mocks from recorded sessions. GraphQL is first-class: you can modify queries/mutations or mock them outright.&lt;/li&gt;
&lt;li&gt;A real API client, not just an interceptor: Organize Collections, manage Environments, import cURL, and use pre-request/post-response scripts. Team workspaces exist if you want cloud collaboration; otherwise you can stay fully local.&lt;/li&gt;
&lt;li&gt;Open-core model: The desktop app is open source on GitHub; you can use it locally and opt into paid cloud features only if you need them.&lt;/li&gt;
&lt;li&gt;Performance (anecdotal): On my machine (M1 Pro, 32 GB RAM), the desktop app hovered around ~67 MB during basic rule testing.&lt;/li&gt;
&lt;li&gt;UX: Subjective, but to me the UI feels the most modern and coherent, especially when jumping between rules, API Client, and history.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where it shines
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Frontend dev speed: Toggle rules to simulate backend states, switch hosts between prod/stage/local, inject experimental scripts, or throttle/delay calls to test spinners and error paths — without touching your app code.&lt;/li&gt;
&lt;li&gt;GraphQL teams: Need to reshape a query or force an error response? It’s a two-minute rule instead of a backend change.&lt;/li&gt;
&lt;li&gt;Beyond the browser: Debug traffic from Electron apps, native apps, or simulators via the desktop proxy.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Trade-offs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Not an API-lifecycle suite: You get a capable API Client plus elite interception/mocking, but not the deep API-design/governance layers (private API networks, audit trails, etc.) that Postman markets to large enterprises. (That said, Requestly d o e s offer team workspaces and cloud sync if you want them.)&lt;/li&gt;
&lt;li&gt;Rule-centric mental model: If your muscle memory is “open client → send request,” Requestly’s rule first workflow can feel unusual for pure API exploration— until you start leaning on mocks and rewrites to speed up frontend work.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Insomnia
&lt;/h2&gt;

&lt;p&gt;Insomnia has long been the lean, developer-friendly alternative to Postman. In the past, it has been my go-to tool for API testing because I like that it only does a few things, but it does them well. After being acquired by Kong, it now offers a polished desktop client that supports REST, GraphQL, gRPC, and WebSockets. It remains fully open source with optional cloud sync and Git integration for team sharing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installation and setup
&lt;/h2&gt;

&lt;p&gt;Insomnia’s installer is roughly 140 MB, and no account is required for local use. I downloaded the build from their site and was up and running in seconds. The UI is clean—a left pane for your requests and environments, a middle pane for request details, and tabs for response, headers, and timeline. Adding an environment variable is as simple as typing &lt;code&gt;{{base_url}}&lt;/code&gt; and defining it in the environment editor. Insomnia also supports multi-protocol requests; creating a WebSocket request uses the same workflow as a REST call.&lt;/p&gt;

&lt;p&gt;Insomnia leans into user choice for data storage: pick “Local Vault” to keep everything on device, “Git Sync” to version in your own repo, or “Cloud Sync” with end-to-end encryption. With E2EE, encryption happens client-side and the passphrase is never stored server-side, so losing it means the encrypted data cannot be recovered.&lt;/p&gt;

&lt;p&gt;If you want to integrate Insomnia into your CI/CD pipeline, Insomnia’s Inso CLI can run collections and unit tests headlessly, lints OpenAPI, and generates docs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Strengths
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Plugin ecosystem – Insomnia exposes a robust plugin API with hooks and template tags. You can install community plugins from the Insomnia Plugin Hub or write your own to add custom authentication, pre-request logic, or even theme the interface.&lt;/li&gt;
&lt;li&gt;Git/Cloud storage – choose to store your collections locally, sync with Insomnia’s cloud or connect to a Git repository. This flexibility is ideal for teams with strict security requirements.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Limitations
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Collaboration – while you can sync with Git or their cloud, there’s no built-in commenting or role-based access control. Large organizations may require more&lt;/li&gt;
&lt;li&gt;governance than Insomnia provides.&lt;/li&gt;
&lt;li&gt;Enterprise features – API design and documentation are available, but advanced analytics, role management, and single sign-on require an enterprise plan.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Comparison
&lt;/h2&gt;

&lt;p&gt;We have made a comprehensive comparion table &lt;a href="https://requestly.com/blog/i-used-every-api-client-so-you-dont-have-to/" rel="noopener noreferrer"&gt;here&lt;/a&gt; &lt;br&gt;
When you make a decision, you should consider the total cost of ownership (TCO). Seats are only part of the bill. Budget for run quotas and add-ons (collection runs, AI, mocks and monitors), CI minutes and artifact storage, and any compliance needs like EU residency or BYOK that can push you into enterprise tiers. Local-first saves on vendor overages but shifts cost to process: backups for local workspaces, managing E2EE passphrases, and a bit of glue code to keep rule-driven mocks stable in CI. In short, hosted convenience costs money each month, Git-first costs you maintenance time, so do the math on runs per day, suite length, and mock volume for your team&lt;/p&gt;

&lt;h2&gt;
  
  
  Final thoughts
&lt;/h2&gt;

&lt;p&gt;I’m looking into these tools from the perspective of a manager for frontend and fullstack React developers. The truth is, when it comes to just sending API requests&lt;br&gt;
and storing collections, they all do more or less the same and they all do it well.&lt;/p&gt;

&lt;p&gt;But, after extensive testing, my choice for the ReactSquad team is Requestly. This decision, however, is highly dependent on our specific constraints and priorities.&lt;/p&gt;

&lt;p&gt;The deciding factor was solving our most significant development bottleneck around API clients: waiting on the backend solving our most significant development bottleneck around API clients: waiting on the backend. Requestly’s seamless interception and mocking capabilities directly address this pain point in a way no other tool does as effectively. The ability for a developer to unblock themselves by modifying an in- flight API response – without code changes or complex setup – is a massive productivity booster.&lt;/p&gt;

&lt;p&gt;In general, I wasn’t fully convinced by any of the CLI tools these apps provide. That might just be because of how our teams usually work with APIs. Most of our&lt;br&gt;
projects already use testing frameworks like Playwright or Vitest with Supertest, and we run API tests as part of our E2E or integration test suites.&lt;/p&gt;

&lt;p&gt;That said, Requestly’s Chrome extension works inside Playwright, which means you could skip setting up MSW and mock requests using Requestly if you don’t need it&lt;br&gt;
elsewhere. And, if your project doesn’t have a proper testing setup in place, using something like Postman’s Newman or Requestly’s public API can be a quick and&lt;br&gt;
practical alternative.&lt;/p&gt;

&lt;p&gt;Here is my recommended decision tree to help you choose:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If your team already has a preference. listen to your team. In the end, your team has to be happy with your choice.&lt;/li&gt;
&lt;li&gt;If you are an open-source purist, choose Bruno. It offers a 100% offline, Git-native workflow, and prioritizes performance and simplicity above a sprawling feature set.&lt;/li&gt;
&lt;li&gt;Choose Requestly if you are a frontend or full-stack developer, and your biggest frustration is being blocked by API availability. If you need powerful, easy-to-use mocking and interception integrated with a solid API client, Requestly is in a class of its own.&lt;/li&gt;
&lt;li&gt;And finally, if you need all of the enterprise features of Postman, like a single, all-in-one platform for API design, governance, monitoring, and collaboration, and you are comfortable with a cloud-first, account-mandatory model, choose Postman.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>api</category>
      <category>postman</category>
      <category>testing</category>
      <category>apigateway</category>
    </item>
    <item>
      <title>How to Intercept &amp; Modify GraphQL Requests with Requestly</title>
      <dc:creator>Dinesh Thakur</dc:creator>
      <pubDate>Mon, 14 Jul 2025 07:58:32 +0000</pubDate>
      <link>https://forem.com/requestly/how-to-intercept-modify-graphql-requests-with-requestly-1ga1</link>
      <guid>https://forem.com/requestly/how-to-intercept-modify-graphql-requests-with-requestly-1ga1</guid>
      <description>&lt;p&gt;GraphQL APIs have become the go-to choice for modern frontend applications. Their flexible querying system allows clients to request precisely the data they need—nothing more, nothing less. But this same flexibility often makes debugging, testing, and experimenting harder.&lt;/p&gt;

&lt;p&gt;What if you could  &lt;a href="https://requestly.com/products/modify-and-mock-graphql-apis/" rel="noopener noreferrer"&gt;intercept a GraphQL request&lt;/a&gt;  and tweak its variables, override certain fields, or simulate different input values—without touching a line of code?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;That’s where Requestly comes in.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In this guide, you’ll learn how to intercept and modify outgoing GraphQL  &lt;strong&gt;requests&lt;/strong&gt;  using Requestly’s  &lt;a href="https://requestly.com/products/http-interceptor/modify-request-body/" rel="noopener noreferrer"&gt;Modify Request Body&lt;/a&gt;  rule. Whether you’re testing pagination logic, simulating another user, or altering request payloads for debugging, Requestly makes it incredibly easy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why GraphQL Request Interception Is Different
&lt;/h2&gt;

&lt;p&gt;GraphQL sends all operations (queries and mutations) to a  &lt;strong&gt;single endpoint&lt;/strong&gt;, typically as a POST request. Unlike REST, where URL and query parameters define the resource, GraphQL includes the operation and variables in the  &lt;strong&gt;request body&lt;/strong&gt;, making traditional URL-based interception ineffective.&lt;/p&gt;

&lt;p&gt;That means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  You can’t just filter by URL—you must filter by  &lt;strong&gt;operationName&lt;/strong&gt;  or  &lt;strong&gt;payload keys&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;  Any meaningful changes require modifying the  &lt;strong&gt;body JSON&lt;/strong&gt;, not headers or URL params&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Requestly handles this gracefully with dedicated support for  &lt;strong&gt;GraphQL operation filtering and request body rewriting&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Example: Limit Product list in Requestly Playground by Modifying a GraphQL Variable
&lt;/h2&gt;

&lt;p&gt;In this example, we’ll demonstrate how to intercept a GraphQL request in the  Requestly Playground  and modify one of the query variables to control the number of products fetched.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Understand the Playground Setup
&lt;/h3&gt;

&lt;p&gt;First, open the  &lt;a href="https://requestly-playground.com/" rel="noopener noreferrer"&gt;Requestly Playground&lt;/a&gt;. Choose any GraphQL demo available. If you inspect the  &lt;strong&gt;Network tab&lt;/strong&gt;  in DevTools, you’ll notice a request sent to the GraphQL server with a payload like this:&lt;/p&gt;

&lt;p&gt;This is a POST request that contains the  &lt;code&gt;operationName&lt;/code&gt;,  &lt;code&gt;variables&lt;/code&gt;, and the  &lt;code&gt;query&lt;/code&gt;  itself. In our case, we want to modify the  &lt;code&gt;first&lt;/code&gt;  variable, which controls how many products are fetched.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmndceigspeultafjzq4e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmndceigspeultafjzq4e.png" alt="Requestly Playground GraphQL Query in devtools" width="800" height="452"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Create a Modify Request Body Rule
&lt;/h3&gt;

&lt;p&gt;To intercept and update the request:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Open HTTP Rules&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Navigate to the HTTP Rules section in the web or desktop app.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flrlj0wu4c18eqank3t5f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flrlj0wu4c18eqank3t5f.png" alt="Navigate to HTTP Rules" width="800" height="443"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Create a New Rule&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Click on “+ New Rule” and select &lt;strong&gt;Modify Request Body&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fumeto2erifw04t5lv0l4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fumeto2erifw04t5lv0l4.png" alt="Create New modify Request Body Rule" width="800" height="443"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Configure Resource Type&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Choose “GraphQL API” as the Resource Type.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3ri8idn7irsy4ihmgner.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3ri8idn7irsy4ihmgner.png" alt="Select GraphQL as request type" width="800" height="479"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Enter your source condition&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In the Source Condition, enter the domain of the GraphQL API:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft9j65o09d24b1vor2ig3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft9j65o09d24b1vor2ig3.png" alt="Enter Source Condition URL" width="800" height="452"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Set GraphQL Operation Filter&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In the &lt;strong&gt;GraphQL Operation (Request Payload Filter)&lt;/strong&gt; section:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Enter &lt;strong&gt;Key&lt;/strong&gt; as &lt;code&gt;operationName&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;  Set  &lt;strong&gt;Value&lt;/strong&gt;  as  &lt;code&gt;Products&lt;/code&gt;  (which is the operation used in this demo)
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi5ov6s0xgp32iqctv79e.png" alt="Target GraphQL query based on Operation Name" width="800" height="452"&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Customize Request&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now, let’s override the GraphQL request with modified values. You can either write dynamic JavaScript or directly paste the static modified payload.&lt;/p&gt;

&lt;p&gt;For this demo, we’ll use a  &lt;strong&gt;static replacement&lt;/strong&gt;  where we set  &lt;code&gt;first: 3&lt;/code&gt;  to limit the results.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"operationName"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Products"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"variables"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"searchJoin"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"AND"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"first"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"language"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"en"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"search"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"type.slug:grocery;status:publish"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"query"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"query Products($search: String, $date_range: String, $orderBy: String, $sortedBy: String, $language: String, $searchJoin: String = &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;AND&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;, $first: Int = 15, $page: Int) {&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  products(&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    search: $search&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    date_range: $date_range&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    sortedBy: $sortedBy&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    orderBy: $orderBy&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    language: $language&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    searchJoin: $searchJoin&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    first: $first&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    page: $page&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  ) {&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    data {&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;      ...ProductParts&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;      author {&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;        name&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;        slug&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;        id&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;        __typename&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;      }&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;      __typename&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    }&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    paginatorInfo {&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;      ...PaginatorParts&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;      __typename&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    }&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    __typename&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  }&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;}&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="s2"&gt;fragment ProductParts on Product {&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  id&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  name&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  slug&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  type {&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    id&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    name&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    slug&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    settings {&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;      productCard&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;      __typename&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    }&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    __typename&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  }&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  product_type&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  price&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  sale_price&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  min_price&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  max_price&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  quantity&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  unit&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  sku&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  is_digital&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  is_external&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  ratings&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  image {&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    id&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    thumbnail&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    original&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    __typename&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  }&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  video {&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    url&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    __typename&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  }&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  tags {&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    id&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    name&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    slug&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    __typename&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  }&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  status&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  external_product_url&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  external_product_button_text&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  in_flash_sale&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  __typename&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;}&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="s2"&gt;fragment PaginatorParts on PaginatorInfo {&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  count&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  currentPage&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  firstItem&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  hasMorePages&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  lastItem&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  lastPage&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  perPage&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  total&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  __typename&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;}"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;We’ve updated "first": 3, this will instruct the server to return only 3 products.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F12oclwngxtne3xhqufuw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F12oclwngxtne3xhqufuw.png" alt="Modify Request Body for targeted Request" width="800" height="452"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Save and Activate&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Click  &lt;strong&gt;Save&lt;/strong&gt;, then toggle the rule ON to activate it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv8gjixnmt6g3qnpw578p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv8gjixnmt6g3qnpw578p.png" alt="Save Modify Request Rule" width="800" height="478"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Refresh the Playground
&lt;/h3&gt;

&lt;p&gt;Now return to the Requestly Playground and reload the demo. You should see only  3 products  loaded instead of the default 20:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuvv3fu5ohxq6oic963pe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuvv3fu5ohxq6oic963pe.png" alt="Modified graphQL request in devtools and limited products" width="800" height="451"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Advanced Targeting with GraphQL Operation Filters
&lt;/h2&gt;

&lt;p&gt;Requestly allows you to  &lt;strong&gt;precisely target&lt;/strong&gt;  GraphQL operations by their name, even when multiple queries share the same endpoint.&lt;/p&gt;

&lt;p&gt;When defining your rule:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Use  &lt;strong&gt;&lt;code&gt;operationName&lt;/code&gt;&lt;/strong&gt;  to specify the GraphQL query/mutation you want to modify.&lt;/li&gt;
&lt;li&gt;  You can also add conditional checks for specific variable values (e.g.,  &lt;code&gt;country: 'US'&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is especially useful when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Multiple operations use the same endpoint&lt;/li&gt;
&lt;li&gt;  You only want to modify one particular request out of many&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Modifying GraphQL requests in-flight can dramatically improve how you develop and test modern web apps. Requestly’s Modify Request Body rule gives you full control over the GraphQL payload—without touching the source code or backend services.&lt;/p&gt;

&lt;p&gt;Whether you’re debugging, prototyping, or experimenting—Requestly empowers you to own your client-side workflows end-to-end.&lt;/p&gt;

</description>
      <category>graphql</category>
    </item>
  </channel>
</rss>
