Source repository: https://github.com/njzydark/new-api/tree/self-useβ Build repository: https://github.com/njzydark/images/tree/mainβ

π₯ Next-Generation Large Model Gateway and AI Asset Management System
δΈζβ | English | FranΓ§aisβ | ζ₯ζ¬θͺβ
Quick Startβ β’ Key Featuresβ β’ Deploymentβ β’ Documentationβ β’ Helpβ
Note
This is an open-source project developed based on [One API](https://github.com/songquanpeng/one-api)
Important
- This project is intended solely for lawful and authorized AI API gateway, organization-level authentication, multi-model management, usage analytics, cost accounting, and private deployment scenarios. - Users must lawfully obtain upstream API keys, accounts, model services, and interface permissions, and must comply with upstream terms of service and applicable laws and regulations. - Users should ensure their use complies with upstream terms of service and applicable laws and regulations. - When providing generative AI services to the public, users should comply with applicable regulatory requirements and fulfill all filing, licensing, content safety, real-name verification, log retention, tax, and upstream authorization obligations required by their jurisdiction.
No particular order
Thanks to JetBrainsβ for providing free open-source development license for this project
# Clone the project
git clone https://github.com/QuantumNous/new-api.git
cd new-api
# Edit docker-compose.yml configuration
nano docker-compose.yml
# Start the service
docker-compose up -d
# Pull the latest image
docker pull calciumion/new-api:latest
# Using SQLite (default)
docker run --name new-api -d --restart always \
-p 3000:3000 \
-e TZ=Asia/Shanghai \
-v ./data:/data \
calciumion/new-api:latest
# Using MySQL
docker run --name new-api -d --restart always \
-p 3000:3000 \
-e SQL_DSN="root:123456@tcp(localhost:3306)/oneapi" \
-e TZ=Asia/Shanghai \
-v ./data:/data \
calciumion/new-api:latest
π‘ Tip:
-v ./data:/datawill save data in thedatafolder of the current directory, you can also change it to an absolute path like-v /your/custom/path:/data
π After deployment is complete, visit http://localhost:3000 to start using!
Warning
When operating this project as a public generative AI service or API resale service, users should first complete all required filing, licensing, content safety, real-name verification, log retention, tax, payment, and upstream authorization obligations.
π For more deployment methods, please refer to Deployment Guideβ
Quick Navigation:
| Category | Link |
|---|---|
| π Deployment Guide | Installation Documentationβ |
| βοΈ Environment Configuration | Environment Variablesβ |
| π‘ API Documentation | API Documentationβ |
| β FAQ | FAQβ |
| π¬ Community Interaction | Communication Channelsβ |
For detailed features, please refer to Features Introductionβ
| Feature | Description |
|---|---|
| π¨ New UI | Modern user interface design |
| π Multi-language | Supports Chinese, English, French, Japanese |
| π Data Compatibility | Fully compatible with the original One API database |
| π Data Dashboard | Visual console and statistical analysis |
| π Permission Management | Token grouping, model restrictions, user management |
API Format Support:
Intelligent Routing:
Format Conversion:
Reasoning Effort Support:
OpenAI series models:
o3-mini-high - High reasoning efforto3-mini-medium - Medium reasoning efforto3-mini-low - Low reasoning effortgpt-5-high - High reasoning effortgpt-5-medium - Medium reasoning effortgpt-5-low - Low reasoning effortClaude thinking models:
claude-3-7-sonnet-20250219-thinking - Enable thinking modeGoogle Gemini series models:
gemini-2.5-flash-thinking - Enable thinking modegemini-2.5-flash-nothinking - Disable thinking modegemini-2.5-pro-thinking - Enable thinking modegemini-2.5-pro-thinking-128 - Enable thinking mode with thinking budget of 128 tokens-low, -medium, or -high to any Gemini model name to request the corresponding reasoning effort (no extra thinking-budget suffix needed).For details, please refer to API Documentation - Gateway Interfaceβ
| Model Type | Description | Documentation |
|---|---|---|
| π€ OpenAI GPTs | gpt-4-gizmo-* series | - |
| π¨ Midjourney-Proxy | Midjourney-Proxy(Plus)β | Documentationβ |
| π΅ Suno-API | Suno APIβ | Documentationβ |
| π Rerank | Cohere, Jina | Documentationβ |
| π¬ Claude | Messages format | Documentationβ |
| π Gemini | Google Gemini format | Documentationβ |
| π§ Dify | ChatFlow mode | - |
| π― Custom upstream | Supports configuring legally authorized upstream endpoints | - |
Tip
**Latest Docker image:** `calciumion/new-api:latest`
| Component | Requirement |
|---|---|
| Local database | SQLite (Docker must mount /data directory) |
| Remote database | MySQL β₯ 5.7.8 or PostgreSQL β₯ 9.6 |
| Container engine | Docker / Docker Compose |
| System architecture | 64-bit only (amd64 / arm64); 32-bit systems are not supported |
| Variable Name | Description | Default Value |
|---|---|---|
SESSION_SECRET | Authentication signing secret; must be identical on every node | - |
SESSION_COOKIE_SECURE | false/unset disables the refresh/logout OriginGuard for local HTTP dev proxies; true enables the Secure cookie and strict Origin checks | false |
SESSION_COOKIE_TRUSTED_URL | Required with Secure mode: comma-separated exact HTTPS Origins allowed to call refresh/logout; not a relay CORS allowlist | - |
TRUSTED_PROXIES | Unset/blank trusts loopback, RFC 1918 and IPv6 ULA with a startup warning; none trusts no proxies; an explicit proxy IP/CIDR list replaces the defaults | 127.0.0.0/8, ::1, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, fc00::/7 |
USER_SESSION_ACTIVE_LIMIT | Maximum active login Sessions per user | 50 |
USER_SESSION_ISSUANCE_LIMIT | Maximum Sessions created per user within the issuance window, including revoked Sessions | 100 |
USER_SESSION_ISSUANCE_WINDOW_SECONDS | Per-user Session issuance window; clamped to the revoked retention period when configured higher | 86400 |
USER_SESSION_REVOKED_RETENTION_DAYS | Days to retain revoked Session rows for audit and issuance accounting | 7 |
USER_SESSION_HOURLY_ALERT_THRESHOLD | Global Sessions created per hour that triggers an alert only; it never blocks login | 5000 |
CRYPTO_SECRET | HMAC secret for cache keys; nodes sharing Redis must use the same effective value | Defaults to SESSION_SECRET |
SQL_DSN | Database connection string | - |
REDIS_CONN_STRING | Redis connection string | - |
STREAMING_TIMEOUT | Streaming timeout (seconds) | 300 |
STREAM_SCANNER_MAX_BUFFER_MB | Max per-line buffer (MB) for the stream scanner; increase when upstream sends huge image/base64 payloads | 64 |
MAX_REQUEST_BODY_MB | Max request body size (MB, counted after decompression; prevents huge requests/zip bombs from exhausting memory). Exceeding it returns 413 | 32 |
AZURE_DEFAULT_API_VERSION | Azure API version | 2025-04-01-preview |
ERROR_LOG_ENABLED | Error log switch | false |
PYROSCOPE_URL | Pyroscope server address | - |
PYROSCOPE_APP_NAME | Pyroscope application name | new-api |
PYROSCOPE_BASIC_AUTH_USER | Pyroscope basic auth user | - |
PYROSCOPE_BASIC_AUTH_PASSWORD | Pyroscope basic auth password | - |
PYROSCOPE_MUTEX_RATE | Pyroscope mutex sampling rate | 5 |
PYROSCOPE_BLOCK_RATE | Pyroscope block sampling rate | 5 |
HOSTNAME | Hostname tag for Pyroscope | new-api |
π Complete configuration: Environment Variables Documentationβ
# Clone the project
git clone https://github.com/QuantumNous/new-api.git
cd new-api
# Edit configuration
nano docker-compose.yml
# Start service
docker-compose up -d
Using SQLite:
docker run --name new-api -d --restart always \
-p 3000:3000 \
-e TZ=Asia/Shanghai \
-v ./data:/data \
calciumion/new-api:latest
Using MySQL:
docker run --name new-api -d --restart always \
-p 3000:3000 \
-e SQL_DSN="root:123456@tcp(localhost:3306)/oneapi" \
-e TZ=Asia/Shanghai \
-v ./data:/data \
calciumion/new-api:latest
π‘ Path explanation:
./data:/data- Relative path, data saved in the data folder of the current directory- You can also use absolute path, e.g.:
/your/custom/path:/data
Warning
- All nodes must use the same primary database and the same `SESSION_SECRET`; otherwise Access Tokens, refresh sessions, and temporary authentication flows cannot be verified consistently. - Nodes connected to the same Redis must also use the same `CRYPTO_SECRET`, or their cache-key digests will differ and shared entries cannot be reused consistently.
The database is authoritative for login Sessions and for the per-user active/issuance limits. Redis Session entries are short-lived caches whose TTL follows SYNC_FREQUENCY (60 seconds by default) and never exceeds the Session's remaining lifetime.
| Redis topology | Session propagation | Rate limiting |
|---|---|---|
| Shared Redis | Revocations and version publications normally propagate immediately | Redis limits are shared across nodes |
| Independent Redis per node | Nodes converge from the database within the effective SYNC_FREQUENCY; a newly rotated token may receive a temporary 401 on a node with stale cache | Each node has its own allowance, so aggregate capacity can reach roughly the configured limit multiplied by the node count |
| No Redis | Every Session validation reads the database | In-memory limits are independent per node |
A shorter SYNC_FREQUENCY reduces the independent-Redis staleness window but causes one additional primary-key Session lookup per active SID, per node, per TTL. These guarantees make Session authentication bounded-stale across the supported topologies; rate limits and other Redis-backed control-plane caches remain topology-dependent.
See User authentication and login sessionsβ for the token, Origin-check and PAT contracts.
Retry configuration: Settings β Operation Settings β General Settings β Failure Retry Count
Cache configuration:
REDIS_CONN_STRING: Redis cache (recommended)MEMORY_CACHE_ENABLED: Memory cache| Project | Description |
|---|---|
| One APIβ | Original project base |
| Midjourney-Proxyβ | Midjourney interface support |
| Project | Description |
|---|---|
| new-api-key-toolβ | Key quota query tool |
| new-api-horizonβ | New API high-performance optimized version |
| Resource | Link |
|---|---|
| π FAQ | FAQβ |
| π¬ Community Interaction | Communication Channelsβ |
| π Issue Feedback | Issue Feedbackβ |
| π Complete Documentation | Official Documentationβ |
Welcome all forms of contribution!
If this project is helpful to you, welcome to give us a βοΈ StarοΌ
Official Documentationβ β’ Issue Feedbackβ β’ Latest Releaseβ
Built with β€οΈ by QuantumNous
Content type
Image
Digest
sha256:93483b763β¦
Size
72.6 MB
Last updated
11 days ago
docker pull njzy/new-api