{{ getViewName() }}
{{ 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 {{ windowLocationOrigin }}/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('models') }} {{ t('remain_quota') }} {{ t('status') }} {{ t('created_at') }} {{ t('action') }}
{{ token.name }} {{ token.key }} {{ token.channel_group || '-' }}
{{ m }}
-
{{ token.unlimited_quota ? t('unlimited') : formatQuota(token.remain_quota) }} {{ token.status === 1 ? t('enabled') : t('disabled') }} {{ formatTime(token.created_time) }}
{{ t('online_shop') }}

{{ t('visit_shop') }} /shop

{{ t('api_doc_title') }}

πŸ“‘ {{ t('api_endpoint') }}

{{ t('base_url') }}: {{ windowLocationOrigin }}/v1

πŸ”‘ {{ t('auth_method') }}

{{ t('auth_desc') }} Authorization: Bearer YOUR_API_TOKEN

{{ t('token_location') }}

πŸ—‚ {{ t('chat_completions') }}

{{ t('chat_desc') }}

Python - OpenAI SDK

Python - Anthropic SDK

cURL

πŸ”„ {{ t('stream_response') }}

{{ t('stream_desc') }}

Python - OpenAI SDK

cURL

πŸ“Š {{ t('available_models') }}

{{ t('available_models_desc') }}

cURL

πŸ’° {{ 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('gateway') }} {{ t('status') }} {{ t('base_url') }} {{ t('models') }} {{ t('action') }}
{{ channel.id }} {{ channel.name }} {{ channel.group }} {{ channel.weight }} {{ getChannelTypeName(channel.type) }} {{ channel.llm_gateway || 'openai' }} {{ channel.status === 1 ? t('enabled') : t('disabled') }} {{ channel.base_url }} {{ channel.models }}
{{ channelError }}
{{ t('channel_group_management') }}

{{ t('group_desc') }}

{{ t('group_hint') }}

{{ 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 }} {{ user.username }} {{ user.display_name }} {{ getRoleName(user.role) }} {{ user.group || 'default' }} {{ 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.name }} {{ pkg.package_type }} {{ formatQuota(pkg.quota) }} {{ pkg.prices }} {{ 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 }}
{{ t('powered_by') }} llmapi
{{ t('author') }}:xiefujin | {{ t('email') }}:490021684@qq.com | GitHub:github.com/kandada/llmapi
{{ t('disclaimer') }}