# Sub2API

AI API Gateway Platform for subscription quota distribution.

## Features

- Multi-Account Management - Support multiple upstream account types (OAuth, API Key)
- API Key Distribution - Generate and manage API Keys for users
- Precise Billing - Token-level usage tracking and cost calculation
- Smart Scheduling - Intelligent account selection with sticky sessions
- Concurrency Control - Per-user and per-account concurrency limits
- Rate Limiting - Configurable request and token rate limits
- Admin Dashboard - Web interface for monitoring and management
- External System Integration - Embed external systems via iframe

## Quick Start

### Default Port

- Web UI: 8080

### Initial Setup

After deployment, access `http://YOUR_SERVER_IP:8080` to run the setup wizard.

**Database Connection Settings:**
- PostgreSQL Host: `postgres` (use service name in Docker network, NOT localhost)
- Redis Host: `redis` (use service name in Docker network, NOT localhost)
- PostgreSQL Password: Automatically generated by the system (can be customized during deployment)

**JWT Secret Requirements:**
- Automatically generated by the system with a strong random password
- Length is at least 32 characters

### Data Directory

Application data is stored in Docker named volumes:
- `postgres_data` - PostgreSQL database data
- `redis_data` - Redis cache data
- `./data` - Application configuration and data

## Version Information

- **latest**: Latest development version
- **0.1.106**: Latest stable version (recommended)

## Links

- Website: https://sub2api.org
- GitHub: https://github.com/Wei-Shaw/sub2api
- Demo: https://demo.sub2api.org/

## Important Notes

1. **Database Connection**: In Docker deployment, PostgreSQL and Redis use service names (`postgres`, `redis`) for connection. Do NOT use `localhost`

2. **JWT Secret and Database Password**: System will automatically generate strong passwords, which will be auto-filled during deployment, no manual setup required

3. **First Deployment**: If you encounter database connection errors, ensure:
   - PostgreSQL container has fully started (wait about 10-30 seconds)
   - Old corrupted data volumes are cleared (use `docker compose down -v`)

4. **Disclaimer**:
   - This project is for personal learning purposes only
   - Users must comply with the Terms of Service of Anthropic, OpenAI, etc.
   - Do not use for illegal purposes
