Skip to main content

ReqNinja - A Python package and CLI tool for API testing, automation, and debugging

Project description

ReqNinja

PyPI version Python Support License: MIT Tests Coverage

ReqNinja is a Python package and CLI tool for API testing, automation, and debugging — blending the simplicity of curl with the power and flexibility of Python's requests.

🚀 Features

  • Retries & Backoff: Automatic retry logic for flaky APIs with customizable policies
  • Fast Timing: Instantly see how long each request takes
  • Pretty Output: Syntax-highlighted JSON straight in your terminal
  • Authentication: Bearer tokens, Basic Auth, OAuth2, and API keys via config
  • Config Profiles: Quickly switch environments or base URLs
  • Response Saving: Export results to .json or .txt files
  • Multiple Output Modes: Raw, pretty JSON, tabular view, show headers
  • Powerful CLI: Run API calls with a simple command, no Python required
  • Debug Mode: Print full request/response details with timing breakdowns
  • Productivity Boost: Pipe support, save/run commands, batch mode
  • Extensible: Plugin system for custom output or request logic

📦 Installation

From PyPI (recommended)

pip install reqninja

From Source

git clone https://github.com/vishal-ravi/reqninja.git
cd reqninja
pip install -e .

Development Installation

git clone https://github.com/vishal-ravi/reqninja.git
cd reqninja
python setup_dev.py

🖥️ Quickstart: CLI Mode

GET Request with Pretty Output

reqninja http GET https://jsonplaceholder.typicode.com/posts/1

POST JSON with Custom Headers

reqninja http POST https://httpbin.org/post \
  -d '{"name":"Vishal"}' \
  -H "Content-Type: application/json"

Show Raw Output

reqninja http GET /data --raw

Save Response

reqninja http GET /users --save results.json

Switch Profile

reqninja http GET /users --profile prod

View Timing and Debug Info

reqninja http GET /users --debug

💻 Quickstart: Python Library

from reqninja import get, post

response = get("https://jsonplaceholder.typicode.com/posts/1", retries=3)
print(response.json())  # Pretty printed automatically

🛠 Config Example (~/.reqninja/config.yml)

default_retries: 3
default_headers:
  Content-Type: application/json
profiles:
  prod:
    base_url: https://api.myapp.com
    headers:
      Authorization: Bearer ${TOKEN}
  staging:
    base_url: https://staging.api.myapp.com
retry_policy:
  total: 5
  status_forcelist: [429, 500, 502, 503, 504]
  backoff_factor: 0.5

🔒 Authentication Made Simple

Pass tokens and credentials via CLI:

  • --auth bearer <TOKEN>
  • --auth basic user:pass

Or set them in your config file under the desired profile.

🏆 Productivity Shortcuts

  • Pipe: cat payload.json | reqninja http POST https://api.com/data
  • Save a Command: reqninja save getUser "GET /users/1"
  • Run Saved Command: reqninja run getUser
  • Batch Mode: Send a list of API calls from a file

🐞 Debugging

reqninja http POST /login --debug

Prints the full request, headers, body, and a timing breakdown for deeper inspection.

📝 Roadmap

  • 🔑 Plugin system for custom output/auth logic
  • 🎨 Templated payloads for batch/bulk requests
  • 💡 Open response in browser (--open)
  • 📁 Advanced response export filters

🙌 Why Use ReqNinja?

A single, modern tool for both quick API experiments and robust automation — with the polish, safety, and visibility pro devs expect.

📚 Documentation

For complete documentation, visit reqninja.readthedocs.io

🤝 Contributing

Contributions are welcome! Please see our Contributing Guide for details.

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

reqninja-1.1.0.tar.gz (41.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

reqninja-1.1.0-py3-none-any.whl (15.8 kB view details)

Uploaded Python 3

File details

Details for the file reqninja-1.1.0.tar.gz.

File metadata

  • Download URL: reqninja-1.1.0.tar.gz
  • Upload date:
  • Size: 41.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for reqninja-1.1.0.tar.gz
Algorithm Hash digest
SHA256 056bbd99a38db1cfe0d7916bb43c59528efd2a1402e5694012b6c7867bb94f97
MD5 285ade4461732703421870200b024a39
BLAKE2b-256 bc51b18196c5241fb3b09ecfd4dc46631d61e97c16fe185a1a809c8953f46b53

See more details on using hashes here.

File details

Details for the file reqninja-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: reqninja-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 15.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for reqninja-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3a17038c93604fa10af037b562a0c1003ee464ac7493f78653dd970df08b2c06
MD5 f620a7b161706532d27b7f091568d91a
BLAKE2b-256 5fb2d687108d7ab8785d6759d7bbca8f80dfc3e18c421e34c364dd559ab11abe

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page