Open-source API testing platform. Self-host with unlimited teams, collections, and requests using only an S3 bucket.
Deploy anywhere: Cloudflare Workers, Vercel, Docker, or any serverless platform. Zero database required. Built for teams who want complete control without infrastructure complexity.
- No vendor lock-in - Your data lives in your S3 bucket. Export anytime in Postman format.
- Zero database - S3-compatible storage is all you need. Works with AWS S3, Cloudflare R2, MinIO, or any S3-compatible service.
- Unlimited everything - No artificial limits on teams, collections, requests, or environments.
- Deploy anywhere - Cloudflare Workers, Vercel, Docker, or your own servers.
- Modern stack - Built with Next.js 16, React 19, and TypeScript.
- All HTTP methods - GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS
- Request builder - Headers, query params, body (JSON, form-data, x-www-form-urlencoded, raw)
- Response viewer - Syntax-highlighted JSON/XML, headers, timing, and size metrics
- Environment variables - Use
{{variable}}syntax anywhere in your requests - Request history - Automatically saved with full request/response data
- Collections - Group related requests together
- Folders - Nested organization within collections
- Environments - Switch between dev, staging, production configs instantly
- Unlimited teams - Create as many teams as you need
- Role-based access - Owner, Admin, Member, and Viewer roles
- Share collections - Share entire collections with your team
- Real-time sync - Changes sync across all team members
- Code generation - Export to 9 languages:
- cURL
- JavaScript (Fetch)
- JavaScript (Axios)
- Python (Requests)
- Go
- PHP (cURL)
- Ruby
- C# (.NET)
- Java (HttpClient)
- Test scripts - Write tests with familiar
pm.test()andpm.expect()syntax - Import/Export - Full Postman collection format support
- cURL import - Paste any cURL command to create a request
- Dark mode - Easy on the eyes, day or night
- Data sovereignty - Your API definitions never leave your infrastructure
- Cost control - S3 storage costs pennies per GB
- Compliance ready - Deploy in your own VPC for regulatory requirements
- Air-gapped support - Works without external dependencies
- Fork this repository
- Connect to Cloudflare Pages
- Set environment variables:
S3_ENDPOINT=https://your-account.r2.cloudflarestorage.com S3_REGION=auto S3_ACCESS_KEY_ID=your-access-key S3_SECRET_ACCESS_KEY=your-secret-key S3_BUCKET=endpnt - Deploy!
# Clone the repository
git clone https://github.com/goshops-com/endpnt.git
cd endpnt
# Install dependencies
pnpm install
# Set up environment variables
cp .env.example .env.local
# Edit .env.local with your S3 credentials
# Start development server
pnpm devdocker run -d \
-p 3000:3000 \
-e S3_ENDPOINT=https://s3.amazonaws.com \
-e S3_REGION=us-east-1 \
-e S3_ACCESS_KEY_ID=your-key \
-e S3_SECRET_ACCESS_KEY=your-secret \
-e S3_BUCKET=endpnt \
ghcr.io/goshops-com/endpnt| Variable | Description | Required |
|---|---|---|
S3_ENDPOINT |
S3-compatible endpoint URL | Yes |
S3_REGION |
S3 region (use auto for R2) |
Yes |
S3_ACCESS_KEY_ID |
Access key for S3 | Yes |
S3_SECRET_ACCESS_KEY |
Secret key for S3 | Yes |
S3_BUCKET |
Bucket name for storing data | Yes |
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY |
Clerk publishable key (for auth) | Optional |
CLERK_SECRET_KEY |
Clerk secret key (for auth) | Optional |
Endpnt supports multiple S3-compatible storage backends:
Cloudflare R2 (Recommended for Cloudflare deployments)
S3_ENDPOINT=https://<account-id>.r2.cloudflarestorage.com
S3_REGION=autoAWS S3
S3_ENDPOINT=https://s3.amazonaws.com
S3_REGION=us-east-1MinIO (Self-hosted)
S3_ENDPOINT=http://localhost:9000
S3_REGION=us-east-1DigitalOcean Spaces
S3_ENDPOINT=https://<region>.digitaloceanspaces.com
S3_REGION=<region>+-------------------------------------------------------------+
| Browser |
| +-----------+ +-----------+ +---------------------+ |
| | Collections| | Request | | Response Viewer | |
| | Sidebar | | Builder | | + Test Results | |
| +-----------+ +-----------+ +---------------------+ |
+-------------------------------------------------------------+
|
v
+-------------------------------------------------------------+
| Next.js API Routes |
| +-----------+ +-----------+ +---------------------+ |
| | /api/ | | /api/teams| | Proxy for CORS | |
| | request | | | | bypass | |
| +-----------+ +-----------+ +---------------------+ |
+-------------------------------------------------------------+
|
v
+-------------------------------------------------------------+
| S3-Compatible Storage |
| +-----------------------------------------------------+ |
| | /users/{userId}/collections/{id}.json | |
| | /users/{userId}/environments/{id}.json | |
| | /teams/{teamId}/metadata.json | |
| | /teams/{teamId}/collections/{id}.json | |
| +-----------------------------------------------------+ |
+-------------------------------------------------------------+
- Node.js 20+
- pnpm 9+
# Development
pnpm dev # Start dev server with Turbopack
# Building
pnpm build # Build for Node.js
pnpm build:cloudflare # Build for Cloudflare Pages
# Testing
pnpm test # Run unit tests (Vitest)
pnpm test:e2e # Run E2E tests (Playwright)
pnpm test:coverage # Run tests with coverage
# Deployment
pnpm deploy:cloudflare # Deploy to Cloudflare Pagessrc/
├── app/ # Next.js App Router
│ ├── api/ # API routes
│ │ ├── request/ # Proxy for API requests
│ │ └── teams/ # Team management APIs
│ ├── layout.tsx # Root layout
│ └── page.tsx # Home page
├── components/
│ ├── dialogs/ # Modal dialogs
│ ├── environments/ # Environment manager
│ ├── history/ # Request history panel
│ ├── layout/ # Main layout
│ ├── request/ # Request builder
│ ├── response/ # Response viewer
│ ├── sidebar/ # Collections sidebar
│ ├── teams/ # Team switcher
│ └── ui/ # Reusable UI components
├── hooks/ # Custom React hooks
├── lib/
│ ├── storage/ # S3/R2 storage clients
│ ├── code-generators.ts # Code snippet generation
│ ├── import-export.ts # Postman format handling
│ └── utils.ts # Utility functions
├── store/ # State management
└── types/ # TypeScript types
| Feature | Endpnt | Postman | Insomnia | Hoppscotch |
|---|---|---|---|---|
| Open Source | Yes | No | Partial | Yes |
| Self-Hosted | Yes | No | Yes | Yes |
| Database Required | No | - | Yes | Yes |
| Team Collaboration | Yes | Paid | Paid | Yes |
| Offline Support | Yes | Limited | Yes | Limited |
| Import Postman | Yes | - | Yes | Yes |
| Code Generation | 9 langs | 15+ langs | 8 langs | 6 langs |
- WebSocket testing
- GraphQL support
- gRPC support
- Request chaining
- Pre-request scripts
- Mock servers
- API documentation generation
- CLI tool
- VS Code extension
We welcome contributions! Please see our Contributing Guide for details.
# Fork and clone
git clone https://github.com/YOUR_USERNAME/endpnt.git
cd endpnt
# Install dependencies
pnpm install
# Create a branch
git checkout -b feature/amazing-feature
# Make your changes and test
pnpm test
pnpm test:e2e
# Commit and push
git commit -m "Add amazing feature"
git push origin feature/amazing-featureMIT License - see LICENSE for details.
- GitHub Issues - Bug reports and feature requests
- Discussions - Questions and community chat
Built with love by GoShops