本文档记录了 New-API 项目中所有数据库表及其字段的详细说明。
存储系统用户信息。
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | int | 主键,自增ID |
| username | string | 用户名,唯一索引 |
| password | string | 密码(哈希存储) |
| display_name | string | 显示名称 |
| role | int | 角色:1=普通用户,10=管理员,100=超级管理员 |
| status | int | 状态:1=启用 |
| string | 邮箱 | |
| github_id | string | GitHub OAuth ID |
| discord_id | string | Discord OAuth ID |
| oidc_id | string | OIDC OAuth ID |
| wechat_id | string | 微信 OAuth ID |
| telegram_id | string | Telegram OAuth ID |
| access_token | *string | 系统管理访问令牌(32字符,唯一) |
| quota | int | 用户配额/额度 |
| used_quota | int | 已使用的配额 |
| request_count | int | 请求次数 |
| group | string | 用户分组(默认 ‘default’) |
| aff_code | string | 邀请码(唯一) |
| aff_count | int | 邀请人数 |
| aff_quota | int | 邀请剩余额度 |
| aff_history_quota | int | 邀请历史总额度 |
| inviter_id | int | 邀请人ID |
| linux_do_id | string | LinuxDO OAuth ID |
| setting | string | 用户设置(JSON格式) |
| remark | string | 备注 |
| stripe_customer | string | Stripe客户ID |
| deleted_at | gorm.DeletedAt | 软删除时间 |
存储用户的 API 令牌。
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | int | 主键,自增ID |
| user_id | int | 用户ID(索引) |
| key | string | 令牌密钥(48字符,唯一) |
| status | int | 状态:1=启用 |
| name | string | 令牌名称 |
| created_time | int64 | 创建时间(Unix时间戳) |
| accessed_time | int64 | 最后访问时间 |
| expired_time | int64 | 过期时间(-1表示永不过期) |
| remain_quota | int | 剩余额度 |
| unlimited_quota | bool | 是否无限额度 |
| model_limits_enabled | bool | 是否启用模型限制 |
| model_limits | string | 模型限制列表(逗号分隔) |
| allow_ips | *string | 允许的IP列表 |
| used_quota | int | 已使用额度 |
| group | string | 令牌分组 |
| cross_group_retry | bool | 跨分组重试 |
| bound_channel_id | int | 绑定的渠道ID(指定令牌只能使用该渠道) |
| deleted_at | gorm.DeletedAt | 软删除时间 |
存储 API 服务商渠道配置。
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | int | 主键,自增ID |
| type | int | 渠道类型(OpenAI=1, Azure=2等) |
| key | string | API密钥 |
| openai_organization | *string | OpenAI组织ID |
| test_model | *string | 测试模型 |
| status | int | 状态:1=启用 |
| name | string | 渠道名称 |
| weight | *uint | 权重(负载均衡用) |
| created_time | int64 | 创建时间 |
| test_time | int64 | 最后测试时间 |
| response_time | int | 响应时间(毫秒) |
| base_url | *string | 基础URL |
| other | string | 其他信息 |
| balance | float64 | 余额(美元) |
| balance_updated_time | int64 | 余额更新时间 |
| models | string | 支持的模型列表 |
| group | string | 渠道分组 |
| used_quota | int64 | 已使用额度 |
| model_mapping | *string | 模型映射(JSON) |
| status_code_mapping | *string | 状态码映射 |
| priority | *int64 | 优先级 |
| auto_ban | *int | 是否自动封禁 |
| other_info | string | 其他信息(JSON) |
| tag | *string | 标签 |
| setting | *string | 渠道额外设置(JSON) |
| param_override | *string | 参数覆盖(JSON) |
| header_override | *string | 请求头覆盖(JSON) |
| remark | *string | 备注 |
| channel_info | ChannelInfo | 渠道信息(JSON,多Key模式配置) |
| settings | string | 其他设置 |
记录用户请求日志和系统日志。
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | int | 主键,自增ID |
| user_id | int | 用户ID(索引) |
| created_at | int64 | 创建时间(Unix时间戳) |
| type | int | 日志类型:0=未知,1=充值,2=消费,3=管理,4=系统,5=错误,6=退款 |
| content | string | 日志内容 |
| username | string | 用户名 |
| token_name | string | 令牌名称 |
| model_name | string | 模型名称 |
| quota | int | 消耗额度 |
| prompt_tokens | int | 提示词Token数 |
| completion_tokens | int | 完成Token数 |
| use_time | int | 使用时间 |
| is_stream | bool | 是否流式请求 |
| channel_id | int | 渠道ID(索引) |
| token_id | int | 令牌ID(索引) |
| group | string | 分组 |
| ip | string | 请求IP |
| request_id | string | 请求ID(唯一) |
| other | string | 其他信息(JSON) |
存储系统级配置项。
| 字段名 | 类型 | 说明 |
|---|---|---|
| key | string | 配置键(主键) |
| value | string | 配置值 |
存储额度兑换码。
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | int | 主键,自增ID |
| user_id | int | 创建者用户ID |
| key | string | 兑换码(32字符,唯一) |
| status | int | 状态:1=启用,2=已使用,3=已禁用 |
| name | string | 兑换码名称 |
| quota | int | 额度值 |
| created_time | int64 | 创建时间 |
| redeemed_time | int64 | 兑换时间 |
| used_user_id | int | 使用者用户ID |
| expired_time | int64 | 过期时间(0=永不过期) |
| deleted_at | gorm.DeletedAt | 软删除时间 |
记录用户充值订单。
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | int | 主键,自增ID |
| user_id | int | 用户ID(索引) |
| amount | int64 | 充值额度 |
| money | float64 | 支付金额 |
| trade_no | string | 交易号(唯一,索引) |
| payment_method | string | 支付方式 |
| create_time | int64 | 创建时间 |
| complete_time | int64 | 完成时间 |
| status | string | 状态:pending/success/failed |
存储异步任务(如视频生成等)。
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | int64 | 主键,自增ID |
| created_at | int64 | 创建时间(索引) |
| updated_at | int64 | 更新时间 |
| task_id | string | 任务ID(对外暴露,索引) |
| platform | string | 平台类型(索引) |
| user_id | int | 用户ID(索引) |
| group | string | 分组 |
| channel_id | int | 渠道ID(索引) |
| quota | int | 消耗额度 |
| action | string | 任务类型(索引) |
| status | string | 任务状态(索引) |
| fail_reason | string | 失败原因 |
| submit_time | int64 | 提交时间(索引) |
| start_time | int64 | 开始时间(索引) |
| finish_time | int64 | 完成时间(索引) |
| progress | string | 进度(索引) |
| properties | json | 任务属性 |
| private_data | json | 私有数据(含Key、计费上下文等) |
| data | json | 任务数据 |
存储 Midjourney 图片生成任务。
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | int | 主键,自增ID |
| code | int | 响应码 |
| user_id | int | 用户ID(索引) |
| action | string | 动作类型(索引) |
| mj_id | string | Midjourney ID(索引) |
| prompt | string | 提示词 |
| prompt_en | string | 英文提示词 |
| description | string | 描述 |
| state | string | 状态 |
| submit_time | int64 | 提交时间(索引) |
| start_time | int64 | 开始时间(索引) |
| finish_time | int64 | 完成时间(索引) |
| image_url | string | 图片URL |
| video_url | string | 视频URL |
| video_urls | string | 多个视频URL |
| status | string | 状态(索引) |
| progress | string | 进度(索引) |
| fail_reason | string | 失败原因 |
| channel_id | int | 渠道ID |
| quota | int | 消耗额度 |
| buttons | string | 操作按钮(JSON) |
| properties | string | 属性(JSON) |
记录各渠道对不同模型的支持能力。
| 字段名 | 类型 | 说明 |
|---|---|---|
| group | string | 分组(主键之一) |
| model | string | 模型名称(主键之一) |
| channel_id | int | 渠道ID(主键之一,索引) |
| enabled | bool | 是否启用 |
| priority | *int64 | 优先级(索引) |
| weight | uint | 权重(索引) |
| tag | *string | 标签(索引) |
记录系统初始化状态。
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | uint | 主键 |
| version | string | 系统版本号 |
| initialized_at | int64 | 初始化时间 |
存储用户的双因素认证设置。
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | int | 主键,自增ID |
| user_id | int | 用户ID(唯一,索引) |
| secret | string | TOTP密钥 |
| is_enabled | bool | 是否启用 |
| failed_attempts | int | 失败尝试次数 |
| locked_until | *time.Time | 锁定截止时间 |
| last_used_at | *time.Time | 最后使用时间 |
| created_at | time.Time | 创建时间 |
| updated_at | time.Time | 更新时间 |
| deleted_at | gorm.DeletedAt | 软删除时间 |
存储双因素认证的备用恢复码。
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | int | 主键,自增ID |
| user_id | int | 用户ID(索引) |
| code_hash | string | 备用码哈希 |
| is_used | bool | 是否已使用 |
| used_at | *time.Time | 使用时间 |
| created_at | time.Time | 创建时间 |
| deleted_at | gorm.DeletedAt | 软删除时间 |
记录用户每日签到。
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | int | 主键,自增ID |
| user_id | int | 用户ID(联合唯一索引) |
| checkin_date | string | 签到日期 YYYY-MM-DD(联合唯一索引) |
| quota_awarded | int | 奖励额度 |
| created_at | int64 | 创建时间 |
存储用户的 Passkey/WebAuthn 凭证。
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | int | 主键,自增ID |
| user_id | int | 用户ID(唯一索引) |
| credential_id | string | 凭证ID(base64,唯一) |
| public_key | string | 公钥(base64) |
| attestation_type | string | 证明类型 |
| aaguid | string | AAGUID(base64) |
| sign_count | uint32 | 签名计数 |
| clone_warning | bool | 克隆警告 |
| user_present | bool | 用户在场标志 |
| user_verified | bool | 用户已验证标志 |
| backup_eligible | bool | 备份资格 |
| backup_state | bool | 备份状态 |
| transports | string | 传输方式(JSON) |
| attachment | string | 附件类型 |
| last_used_at | *time.Time | 最后使用时间 |
| created_at | time.Time | 创建时间 |
| updated_at | time.Time | 更新时间 |
| deleted_at | gorm.DeletedAt | 软删除时间 |
用于统计分析用户的额度使用情况。
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | int | 主键,自增ID |
| user_id | int | 用户ID(索引) |
| username | string | 用户名 |
| model_name | string | 模型名称 |
| created_at | int64 | 创建时间(Unix时间戳) |
| token_used | int | Token使用量 |
| count | int | 请求次数 |
| quota | int | 消耗额度 |
存储可购买的订阅套餐。
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | int | 主键,自增ID |
| title | string | 套餐标题 |
| subtitle | string | 副标题 |
| price_amount | float64 | 价格金额 |
| currency | string | 货币(默认USD) |
| duration_unit | string | 时长单位:year/month/day/hour/custom |
| duration_value | int | 时长数值 |
| custom_seconds | int64 | 自定义秒数 |
| enabled | bool | 是否启用 |
| sort_order | int | 排序顺序 |
| stripe_price_id | string | Stripe价格ID |
| creem_product_id | string | Creem产品ID |
| max_purchase_per_user | int | 每用户最大购买次数 |
| upgrade_group | string | 升级到的用户组 |
| total_amount | int64 | 总额度 |
| quota_reset_period | string | 额度重置周期 |
| quota_reset_custom_seconds | int64 | 自定义重置秒数 |
| created_at | int64 | 创建时间 |
| updated_at | int64 | 更新时间 |
记录订阅购买订单。
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | int | 主键,自增ID |
| user_id | int | 用户ID(索引) |
| plan_id | int | 计划ID(索引) |
| money | float64 | 支付金额 |
| trade_no | string | 交易号(唯一,索引) |
| payment_method | string | 支付方式 |
| status | string | 状态 |
| create_time | int64 | 创建时间 |
| complete_time | int64 | 完成时间 |
| provider_payload | string | 支付提供商数据 |
记录用户购买的订阅。
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | int | 主键,自增ID |
| user_id | int | 用户ID(索引) |
| plan_id | int | 计划ID(索引) |
| amount_total | int64 | 总额度 |
| amount_used | int64 | 已使用额度 |
| start_time | int64 | 开始时间 |
| end_time | int64 | 结束时间(索引) |
| status | string | 状态 |
| source | string | 来源:order/admin |
| last_reset_time | int64 | 上次重置时间 |
| next_reset_time | int64 | 下次重置时间(索引) |
| upgrade_group | string | 升级到的分组 |
| prev_user_group | string | 之前用户分组 |
| created_at | int64 | 创建时间 |
| updated_at | int64 | 更新时间 |
记录订阅的预消费额度,用于流式请求的额度控制。
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | int | 主键,自增ID |
| request_id | string | 请求ID(唯一索引) |
| user_id | int | 用户ID(索引) |
| user_subscription_id | int | 用户订阅ID(索引) |
| pre_consumed | int64 | 预消费额度 |
| status | string | 状态:consumed/refunded |
| created_at | int64 | 创建时间 |
| updated_at | int64 | 更新时间(索引) |
存储自定义的 OAuth 登录提供商配置。
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | int | 主键,自增ID |
| name | string | 显示名称 |
| slug | string | URL标识符(唯一) |
| icon | string | 图标名称 |
| enabled | bool | 是否启用 |
| client_id | string | OAuth客户端ID |
| client_secret | string | OAuth客户端密钥 |
| authorization_endpoint | string | 授权URL |
| token_endpoint | string | Token交换URL |
| user_info_endpoint | string | 用户信息URL |
| scopes | string | OAuth权限范围 |
| user_id_field | string | 用户ID字段路径 |
| username_field | string | 用户名字段路径 |
| display_name_field | string | 显示名称字段路径 |
| email_field | string | 邮箱字段路径 |
| well_known | string | OIDC发现端点 |
| auth_style | int | 认证样式 |
| access_policy | string | 访问控制策略(JSON) |
| access_denied_message | string | 访问拒绝消息 |
| created_at | time.Time | 创建时间 |
| updated_at | time.Time | 更新时间 |
记录用户与第三方 OAuth 账号的绑定关系。
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | int | 主键,自增ID |
| user_id | int | 用户ID(索引) |
| provider_id | int | 提供商ID(索引) |
| provider_user_id | string | 提供商用户ID(索引) |
| created_at | time.Time | 创建时间 |
| updated_at | time.Time | 更新时间 |
| deleted_at | gorm.DeletedAt | 软删除时间 |
存储 AI 模型供应商信息。
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | int | 主键,自增ID |
| name | string | 供应商名称 |
| description | string | 描述 |
| icon | string | 图标 |
| status | int | 状态:1=启用,0=禁用 |
| created_time | int64 | 创建时间 |
| updated_time | int64 | 更新时间 |
| deleted_at | gorm.DeletedAt | 软删除时间 |
存储 AI 模型的元数据信息(注意:不存储价格,价格在 channel_pricings 表或全局配置中)。
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | int | 主键,自增ID |
| model_name | string | 模型名称 |
| description | string | 描述 |
| icon | string | 图标 |
| tags | string | 标签 |
| type | int | 模型类型:1=Chat, 2=Image, 3=Audio, 4=Video, 5=Embedding, 6=Rerank, 7=Vision, 8=Other |
| vendor_id | int | 供应商ID |
| endpoints | string | 支持的端点(JSON) |
| status | int | 状态:1=启用,0=禁用 |
| sync_official | int | 是否同步官方 |
| name_rule | int | 名称匹配规则:0=精确匹配,1=前缀匹配,2=包含匹配,3=后缀匹配 |
| created_time | int64 | 创建时间 |
| updated_time | int64 | 更新时间 |
| deleted_at | gorm.DeletedAt | 软删除时间 |
存储预设的提示词/内容组。
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | int | 主键,自增ID |
| name | string | 组名称(唯一,索引) |
| type | string | 组类型(索引) |
| items | json | 组项目列表 |
| description | string | 描述 |
| created_time | int64 | 创建时间 |
| updated_time | int64 | 更新时间 |
| deleted_at | gorm.DeletedAt | 软删除时间 |
存储各渠道的模型定价配置。
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | int | 主键,自增ID |
| model_name | string | 模型名称(联合唯一索引) |
| channel_id | int | 渠道ID(联合唯一索引,索引) |
| quota_type | int | 计费类型:0=按Token,1=按次 |
| model_ratio | float64 | 模型倍率 |
| completion_ratio | float64 | 完成倍率 |
| model_price | float64 | 模型价格 |
| tag_ids | string | 关联的定价标签ID列表(逗号分隔) |
| created_time | int64 | 创建时间(Unix时间戳) |
| updated_time | int64 | 更新时间(Unix时间戳) |
| deleted_at | gorm.DeletedAt | 软删除时间 |
存储定价分类标签。
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | int | 主键,自增ID |
| name | string | 标签名称(唯一) |
| color | string | 颜色(默认#1890ff) |
| description | string | 描述 |
| sort_order | int | 排序顺序 |
| created_time | int64 | 创建时间 |
| deleted_at | gorm.DeletedAt | 软删除时间 |
┌─────────────┐ ┌─────────────┐
│ users │───1:N─│ tokens │
└─────────────┘ └─────────────┘
│
│ 1:N
▼
┌─────────────┐ ┌─────────────┐
│ logs │ │ top_ups │
└─────────────┘ └─────────────┘
┌─────────────┐ ┌─────────────┐
│ channels │───1:N─│ abilities │
└─────────────┘ └─────────────┘
│
│ 1:N
▼
┌──────────────────┐
│ channel_pricings │
└──────────────────┘
┌───────────────────┐
│ subscription_plans│
└─────────┬─────────┘
│
┌─────┴─────┐
│ 1:N │ 1:N
▼ ▼
┌───────────────┐ ┌──────────────────┐
│subscription_ │ │ user_subscriptions│
│ orders │ └───────────────────┘
└───────────────┘ │
│ 1:N
▼
┌──────────────────────────┐
│ subscription_pre_consume │
│ _records │
└──────────────────────────┘
┌────────────────────────┐
│ custom_oauth_providers │
└───────────┬────────────┘
│ 1:N
▼
┌───────────────────────┐ ┌─────────────┐
│ user_oauth_bindings │─────│ users │
└───────────────────────┘ └─────────────┘
┌─────────────┐ ┌─────────────┐
│ vendors │───1:N─│ models │
└─────────────┘ └─────────────┘
| 主表 | 从表 | 关系 | 说明 |
|---|---|---|---|
| users | tokens | 1:N | 一个用户可有多个令牌 |
| users | logs | 1:N | 一个用户可有多条日志 |
| users | top_ups | 1:N | 一个用户可有多条充值记录 |
| users | redemptions | 1:N | 一个用户创建的兑换码 |
| users | tasks | 1:N | 一个用户可有多个任务 |
| users | midjourneys | 1:N | 一个用户可有多个MJ任务 |
| users | checkins | 1:N | 一个用户可有多条签到记录 |
| users | two_fas | 1:1 | 一个用户可有一个2FA设置 |
| users | passkey_credentials | 1:1 | 一个用户可有一个Passkey |
| users | user_subscriptions | 1:N | 一个用户可有多个订阅 |
| users | user_oauth_bindings | 1:N | 一个用户可绑定多个OAuth |
| channels | abilities | 1:N | 一个渠道可有多个能力记录 |
| channels | channel_pricings | 1:N | 一个渠道可有多个模型定价 |
| channels | tokens | 1:N | 一个渠道可被多个令牌绑定(可选,通过 bound_channel_id) |
| subscription_plans | subscription_orders | 1:N | 一个计划可有多个订单 |
| subscription_plans | user_subscriptions | 1:N | 一个计划可有多个用户订阅 |
| custom_oauth_providers | user_oauth_bindings | 1:N | 一个提供商可有多个绑定 |
| vendors | models | 1:N | 一个供应商可有多个模型 |
| pricing_tags | channel_pricings | N:M | 定价标签与渠道定价多对多(通过 tag_ids) |