new-api

New API

πŸ₯ Next-Generation LLM Gateway and AI Asset Management System

πŸ“ Project Description

[!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.

🀝 Trusted Partners


πŸ™ Special Thanks


πŸš€ Quick Start

Using Docker Compose (Recommended)

# 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:/data will save data in the data folder 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


πŸ“š Documentation

πŸ“– Official Documentation | Ask DeepWiki

Quick Navigation:

Category Link
πŸš€ Deployment Guide Installation Documentation
βš™οΈ Environment Configuration Environment Variables
πŸ“‘ API Documentation API Documentation
❓ FAQ FAQ
πŸ’¬ Community Interaction Communication Channels

✨ Key Features

For detailed features, please refer to Features Introduction

🎨 Core Functions

Feature Description
🎨 New UI Modern user interface design
🌍 Multi-language Supports Simplified Chinese, Traditional 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

πŸ’° Authorized Usage Accounting and Billing

  • βœ… Internal top-up and quota allocation for lawful authorized scenarios (EPay, Stripe)
  • βœ… Organization-level per-request, usage-based, and cache-hit cost accounting
  • βœ… Cache billing statistics for OpenAI, Azure, DeepSeek, Claude, Qwen, and supported models
  • βœ… Flexible billing policies for internal management or authorized enterprise customers

πŸ” Authorization and Security

  • 😈 Discord authorization login
  • πŸ€– LinuxDO authorization login
  • πŸ“± Telegram authorization login
  • πŸ”‘ OIDC unified authentication
  • πŸ” Key quota query usage (with new-api-key-tool)

πŸš€ Advanced Features

API Format Support:

Intelligent Routing:

  • βš–οΈ Channel weighted random
  • πŸ”„ Automatic retry on failure
  • 🚦 User-level model rate limiting

Format Conversion:

  • πŸ”„ OpenAI Compatible ⇄ Claude Messages
  • πŸ”„ OpenAI Compatible β†’ Google Gemini
  • πŸ”„ Google Gemini β†’ OpenAI Compatible - Text only, function calling not supported yet
  • 🚧 OpenAI Compatible ⇄ OpenAI Responses - In development
  • πŸ”„ Thinking-to-content functionality

Reasoning Effort Support:

OpenAI series models:

  • o3-mini-high - High reasoning effort
  • o3-mini-medium - Medium reasoning effort
  • o3-mini-low - Low reasoning effort
  • gpt-5-high - High reasoning effort
  • gpt-5-medium - Medium reasoning effort
  • gpt-5-low - Low reasoning effort

Claude thinking models:

  • claude-3-7-sonnet-20250219-thinking - Enable thinking mode

Google Gemini series models:

  • gemini-2.5-flash-thinking - Enable thinking mode
  • gemini-2.5-flash-nothinking - Disable thinking mode
  • gemini-2.5-pro-thinking - Enable thinking mode
  • gemini-2.5-pro-thinking-128 - Enable thinking mode with thinking budget of 128 tokens
  • You can also append -low, -medium, or -high to any Gemini model name to request the corresponding reasoning effort (no extra thinking-budget suffix needed).

πŸ€– Model Support

For details, please refer to API Documentation - Gateway Interface

Model Type Description Documentation
πŸ€– OpenAI-Compatible OpenAI compatible models Documentation
πŸ€– OpenAI Responses OpenAI Responses format Documentation
🎨 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 -

πŸ“‘ Supported Interfaces


🚒 Deployment

[!TIP] Latest Docker image: calciumion/new-api:latest

πŸ“‹ Deployment Requirements

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

βš™οΈ Environment Variable Configuration

Variable Name Description Default Value
SESSION_SECRET Session secret (required for multi-machine deployment) -
CRYPTO_SECRET Encryption secret (required for Redis) -
SQL_DSN Database connection string -
REDIS_CONN_STRING Redis connection string -
RELAY_IDLE_CONN_TIMEOUT Idle keep-alive timeout for relay HTTP clients, seconds. Defaults to Go standard library behavior; set 0 to disable 90
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

πŸ”§ Deployment Methods

# 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
  1. Install BaoTa Panel (β‰₯ 9.2.0 version)
  2. Search for New-API in the application store
  3. One-click installation

πŸ“– Tutorial with images

⚠️ Multi-machine Deployment Considerations

[!WARNING]

  • Must set SESSION_SECRET - Otherwise login status inconsistent
  • Shared Redis must set CRYPTO_SECRET - Otherwise data cannot be decrypted

πŸ”„ Channel Retry and Cache

Retry configuration: Settings β†’ Operation Settings β†’ General Settings β†’ Failure Retry Count

Cache configuration:

  • REDIS_CONN_STRING: Redis cache (recommended)
  • MEMORY_CACHE_ENABLED: Memory cache

πŸ”— Related Projects

Upstream Projects

Project Description
One API Original project base
Midjourney-Proxy Midjourney interface support

Supporting Tools

Project Description
new-api-key-tool Key quota query tool
new-api-horizon New API high-performance optimized version

πŸ’¬ Help Support

πŸ“– Documentation Resources

Resource Link
πŸ“˜ FAQ FAQ
πŸ’¬ Community Interaction Communication Channels
πŸ› Issue Feedback Issue Feedback
πŸ“š Complete Documentation Official Documentation

🀝 Contribution Guide

Welcome all forms of contribution!

  • πŸ› Report Bugs
  • πŸ’‘ Propose New Features
  • πŸ“ Improve Documentation
  • πŸ”§ Submit Code

πŸ“œ License

This project is licensed under the GNU Affero General Public License v3.0 (AGPLv3).

Additional terms under AGPLv3 Section 7 apply. Modified versions must preserve the author attribution notice Frontend design and development by New API contributors. in the appropriate legal notices and in any prominent about, legal, footer, or attribution location presented by the user interface.

Modified versions that present a user interface must also preserve a visible link to the original project: https://github.com/QuantumNous/new-api.

This is an open-source project developed based on One API (MIT License).

If your organization's policies do not permit the use of AGPLv3-licensed software, or if you wish to avoid the open-source obligations of AGPLv3, please contact us at: [email protected]


🌟 Star History

Star History Chart


πŸ’– Thank you for using New API

If this project is helpful to you, welcome to give us a ⭐️ Star!

Official Documentation β€’ Issue Feedback β€’ Latest Release

Built with ❀️ by QuantumNous