100% Free & Open Source

API testing without the paywall.

Build, test, and debug your APIs with a self-hosted tool that does what you actually need. Scripts, environments, OAuth 2.0, code generation, and an AI wizard that builds collections from your docs — no account required, no limits.

40+
API endpoints
8
Code gen targets
3
Languages (i18n)
OpenReq — My Workspace
Collections
GET /users
POST /auth/login
GET /products
PUT /users/{id}
DEL /sessions
GET /orders
POST /checkout
POST
{{base_url}}/auth/login
Send
Params
Headers
Body
Auth
Scripts
{
  "email": "dev@openreq.io",
  "password": "{{env_password}}"
}
200 OK 142 ms 1.2 KB

Everything you'd expect. And then some.

No half-baked MVP. OpenReq ships with the features that actually matter when you're building and debugging APIs day to day.

Request Builder

All HTTP methods, query params, headers, body (JSON/XML/form-data/urlencoded), path parameters with {{variable}} syntax. Tab-based — work on multiple requests at once.

5 Auth Methods

Bearer token, Basic Auth, API Key, and full OAuth 2.0 with Authorization Code, Client Credentials, and PKCE. Token exchange built right in.

Pre/Post Scripts

Run logic before each request, validate responses after. Postman-compatible DSL with pm.test(), pm.variables, pm.response — including assertion results and console output.

Environments

Manage variables per environment (DEV, TEST, LIVE). Secret values, environment switching from the top bar, variable insertion in any field. Workspace isolation included.

Code Generation

Turn any request into working code: cURL, Python, JavaScript (fetch & axios), Go, Java, C#, PHP. Copy-paste into your project and go.

AI Collection Builder

Paste API docs or provide a URL. The AI wizard parses endpoints and generates a full collection with methods, URLs, headers, and bodies. Review before import.

Response Visualizer

Pretty, Raw, Tree, and Preview modes. JSON tree with collapse/expand, HTML/SVG rendering, status codes, response time, size — everything you need at a glance.

WebSocket Proxy

Connect to WebSocket servers, send and receive messages, track direction and timestamps. All through the built-in proxy — no extra tools needed.

Import / Export

Import from Postman (v2.1), OpenAPI 3.0+ specs, or raw cURL commands. Export back to Postman format. Migrate your existing workflow in seconds.

AI-Powered

Paste docs.
Get a full collection.

Don't manually create requests one by one. Drop in your API documentation — or just a URL — and the AI wizard generates an entire collection: endpoints, methods, headers, request bodies. All of it. You pick what to import.

1

Provide documentation

Paste raw API docs, a Swagger page URL, or any documentation source. The wizard fetches and understands the structure.

2

AI parses & generates

Endpoints are extracted with their HTTP methods, paths, headers, query params, and example request bodies. Streamed in real-time.

3

Review & import

Preview every generated endpoint. Select what you need, deselect what you don't, then batch-import into your collection with one click.

AI Collection Wizard
1 Input
2 Generate
3 Preview
4 Import
Generated Endpoints
7 endpoints found
GET /api/users List all users
POST /api/users Create user
GET /api/users/{id} Get user by ID
PUT /api/users/{id} Update user
DEL /api/users/{id} Delete user
POST /api/auth/login Authenticate
POST /api/auth/refresh Refresh token

See it in action

A walkthrough of the core interface — request building, code generation, scripting, and response visualization.

GET /api/v1/users — Response
200 OK
87 ms 2.4 KB application/json
Pretty
Raw
Tree
Preview
Headers
"data": [
{
"id": "a3f8c2e1-...",
"username": "johndoe",
"email": "john@example.com",
"role": "admin",
"active": true,
"created_at": "2026-01-15T09:30:00Z"
},
{ ... 2 more items }
],
"total": 3,
"page": 1
Code Generation — POST /auth/login
cURL
Python
JS fetch
JS axios
Go
Java
C#
PHP
import requests

url = "https://api.example.com/auth/login"
payload = {
  "email": "dev@openreq.io",
  "password": "my_secret"
}
headers = {
  "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.status_code)
print(response.json())
Post-Response Script — Test Assertions
1 // Validate login response
2 pm.test("Status is 200", () => {
3   pm.response.status === 200
4 })
5
6 pm.test("Has token", () => {
7   pm.response.json.token !== null
8 })
9
10 // Save token for next requests
11 pm.variables.set(
12   "auth_token",
13   pm.response.json.token
14 )
Test Results
PASS Status is 200
PASS Has token
Console
[variable] auth_token = "eyJhbGci..."
All tests passed
2/2 · 142 ms
Import/Export — Collection Management

Import Collections

Postman
Import Postman collections with environments
OpenAPI
Parse OpenAPI/Swagger specs (v2/v3)
cURL
Paste any cURL command to create request
Import Preview
Postman Collection
Folders
3
Requests
12
📁 Authentication (3 requests)
└─ POST /auth/login
└─ GET /auth/refresh
└─ POST /auth/logout
📁 Users (5 requests)
📁 Products (4 requests)

Export Collections

Postman Format
Export to Postman v2.1 format with all data
Export
JSON Backup
Full backup with scripts and variables
Export
AI Collection Wizard — Generating from docs
Source: URL
https://api.stripe.com/docs/openapi
Generation complete 12.4s · 23 endpoints parsed
Payments
8 endpoints
Customers
6 endpoints
Subscriptions
5 endpoints
Webhooks
4 endpoints
POST /v1/payment_intents
  Content-Type: application/json
  Authorization: Bearer {{api_key}}
  { "amount": 2000, "currency": "usd" }
GET /v1/customers/{id}
  Authorization: Bearer {{api_key}}
  Accept: application/json
  // No request body

Up and running
in two minutes.

Clone, docker-compose up, done. No cloud accounts, no API keys (unless you want AI features), no subscription tiers to compare.

1

Clone the repo

Grab the source from GitHub.

2

Start with Docker

One command spins up the API and frontend.

3

Open your browser

Navigate to localhost:5173. That's it.

Terminal
# Clone the repository
$ git clone https://github.com/openreq/openreq.git
$ cd openreq

# Start everything with Docker
$ docker compose up -d
✓ Container openreq-api   Started
✓ Container openreq-web   Started

# Open in browser
$ open http://localhost:5173

Ready. No sign-up required.

Built with modern tools

Solid foundations, no bloat. Every dependency earns its place.

FastAPI
Backend
React 19
Frontend
🔧
TypeScript
Type Safety
🗄
SQLite
Database
🎨
MUI 6
Components
🚀
Vite
Build Tool
🔐
JWT
Auth
🐳
Docker
Deployment

Your APIs, your rules.

Stop paying for features that should be free. Self-host OpenReq and own your entire API workflow.

MIT License · Free forever · Community-driven