{{ isAdmin ? t('unlimited_quota') : formatQuota(userInfo.quota) }}
{{ t('available_quota') }}
{{ formatQuota(userInfo.used_quota) }}
{{ t('used_quota') }}
{{ tokens.length }}
{{ t('api_tokens') }}
{{ getRoleName(userInfo.role) }}
{{ t('current_role') }}
{{ t('api_usage_guide') }}
{{ t('api_usage_guide_desc') }}
curl -X POST https://your-domain.com/v1/chat/completions \
-H "Authorization: Bearer {{ userToken }}" \
-H "Content-Type: application/json" \
-d '{"model": "deepseek-chat", "messages": [{"role": "user", "content": "Hello"}]}'
{{ userToken }}
{{ t('quick_actions') }}
{{ t('redeem_code') }}
{{ redeemMsg.text }}
{{ t('recent_logs') }}
| {{ t('time') }} | {{ t('model') }} | {{ t('quota_used') }} | {{ t('elapsed') }} |
|---|---|---|---|
| {{ formatTime(log.created_at) }} | {{ log.model_name }} | {{ log.quota }} | {{ log.elapsed_time }}ms |
| {{ t('no_logs') }} | |||
{{ t('token_management') }}
{{ t('create_token') }}
{{ tokenError }}
| {{ t('name') }} | {{ t('key') }} | {{ t('channel_group') }} | {{ t('remain_quota') }} | {{ t('status') }} | {{ t('created_at') }} | {{ t('action') }} |
|---|---|---|---|---|---|---|
| {{ token.channel_group || '-' }} | {{ token.unlimited_quota ? t('unlimited') : formatQuota(token.remain_quota) }} | {{ token.status === 1 ? t('enabled') : t('disabled') }} | {{ formatTime(token.created_time) }} |
{{ t('api_doc_title') }}
π‘ {{ t('api_endpoint') }}
Base URL: http://your-domain:3000/v1
π {{ t('auth_method') }}
{{ t('auth_desc') }} Authorization: Bearer YOUR_API_TOKEN
{{ t('token_location') }}
π {{ t('chat_completions') }}
{{ t('chat_desc') }}
Python - OpenAI SDK
from openai import OpenAI
client = OpenAI(
api_key="YOUR_API_TOKEN",
base_url="http://your-domain:3000/v1"
)
response = client.chat.completions.create(
model="deepseek-chat",
messages=[
{"role": "system", "content": "You are a helpful assistant"},
{"role": "user", "content": "Hello"}
],
max_tokens=500,
temperature=0.7
)
print(response.choices[0].message.content)
Python - Anthropic SDK
from anthropic import Anthropic
client = Anthropic(
api_key="YOUR_API_TOKEN",
base_url="http://your-domain:3000/v1"
)
response = client.messages.create(
model="claude-3-5-sonnet-latest",
max_tokens=500,
messages=[
{"role": "user", "content": "Hello"}
]
)
print(response.content[0].text)
cURL
curl -X POST http://your-domain:3000/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-chat",
"messages": [
{"role": "user", "content": "Hello"}
],
"max_tokens": 500,
"temperature": 0.7
}'
π {{ t('stream_response') }}
{{ t('stream_desc') }}
Python - OpenAI SDK
from openai import OpenAI
client = OpenAI(
api_key="YOUR_API_TOKEN",
base_url="http://your-domain:3000/v1"
)
stream = client.chat.completions.create(
model="deepseek-chat",
messages=[{"role": "user", "content": "Write a poem"}],
stream=True
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")
cURL
curl -X POST http://your-domain:3000/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-chat",
"messages": [{"role": "user", "content": "Write a poem"}],
"stream": true
}'
π {{ t('available_models') }}
{{ t('available_models_desc') }}
cURL
curl -X GET http://your-domain:3000/v1/models \
-H "Authorization: Bearer YOUR_API_TOKEN"
π° {{ t('quota_info') }}
- {{ t('quota_desc_1') }}
- {{ t('quota_desc_2') }}
- {{ t('quota_desc_3') }}
- {{ t('quota_desc_4') }}
{{ t('channel_management') }}
{{ t('add_channel') }}
{{ channelError }}
| ID | {{ t('name') }} | {{ t('group') }} | {{ t('weight') }} | {{ t('type') }} | {{ t('status') }} | {{ t('base_url') }} | {{ t('models') }} | {{ t('action') }} |
|---|---|---|---|---|---|---|---|---|
| {{ channel.id }} | {{ channel.weight }} | {{ channel.status === 1 ? t('enabled') : t('disabled') }} |
{{ channelError }}
{{ t('channel_group_management') }}
{{ t('group_desc') }}
{{ t('add_group') }}
{{ groupError }}
{{ t('rename_group') }}
{{ groupError }}
{{ t('delete_group') }}
{{ t('confirm_delete_group') }} "{{ deleteGroupName }}" ?
{{ groupError }}
| {{ t('group_name') }} | {{ t('total_channels') }} | {{ t('enabled') }} | {{ t('disabled') }} | {{ t('action') }} |
|---|---|---|---|---|
| {{ group.name }} | {{ group.total }} | {{ group.enabled }} | {{ group.disabled }} |
{{ t('channels_in_group') }} "{{ selectedGroup }}"
| ID | {{ t('name') }} | {{ t('weight') }} | {{ t('status') }} | {{ t('models') }} |
|---|---|---|---|---|
| {{ ch.id }} | {{ ch.name }} | {{ ch.weight }} | {{ ch.status === 1 ? t('enabled') : t('disabled') }} | {{ ch.models }} |
{{ t('user_management') }}
{{ t('add_user') }}
{{ userError }}
| ID | {{ t('username') }} | {{ t('display_name') }} | {{ t('role') }} | {{ t('group') }} | {{ t('status') }} | {{ t('quota') }} | {{ t('action') }} |
|---|---|---|---|---|---|---|---|
| {{ user.id }} | {{ getRoleName(user.role) }} | {{ user.status === 1 ? t('normal') : t('disabled') }} | {{ formatQuota(user.quota) }} |
{{ t('reset_password_for') }}: {{ resetPwUser?.username }}
{{ resetPwError }}
{{ userError }}
{{ t('redemption_management') }}
{{ t('generate_code') }}
{{ redemptionError }}
| ID | {{ t('name') }} | {{ t('key') }} | {{ t('quota') }} | {{ t('status') }} | {{ t('created_at') }} |
|---|---|---|---|---|---|
| {{ redemption.id }} | {{ redemption.name }} | {{ redemption.key }} | {{ formatQuota(redemption.quota) }} | {{ redemption.status === 1 ? t('available') : (redemption.status === 3 ? t('used') : t('disabled')) }} | {{ formatTime(redemption.created_time) }} |
{{ t('package_management') }}
{{ t('create_package') }}
{{ packageError }}
| ID | {{ t('name') }} | {{ t('type') }} | {{ t('quota') }} | {{ t('price') }} | {{ t('status') }} | {{ t('sort_order') }} | {{ t('action') }} |
|---|---|---|---|---|---|---|---|
| {{ pkg.id }} | {{ pkg.package_type }} | {{ formatQuota(pkg.quota) }} | {{ pkg.status === 1 ? t('enabled') : t('disabled') }} | {{ pkg.sort_order }} |
{{ packageError }}
{{ t('order_management') }}
{{ orderStats.total || 0 }}
{{ t('total_orders') }}
{{ orderStats.pending || 0 }}
{{ t('pending') }}
{{ orderStats.paid || 0 }}
{{ t('paid') }}
| ID | {{ t('order_no') }} | {{ t('user_id') }} | {{ t('package_id') }} | {{ t('payment_method') }} | {{ t('amount') }} | {{ t('status') }} | {{ t('created_at') }} |
|---|---|---|---|---|---|---|---|
| {{ order.id }} | {{ order.order_no }} | {{ order.user_id }} | {{ order.package_id }} | {{ order.payment_provider }} | {{ order.amount }} {{ order.currency }} | {{ order.status }} | {{ formatTime(order.created_time) }} |
{{ t('usage_logs') }}
| ID | {{ t('time') }} | {{ t('user') }} | {{ t('model') }} | {{ t('quota_used') }} | {{ t('token_name') }} | {{ t('elapsed') }} |
|---|---|---|---|---|---|---|
| {{ log.id }} | {{ formatTime(log.created_at) }} | {{ log.username }} | {{ log.model_name }} | {{ log.quota }} | {{ log.token_name }} | {{ log.elapsed_time }}ms |
{{ t('page') }} {{ logsPage + 1 }}