<?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>DEV Community: AnkitSemwal007</title>
    <description>The latest articles on DEV Community by AnkitSemwal007 (@ankitsemwal007).</description>
    <link>https://dev.to/ankitsemwal007</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4072902%2F8cb3a37b-ac4f-444e-8563-5f1160ee895d.jpg</url>
      <title>DEV Community: AnkitSemwal007</title>
      <link>https://dev.to/ankitsemwal007</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ankitsemwal007"/>
    <language>en</language>
    <item>
      <title>API Hero: Beyond API Requests — Building Executable API Workflows</title>
      <dc:creator>AnkitSemwal007</dc:creator>
      <pubDate>Mon, 14 Sep 2026 09:48:17 +0000</pubDate>
      <link>https://dev.to/ankitsemwal007/api-hero-beyond-api-requests-building-executable-api-workflows-3fh6</link>
      <guid>https://dev.to/ankitsemwal007/api-hero-beyond-api-requests-building-executable-api-workflows-3fh6</guid>
      <description>&lt;p&gt;How API Hero connects API collections, dependencies, authentication, variables, testing, automation, and AI-assisted API workflows.&lt;/p&gt;

&lt;p&gt;Most API clients start with a simple problem:&lt;/p&gt;

&lt;p&gt;Send an HTTP request and show me the response.&lt;/p&gt;

&lt;p&gt;That problem is largely solved.&lt;/p&gt;

&lt;p&gt;The more interesting problem begins when you have dozens or hundreds of requests that depend on each other.&lt;/p&gt;

&lt;p&gt;A real API workflow rarely looks like:&lt;/p&gt;

&lt;p&gt;GET /products&lt;/p&gt;

&lt;p&gt;It looks more like:&lt;/p&gt;

&lt;p&gt;Login&lt;br&gt;
  ↓&lt;br&gt;
Get authentication token&lt;br&gt;
  ↓&lt;br&gt;
Get products&lt;br&gt;
  ↓&lt;br&gt;
Create product&lt;br&gt;
  ↓&lt;br&gt;
Extract product ID&lt;br&gt;
  ↓&lt;br&gt;
Update product&lt;br&gt;
  ↓&lt;br&gt;
Delete product&lt;br&gt;
At that point, API testing is no longer just about sending requests.&lt;/p&gt;

&lt;p&gt;It becomes a workflow problem.&lt;/p&gt;

&lt;p&gt;That's the problem I'm exploring while building API Hero.&lt;/p&gt;

&lt;p&gt;6&lt;br&gt;
Why API Hero focuses on workflows&lt;/p&gt;

&lt;p&gt;Individual API requests are easy to understand.&lt;/p&gt;

&lt;p&gt;The relationships between requests are where things become complicated.&lt;/p&gt;

&lt;p&gt;Consider:&lt;/p&gt;

&lt;p&gt;POST /auth/login&lt;br&gt;
GET /products&lt;br&gt;
POST /products&lt;br&gt;
GET /products/{id}&lt;br&gt;
PUT /products/{id}&lt;br&gt;
DELETE /products/{id}&lt;/p&gt;

&lt;p&gt;These aren't necessarily six independent operations.&lt;/p&gt;

&lt;p&gt;They might form a workflow:&lt;/p&gt;

&lt;p&gt;POST /auth/login&lt;br&gt;
       │&lt;br&gt;
       └── accessToken&lt;br&gt;
              │&lt;br&gt;
              ├── GET /products&lt;br&gt;
              │&lt;br&gt;
              └── POST /products&lt;br&gt;
                       │&lt;br&gt;
                       └── productId&lt;br&gt;
                              │&lt;br&gt;
                              ├── GET /products/{id}&lt;br&gt;
                              ├── PUT /products/{id}&lt;br&gt;
                              └── DELETE /products/{id}&lt;/p&gt;

&lt;p&gt;The API itself already contains these relationships.&lt;/p&gt;

&lt;p&gt;API Hero is being designed to understand and work with those relationships.&lt;/p&gt;

&lt;p&gt;API Hero Collections are more than folders&lt;/p&gt;

&lt;p&gt;The starting point is the collection.&lt;/p&gt;

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

&lt;p&gt;FakeStoreAPI&lt;/p&gt;

&lt;p&gt;├── Auth&lt;br&gt;
│   └── Login User&lt;br&gt;
│&lt;br&gt;
├── Products&lt;br&gt;
│   ├── Get All Products&lt;br&gt;
│   ├── Get Product By Id&lt;br&gt;
│   ├── Add Product&lt;br&gt;
│   └── Update Product&lt;br&gt;
│&lt;br&gt;
├── Carts&lt;br&gt;
│   ├── Get All Carts&lt;br&gt;
│   ├── Get Cart By Id&lt;br&gt;
│   ├── Add Cart&lt;br&gt;
│   ├── Update Cart&lt;br&gt;
│   └── Delete Cart&lt;br&gt;
│&lt;br&gt;
└── Users&lt;br&gt;
    ├── Get All Users&lt;br&gt;
    ├── Get User By Id&lt;br&gt;
    ├── Add User&lt;br&gt;
    └── Update User&lt;/p&gt;

&lt;p&gt;A collection provides context.&lt;/p&gt;

&lt;p&gt;Once requests are grouped together, we can start asking:&lt;/p&gt;

&lt;p&gt;Which requests require authentication?&lt;br&gt;
Which requests produce variables?&lt;br&gt;
Which requests consume those variables?&lt;br&gt;
Which endpoints are related?&lt;br&gt;
Which requests can run together?&lt;br&gt;
Which requests should become a scenario?&lt;br&gt;
Which tests should be generated?&lt;/p&gt;

&lt;p&gt;That makes the collection a useful foundation for API understanding.&lt;/p&gt;

&lt;p&gt;Variables create data flow&lt;/p&gt;

&lt;p&gt;Consider a login response:&lt;br&gt;
&lt;code&gt;{&lt;br&gt;
  "token": "abc123..."&lt;br&gt;
}&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Another request may use:&lt;/p&gt;

&lt;p&gt;Authorization: Bearer {{token}}&lt;/p&gt;

&lt;p&gt;There is now a dependency:&lt;/p&gt;

&lt;p&gt;Login&lt;br&gt;
  ↓&lt;br&gt;
Response&lt;br&gt;
  ↓&lt;br&gt;
Extract token&lt;br&gt;
  ↓&lt;br&gt;
Store variable&lt;br&gt;
  ↓&lt;br&gt;
Use token&lt;/p&gt;

&lt;p&gt;The same applies to resource IDs.&lt;/p&gt;

&lt;p&gt;Create Product&lt;br&gt;
      ↓&lt;br&gt;
Response&lt;br&gt;
      ↓&lt;br&gt;
productId = 123&lt;br&gt;
      ↓&lt;br&gt;
Update Product&lt;br&gt;
      ↓&lt;br&gt;
Delete Product&lt;/p&gt;

&lt;p&gt;Variables therefore aren't simply placeholders.&lt;/p&gt;

&lt;p&gt;They can represent data moving through an API workflow.&lt;/p&gt;

&lt;p&gt;API Hero uses this concept when building executable scenarios and preparing collections.&lt;/p&gt;

&lt;p&gt;Authentication is part of the workflow&lt;/p&gt;

&lt;p&gt;Authentication creates another layer of dependency.&lt;/p&gt;

&lt;p&gt;An API collection might contain:&lt;/p&gt;

&lt;p&gt;Public endpoints&lt;br&gt;
      +&lt;br&gt;
Authentication endpoint&lt;br&gt;
      +&lt;br&gt;
Protected endpoints&lt;/p&gt;

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

&lt;p&gt;POST /auth/login&lt;br&gt;
       ↓&lt;br&gt;
     token&lt;br&gt;
       ↓&lt;br&gt;
Authenticated context&lt;br&gt;
       ↓&lt;br&gt;
GET /products&lt;br&gt;
POST /products&lt;br&gt;
PUT /products/{id}&lt;br&gt;
DELETE /products/{id}&lt;/p&gt;

&lt;p&gt;The important question isn't only:&lt;/p&gt;

&lt;p&gt;Does this endpoint require authentication?&lt;/p&gt;

&lt;p&gt;It's also:&lt;/p&gt;

&lt;p&gt;Where does the authentication come from, and how does it get into the request?&lt;/p&gt;

&lt;p&gt;That's why API Hero treats authentication, variables, and dependencies as connected parts of the workflow.&lt;/p&gt;

&lt;p&gt;API Hero Scenarios&lt;/p&gt;

&lt;p&gt;Once dependencies are understood, we can create scenarios.&lt;/p&gt;

&lt;p&gt;A scenario represents an executable workflow rather than simply a list of requests.&lt;/p&gt;

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

&lt;p&gt;Product Lifecycle&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Login&lt;/li&gt;
&lt;li&gt;Extract authentication token&lt;/li&gt;
&lt;li&gt;Get products&lt;/li&gt;
&lt;li&gt;Create product&lt;/li&gt;
&lt;li&gt;Extract product ID&lt;/li&gt;
&lt;li&gt;Get product&lt;/li&gt;
&lt;li&gt;Update product&lt;/li&gt;
&lt;li&gt;Delete product&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The important part is the relationship between the steps.&lt;/p&gt;

&lt;p&gt;Step 5 needs information produced by step 4.&lt;/p&gt;

&lt;p&gt;Step 7 needs the ID produced earlier.&lt;/p&gt;

&lt;p&gt;The scenario therefore represents the actual execution flow of the API.&lt;/p&gt;

&lt;p&gt;This is one of the areas where API Hero goes beyond treating API requests as isolated objects.&lt;/p&gt;

&lt;p&gt;API Hero and API testing&lt;/p&gt;

&lt;p&gt;Once requests are connected, testing becomes part of the same workflow.&lt;/p&gt;

&lt;p&gt;A request can contain assertions such as:&lt;/p&gt;

&lt;p&gt;Status = 200&lt;br&gt;
Response time &amp;lt; threshold&lt;br&gt;
Required property exists&lt;br&gt;
Property has expected type&lt;br&gt;
Response contains expected value&lt;/p&gt;

&lt;p&gt;Negative testing can cover:&lt;/p&gt;

&lt;p&gt;Invalid authentication&lt;br&gt;
Missing required parameter&lt;br&gt;
Invalid resource ID&lt;br&gt;
Malformed request&lt;br&gt;
Unauthorized operation&lt;/p&gt;

&lt;p&gt;The execution flow becomes:&lt;/p&gt;

&lt;p&gt;Request&lt;br&gt;
  ↓&lt;br&gt;
Execute&lt;br&gt;
  ↓&lt;br&gt;
Response&lt;br&gt;
  ↓&lt;br&gt;
Assertions&lt;br&gt;
  ↓&lt;br&gt;
Pass / Fail&lt;/p&gt;

&lt;p&gt;For a scenario:&lt;/p&gt;

&lt;p&gt;Request&lt;br&gt;
  ↓&lt;br&gt;
Extract data&lt;br&gt;
  ↓&lt;br&gt;
Pass data forward&lt;br&gt;
  ↓&lt;br&gt;
Next request&lt;br&gt;
  ↓&lt;br&gt;
Assertions&lt;br&gt;
  ↓&lt;br&gt;
Scenario result&lt;/p&gt;

&lt;p&gt;This allows API testing to happen at both the request level and the workflow level.&lt;/p&gt;

&lt;p&gt;Where AI fits into API Hero&lt;/p&gt;

&lt;p&gt;AI is useful here, but I don't want AI to simply become a button that generates another HTTP request.&lt;/p&gt;

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

&lt;p&gt;Generate a GET request for products.&lt;/p&gt;

&lt;p&gt;That's useful.&lt;/p&gt;

&lt;p&gt;But a more interesting question is:&lt;/p&gt;

&lt;p&gt;Look at this API collection and help me understand how it can actually be executed.&lt;/p&gt;

&lt;p&gt;That requires understanding:&lt;/p&gt;

&lt;p&gt;authentication&lt;br&gt;
variables&lt;br&gt;
dependencies&lt;br&gt;
related endpoints&lt;br&gt;
potential scenarios&lt;br&gt;
test cases&lt;br&gt;
collection readiness&lt;/p&gt;

&lt;p&gt;The conceptual workflow becomes:&lt;/p&gt;

&lt;p&gt;API Collection&lt;br&gt;
      ↓&lt;br&gt;
    Analyze&lt;br&gt;
      ↓&lt;br&gt;
  Understand&lt;br&gt;
      ↓&lt;br&gt;
    Prepare&lt;br&gt;
      ↓&lt;br&gt;
Generate Tests / Scenarios&lt;/p&gt;

&lt;p&gt;AI becomes an assistant for understanding and preparing an API.&lt;/p&gt;

&lt;p&gt;API Hero Prepare with AI&lt;/p&gt;

&lt;p&gt;This idea is reflected in the Prepare with AI workflow.&lt;/p&gt;

&lt;p&gt;Instead of exposing every technical operation as a separate action, API Hero is simplifying the experience around three user goals:&lt;/p&gt;

&lt;p&gt;Generate Tests&lt;/p&gt;

&lt;p&gt;Create positive and negative test cases.&lt;/p&gt;

&lt;p&gt;Build Scenario&lt;/p&gt;

&lt;p&gt;Create an executable workflow with dependencies.&lt;/p&gt;

&lt;p&gt;Prepare Collection&lt;/p&gt;

&lt;p&gt;Configure variables, authentication, dependencies, and collection readiness.&lt;/p&gt;

&lt;p&gt;Internally, preparation can involve several steps:&lt;/p&gt;

&lt;p&gt;Catalog API&lt;br&gt;
    ↓&lt;br&gt;
Understand structure&lt;br&gt;
    ↓&lt;br&gt;
Detect authentication&lt;br&gt;
    ↓&lt;br&gt;
Extract variables&lt;br&gt;
    ↓&lt;br&gt;
Detect dependencies&lt;br&gt;
    ↓&lt;br&gt;
Suggest scenarios&lt;br&gt;
    ↓&lt;br&gt;
Generate tests&lt;/p&gt;

&lt;p&gt;The user doesn't need to manually orchestrate every step.&lt;/p&gt;

&lt;p&gt;The complexity can stay underneath the interface.&lt;/p&gt;

&lt;p&gt;OpenAPI as a starting point&lt;/p&gt;

&lt;p&gt;Many APIs already have a machine-readable description through OpenAPI.&lt;/p&gt;

&lt;p&gt;An OpenAPI specification can describe:&lt;/p&gt;

&lt;p&gt;paths&lt;br&gt;
HTTP methods&lt;br&gt;
parameters&lt;br&gt;
request bodies&lt;br&gt;
response schemas&lt;br&gt;
authentication schemes&lt;/p&gt;

&lt;p&gt;That makes OpenAPI a natural starting point for API Hero.&lt;/p&gt;

&lt;p&gt;Instead of importing a specification and simply producing:&lt;/p&gt;

&lt;p&gt;GET /products&lt;br&gt;
POST /products&lt;br&gt;
GET /products/{id}&lt;/p&gt;

&lt;p&gt;the information can become the foundation for:&lt;/p&gt;

&lt;p&gt;OpenAPI&lt;br&gt;
   ↓&lt;br&gt;
Endpoints&lt;br&gt;
   ↓&lt;br&gt;
Schemas&lt;br&gt;
   ↓&lt;br&gt;
Authentication&lt;br&gt;
   ↓&lt;br&gt;
Variables&lt;br&gt;
   ↓&lt;br&gt;
Dependencies&lt;br&gt;
   ↓&lt;br&gt;
Tests&lt;br&gt;
   ↓&lt;br&gt;
Scenarios&lt;/p&gt;

&lt;p&gt;OpenAPI gives us structured information.&lt;/p&gt;

&lt;p&gt;API Hero's job is to turn that information into something developers can actually work with.&lt;/p&gt;

&lt;p&gt;Why API Hero is a desktop application&lt;/p&gt;

&lt;p&gt;API development rarely happens in isolation.&lt;/p&gt;

&lt;p&gt;A typical development environment might contain:&lt;/p&gt;

&lt;p&gt;VS Code&lt;br&gt;
Terminal&lt;br&gt;
Git&lt;br&gt;
Browser&lt;br&gt;
Database&lt;br&gt;
Docker&lt;br&gt;
API Client&lt;br&gt;
Documentation&lt;/p&gt;

&lt;p&gt;API Hero is being built as a desktop application to fit naturally into that environment.&lt;/p&gt;

&lt;p&gt;The application brings together:&lt;/p&gt;

&lt;p&gt;API requests&lt;br&gt;
Collections&lt;br&gt;
Environments&lt;br&gt;
Authentication&lt;br&gt;
Assertions&lt;br&gt;
History&lt;br&gt;
Collection runners&lt;br&gt;
OpenAPI import&lt;br&gt;
Scenarios&lt;br&gt;
Dependencies&lt;br&gt;
Git-oriented workflows&lt;br&gt;
AI-assisted API preparation&lt;/p&gt;

&lt;p&gt;The goal isn't to make every feature independent.&lt;/p&gt;

&lt;p&gt;The goal is to connect them.&lt;/p&gt;

&lt;p&gt;Building developer tools means fixing the small things too&lt;/p&gt;

&lt;p&gt;One thing I've learned while building API Hero is that technical functionality is only half of the product.&lt;/p&gt;

&lt;p&gt;A developer tool can have sophisticated architecture and still be frustrating if the UI gets in the way.&lt;/p&gt;

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

&lt;p&gt;A generated test list needs to scroll.&lt;/p&gt;

&lt;p&gt;A long AI preparation workflow needs to remain accessible.&lt;/p&gt;

&lt;p&gt;A navigation sidebar shouldn't consume unnecessary workspace.&lt;/p&gt;

&lt;p&gt;These aren't glamorous features, but they're important when a tool is used every day.&lt;/p&gt;

&lt;p&gt;That's why API Hero 0.1.9 also focuses on desktop UX improvements:&lt;/p&gt;

&lt;p&gt;better modal scrolling&lt;br&gt;
improved handling of long content&lt;br&gt;
simplified AI tools&lt;br&gt;
collapsible navigation&lt;br&gt;
collection workflow improvements&lt;/p&gt;

&lt;p&gt;The objective is simple:&lt;/p&gt;

&lt;p&gt;Make the workflow easier to use without hiding its power.&lt;/p&gt;

&lt;p&gt;The API Hero architecture I'm working toward&lt;/p&gt;

&lt;p&gt;The broader concept looks something like this:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;             API
              │
              ▼
         Collection
              │
   ┌──────────┼──────────┐
   ▼          ▼          ▼
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Variables     Auth     Endpoints&lt;br&gt;
       │          │          │&lt;br&gt;
       └──────────┼──────────┘&lt;br&gt;
                  ▼&lt;br&gt;
             Dependencies&lt;br&gt;
                  │&lt;br&gt;
                  ▼&lt;br&gt;
              Scenarios&lt;br&gt;
                  │&lt;br&gt;
                  ▼&lt;br&gt;
                Tests&lt;br&gt;
                  │&lt;br&gt;
                  ▼&lt;br&gt;
             Automation&lt;/p&gt;

&lt;p&gt;AI can operate across these layers:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;         `    AI
              │
   ┌──────────┼──────────┐
   ▼          ▼          ▼
Analyze     Prepare    Generate
   │          │          │
   └──────────┼──────────┘
              ▼
         API Workflow`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;That is the direction I'm taking with API Hero.&lt;/p&gt;

&lt;p&gt;What I've learned building API Hero&lt;/p&gt;

&lt;p&gt;The biggest lesson is that API testing is a workflow problem.&lt;/p&gt;

&lt;p&gt;Sending an HTTP request is relatively straightforward.&lt;/p&gt;

&lt;p&gt;The complexity appears when requests depend on one another.&lt;/p&gt;

&lt;p&gt;You need to understand:&lt;/p&gt;

&lt;p&gt;where authentication comes from&lt;br&gt;
where variables come from&lt;br&gt;
which request produces an ID&lt;br&gt;
which request consumes it&lt;br&gt;
what happens when something fails&lt;br&gt;
which assertions should run&lt;br&gt;
what order requests should execute in&lt;br&gt;
which requests belong together&lt;br&gt;
how the workflow can be automated&lt;/p&gt;

&lt;p&gt;Once you start thinking about those relationships, an API collection starts looking less like a folder of requests and more like a graph of executable operations.&lt;/p&gt;

&lt;p&gt;That's the problem I'm exploring with API Hero.&lt;/p&gt;

&lt;p&gt;What's next for API Hero?&lt;/p&gt;

&lt;p&gt;API Hero is still actively evolving.&lt;/p&gt;

&lt;p&gt;Some of the areas I'm working on include:&lt;/p&gt;

&lt;p&gt;better dependency detection&lt;br&gt;
more reliable variable extraction&lt;br&gt;
stronger assertions&lt;br&gt;
richer scenario generation&lt;br&gt;
API workflow automation&lt;br&gt;
improved OpenAPI handling&lt;br&gt;
authentication workflows&lt;br&gt;
Git integration&lt;br&gt;
AI-assisted API analysis&lt;/p&gt;

&lt;p&gt;The goal isn't to create the biggest possible feature list.&lt;/p&gt;

&lt;p&gt;It's to make this workflow increasingly reliable:&lt;/p&gt;

&lt;p&gt;Import API&lt;br&gt;
    ↓&lt;br&gt;
Understand API&lt;br&gt;
    ↓&lt;br&gt;
Configure API&lt;br&gt;
    ↓&lt;br&gt;
Test API&lt;br&gt;
    ↓&lt;br&gt;
Connect dependencies&lt;br&gt;
    ↓&lt;br&gt;
Build scenarios&lt;br&gt;
    ↓&lt;br&gt;
Automate workflows&lt;br&gt;
Try API Hero&lt;/p&gt;

&lt;p&gt;If you're working with APIs, testing, automation, or developer tooling, I'd be interested in hearing what parts of your workflow are still unnecessarily difficult.&lt;/p&gt;

&lt;p&gt;API Hero: &lt;a href="https://apihero.in/" rel="noopener noreferrer"&gt;https://apihero.in/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Microsoft Store: API Hero on Microsoft Store&lt;/p&gt;

&lt;p&gt;What part of your API workflow becomes painful once you move beyond a handful of independent requests&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
      <category>software</category>
    </item>
    <item>
      <title>Why I Started Treating API Requests Like Code</title>
      <dc:creator>AnkitSemwal007</dc:creator>
      <pubDate>Tue, 11 Aug 2026 11:04:21 +0000</pubDate>
      <link>https://dev.to/ankitsemwal007/why-i-started-treating-api-requests-like-code-1384</link>
      <guid>https://dev.to/ankitsemwal007/why-i-started-treating-api-requests-like-code-1384</guid>
      <description>&lt;p&gt;When working on an application, most important development artifacts live in the project repository.&lt;/p&gt;

&lt;p&gt;Source code is in Git. Configuration is in Git. Database migrations are in Git.&lt;/p&gt;

&lt;p&gt;But API requests often live somewhere else.&lt;/p&gt;

&lt;p&gt;You create requests in an API client, organize them into collections, configure environments, add tests, and then that workflow stays inside a separate application.&lt;/p&gt;

&lt;p&gt;I started wondering:&lt;/p&gt;

&lt;p&gt;Why can't API requests simply be part of the project?&lt;/p&gt;

&lt;p&gt;That question led me to build API Hero, a Git-first REST/HTTP API client for VS Code.&lt;/p&gt;

&lt;p&gt;The basic idea&lt;/p&gt;

&lt;p&gt;Instead of keeping an API request only inside a separate tool, API Hero stores requests as .api files.&lt;/p&gt;

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

&lt;p&gt;my-project/&lt;br&gt;
├── src/&lt;br&gt;
└── api/&lt;br&gt;
    ├── users.api&lt;br&gt;
    ├── products.api&lt;br&gt;
    └── orders.api&lt;/p&gt;

&lt;p&gt;Now the API request is a normal project file.&lt;/p&gt;

&lt;p&gt;That means it can be:&lt;/p&gt;

&lt;p&gt;committed to Git&lt;br&gt;
reviewed in pull requests&lt;br&gt;
compared with previous versions&lt;br&gt;
shared with the team&lt;br&gt;
branched and merged&lt;br&gt;
kept alongside the code that uses the API&lt;/p&gt;

&lt;p&gt;The goal isn't just to use a different API client. It's to make API requests first-class development artifacts.&lt;/p&gt;

&lt;p&gt;More than just request files&lt;/p&gt;

&lt;p&gt;Once requests are project files, the rest of the API workflow can be built around them.&lt;/p&gt;

&lt;p&gt;API Hero supports:&lt;/p&gt;

&lt;p&gt;Request editor&lt;br&gt;
Collections and folders&lt;br&gt;
Variables and environments&lt;br&gt;
Authentication&lt;br&gt;
Assertions&lt;br&gt;
Collection Runner&lt;br&gt;
Run reports&lt;br&gt;
Request history&lt;br&gt;
Scenarios&lt;br&gt;
OpenAPI workflows&lt;/p&gt;

&lt;p&gt;Assertions are particularly useful because the same requests can be used for development and testing.&lt;/p&gt;

&lt;p&gt;For example, an API might return:&lt;/p&gt;

&lt;p&gt;HTTP 201&lt;/p&gt;

&lt;p&gt;while the test expects:&lt;/p&gt;

&lt;p&gt;HTTP 200&lt;/p&gt;

&lt;p&gt;The request itself succeeded. The assertion failed.&lt;/p&gt;

&lt;p&gt;API Hero exposes the expected and actual values so the difference is clear.&lt;/p&gt;

&lt;p&gt;Why VS Code?&lt;/p&gt;

&lt;p&gt;I wanted API work to stay close to the development workflow.&lt;/p&gt;

&lt;p&gt;If I'm working on an application and need to test an endpoint, I shouldn't necessarily have to leave my editor, open another application, find the right collection, configure the environment and run the request.&lt;/p&gt;

&lt;p&gt;With API Hero, the request is already in the workspace.&lt;/p&gt;

&lt;p&gt;The same files can be used by developers, collections and automated workflows.&lt;/p&gt;

&lt;p&gt;Then AI agents changed the idea&lt;/p&gt;

&lt;p&gt;The .api approach became even more interesting with AI coding agents.&lt;/p&gt;

&lt;p&gt;An AI agent can already read files in a repository.&lt;/p&gt;

&lt;p&gt;But reading an API request is different from actually executing it.&lt;/p&gt;

&lt;p&gt;So API Hero now includes a standalone MCP server that allows compatible AI agents to interact with the API workflow.&lt;/p&gt;

&lt;p&gt;An agent can:&lt;/p&gt;

&lt;p&gt;Discover collections&lt;br&gt;
Inspect requests&lt;br&gt;
Run requests&lt;br&gt;
Run collections&lt;br&gt;
Retrieve responses&lt;br&gt;
Inspect execution results&lt;br&gt;
Diagnose assertion failures&lt;/p&gt;

&lt;p&gt;The important part is that MCP doesn't implement another HTTP client.&lt;/p&gt;

&lt;p&gt;It uses the same API Hero execution pipeline:&lt;/p&gt;

&lt;p&gt;AI Agent&lt;br&gt;
   ↓&lt;br&gt;
API Hero MCP&lt;br&gt;
   ↓&lt;br&gt;
Collection Runner&lt;br&gt;
   ↓&lt;br&gt;
Execution Engine&lt;br&gt;
   ↓&lt;br&gt;
API&lt;br&gt;
   ↓&lt;br&gt;
Response&lt;br&gt;
   ↓&lt;br&gt;
Structured result&lt;/p&gt;

&lt;p&gt;This means the API execution logic doesn't have to be duplicated for AI agents.&lt;/p&gt;

&lt;p&gt;A simple example&lt;/p&gt;

&lt;p&gt;Suppose an AI agent runs a request and receives:&lt;/p&gt;

&lt;p&gt;HTTP 201&lt;/p&gt;

&lt;p&gt;But the test expects:&lt;/p&gt;

&lt;p&gt;HTTP 200&lt;/p&gt;

&lt;p&gt;Instead of simply reporting that the API request failed, API Hero can provide:&lt;/p&gt;

&lt;p&gt;HTTP request: successful&lt;br&gt;
HTTP status: 201&lt;/p&gt;

&lt;p&gt;Failure category: assertion&lt;br&gt;
Expected: 200&lt;br&gt;
Actual: 201&lt;/p&gt;

&lt;p&gt;The agent can then understand that the API responded successfully and that the test expectation is what needs attention.&lt;/p&gt;

&lt;p&gt;That's the part of the project I'm particularly interested in exploring.&lt;/p&gt;

&lt;p&gt;The bigger idea&lt;/p&gt;

&lt;p&gt;The direction I'm experimenting with is:&lt;/p&gt;

&lt;p&gt;API request&lt;br&gt;
     ↓&lt;br&gt;
Project file&lt;br&gt;
     ↓&lt;br&gt;
Git&lt;br&gt;
     ↓&lt;br&gt;
Developer / Tests / AI Agent&lt;br&gt;
     ↓&lt;br&gt;
Same API execution engine&lt;/p&gt;

&lt;p&gt;The request becomes a shared artifact.&lt;/p&gt;

&lt;p&gt;A developer can edit it.&lt;/p&gt;

&lt;p&gt;Git can track it.&lt;/p&gt;

&lt;p&gt;A collection can execute it.&lt;/p&gt;

&lt;p&gt;Tests can validate it.&lt;/p&gt;

&lt;p&gt;An AI agent can use it.&lt;/p&gt;

&lt;p&gt;What API Hero is today&lt;/p&gt;

&lt;p&gt;The current release, 2.8.2, includes:&lt;/p&gt;

&lt;p&gt;Git-first .api request files&lt;br&gt;
Request editor&lt;br&gt;
Collections&lt;br&gt;
Variables and environments&lt;br&gt;
Authentication&lt;br&gt;
Assertions&lt;br&gt;
Collection Runner&lt;br&gt;
Run reports&lt;br&gt;
Request history&lt;br&gt;
Scenarios&lt;br&gt;
OpenAPI&lt;br&gt;
Standalone MCP server&lt;br&gt;
AI-agent API execution&lt;br&gt;
Failure diagnostics&lt;br&gt;
Secret redaction&lt;/p&gt;

&lt;p&gt;API Hero is available as a VS Code extension.&lt;/p&gt;

&lt;p&gt;GitHub:&lt;br&gt;
&lt;a href="https://github.com/ankitsemwal007/api-hero" rel="noopener noreferrer"&gt;https://github.com/ankitsemwal007/api-hero&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;VS Code Marketplace:&lt;br&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=AnkitSemwal.api-hero" rel="noopener noreferrer"&gt;https://marketplace.visualstudio.com/items?itemName=AnkitSemwal.api-hero&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'm interested in the underlying idea more than the product itself:&lt;/p&gt;

&lt;p&gt;Would you find it useful if API requests were first-class files in your Git repository, alongside the application code?&lt;/p&gt;

&lt;p&gt;Or do you think API requests are better kept inside a dedicated API client?&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>opensource</category>
      <category>automation</category>
      <category>vscode</category>
    </item>
  </channel>
</rss>
