🚀 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
Log in or sign up for Devpost to join the conversation.