@ziuchen/deepseek-api
v1.0.1
Published
OpenAI-compatible API server for DeepSeek
Readme
deepseek-api
An OpenAI-compatible DeepSeek API proxy server implemented with Node.js 20+.
Features
- ✅ Fully compatible with OpenAI API format
- ✅ Supports streaming responses (SSE)
- ✅ Supports DeepSeek R1 reasoning chain (
reasoning_content) - ✅ Supports online search mode
- ✅ Optional account pool rotation
- ✅ Local PoW computation (WASM)
- ✅ Zero production dependencies
Supported Models
| Model ID | Reasoning Chain | Online Search |
|---------|-----------------|---------------|
| deepseek-chat | ❌ | ❌ |
| deepseek-reasoner | ✅ | ❌ |
| deepseek-chat-search | ❌ | ✅ |
| deepseek-reasoner-search | ✅ | ✅ |
Aliases: deepseek-v3 → deepseek-chat, deepseek-r1 → deepseek-reasoner
Quick Start
Install dependencies
pnpm installConfigure environment variables
cp .env.template .env
# Edit the .env fileDevelopment mode
pnpm devProduction build
pnpm build
pnpm startEnvironment Variables
| Variable | Description | Default |
|----------|-------------|---------|
| LISTEN_HOST | Listening address | 127.0.0.1 |
| LISTEN_PORT | Listening port | 5001 |
| GATEWAY_KEYS | Gateway keys (comma-separated), required when using account pool mode | - |
| ACCOUNTS_JSON | Account pool JSON array | [] |
API Endpoints
GET /v1/models
List available models.
POST /v1/chat/completions
Create a chat completion.
Request example:
curl http://127.0.0.1:5001/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_DEEPSEEK_TOKEN" \
-d '{
"model": "deepseek-chat",
"messages": [{"role": "user", "content": "Hello!"}],
"stream": true
}'Authentication
Method 1: Use DeepSeek Token directly
Pass DeepSeek's Bearer Token directly in the Authorization header.
You can obtain the token from DeepSeek web app's local storage under the key userToken.
Method 2: Gateway key + account pool
- Configure
GATEWAY_KEYSandACCOUNTS_JSON - Use a gateway key as the Authorization header
- The server will automatically choose an account from the pool and log in
ACCOUNTS_JSON format:
[
{"email": "[email protected]", "password": "xxx"},
{"mobile": "13800138000", "password": "xxx"}
]Project Structure
src/
├── index.ts # Main entry - HTTP server
├── types.ts # Type definitions
├── constants.ts # Constants and env config
├── utils.ts # Utility functions
├── pow.ts # PoW WASM computation
├── account.ts # Account pool management
├── stream-parser.ts # DeepSeek stream response parser
├── deepseek.ts # DeepSeek API calls
└── routes.ts # Route handlers
public/
└── sha3_wasm_bg.*.wasm # PoW computation WASM file