Claude Relay Service 是一个高性能的 Claude API 转发服务,提供用户管理、API Key 管理、积分系统等功能。采用统一的AdminController架构,提供完整的管理功能。
AdminController 实例Authorization: Bearer {api_key}Authorization: Bearer {admin_api_key}所有管理API接口遵循统一的响应格式:
成功响应:
{
"success": true,
"data": {}
}
分页响应:
{
"success": true,
"data": [],
"pagination": {
"page": 1,
"limit": 20,
"total": 100
}
}
错误响应:
{
"success": false,
"message": "错误信息"
}
/v1POST /v1/messagescontroller.RelayMessages请求参数:
{
"model": "claude-3-sonnet-20240229",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": "Hello, Claude!"
}
],
"stream": false,
"temperature": 0.7
}
响应格式 (非流式):
{
"id": "msg_01234567890abcdef",
"type": "message",
"role": "assistant",
"content": [
{
"type": "text",
"text": "Hello! How can I help you today?"
}
],
"model": "claude-3-sonnet-20240229",
"stop_reason": "end_turn",
"stop_sequence": null,
"usage": {
"input_tokens": 12,
"output_tokens": 25
}
}
错误响应:
{
"error": {
"type": "authentication_error|invalid_request_error|api_error",
"message": "错误描述信息"
}
}
GET /v1/modelscontroller.GetModels响应格式:
{
"success": true,
"data": {
"object": "list",
"data": [
{
"id": "claude-3-sonnet-20240229",
"object": "model",
"created": 1677610602,
"owned_by": "anthropic"
},
{
"id": "claude-3-opus-20240229",
"object": "model",
"created": 1677610602,
"owned_by": "anthropic"
},
{
"id": "claude-3-haiku-20240307",
"object": "model",
"created": 1677610602,
"owned_by": "anthropic"
}
]
}
}
/api (AdminController)所有管理API现在使用统一的AdminController,提供更好的代码组织和维护性。
PUT /api/users/{userId}/planAdminController.CreateOrUpdateUserPlan请求参数:
{
"plan_name": "高级套餐",
"credit_limit": 100000,
"credit_recovery": 1000,
"duration_days": 30
}
字段说明:
plan_name (string, required): 套餐名称,1-100字符credit_limit (int64, required): 积分上限,不能为负credit_recovery (int64, optional): 每日积分恢复数量,不能为负duration_days (int, required): 有效期天数,1-3650天响应格式:
{
"success": true,
"data": {
"user_id": 123,
"plan_name": "高级套餐",
"credit_limit": 100000,
"used_credits": 0,
"available_credits": 100000,
"credit_recovery": 1000,
"start_date": "2024-01-01T00:00:00Z",
"end_date": "2024-01-31T00:00:00Z",
"status": "active",
"operation": "created"
}
}
GET /api/users/{userId}/planAdminController.GetUserPlan响应格式:
{
"success": true,
"data": {
"user_id": 123,
"plan_name": "高级套餐",
"credit_limit": 100000,
"used_credits": 15000,
"available_credits": 85000,
"credit_recovery": 1000,
"last_recharge_at": "2025-08-07T09:00:01Z",
"status": "active",
"start_date": "2024-01-01T00:00:00Z",
"end_date": "2024-01-31T00:00:00Z",
"recovery_enabled": true
}
}
POST /api/users/{userId}/credits/adjustAdminController.AdjustUserCredits请求参数:
{
"amount": 5000,
"description": "充值",
"type": "refund"
}
字段说明:
amount (int64, required): 调整金额,正数为充值,负数为扣减description (string, required): 调整描述,1-500字符type (string, required): 调整类型,可选值:consume(消费), refund(退款), adjustment(调整)响应格式:
{
"success": true,
"data": {
"user_id": 123,
"adjustment_amount": 5000,
"new_balance": 90000,
"type": "refund",
"description": "充值"
}
}
POST /api/users/{userId}/keysAdminController.CreateAPIKey请求参数:
{
"name": "My API Key",
"expires_days": 30
}
字段说明:
name (string, required): API Key名称,1-100字符expires_days (int, optional): 过期天数,1-3650天,不提供则永不过期响应格式:
{
"success": true,
"data": {
"id": 456,
"user_id": 123,
"name": "My API Key",
"key_value": "sk-ant-sid01-abc123...",
"prefix": "sk-ant-sid01",
"status": "active",
"expires_at": "2024-01-31T00:00:00Z",
"created_at": "2024-01-01T00:00:00Z"
}
}
重要: key_value 字段只在创建时返回一次,请妥善保存
GET /api/users/{userId}/keysAdminController.GetUserAPIKeys响应格式:
{
"success": true,
"data": [
{
"id": 456,
"name": "My API Key",
"prefix": "sk-ant-sid01",
"status": "active",
"last_used_at": "2024-01-15T10:30:00Z",
"last_used_ip": "192.168.1.100",
"expires_at": "2024-01-31T00:00:00Z",
"created_at": "2024-01-01T00:00:00Z"
}
]
}
注意: 出于安全考虑,不返回完整的 key_value
PUT /api/keys/{keyId}/statusAdminController.UpdateAPIKeyStatus请求参数:
{
"status": "active"
}
字段说明:
status (string, required): 状态,可选值:active(活跃), inactive(禁用), revoked(已撤销)响应格式:
{
"success": true,
"data": {
"key_id": 456,
"new_status": "active",
"updated_at": "2024-01-15T10:30:00Z"
}
}
DELETE /api/keys/{keyId}AdminController.DeleteAPIKey响应格式:
{
"success": true,
"data": {
"key_id": 456,
"deleted": true,
"deleted_at": "2024-01-15T10:30:00Z"
}
}
GET /api/users/{userId}/credits/historyAdminController.GetCreditsHistory查询参数:
page (int, optional): 页码,默认1limit (int, optional): 每页数量,默认20,最大100type (string, optional): 积分类型过滤响应格式:
{
"success": true,
"data": [
{
"id": 789,
"type": "consume",
"amount": -150,
"balance_after": 84850,
"description": "API调用 - claude-3-sonnet-20240229",
"reference_type": "api_usage",
"reference_id": "101",
"created_at": "2024-01-15T10:30:00Z"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 50
}
}
GET /api/users/{userId}/usage/statsAdminController.GetUsageStats查询参数:
days (int, optional): 统计天数,默认30,最大365响应格式:
{
"success": true,
"data": {
"total_requests": 150,
"total_tokens": 75000,
"total_credits_cost": 15000,
"average_request_time": 850,
"model_usage": {
"claude-3-sonnet-20240229": 100,
"claude-3-haiku-20240307": 50
},
"daily_stats": [
{
"date": "2024-01-15",
"requests": 25,
"tokens": 12500,
"credits_cost": 2500
}
]
}
}
GET /api/users/{userId}/dashboardAdminController.GetUserDashboard响应示例:
{
"success": true,
"data": {
"subscription": {
"user_id": 123,
"plan_name": "基础月付",
"credit_limit": 5400,
"used_credits": 2160,
"available_credits": 3240,
"credit_recovery_per_hour": 100,
"status": "active",
"start_date": "2025-08-01T00:00:00Z",
"end_date": "2025-09-10T00:00:00Z",
"recovery_enabled": true,
"last_recharge_at": "2025-08-07T09:00:01Z"
},
"today_summary": {
"requests": 300,
"credits_consumed": 4040,
"credits_recharged": 800,
"since": "2025-08-07T00:00:00+08:00",
"until": "2025-08-07T16:30:00+08:00"
},
"today_requests": [
{
"id": 10001,
"time": "2025-08-07T16:00:00+08:00",
"model": "claude-sonnet-4-20250514",
"credits_cost": 10,
"status": "success",
"api_key_id": 555
}
]
}
}
说明:
created_at >= CURDATE())last_recharge_at 来自 user_credits 最近 amount>0 记录GET /api/users/{userId}/balanceAdminController.GetUserBalance响应示例:
{
"success": true,
"data": {
"user_id": 123,
"plan_name": "基础月付",
"credit_limit": 5400,
"used_credits": 2160,
"available_credits": 3240,
"credit_recovery_per_hour": 100,
"status": "active",
"start_date": "2025-08-01T00:00:00Z",
"end_date": "2025-09-10T00:00:00Z",
"last_recharge_at": "2025-08-07T09:00:01Z"
}
}
GET /api/users/{userId}/credits/analyticsAdminController.GetCreditsAnalytics查询参数:
start (string, required): YYYY-MM-DD HH:MM:SS,例如 2025-08-08 12:00:00end (string, required): YYYY-MM-DD HH:MM:SS,需大于 starttz (string, optional): 时区,默认 Asia/Shanghaipage (int, optional): 明细页码,默认 1limit (int, optional): 明细每页数量,默认 20,最大 100order (string, optional): asc|desc,默认 desctype (string, optional): 明细类型过滤,consume|purchase|recovery|refund|reward|adjustment|all,默认 all成功返回:
{
"success": true,
"data": {
"meta": {
"start": "2025-08-08T12:00:00+08:00",
"end": "2025-08-09T11:00:00+08:00",
"interval": "hour",
"timezone": "Asia/Shanghai",
"bucket_count": 23
},
"summary": {
"consumed": 1720,
"recharged": 1820,
"net_change": 100
},
"series": [
{
"ts": "2025-08-08T12:00:00+08:00",
"consumed": 12,
"recharged": 0,
"net_change": -12
}
],
"history": {
"page": 1,
"limit": 20,
"total": 73,
"records": [
{
"id": 98765,
"time": "2025-08-08T13:12:39+08:00",
"type": "consume",
"amount": -2,
"balance_after": 5398,
"description": "使用了2积分 - Model: claude-sonnet-4-20250514 ...",
"reference_type": "api_usage",
"reference_id": 555
}
]
}
}
}
图表口径:
[start, end),按 tz 对齐到整点;每小时一个桶,空桶补 0consumed = SUM(-amount WHERE amount < 0)recharged = SUM(amount WHERE amount > 0)net_change = recharged - consumed明细口径:
user_id = ? AND created_at >= start AND created_at < endtype != all 时,对明细增加 WHERE type = ?(不影响图表)order + page/limit错误码与边界:
start/end、时间格式错误、end <= start、跨度超过 90 天series 全 0:区间内无记录history.total = 0:区间无明细性能与缓存:
analytics:{userId}:{start_unix}:{end_unix}:{tz},TTL 60s(user_id, created_at)POST /api/users/batch-statusAdminController.BatchUserStatus请求参数:
{
"user_ids": [123, 456, 789]
}
字段说明:
user_ids (array[int64], required): 用户ID列表,最多100个响应格式:
{
"success": true,
"data": [
{
"user_id": 123,
"plan_status": "active",
"credit_limit": 100000,
"used_credits": 15000,
"available_credits": 85000,
"api_keys_count": 2,
"last_activity": "2024-01-15T10:30:00Z"
}
]
}
POST /api/cache/invalidate/user/{userId}AdminController.InvalidateUserCache响应格式:
{
"success": true,
"data": {
"user_id": 123,
"cleared": ["auth_cache", "credit_cache"],
"message": "用户缓存清理成功"
}
}
POST /api/cache/invalidate/apikeyAdminController.InvalidateAPIKeyCache请求参数:
{
"api_key": "sk-ant-sid01-abc123..."
}
字段说明:
api_key (string, required): 需要清理缓存的API Key,32-128字符响应格式:
{
"success": true,
"data": {
"api_key_prefix": "sk-ant-sid01-abc1...",
"message": "API Key缓存清理成功"
}
}
GET /api/cache/statsAdminController.GetCacheStats响应格式:
{
"success": true,
"data": {
"cache_type": "multi_level",
"l1_cache": "memory_auth_cache",
"l2_cache": "redis_credit_cache",
"features": [
"redis_pubsub_invalidation",
"auto_expiration",
"cache_penetration_protection"
]
}
}
GET /api/system/recovery/statusAdminController.GetSystemRecoveryStatus响应格式:
{
"success": true,
"data": {
"pending_recovery_users": 10,
"last_recovery_at": "2024-01-15T00:00:00Z",
"next_recovery_at": "2024-01-16T00:00:00Z",
"system_status": "healthy"
}
}
POST /api/system/recovery/triggerAdminController.TriggerCreditRecovery响应格式:
{
"success": true,
"data": {
"message": "积分恢复执行成功",
"recovered_users": 5,
"trigger_by": "admin"
}
}
功能说明:
GET /healthcontroller.Health响应格式:
{
"success": true,
"message": "服务正常运行",
"data": {
"status": "healthy",
"timestamp": "2024-01-15 10:30:00"
}
}
200 - 请求成功400 - 请求参数错误401 - 认证失败403 - 权限不足404 - 资源不存在500 - 服务器内部错误authentication_error - 认证错误invalid_request_error - 请求参数错误api_error - API调用错误insufficient_credits - 积分不足POST /api/system/recovery/trigger)