🚀 Runapi

Inspiration

As developers, we constantly interact with APIs—testing endpoints, validating responses, and debugging issues during development. While there are many powerful API tools available, they often feel heavy, UI-centric, or overkill for quick iterations and automation-friendly workflows.

Runapi was inspired by the need for a lightweight, developer-first API execution and testing workflow that fits naturally into modern development pipelines. The goal was simple:

Make working with APIs fast, scriptable, and transparent—without unnecessary complexity.


What it does

Runapi is a minimal API execution and testing tool that allows developers to:

  • Define and run API requests programmatically
  • Test REST endpoints with configurable inputs
  • Validate responses efficiently
  • Use APIs as reproducible, runnable units rather than one-off manual tests

It is designed to be simple, extensible, and automation-friendly, making it suitable for local development, CI pipelines, and rapid backend iteration.


How we built it

Runapi was built with a focus on clarity, modularity, and performance.

Core ideas:

  • Treat API requests as executable units
  • Keep configuration explicit and readable
  • Minimize abstraction layers

Architecture highlights:

  • Clean separation between request handling, execution logic, and response processing
  • Modular design so new features (auth, retries, assertions) can be added incrementally
  • Backend-driven execution rather than UI-dependent workflows

Where relevant, response validation and timing are treated as first-class citizens. For example, response performance can be reasoned about mathematically as:

[ \text{Total Request Time} = t_{\text{network}} + t_{\text{processing}} + t_{\text{serialization}} ]

This helped guide optimizations and benchmarking during development.


Challenges we ran into

  • Designing a minimal interface without sacrificing flexibility Balancing simplicity with real-world API needs was harder than expected.

  • Handling inconsistent API responses APIs often behave unpredictably—timeouts, malformed payloads, or undocumented errors had to be handled gracefully.

  • Avoiding feature creep It was tempting to turn Runapi into a full Postman alternative, but staying focused was critical.


Accomplishments that we're proud of

  • Built a clean and understandable codebase that’s easy to extend
  • Created a tool that feels developer-native, not UI-dependent
  • Kept the project lightweight while still being practical
  • Made API workflows more reproducible and automation-friendly

What we learned

  • Simplicity is harder than complexity—but far more valuable
  • Developer experience matters as much as raw functionality
  • Designing for automation early prevents painful refactors later
  • Clear abstractions outperform clever ones in the long run

What's next for Runapi

Planned improvements include:

  • Authentication support (JWT, API keys, OAuth)
  • Response assertions and schema validation
  • Environment-based configuration
  • CI/CD-friendly execution modes
  • Better documentation and real-world examples

Ultimately, the vision is for Runapi to become a dependable, minimal tool developers reach for when they just want to run and trust their APIs.

Built With

  • aiofiles
  • fastapi
  • python
  • python-jose
  • rich
  • uvicorn
Share this project:

Updates