definitions: adaptor.ConfigTemplate: properties: description: type: string example: {} name: type: string required: type: boolean type: $ref: '#/definitions/adaptor.ConfigType' type: object adaptor.ConfigTemplates: additionalProperties: $ref: '#/definitions/adaptor.ConfigTemplate' type: object adaptor.ConfigType: enum: - string - number - bool - object type: string x-enum-varnames: - ConfigTypeString - ConfigTypeNumber - ConfigTypeBool - ConfigTypeObject adaptors.AdaptorMeta: properties: config: $ref: '#/definitions/adaptor.ConfigTemplates' defaultBaseUrl: type: string fetures: items: type: string type: array keyHelp: type: string name: type: string type: object controller.AddChannelRequest: properties: base_url: type: string config: $ref: '#/definitions/model.ChannelConfig' key: type: string model_mapping: additionalProperties: type: string type: object models: items: type: string type: array name: type: string priority: type: integer sets: items: type: string type: array status: type: integer type: $ref: '#/definitions/model.ChannelType' type: object controller.AddTokenRequest: properties: models: items: type: string type: array name: type: string quota: type: number subnets: items: type: string type: array type: object controller.BuiltinModelConfig: properties: config: additionalProperties: {} type: object created_at: type: string exclude_from_tests: type: boolean force_save_detail: type: boolean image_prices: additionalProperties: format: float64 type: number description: map[size]price_per_image type: object image_quality_prices: additionalProperties: additionalProperties: format: float64 type: number type: object description: map[size]map[quality]price_per_image type: object max_error_rate: type: number model: type: string owner: $ref: '#/definitions/model.ModelOwner' plugin: additionalProperties: items: type: integer type: array type: object price: $ref: '#/definitions/model.Price' retry_times: type: integer rpm: type: integer timeout_config: $ref: '#/definitions/model.TimeoutConfig' tpm: type: integer type: $ref: '#/definitions/mode.Mode' updated_at: type: string warn_error_rate: type: number type: object controller.CreateGroupRequest: properties: available_sets: items: type: string type: array balance_alert_enabled: type: boolean balance_alert_threshold: type: number rpm_ratio: type: number tpm_ratio: type: number type: object controller.EmbedMCP: properties: config_templates: $ref: '#/definitions/controller.EmbedMCPConfigTemplates' embed_config: $ref: '#/definitions/model.MCPEmbeddingConfig' enabled: type: boolean github_url: type: string id: type: string name: type: string name_cn: type: string readme: type: string readme_cn: type: string readme_cn_url: type: string readme_url: type: string tags: items: type: string type: array type: object controller.EmbedMCPConfigTemplate: properties: description: type: string example: type: string name: type: string required: type: boolean type: object controller.EmbedMCPConfigTemplates: additionalProperties: $ref: '#/definitions/controller.EmbedMCPConfigTemplate' type: object controller.EnabledModelChannel: properties: id: type: integer name: type: string type: $ref: '#/definitions/model.ChannelType' type: object controller.GetModelConfigsByModelsContainsRequest: properties: models: items: type: string type: array type: object controller.GroupMCPResponse: properties: created_at: type: string description: type: string endpoints: $ref: '#/definitions/controller.MCPEndpoint' group_id: type: string id: type: string name: type: string openapi_config: $ref: '#/definitions/model.MCPOpenAPIConfig' proxy_config: $ref: '#/definitions/model.GroupMCPProxyConfig' status: $ref: '#/definitions/model.GroupMCPStatus' type: $ref: '#/definitions/model.GroupMCPType' update_at: type: string type: object controller.GroupModel: properties: config: additionalProperties: {} type: object created_at: type: integer enabled_plugins: items: type: string type: array image_prices: additionalProperties: format: float64 type: number description: map[size]price_per_image type: object image_quality_prices: additionalProperties: additionalProperties: format: float64 type: number type: object description: map[size]map[quality]price_per_image type: object model: type: string owner: $ref: '#/definitions/model.ModelOwner' price: $ref: '#/definitions/model.Price' rpm: type: integer tpm: type: integer type: $ref: '#/definitions/mode.Mode' updated_at: type: integer type: object controller.GroupPublicMCPDetailResponse: properties: created_at: type: string description: type: string description_cn: type: string embed_config: $ref: '#/definitions/model.MCPEmbeddingConfig' endpoints: $ref: '#/definitions/controller.MCPEndpoint' github_url: type: string hosted: type: boolean id: type: string logo_url: type: string name: type: string name_cn: type: string openapi_config: $ref: '#/definitions/model.MCPOpenAPIConfig' params: additionalProperties: type: string type: object price: $ref: '#/definitions/model.MCPPrice' proxy_config: $ref: '#/definitions/model.PublicMCPProxyConfig' readme: type: string readme_cn: type: string readme_cn_url: type: string readme_url: type: string reusing: additionalProperties: $ref: '#/definitions/model.ReusingParam' type: object status: $ref: '#/definitions/model.PublicMCPStatus' tags: items: type: string type: array test_config: allOf: - $ref: '#/definitions/model.TestConfig' description: only used by list tools tools: items: $ref: '#/definitions/mcp.Tool' type: array type: $ref: '#/definitions/model.PublicMCPType' update_at: type: string type: object controller.GroupPublicMCPResponse: properties: created_at: type: string description: type: string description_cn: type: string embed_config: $ref: '#/definitions/model.MCPEmbeddingConfig' github_url: type: string hosted: type: boolean id: type: string logo_url: type: string name: type: string name_cn: type: string openapi_config: $ref: '#/definitions/model.MCPOpenAPIConfig' price: $ref: '#/definitions/model.MCPPrice' proxy_config: $ref: '#/definitions/model.PublicMCPProxyConfig' readme: type: string readme_cn: type: string readme_cn_url: type: string readme_url: type: string status: $ref: '#/definitions/model.PublicMCPStatus' tags: items: type: string type: array test_config: allOf: - $ref: '#/definitions/model.TestConfig' description: only used by list tools type: $ref: '#/definitions/model.PublicMCPType' update_at: type: string type: object controller.GroupResponse: properties: accessed_at: type: string available_sets: items: type: string type: array balance_alert_enabled: type: boolean balance_alert_threshold: type: number created_at: type: string id: type: string request_count: type: integer rpm_ratio: type: number status: type: integer tpm_ratio: type: number used_amount: type: number type: object controller.ImportChannelFromOneAPIRequest: properties: dsn: type: string type: object controller.MCPEndpoint: properties: host: type: string sse: type: string streamable_http: type: string type: object controller.OpenAIModelPermission: properties: allow_create_engine: type: boolean allow_fine_tuning: type: boolean allow_logprobs: type: boolean allow_sampling: type: boolean allow_search_indices: type: boolean allow_view: type: boolean created: type: integer group: type: string id: type: string is_blocking: type: boolean object: type: string organization: type: string type: object controller.OpenAIModels: properties: created: type: integer id: type: string object: type: string owned_by: type: string parent: type: string permission: items: $ref: '#/definitions/controller.OpenAIModelPermission' type: array root: type: string type: object controller.PublicMCPResponse: properties: created_at: type: string description: type: string description_cn: type: string embed_config: $ref: '#/definitions/model.MCPEmbeddingConfig' endpoints: $ref: '#/definitions/controller.MCPEndpoint' github_url: type: string id: type: string logo_url: type: string name: type: string name_cn: type: string openapi_config: $ref: '#/definitions/model.MCPOpenAPIConfig' price: $ref: '#/definitions/model.MCPPrice' proxy_config: $ref: '#/definitions/model.PublicMCPProxyConfig' readme: type: string readme_cn: type: string readme_cn_url: type: string readme_url: type: string status: $ref: '#/definitions/model.PublicMCPStatus' tags: items: type: string type: array test_config: allOf: - $ref: '#/definitions/model.TestConfig' description: only used by list tools type: $ref: '#/definitions/model.PublicMCPType' update_at: type: string type: object controller.SaveEmbedMCPRequest: properties: enabled: type: boolean id: type: string init_config: additionalProperties: type: string type: object type: object controller.SaveGroupModelConfigRequest: properties: force_save_detail: type: boolean image_prices: additionalProperties: format: float64 type: number type: object model: type: string override_force_save_detail: type: boolean override_limit: type: boolean override_price: type: boolean override_retry_times: type: boolean price: $ref: '#/definitions/model.Price' retry_times: type: integer rpm: type: integer tpm: type: integer type: object controller.SaveModelConfigsRequest: properties: config: additionalProperties: {} type: object created_at: type: string exclude_from_tests: type: boolean force_save_detail: type: boolean image_prices: additionalProperties: format: float64 type: number description: map[size]price_per_image type: object image_quality_prices: additionalProperties: additionalProperties: format: float64 type: number type: object description: map[size]map[quality]price_per_image type: object max_error_rate: type: number model: type: string owner: $ref: '#/definitions/model.ModelOwner' plugin: additionalProperties: items: type: integer type: array type: object price: $ref: '#/definitions/model.Price' retry_times: type: integer rpm: type: integer timeout_config: $ref: '#/definitions/model.TimeoutConfig' tpm: type: integer type: $ref: '#/definitions/mode.Mode' updated_at: type: string warn_error_rate: type: number type: object controller.StatusData: properties: startTime: type: integer type: object controller.TestResult: properties: data: $ref: '#/definitions/model.ChannelTest' message: type: string success: type: boolean type: object controller.TokenResponse: properties: accessed_at: type: string created_at: type: string group: type: string id: type: integer key: type: string models: items: type: string type: array name: type: string period_last_update_amount: description: Total usage at last period reset type: number period_last_update_time: description: Last time period was reset type: string period_quota: type: number period_type: description: daily, weekly, monthly, default is monthly type: string quota: type: number request_count: type: integer status: type: integer subnets: items: type: string type: array used_amount: type: number type: object controller.UpdateChannelStatusRequest: properties: status: type: integer type: object controller.UpdateGroupMCPStatusRequest: properties: status: $ref: '#/definitions/model.GroupMCPStatus' type: object controller.UpdateGroupRPMRatioRequest: properties: rpm_ratio: type: number type: object controller.UpdateGroupStatusRequest: properties: status: type: integer type: object controller.UpdateGroupTPMRatioRequest: properties: tpm_ratio: type: number type: object controller.UpdateGroupsStatusRequest: properties: groups: items: type: string type: array status: type: integer type: object controller.UpdatePublicMCPStatusRequest: properties: status: $ref: '#/definitions/model.PublicMCPStatus' type: object controller.UpdateTokenNameRequest: properties: name: type: string type: object controller.UpdateTokenStatusRequest: properties: status: type: integer type: object mcp.Meta: properties: additionalFields: additionalProperties: {} description: |- AdditionalFields are any fields present in the Meta that are not otherwise defined in the protocol. type: object progressToken: description: |- If specified, the caller is requesting out-of-band progress notifications for this request (as represented by notifications/progress). The value of this parameter is an opaque token that will be attached to any subsequent notifications. The receiver is not obligated to provide these notifications. type: object mcp.Tool: properties: _meta: allOf: - $ref: '#/definitions/mcp.Meta' description: Meta is a metadata object that is reserved by MCP for storing additional information. annotations: allOf: - $ref: '#/definitions/mcp.ToolAnnotation' description: Optional properties describing tool behavior description: description: A human-readable description of the tool. type: string inputSchema: allOf: - $ref: '#/definitions/mcp.ToolInputSchema' description: A JSON Schema object defining the expected parameters for the tool. name: description: The name of the tool. type: string type: object mcp.ToolAnnotation: properties: destructiveHint: description: If true, the tool may perform destructive updates type: boolean idempotentHint: description: If true, repeated calls with same args have no additional effect type: boolean openWorldHint: description: If true, tool interacts with external entities type: boolean readOnlyHint: description: If true, the tool does not modify its environment type: boolean title: description: Human-readable title for the tool type: string type: object mcp.ToolInputSchema: properties: $defs: additionalProperties: {} type: object properties: additionalProperties: {} type: object required: items: type: string type: array type: type: string type: object middleware.APIResponse: properties: data: {} message: type: string success: type: boolean type: object mode.Mode: enum: - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - 19 - 20 type: integer x-enum-varnames: - Unknown - ChatCompletions - Completions - Embeddings - Moderations - ImagesGenerations - ImagesEdits - AudioSpeech - AudioTranscription - AudioTranslation - Rerank - ParsePdf - Anthropic - VideoGenerationsJobs - VideoGenerationsGetJobs - VideoGenerationsContent - Responses - ResponsesGet - ResponsesDelete - ResponsesCancel - ResponsesInputItems model.AnthropicMessageRequest: properties: messages: items: $ref: '#/definitions/model.Message' type: array model: type: string type: object model.Channel: properties: balance: type: number balance_threshold: type: number balance_updated_at: type: string base_url: type: string channel_tests: items: $ref: '#/definitions/model.ChannelTest' type: array config: $ref: '#/definitions/model.ChannelConfig' created_at: type: string enabled_auto_balance_check: type: boolean id: type: integer key: type: string last_test_error_at: type: string model_mapping: additionalProperties: type: string type: object models: items: type: string type: array name: type: string priority: type: integer request_count: type: integer retry_count: type: integer sets: items: type: string type: array status: type: integer type: $ref: '#/definitions/model.ChannelType' used_amount: type: number type: object model.ChannelConfig: properties: spec: items: type: integer type: array type: object model.ChannelTest: properties: actual_model: type: string channel_id: type: integer channel_name: type: string channel_type: $ref: '#/definitions/model.ChannelType' code: type: integer mode: $ref: '#/definitions/mode.Mode' model: type: string response: type: string success: type: boolean test_at: type: string took: type: number type: object model.ChannelType: enum: - 1 - 3 - 4 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - 19 - 20 - 23 - 24 - 25 - 26 - 27 - 28 - 29 - 30 - 31 - 32 - 33 - 34 - 35 - 36 - 37 - 40 - 41 - 42 - 43 - 44 - 45 - 46 - 47 - 48 - 49 - 50 type: integer x-enum-varnames: - ChannelTypeOpenAI - ChannelTypeAzure - ChannelTypeAzure2 - ChannelTypeGoogleGeminiOpenAI - ChannelTypeBaiduV2 - ChannelTypeAnthropic - ChannelTypeBaidu - ChannelTypeZhipu - ChannelTypeAli - ChannelTypeXunfei - ChannelTypeAI360 - ChannelTypeOpenRouter - ChannelTypeTencent - ChannelTypeGoogleGemini - ChannelTypeMoonshot - ChannelTypeBaichuan - ChannelTypeMinimax - ChannelTypeMistral - ChannelTypeGroq - ChannelTypeOllama - ChannelTypeLingyiwanwu - ChannelTypeStepfun - ChannelTypeAWS - ChannelTypeCoze - ChannelTypeCohere - ChannelTypeDeepseek - ChannelTypeCloudflare - ChannelTypeDoubao - ChannelTypeNovita - ChannelTypeVertexAI - ChannelTypeSiliconflow - ChannelTypeDoubaoAudio - ChannelTypeXAI - ChannelTypeDoc2x - ChannelTypeJina - ChannelTypeTextEmbeddingsInference - ChannelTypeQianfan - ChannelTypeSangforAICP model.ChartData: properties: audio_input_tokens: type: integer cache_creation_tokens: type: integer cached_tokens: type: integer exception_count: type: integer image_input_tokens: type: integer input_tokens: type: integer output_tokens: type: integer reasoning_tokens: type: integer request_count: type: integer retry_count: type: integer status_400_count: type: integer status_429_count: type: integer status_4xx_count: type: integer status_500_count: type: integer status_5xx_count: type: integer timestamp: type: integer total_time_milliseconds: type: integer total_tokens: type: integer total_ttfb_milliseconds: type: integer used_amount: type: number web_search_count: type: integer type: object model.ChatUsage: properties: completion_tokens: type: integer completion_tokens_details: $ref: '#/definitions/model.CompletionTokensDetails' prompt_tokens: type: integer prompt_tokens_details: $ref: '#/definitions/model.PromptTokensDetails' total_tokens: type: integer web_search_count: type: integer type: object model.ClaudeThinkingType: enum: - enabled - disabled type: string x-enum-varnames: - ClaudeThinkingTypeEnabled - ClaudeThinkingTypeDisabled model.CompletionTokensDetails: properties: accepted_prediction_tokens: type: integer audio_tokens: type: integer reasoning_tokens: type: integer rejected_prediction_tokens: type: integer type: object model.ConditionalPrice: properties: condition: $ref: '#/definitions/model.PriceCondition' price: $ref: '#/definitions/model.Price' type: object model.CreateResponseRequest: properties: instructions: type: string max_output_tokens: type: integer messages: items: $ref: '#/definitions/model.Message' type: array metadata: additionalProperties: {} type: object model: type: string parallel_tool_calls: type: boolean previous_response_id: type: string store: type: boolean stream: type: boolean temperature: type: number tool_choice: {} tools: items: $ref: '#/definitions/model.Tool' type: array top_p: type: number truncation: type: string user: type: string type: object model.DashboardResponse: properties: audio_input_tokens: type: integer cache_creation_tokens: type: integer cached_tokens: type: integer channels: items: type: integer type: array chart_data: items: $ref: '#/definitions/model.ChartData' type: array exception_count: type: integer image_input_tokens: type: integer input_tokens: type: integer max_rpm: type: integer max_tpm: type: integer models: items: type: string type: array output_tokens: type: integer reasoning_tokens: type: integer request_count: type: integer retry_count: type: integer rpm: type: integer status_400_count: type: integer status_429_count: type: integer status_4xx_count: type: integer status_500_count: type: integer status_5xx_count: type: integer total_count: description: use Count.RequestCount instead type: integer total_time_milliseconds: type: integer total_tokens: type: integer total_ttfb_milliseconds: type: integer tpm: type: integer used_amount: type: number web_search_count: type: integer type: object model.Document: properties: text: type: string type: object model.EmbeddingPromptTokensDetails: properties: image_tokens: type: integer text_tokens: type: integer type: object model.EmbeddingRequest: properties: dimensions: type: integer encoding_format: type: string input: type: string model: type: string type: object model.EmbeddingResponse: properties: data: items: $ref: '#/definitions/model.EmbeddingResponseItem' type: array model: type: string object: type: string usage: $ref: '#/definitions/model.EmbeddingUsage' type: object model.EmbeddingResponseItem: properties: embedding: items: type: number type: array index: type: integer object: type: string type: object model.EmbeddingUsage: properties: prompt_tokens: type: integer prompt_tokens_details: $ref: '#/definitions/model.EmbeddingPromptTokensDetails' total_tokens: type: integer type: object model.FinishReason: enum: - stop - length - content_filter - tool_calls - function_call type: string x-enum-varnames: - FinishReasonStop - FinishReasonLength - FinishReasonContentFilter - FinishReasonToolCalls - FinishReasonFunctionCall model.Function: properties: arguments: type: string description: type: string name: type: string parameters: {} type: object model.GeneralOpenAIRequest: properties: frequency_penalty: type: number function_call: {} functions: {} input: {} logit_bias: {} logprobs: type: boolean max_completion_tokens: type: integer max_tokens: type: integer messages: items: $ref: '#/definitions/model.Message' type: array metadata: {} model: type: string num_ctx: type: integer presence_penalty: type: number prompt: {} response_format: $ref: '#/definitions/model.ResponseFormat' seed: type: number size: type: string stop: {} stream: type: boolean stream_options: $ref: '#/definitions/model.StreamOptions' temperature: type: number thinking: allOf: - $ref: '#/definitions/model.GeneralThinking' description: aiproxy control field tool_choice: {} tools: items: $ref: '#/definitions/model.Tool' type: array top_k: type: integer top_logprobs: type: integer top_p: type: number user: type: string type: object model.GeneralThinking: properties: budget_tokens: description: when type is "disabled", this field must be 0 type: integer type: $ref: '#/definitions/model.ClaudeThinkingType' type: object model.GetGroupLogsResult: properties: channels: items: type: integer type: array logs: items: $ref: '#/definitions/model.Log' type: array models: items: type: string type: array token_names: items: type: string type: array total: type: integer type: object model.GetLogsResult: properties: channels: items: type: integer type: array logs: items: $ref: '#/definitions/model.Log' type: array total: type: integer type: object model.Group: properties: available_sets: items: type: string type: array balance_alert_enabled: type: boolean balance_alert_threshold: type: number created_at: type: string id: type: string request_count: type: integer rpm_ratio: type: number status: type: integer tpm_ratio: type: number used_amount: type: number type: object model.GroupDashboardResponse: properties: audio_input_tokens: type: integer cache_creation_tokens: type: integer cached_tokens: type: integer channels: items: type: integer type: array chart_data: items: $ref: '#/definitions/model.ChartData' type: array exception_count: type: integer image_input_tokens: type: integer input_tokens: type: integer max_rpm: type: integer max_tpm: type: integer models: items: type: string type: array output_tokens: type: integer reasoning_tokens: type: integer request_count: type: integer retry_count: type: integer rpm: type: integer status_400_count: type: integer status_429_count: type: integer status_4xx_count: type: integer status_500_count: type: integer status_5xx_count: type: integer token_names: items: type: string type: array total_count: description: use Count.RequestCount instead type: integer total_time_milliseconds: type: integer total_tokens: type: integer total_ttfb_milliseconds: type: integer tpm: type: integer used_amount: type: number web_search_count: type: integer type: object model.GroupMCP: properties: created_at: type: string description: type: string group_id: type: string id: type: string name: type: string openapi_config: $ref: '#/definitions/model.MCPOpenAPIConfig' proxy_config: $ref: '#/definitions/model.GroupMCPProxyConfig' status: $ref: '#/definitions/model.GroupMCPStatus' type: $ref: '#/definitions/model.GroupMCPType' update_at: type: string type: object model.GroupMCPProxyConfig: properties: headers: additionalProperties: type: string type: object querys: additionalProperties: type: string type: object url: type: string type: object model.GroupMCPStatus: enum: - 1 - 2 type: integer x-enum-varnames: - GroupMCPStatusEnabled - GroupMCPStatusDisabled model.GroupMCPType: enum: - mcp_proxy_sse - mcp_proxy_streamable - mcp_openapi type: string x-enum-varnames: - GroupMCPTypeProxySSE - GroupMCPTypeProxyStreamable - GroupMCPTypeOpenAPI model.GroupModelConfig: properties: force_save_detail: type: boolean group_id: type: string image_prices: additionalProperties: format: float64 type: number type: object model: type: string override_force_save_detail: type: boolean override_limit: type: boolean override_price: type: boolean override_retry_times: type: boolean price: $ref: '#/definitions/model.Price' retry_times: type: integer rpm: type: integer tpm: type: integer type: object model.ImageData: properties: b64_json: type: string revised_prompt: type: string url: type: string type: object model.ImageInputTokensDetails: properties: image_tokens: description: The number of image tokens in the input prompt. type: integer text_tokens: description: The number of text tokens in the input prompt. type: integer type: object model.ImageRequest: properties: background: type: string model: type: string moderation: type: string "n": type: integer output_compression: type: integer output_format: description: png, jpeg, webp type: string prompt: type: string quality: description: auto, high, medium, low, hd, standard type: string response_format: description: url, b64_json type: string size: description: 1024x1024, 1536x1024, 1024x1536, auto, 256x256, 512x512, 1792x1024, 1024x1792 type: string style: description: vivid, natural type: string user: type: string type: object model.ImageResponse: properties: created: type: integer data: items: $ref: '#/definitions/model.ImageData' type: array usage: allOf: - $ref: '#/definitions/model.ImageUsage' description: For gpt-image-1 only, the token usage information for the image generation. type: object model.ImageUsage: properties: input_tokens: description: The number of tokens (images and text) in the input prompt. type: integer input_tokens_details: allOf: - $ref: '#/definitions/model.ImageInputTokensDetails' description: The input tokens detailed information for the image generation. output_tokens: description: The number of image tokens in the output image. type: integer total_tokens: description: The total number of tokens (images and text) used for the image generation. type: integer type: object model.IncompleteDetails: properties: reason: type: string type: object model.InputContent: properties: text: type: string type: type: string type: object model.InputItem: properties: content: items: $ref: '#/definitions/model.InputContent' type: array id: type: string role: type: string type: type: string type: object model.InputItemList: properties: data: items: $ref: '#/definitions/model.InputItem' type: array first_id: type: string has_more: type: boolean last_id: type: string object: type: string type: object model.JSONSchema: properties: description: type: string name: type: string schema: additionalProperties: {} type: object strict: type: boolean type: object model.Log: properties: channel: type: integer code: type: integer content: type: string created_at: type: string endpoint: type: string group: type: string id: type: integer ip: type: string metadata: additionalProperties: type: string type: object mode: type: integer model: type: string price: $ref: '#/definitions/model.Price' request_at: type: string request_detail: $ref: '#/definitions/model.RequestDetail' request_id: type: string retry_at: type: string retry_times: type: integer token_id: type: integer token_name: type: string ttfb_milliseconds: type: integer usage: $ref: '#/definitions/model.Usage' used_amount: type: number user: description: https://platform.openai.com/docs/guides/safety-best-practices#end-user-ids type: string type: object model.MCPEmbeddingConfig: properties: init: additionalProperties: type: string type: object reusing: additionalProperties: $ref: '#/definitions/model.ReusingParam' type: object type: object model.MCPOpenAPIConfig: properties: authorization: type: string openapi_content: type: string openapi_spec: type: string server_addr: type: string v2: type: boolean type: object model.MCPPrice: properties: default_tools_call_price: type: number tools_call_prices: additionalProperties: format: float64 type: number type: object type: object model.Message: properties: content: {} name: type: string reasoning_content: type: string role: type: string tool_call_id: type: string tool_calls: items: $ref: '#/definitions/model.ToolCall' type: array type: object model.ModelConfig: properties: config: additionalProperties: {} type: object created_at: type: string exclude_from_tests: type: boolean force_save_detail: type: boolean image_prices: additionalProperties: format: float64 type: number description: map[size]price_per_image type: object image_quality_prices: additionalProperties: additionalProperties: format: float64 type: number type: object description: map[size]map[quality]price_per_image type: object max_error_rate: type: number model: type: string owner: $ref: '#/definitions/model.ModelOwner' plugin: additionalProperties: items: type: integer type: array type: object price: $ref: '#/definitions/model.Price' retry_times: type: integer rpm: type: integer timeout_config: $ref: '#/definitions/model.TimeoutConfig' tpm: type: integer type: $ref: '#/definitions/mode.Mode' updated_at: type: string warn_error_rate: type: number type: object model.ModelOwner: enum: - openai - alibaba - tencent - xunfei - deepseek - moonshot - minimax - baidu - google - baai - funaudiollm - doubao - fishaudio - chatglm - stabilityai - netease - ai360 - anthropic - meta - baichuan - mistral - openchat - microsoft - defog - nexusflow - cohere - huggingface - lingyiwanwu - stepfun - xai - doc2x - jina type: string x-enum-varnames: - ModelOwnerOpenAI - ModelOwnerAlibaba - ModelOwnerTencent - ModelOwnerXunfei - ModelOwnerDeepSeek - ModelOwnerMoonshot - ModelOwnerMiniMax - ModelOwnerBaidu - ModelOwnerGoogle - ModelOwnerBAAI - ModelOwnerFunAudioLLM - ModelOwnerDoubao - ModelOwnerFishAudio - ModelOwnerChatGLM - ModelOwnerStabilityAI - ModelOwnerNetease - ModelOwnerAI360 - ModelOwnerAnthropic - ModelOwnerMeta - ModelOwnerBaichuan - ModelOwnerMistral - ModelOwnerOpenChat - ModelOwnerMicrosoft - ModelOwnerDefog - ModelOwnerNexusFlow - ModelOwnerCohere - ModelOwnerHuggingFace - ModelOwnerLingyiWanwu - ModelOwnerStepFun - ModelOwnerXAI - ModelOwnerDoc2x - ModelOwnerJina model.Option: properties: key: type: string value: type: string type: object model.OutputContent: properties: annotations: items: {} type: array text: type: string type: type: string type: object model.OutputItem: properties: content: items: $ref: '#/definitions/model.OutputContent' type: array id: type: string role: type: string status: $ref: '#/definitions/model.ResponseStatus' type: type: string type: object model.Params: additionalProperties: type: string type: object model.ParsePdfResponse: properties: markdown: type: string pages: type: integer type: object model.Price: properties: audio_input_price: type: number audio_input_price_unit: type: integer cache_creation_price: type: number cache_creation_price_unit: type: integer cached_price: type: number cached_price_unit: type: integer conditional_prices: items: $ref: '#/definitions/model.ConditionalPrice' type: array image_input_price: type: number image_input_price_unit: type: integer input_price: type: number input_price_unit: type: integer output_price: type: number output_price_unit: type: integer per_request_price: type: number thinking_mode_output_price: description: |- when ThinkingModeOutputPrice and ReasoningTokens are not 0, OutputPrice and OutputPriceUnit will be overwritten type: number thinking_mode_output_price_unit: type: integer web_search_price: type: number web_search_price_unit: type: integer type: object model.PriceCondition: properties: input_token_max: type: integer input_token_min: type: integer output_token_max: type: integer output_token_min: type: integer type: object model.PromptTokensDetails: properties: audio_tokens: type: integer cache_creation_tokens: type: integer cached_tokens: type: integer type: object model.ProxyParamType: enum: - url - header - query type: string x-enum-varnames: - ParamTypeURL - ParamTypeHeader - ParamTypeQuery model.PublicMCP: properties: created_at: type: string description: type: string description_cn: type: string embed_config: $ref: '#/definitions/model.MCPEmbeddingConfig' github_url: type: string id: type: string logo_url: type: string name: type: string name_cn: type: string openapi_config: $ref: '#/definitions/model.MCPOpenAPIConfig' price: $ref: '#/definitions/model.MCPPrice' proxy_config: $ref: '#/definitions/model.PublicMCPProxyConfig' readme: type: string readme_cn: type: string readme_cn_url: type: string readme_url: type: string status: $ref: '#/definitions/model.PublicMCPStatus' tags: items: type: string type: array test_config: allOf: - $ref: '#/definitions/model.TestConfig' description: only used by list tools type: $ref: '#/definitions/model.PublicMCPType' update_at: type: string type: object model.PublicMCPProxyConfig: properties: headers: additionalProperties: type: string type: object querys: additionalProperties: type: string type: object reusing: additionalProperties: $ref: '#/definitions/model.PublicMCPProxyReusingParam' type: object url: type: string type: object model.PublicMCPProxyReusingParam: properties: description: type: string name: type: string required: type: boolean type: $ref: '#/definitions/model.ProxyParamType' type: object model.PublicMCPReusingParam: properties: created_at: type: string group_id: type: string mcp_id: type: string params: $ref: '#/definitions/model.Params' update_at: type: string type: object model.PublicMCPStatus: enum: - 1 - 2 type: integer x-enum-varnames: - PublicMCPStatusEnabled - PublicMCPStatusDisabled model.PublicMCPType: enum: - mcp_proxy_sse - mcp_proxy_streamable - mcp_docs - mcp_openapi - mcp_embed type: string x-enum-comments: PublicMCPTypeDocs: read only x-enum-descriptions: - "" - "" - read only - "" - "" x-enum-varnames: - PublicMCPTypeProxySSE - PublicMCPTypeProxyStreamable - PublicMCPTypeDocs - PublicMCPTypeOpenAPI - PublicMCPTypeEmbed model.RequestDetail: properties: id: type: integer log_id: type: integer request_body: type: string request_body_truncated: type: boolean response_body: type: string response_body_truncated: type: boolean type: object model.RerankMeta: properties: model: type: string tokens: $ref: '#/definitions/model.RerankMetaTokens' type: object model.RerankMetaTokens: properties: input_tokens: type: integer output_tokens: type: integer type: object model.RerankRequest: properties: documents: items: type: string type: array max_chunks_per_doc: type: integer model: type: string overlap_tokens: type: integer query: type: string return_documents: type: boolean top_n: type: integer type: object model.RerankResponse: properties: id: type: string meta: $ref: '#/definitions/model.RerankMeta' results: items: $ref: '#/definitions/model.RerankResult' type: array type: object model.RerankResult: properties: document: $ref: '#/definitions/model.Document' index: type: integer relevance_score: type: number type: object model.Response: properties: created_at: type: integer error: $ref: '#/definitions/model.ResponseError' id: type: string incomplete_details: $ref: '#/definitions/model.IncompleteDetails' instructions: type: string max_output_tokens: type: integer metadata: additionalProperties: {} type: object model: type: string object: type: string output: items: $ref: '#/definitions/model.OutputItem' type: array parallel_tool_calls: type: boolean previous_response_id: type: string reasoning: $ref: '#/definitions/model.ResponseReasoning' status: $ref: '#/definitions/model.ResponseStatus' store: type: boolean temperature: type: number text: $ref: '#/definitions/model.ResponseText' tool_choice: {} tools: items: $ref: '#/definitions/model.Tool' type: array top_p: type: number truncation: type: string usage: $ref: '#/definitions/model.ResponseUsage' user: type: string type: object model.ResponseError: properties: code: type: string message: type: string type: object model.ResponseFormat: properties: json_schema: $ref: '#/definitions/model.JSONSchema' type: type: string type: object model.ResponseReasoning: properties: effort: type: string summary: type: string type: object model.ResponseStatus: enum: - in_progress - completed - failed - incomplete - cancelled type: string x-enum-varnames: - ResponseStatusInProgress - ResponseStatusCompleted - ResponseStatusFailed - ResponseStatusIncomplete - ResponseStatusCancelled model.ResponseText: properties: format: $ref: '#/definitions/model.ResponseTextFormat' type: object model.ResponseTextFormat: properties: type: type: string type: object model.ResponseUsage: properties: input_tokens: type: integer input_tokens_details: $ref: '#/definitions/model.ResponseUsageDetails' output_tokens: type: integer output_tokens_details: $ref: '#/definitions/model.ResponseUsageDetails' total_tokens: type: integer type: object model.ResponseUsageDetails: properties: cached_tokens: type: integer reasoning_tokens: type: integer type: object model.ReusingParam: properties: description: type: string name: type: string required: type: boolean type: object model.StreamOptions: properties: include_usage: type: boolean type: object model.SttJSONResponse: properties: text: type: string type: object model.SummaryDataV2: properties: audio_input_tokens: type: integer cache_creation_tokens: type: integer cached_tokens: type: integer channel_id: type: integer exception_count: type: integer group_id: type: string image_input_tokens: type: integer input_tokens: type: integer max_rpm: type: integer max_tpm: type: integer model: type: string output_tokens: type: integer reasoning_tokens: type: integer request_count: type: integer retry_count: type: integer status_4xx_count: type: integer status_500_count: type: integer status_5xx_count: type: integer status_400_count: type: integer status_429_count: type: integer timestamp: type: integer token_name: type: string total_time_milliseconds: type: integer total_tokens: type: integer total_ttfb_milliseconds: type: integer used_amount: type: number web_search_count: type: integer type: object model.TestConfig: properties: enabled: type: boolean params: $ref: '#/definitions/model.Params' type: object model.TextResponse: properties: choices: items: $ref: '#/definitions/model.TextResponseChoice' type: array created: type: integer id: type: string model: type: string object: type: string usage: $ref: '#/definitions/model.ChatUsage' type: object model.TextResponseChoice: properties: finish_reason: $ref: '#/definitions/model.FinishReason' index: type: integer message: $ref: '#/definitions/model.Message' text: type: string type: object model.TextToSpeechRequest: properties: input: type: string model: type: string response_format: type: string speed: type: number stream_format: type: string voice: type: string required: - input - model - voice type: object model.TimeSummaryDataV2: properties: summary: items: $ref: '#/definitions/model.SummaryDataV2' type: array timestamp: type: integer type: object model.TimeoutConfig: properties: request_timeout: type: integer stream_request_timeout: type: integer type: object model.Tool: properties: function: $ref: '#/definitions/model.Function' type: type: string type: object model.ToolCall: properties: function: $ref: '#/definitions/model.Function' id: type: string index: type: integer type: type: string type: object model.UpdateGroupRequest: properties: available_sets: items: type: string type: array balance_alert_enabled: type: boolean balance_alert_threshold: type: number rpm_ratio: type: number status: type: integer tpm_ratio: type: number type: object model.UpdateTokenRequest: properties: models: items: type: string type: array name: type: string period_last_update_time: type: integer period_quota: type: number period_type: type: string quota: description: Quota system type: number status: type: integer subnets: items: type: string type: array type: object model.Usage: properties: audio_input_tokens: type: integer cache_creation_tokens: type: integer cached_tokens: type: integer image_input_tokens: type: integer input_tokens: type: integer output_tokens: type: integer reasoning_tokens: type: integer total_tokens: type: integer web_search_count: type: integer type: object model.VideoGenerationJob: properties: created_at: type: integer expires_at: type: integer finish_reason: type: string finished_at: type: integer generations: items: $ref: '#/definitions/model.VideoGenerations' type: array height: type: integer id: type: string model: type: string n_seconds: type: integer n_variants: type: integer object: type: string prompt: type: string status: $ref: '#/definitions/model.VideoGenerationJobStatus' width: type: integer type: object model.VideoGenerationJobRequest: properties: height: type: integer model: type: string n_seconds: type: integer n_variants: type: integer prompt: type: string width: type: integer type: object model.VideoGenerationJobStatus: enum: - queued - processing - running - succeeded type: string x-enum-varnames: - VideoGenerationJobStatusQueued - VideoGenerationJobStatusProcessing - VideoGenerationJobStatusRunning - VideoGenerationJobStatusSucceeded model.VideoGenerations: properties: created_at: type: integer height: type: integer id: type: string job_id: type: string n_seconds: type: integer object: type: string prompt: type: string width: type: integer type: object openai.SubscriptionResponse: properties: access_until: type: integer hard_limit_usd: type: number has_payment_method: type: boolean object: type: string soft_limit_usd: type: number system_hard_limit_usd: type: number type: object openai.UsageResponse: properties: object: type: string total_usage: description: DailyCosts []OpenAIUsageDailyCost `json:"daily_costs"` type: number type: object info: contact: {} title: AI Proxy Swagger API version: "1.0" paths: /api/channel/: post: consumes: - application/json description: Adds a new channel to the system parameters: - description: Channel information in: body name: channel required: true schema: $ref: '#/definitions/controller.AddChannelRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/middleware.APIResponse' security: - ApiKeyAuth: [] summary: Add a single channel tags: - channel /api/channel/{id}: delete: description: Deletes a channel by its ID parameters: - description: Channel ID in: path name: id required: true type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/middleware.APIResponse' security: - ApiKeyAuth: [] summary: Delete a channel tags: - channel get: description: Returns detailed information about a specific channel parameters: - description: Channel ID in: path name: id required: true type: integer produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: $ref: '#/definitions/model.Channel' type: object security: - ApiKeyAuth: [] summary: Get a channel by ID tags: - channel put: consumes: - application/json description: Updates an existing channel by its ID parameters: - description: Channel ID in: path name: id required: true type: integer - description: Updated channel information in: body name: channel required: true schema: $ref: '#/definitions/controller.AddChannelRequest' produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: $ref: '#/definitions/model.Channel' type: object security: - ApiKeyAuth: [] summary: Update a channel tags: - channel /api/channel/{id}/{model}: get: description: Tests a single model in the channel parameters: - description: Channel ID in: path name: id required: true type: integer - description: Model name in: path name: model required: true type: string produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: $ref: '#/definitions/model.ChannelTest' type: object security: - ApiKeyAuth: [] summary: Test channel model tags: - channel /api/channel/{id}/balance: get: description: Updates the balance for a single channel parameters: - description: Channel ID in: path name: id required: true type: integer produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: format: float64 type: number type: object security: - ApiKeyAuth: [] summary: Update channel balance tags: - channel /api/channel/{id}/status: post: consumes: - application/json description: Updates the status of a channel by its ID parameters: - description: Channel ID in: path name: id required: true type: integer - description: Status information in: body name: status required: true schema: $ref: '#/definitions/controller.UpdateChannelStatusRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/middleware.APIResponse' security: - ApiKeyAuth: [] summary: Update channel status tags: - channel /api/channel/{id}/test: get: description: Tests all models in the channel parameters: - description: Channel ID in: path name: id required: true type: integer - description: Return success in: query name: return_success type: boolean - description: Success body in: query name: success_body type: boolean - description: Stream in: query name: stream type: boolean produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: items: $ref: '#/definitions/controller.TestResult' type: array type: object security: - ApiKeyAuth: [] summary: Test channel models tags: - channel /api/channels/: get: description: Returns a paginated list of channels with optional filters parameters: - description: Page number in: query name: page type: integer - description: Items per page in: query name: per_page type: integer - description: Filter by id in: query name: id type: integer - description: Filter by name in: query name: name type: string - description: Filter by key in: query name: key type: string - description: Filter by channel type in: query name: channel_type type: integer - description: Filter by base URL in: query name: base_url type: string - description: Order by field in: query name: order type: string produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: additionalProperties: allOf: - {} - properties: channels: items: $ref: '#/definitions/model.Channel' type: array total: type: integer type: object type: object type: object security: - ApiKeyAuth: [] summary: Get channels with pagination tags: - channels post: consumes: - application/json description: Adds multiple channels in a batch operation parameters: - description: Channel information in: body name: channels required: true schema: items: $ref: '#/definitions/controller.AddChannelRequest' type: array produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/middleware.APIResponse' security: - ApiKeyAuth: [] summary: Add multiple channels tags: - channels /api/channels/all: get: description: Returns a list of all channels without pagination produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: items: $ref: '#/definitions/model.Channel' type: array type: object security: - ApiKeyAuth: [] summary: Get all channels tags: - channels /api/channels/balance: get: description: Updates the balance for all channels produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/middleware.APIResponse' security: - ApiKeyAuth: [] summary: Update all channels balance tags: - channel /api/channels/batch_delete: post: consumes: - application/json description: Deletes multiple channels by their IDs parameters: - description: Channel IDs in: body name: ids required: true schema: items: type: integer type: array produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/middleware.APIResponse' security: - ApiKeyAuth: [] summary: Delete multiple channels tags: - channels /api/channels/import/oneapi: post: description: Imports channels from OneAPI parameters: - description: Import channel from OneAPI request in: body name: request required: true schema: $ref: '#/definitions/controller.ImportChannelFromOneAPIRequest' produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: items: {} type: array type: object security: - ApiKeyAuth: [] summary: Import channel from OneAPI tags: - channels /api/channels/search: get: description: Search channels with keyword and optional filters parameters: - description: Search keyword in: query name: keyword required: true type: string - description: Page number in: query name: page type: integer - description: Items per page in: query name: per_page type: integer - description: Filter by id in: query name: id type: integer - description: Filter by name in: query name: name type: string - description: Filter by key in: query name: key type: string - description: Filter by channel type in: query name: channel_type type: integer - description: Filter by base URL in: query name: base_url type: string - description: Order by field in: query name: order type: string produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: additionalProperties: allOf: - {} - properties: channels: items: $ref: '#/definitions/model.Channel' type: array total: type: integer type: object type: object type: object security: - ApiKeyAuth: [] summary: Search channels tags: - channels /api/channels/test: get: description: Tests all channels parameters: - description: Test disabled in: query name: test_disabled type: boolean - description: Return success in: query name: return_success type: boolean - description: Success body in: query name: success_body type: boolean - description: Stream in: query name: stream type: boolean produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: items: $ref: '#/definitions/controller.TestResult' type: array type: object security: - ApiKeyAuth: [] summary: Test all channels tags: - channel /api/channels/type_metas: get: description: Returns metadata for all channel types produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: additionalProperties: $ref: '#/definitions/adaptors.AdaptorMeta' type: object type: object security: - ApiKeyAuth: [] summary: Get channel type metadata tags: - channels /api/dashboard/: get: description: Returns the general dashboard data including usage statistics and metrics parameters: - description: Channel ID in: query name: channel type: integer - description: Model name in: query name: model type: string - description: Start second timestamp format: int64 in: query name: start_timestamp type: integer - description: End second timestamp format: int64 in: query name: end_timestamp type: integer - description: Timezone, default is Local in: query name: timezone type: string - description: Time span type (minute, hour, day, month) in: query name: timespan type: string produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: $ref: '#/definitions/model.DashboardResponse' type: object security: - ApiKeyAuth: [] summary: Get dashboard data tags: - dashboard /api/dashboard/{group}: get: description: Returns dashboard data and metrics specific to the given group parameters: - description: Group in: path name: group required: true type: string - description: Token name in: query name: token_name type: string - description: Model or * in: query name: model type: string - description: Start second timestamp format: int64 in: query name: start_timestamp type: integer - description: End second timestamp format: int64 in: query name: end_timestamp type: integer - description: Timezone, default is Local in: query name: timezone type: string - description: Time span type (minute, hour, day, month) in: query name: timespan type: string produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: $ref: '#/definitions/model.GroupDashboardResponse' type: object security: - ApiKeyAuth: [] summary: Get dashboard data for a specific group tags: - dashboard /api/dashboard/{group}/models: get: description: Returns model-specific metrics and usage data for the given group parameters: - description: Group in: path name: group required: true type: string produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: items: $ref: '#/definitions/controller.GroupModel' type: array type: object security: - ApiKeyAuth: [] summary: Get model usage data for a specific group tags: - dashboard /api/dashboardv2/: get: description: Returns model-specific metrics and usage data for the given channel parameters: - description: Channel ID in: query name: channel type: integer - description: Model name in: query name: model type: string - description: Start timestamp format: int64 in: query name: start_timestamp type: integer - description: End timestamp format: int64 in: query name: end_timestamp type: integer - description: Timezone, default is Local in: query name: timezone type: string - description: Time span type (minute, hour, day, month) in: query name: timespan type: string produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: items: $ref: '#/definitions/model.TimeSummaryDataV2' type: array type: object security: - ApiKeyAuth: [] summary: Get model usage data for a specific channel tags: - dashboard /api/dashboardv2/{group}: get: description: Returns model-specific metrics and usage data for the given group parameters: - description: Group in: path name: group required: true type: string - description: Token name in: query name: token_name type: string - description: Model name in: query name: model type: string - description: Start timestamp format: int64 in: query name: start_timestamp type: integer - description: End timestamp format: int64 in: query name: end_timestamp type: integer - description: Timezone, default is Local in: query name: timezone type: string - description: Time span type (minute, hour, day, month) in: query name: timespan type: string produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: items: $ref: '#/definitions/model.TimeSummaryDataV2' type: array type: object security: - ApiKeyAuth: [] summary: Get model usage data for a specific group tags: - dashboard /api/embedmcp/: get: consumes: - application/json description: Get embed mcp produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/controller.EmbedMCP' type: array security: - ApiKeyAuth: [] summary: Get embed mcp tags: - embedmcp post: consumes: - application/json description: Save embed mcp parameters: - description: Save embed mcp request in: body name: body required: true schema: $ref: '#/definitions/controller.SaveEmbedMCPRequest' produces: - application/json responses: "200": description: OK security: - ApiKeyAuth: [] summary: Save embed mcp tags: - embedmcp /api/group/{group}: delete: description: Deletes a group by its name parameters: - description: Group name in: path name: group required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/middleware.APIResponse' security: - ApiKeyAuth: [] summary: Delete a group tags: - group get: description: Returns detailed information about a specific group parameters: - description: Group name in: path name: group required: true type: string produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: $ref: '#/definitions/controller.GroupResponse' type: object security: - ApiKeyAuth: [] summary: Get a group tags: - group post: consumes: - application/json description: Creates a new group with the given information parameters: - description: Group name in: path name: group required: true type: string - description: Group information in: body name: data required: true schema: $ref: '#/definitions/controller.CreateGroupRequest' produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: $ref: '#/definitions/model.Group' type: object security: - ApiKeyAuth: [] summary: Create a new group tags: - group put: consumes: - application/json description: Updates an existing group with the given information parameters: - description: Group name in: path name: group required: true type: string - description: Updated group information in: body name: data required: true schema: $ref: '#/definitions/model.UpdateGroupRequest' produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: $ref: '#/definitions/model.Group' type: object security: - ApiKeyAuth: [] summary: Update a group tags: - group /api/group/{group}/mcp: get: description: Get MCPs by group parameters: - description: Group ID in: path name: group required: true type: string - description: Page in: query name: page type: integer - description: Per Page in: query name: per_page type: integer - description: MCP ID in: query name: id type: string - description: hosted or local in: query name: type type: string - description: Keyword in: query name: keyword type: string produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: items: $ref: '#/definitions/controller.GroupPublicMCPResponse' type: array type: object security: - ApiKeyAuth: [] summary: Get MCPs by group tags: - mcp - group /api/group/{group}/mcp/{id}: get: description: Get a specific MCP by its ID parameters: - description: Group ID in: path name: group required: true type: string - description: MCP ID in: path name: id required: true type: string produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: $ref: '#/definitions/controller.GroupPublicMCPDetailResponse' type: object security: - ApiKeyAuth: [] summary: Get MCP by ID tags: - mcp - group /api/group/{group}/model_config/{model}: delete: description: Delete group model config parameters: - description: Group name in: path name: group required: true type: string - description: Model name in: path name: model required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/middleware.APIResponse' security: - ApiKeyAuth: [] summary: Delete group model config tags: - group get: description: Get group model config parameters: - description: Group name in: path name: group required: true type: string - description: Model name in: path name: model required: true type: string produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: $ref: '#/definitions/model.GroupModelConfig' type: object security: - ApiKeyAuth: [] summary: Get group model config tags: - group post: consumes: - application/json description: Save group model config parameters: - description: Group name in: path name: group required: true type: string - description: Group model config information in: body name: data required: true schema: $ref: '#/definitions/controller.SaveGroupModelConfigRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/middleware.APIResponse' security: - ApiKeyAuth: [] summary: Save group model config tags: - group put: consumes: - application/json description: Update group model config parameters: - description: Group name in: path name: group required: true type: string - description: Model name in: path name: model required: true type: string - description: Group model config information in: body name: data required: true schema: $ref: '#/definitions/controller.SaveGroupModelConfigRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/middleware.APIResponse' security: - ApiKeyAuth: [] summary: Update group model config tags: - group /api/group/{group}/model_configs/: delete: description: Delete group model configs parameters: - description: Group name in: path name: group required: true type: string - description: Model names in: body name: models required: true schema: items: type: string type: array produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/middleware.APIResponse' security: - ApiKeyAuth: [] summary: Delete group model configs tags: - group get: description: Get group model configs parameters: - description: Group name in: path name: group required: true type: string produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: items: $ref: '#/definitions/model.GroupModelConfig' type: array type: object security: - ApiKeyAuth: [] summary: Get group model configs tags: - group post: consumes: - application/json description: Save group model configs parameters: - description: Group name in: path name: group required: true type: string - description: Group model config information in: body name: data required: true schema: items: $ref: '#/definitions/controller.SaveGroupModelConfigRequest' type: array produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/middleware.APIResponse' security: - ApiKeyAuth: [] summary: Save group model configs tags: - group put: consumes: - application/json description: Update group model configs parameters: - description: Group name in: path name: group required: true type: string - description: Group model config information in: body name: data required: true schema: items: $ref: '#/definitions/controller.SaveGroupModelConfigRequest' type: array produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/middleware.APIResponse' security: - ApiKeyAuth: [] summary: Update group model configs tags: - group /api/group/{group}/rpm_ratio: post: consumes: - application/json description: Updates the RPM (Requests Per Minute) ratio for a group parameters: - description: Group name in: path name: group required: true type: string - description: RPM ratio information in: body name: data required: true schema: $ref: '#/definitions/controller.UpdateGroupRPMRatioRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/middleware.APIResponse' security: - ApiKeyAuth: [] summary: Update group RPM ratio tags: - group /api/group/{group}/status: post: consumes: - application/json description: Updates the status of a group parameters: - description: Group name in: path name: group required: true type: string - description: Status information in: body name: status required: true schema: $ref: '#/definitions/controller.UpdateGroupStatusRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/middleware.APIResponse' security: - ApiKeyAuth: [] summary: Update group status tags: - group /api/group/{group}/tpm_ratio: post: consumes: - application/json description: Updates the TPM (Tokens Per Minute) ratio for a group parameters: - description: Group name in: path name: group required: true type: string - description: TPM ratio information in: body name: data required: true schema: $ref: '#/definitions/controller.UpdateGroupTPMRatioRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/middleware.APIResponse' security: - ApiKeyAuth: [] summary: Update group TPM ratio tags: - group /api/groups/: get: description: Returns a list of all groups with pagination parameters: - description: Page number in: query name: page type: integer - description: Items per page in: query name: per_page type: integer produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: additionalProperties: allOf: - {} - properties: groups: items: $ref: '#/definitions/controller.GroupResponse' type: array total: type: integer type: object type: object type: object security: - ApiKeyAuth: [] summary: Get all groups tags: - groups /api/groups/batch_delete: post: consumes: - application/json description: Deletes multiple groups by their IDs parameters: - description: Group IDs in: body name: ids required: true schema: items: type: string type: array produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/middleware.APIResponse' security: - ApiKeyAuth: [] summary: Delete multiple groups tags: - groups /api/groups/batch_status: post: consumes: - application/json description: Updates the status of multiple groups parameters: - description: Group IDs and status in: body name: data required: true schema: $ref: '#/definitions/controller.UpdateGroupsStatusRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/middleware.APIResponse' security: - ApiKeyAuth: [] summary: Update multiple groups status tags: - groups /api/groups/ip_groups: get: description: Get IP group list parameters: - description: Threshold in: query name: threshold type: integer - description: Start timestamp in: query name: start_timestamp type: integer - description: End timestamp in: query name: end_timestamp type: integer produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: additionalProperties: items: type: string type: array type: object type: object security: - ApiKeyAuth: [] summary: Get IP group list tags: - groups /api/groups/search: get: description: Search groups with keyword and pagination parameters: - description: Search keyword in: query name: keyword required: true type: string - description: Page number in: query name: page type: integer - description: Items per page in: query name: per_page type: integer - description: Status in: query name: status type: integer - description: Order in: query name: order type: string produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: additionalProperties: allOf: - {} - properties: groups: items: $ref: '#/definitions/controller.GroupResponse' type: array total: type: integer type: object type: object type: object security: - ApiKeyAuth: [] summary: Search groups tags: - groups /api/log/{group}: get: description: Get logs for a specific group parameters: - description: Group name in: path name: group required: true type: string - description: Page number in: query name: page type: integer - description: Items per page in: query name: per_page type: integer - description: Start timestamp (milliseconds) in: query name: start_timestamp type: integer - description: End timestamp (milliseconds) in: query name: end_timestamp type: integer - description: Token name in: query name: token_name type: string - description: Model name in: query name: model_name type: string - description: Channel ID in: query name: channel type: integer - description: Token ID in: query name: token_id type: integer - description: Order in: query name: order type: string - description: Request ID in: query name: request_id type: string - description: Status code type in: query name: code_type type: string - description: Status code in: query name: code type: integer - description: With body in: query name: with_body type: boolean - description: IP in: query name: ip type: string - description: User in: query name: user type: string produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: $ref: '#/definitions/model.GetGroupLogsResult' type: object security: - ApiKeyAuth: [] summary: Get group logs tags: - log /api/log/{group}/detail/{log_id}: get: description: Get detailed information about a specific log entry in a group parameters: - description: Group name in: path name: group required: true type: string - description: Log ID in: path name: log_id required: true type: string produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: $ref: '#/definitions/model.RequestDetail' type: object security: - ApiKeyAuth: [] summary: Get group log detail tags: - log /api/log/{group}/search: get: description: Search logs for a specific group with filters parameters: - description: Group name in: path name: group required: true type: string - description: Keyword in: query name: keyword type: string - description: Page number in: query name: page type: integer - description: Items per page in: query name: per_page type: integer - description: Start timestamp (milliseconds) in: query name: start_timestamp type: integer - description: End timestamp (milliseconds) in: query name: end_timestamp type: integer - description: Filter by token name in: query name: token_name type: string - description: Filter by model name in: query name: model_name type: string - description: Filter by token id in: query name: token_id type: integer - description: Order in: query name: order type: string - description: Request ID in: query name: request_id type: string - description: Status code type in: query name: code_type type: string - description: Status code in: query name: code type: integer - description: With body in: query name: with_body type: boolean - description: IP in: query name: ip type: string - description: User in: query name: user type: string produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: $ref: '#/definitions/model.GetGroupLogsResult' type: object security: - ApiKeyAuth: [] summary: Search group logs tags: - log /api/logs/: delete: description: Deletes logs older than the specified retention period parameters: - description: Timestamp (milliseconds) in: query name: timestamp required: true type: integer produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: type: integer type: object security: - ApiKeyAuth: [] summary: Delete historical logs tags: - logs get: description: Returns a paginated list of all logs with optional filters parameters: - description: Page number in: query name: page type: integer - description: Items per page in: query name: per_page type: integer - description: Start timestamp (milliseconds) in: query name: start_timestamp type: integer - description: End timestamp (milliseconds) in: query name: end_timestamp type: integer - description: Model name in: query name: model_name type: string - description: Channel ID in: query name: channel type: integer - description: Order in: query name: order type: string - description: Request ID in: query name: request_id type: string - description: Status code type in: query name: code_type type: string - description: Status code in: query name: code type: integer - description: With body in: query name: with_body type: boolean - description: IP in: query name: ip type: string - description: User in: query name: user type: string produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: $ref: '#/definitions/model.GetLogsResult' type: object security: - ApiKeyAuth: [] summary: Get all logs tags: - logs /api/logs/consume_error: get: description: Search for logs with consumption errors parameters: - description: Page number in: query name: page type: integer - description: Items per page in: query name: per_page type: integer - description: Start timestamp (milliseconds) in: query name: start_timestamp type: integer - description: End timestamp (milliseconds) in: query name: end_timestamp type: integer - description: Keyword in: query name: keyword type: string - description: Group in: query name: group type: string - description: Token name in: query name: token_name type: string - description: Model name in: query name: model_name type: string - description: Content in: query name: content type: string - description: Token ID in: query name: token_id type: integer - description: Order in: query name: order type: string - description: Request ID in: query name: request_id type: string produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: additionalProperties: allOf: - {} - properties: logs: items: $ref: '#/definitions/model.RequestDetail' type: array total: type: integer type: object type: object type: object security: - ApiKeyAuth: [] summary: Search consumption errors tags: - logs /api/logs/detail/{log_id}: get: description: Get detailed information about a specific log entry parameters: - description: Log ID in: path name: log_id required: true type: string produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: $ref: '#/definitions/model.RequestDetail' type: object security: - ApiKeyAuth: [] summary: Get log detail tags: - logs /api/logs/search: get: description: Search logs with various filters parameters: - description: Keyword in: query name: keyword type: string - description: Page number in: query name: page type: integer - description: Items per page in: query name: per_page type: integer - description: Start timestamp (milliseconds) in: query name: start_timestamp type: integer - description: End timestamp (milliseconds) in: query name: end_timestamp type: integer - description: Filter by model name in: query name: model_name type: string - description: Filter by channel in: query name: channel type: integer - description: Group name in: query name: group required: true type: string - description: Filter by token id in: query name: token_id type: integer - description: Filter by token name in: query name: token_name type: string - description: Order in: query name: order type: string - description: Request ID in: query name: request_id type: string - description: Status code type in: query name: code_type type: string - description: Status code in: query name: code type: integer - description: With body in: query name: with_body type: boolean - description: IP in: query name: ip type: string - description: User in: query name: user type: string produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: $ref: '#/definitions/model.GetLogsResult' type: object security: - ApiKeyAuth: [] summary: Search logs tags: - logs /api/mcp/group/{group}: get: description: Get a list of Group MCPs with pagination and filtering parameters: - description: Group ID in: path name: group required: true type: string - description: Page number in: query name: page type: integer - description: Items per page in: query name: per_page type: integer - description: MCP id in: query name: id type: string - description: MCP type, mcp_proxy_sse, mcp_proxy_streamable, mcp_openapi in: query name: type type: string - description: Search keyword in: query name: keyword type: string - description: MCP status in: query name: status type: integer produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: items: $ref: '#/definitions/controller.GroupMCPResponse' type: array type: object security: - ApiKeyAuth: [] summary: Get Group MCPs tags: - mcp post: consumes: - application/json description: Create a new Group MCP parameters: - description: Group ID in: path name: group required: true type: string - description: Group MCP object in: body name: mcp required: true schema: $ref: '#/definitions/model.GroupMCP' produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: $ref: '#/definitions/controller.GroupMCPResponse' type: object security: - ApiKeyAuth: [] summary: Create Group MCP tags: - mcp /api/mcp/group/{group}/{id}: delete: description: Delete a Group MCP by ID and Group ID parameters: - description: MCP ID in: path name: id required: true type: string - description: Group ID in: path name: group required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/middleware.APIResponse' security: - ApiKeyAuth: [] summary: Delete Group MCP tags: - mcp get: description: Get a specific Group MCP by its ID and Group ID parameters: - description: MCP ID in: path name: id required: true type: string - description: Group ID in: path name: group required: true type: string produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: $ref: '#/definitions/controller.GroupMCPResponse' type: object security: - ApiKeyAuth: [] summary: Get Group MCP by ID tags: - mcp put: consumes: - application/json description: Update an existing Group MCP parameters: - description: MCP ID in: path name: id required: true type: string - description: Group ID in: path name: group required: true type: string - description: Group MCP object in: body name: mcp required: true schema: $ref: '#/definitions/model.GroupMCP' produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: $ref: '#/definitions/controller.GroupMCPResponse' type: object security: - ApiKeyAuth: [] summary: Update Group MCP tags: - mcp /api/mcp/group/{group}/{id}/status: post: consumes: - application/json description: Update the status of a Group MCP parameters: - description: MCP ID in: path name: id required: true type: string - description: Group ID in: path name: group required: true type: string - description: MCP status in: body name: status required: true schema: $ref: '#/definitions/controller.UpdateGroupMCPStatusRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/middleware.APIResponse' security: - ApiKeyAuth: [] summary: Update Group MCP status tags: - mcp /api/mcp/group/all: get: description: Get all Group MCPs with filtering parameters: - description: MCP status in: query name: status type: integer produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: items: $ref: '#/definitions/controller.GroupMCPResponse' type: array type: object security: - ApiKeyAuth: [] summary: Get all Group MCPs tags: - mcp /api/mcp/public/: post: consumes: - application/json description: Create a new MCP parameters: - description: MCP object in: body name: mcp required: true schema: $ref: '#/definitions/model.PublicMCP' produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: $ref: '#/definitions/controller.PublicMCPResponse' type: object security: - ApiKeyAuth: [] summary: Create MCP tags: - mcp /api/mcp/public/{id}: delete: description: Delete an MCP by ID parameters: - description: MCP ID in: path name: id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/middleware.APIResponse' security: - ApiKeyAuth: [] summary: Delete MCP tags: - mcp get: description: Get a specific MCP by its ID parameters: - description: MCP ID in: path name: id required: true type: string produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: $ref: '#/definitions/controller.PublicMCPResponse' type: object security: - ApiKeyAuth: [] summary: Get MCP by ID tags: - mcp post: consumes: - application/json description: Update an existing MCP parameters: - description: MCP ID in: path name: id required: true type: string - description: MCP object in: body name: mcp required: true schema: $ref: '#/definitions/model.PublicMCP' produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: $ref: '#/definitions/controller.PublicMCPResponse' type: object security: - ApiKeyAuth: [] summary: Update MCP tags: - mcp put: consumes: - application/json description: Save a MCP parameters: - description: MCP ID in: path name: id required: true type: string - description: MCP object in: body name: mcp required: true schema: $ref: '#/definitions/model.PublicMCP' produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: $ref: '#/definitions/controller.PublicMCPResponse' type: object security: - ApiKeyAuth: [] summary: Save MCP tags: - mcp /api/mcp/public/{id}/group/{group}/params: get: description: Get reusing parameters for a specific group and MCP parameters: - description: MCP ID in: path name: id required: true type: string - description: Group ID in: path name: group required: true type: string produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: $ref: '#/definitions/model.PublicMCPReusingParam' type: object security: - ApiKeyAuth: [] summary: Get group MCP reusing parameters tags: - mcp post: consumes: - application/json description: Create or update reusing parameters for a specific group and MCP parameters: - description: MCP ID in: path name: id required: true type: string - description: Group ID in: path name: group required: true type: string - description: Reusing parameters in: body name: params required: true schema: $ref: '#/definitions/model.PublicMCPReusingParam' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/middleware.APIResponse' security: - ApiKeyAuth: [] summary: Create or update group MCP reusing parameters tags: - mcp /api/mcp/public/{id}/status: post: consumes: - application/json description: Update the status of an MCP parameters: - description: MCP ID in: path name: id required: true type: string - description: MCP status in: body name: status required: true schema: $ref: '#/definitions/controller.UpdatePublicMCPStatusRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/middleware.APIResponse' security: - ApiKeyAuth: [] summary: Update MCP status tags: - mcp /api/mcp/publics/: get: description: Get a list of MCPs with pagination and filtering parameters: - description: Page number in: query name: page type: integer - description: Items per page in: query name: per_page type: integer - description: hosted or local in: query name: type type: string - description: MCP id in: query name: id type: string - description: Search keyword in: query name: keyword type: string - description: MCP status in: query name: status type: integer produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: items: $ref: '#/definitions/controller.PublicMCPResponse' type: array type: object security: - ApiKeyAuth: [] summary: Get MCPs tags: - mcp post: consumes: - application/json description: Save a list of MCPs parameters: - description: MCP object in: body name: mcp required: true schema: items: $ref: '#/definitions/model.PublicMCP' type: array produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/middleware.APIResponse' security: - ApiKeyAuth: [] summary: Save MCPs tags: - mcp /api/mcp/publics/all: get: description: Get all MCPs with filtering parameters: - description: MCP status in: query name: status type: integer produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: items: $ref: '#/definitions/controller.PublicMCPResponse' type: array type: object security: - ApiKeyAuth: [] summary: Get all MCPs tags: - mcp /api/model_config/{model}: delete: description: Deletes a model config parameters: - description: Model name in: path name: model required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/middleware.APIResponse' security: - ApiKeyAuth: [] summary: Delete model config tags: - modelconfig get: description: Returns a model config parameters: - description: Model name in: path name: model required: true type: string produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: $ref: '#/definitions/model.ModelConfig' type: object security: - ApiKeyAuth: [] summary: Get model config tags: - modelconfig post: description: Saves a model config parameters: - description: Model config in: body name: config required: true schema: $ref: '#/definitions/controller.SaveModelConfigsRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/middleware.APIResponse' security: - ApiKeyAuth: [] summary: Save model config tags: - modelconfig /api/model_configs/: get: description: Returns a list of model configs with pagination parameters: - description: Model name in: query name: model type: string produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: additionalProperties: allOf: - {} - properties: configs: items: $ref: '#/definitions/model.ModelConfig' type: array total: type: integer type: object type: object type: object security: - ApiKeyAuth: [] summary: Get model configs tags: - modelconfig post: description: Saves a list of model configs parameters: - description: Model configs in: body name: configs required: true schema: items: $ref: '#/definitions/controller.SaveModelConfigsRequest' type: array produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/middleware.APIResponse' security: - ApiKeyAuth: [] summary: Save model configs tags: - modelconfig /api/model_configs/all: get: description: Returns a list of all model configs produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: items: $ref: '#/definitions/model.ModelConfig' type: array type: object security: - ApiKeyAuth: [] summary: Get all model configs tags: - modelconfig /api/model_configs/batch_delete: post: description: Deletes a list of model configs parameters: - description: Model names in: body name: models required: true schema: items: type: string type: array produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/middleware.APIResponse' security: - ApiKeyAuth: [] summary: Delete model configs tags: - modelconfig /api/model_configs/contains: post: description: Returns a list of model configs by models contains parameters: - description: Models in: body name: models required: true schema: $ref: '#/definitions/controller.GetModelConfigsByModelsContainsRequest' produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: items: $ref: '#/definitions/model.ModelConfig' type: array type: object security: - ApiKeyAuth: [] summary: Get model configs by models contains tags: - modelconfig /api/model_configs/search: get: description: Returns a list of model configs by keyword parameters: - description: Keyword in: query name: keyword type: string - description: Model name in: query name: model type: string - description: Owner in: query name: owner type: string - description: Page in: query name: page type: integer - description: Per page in: query name: per_page type: integer produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: additionalProperties: allOf: - {} - properties: configs: items: $ref: '#/definitions/model.ModelConfig' type: array total: type: integer type: object type: object type: object security: - ApiKeyAuth: [] summary: Search model configs tags: - modelconfig /api/models/builtin: get: description: Returns a list of builtin models produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: items: $ref: '#/definitions/controller.BuiltinModelConfig' type: array type: object security: - ApiKeyAuth: [] summary: Get builtin models tags: - model /api/models/builtin/channel: get: description: Returns a list of channel builtin models produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: additionalProperties: items: $ref: '#/definitions/controller.BuiltinModelConfig' type: array type: object type: object security: - ApiKeyAuth: [] summary: Get channel builtin models tags: - model /api/models/builtin/channel/{type}: get: description: Returns a list of channel builtin models by type parameters: - description: Channel type enum: - 1 - 3 - 4 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - 19 - 20 - 23 - 24 - 25 - 26 - 27 - 28 - 29 - 30 - 31 - 32 - 33 - 34 - 35 - 36 - 37 - 40 - 41 - 42 - 43 - 44 - 45 - 46 - 47 - 48 - 49 - 50 in: path name: type required: true type: integer produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: items: $ref: '#/definitions/controller.BuiltinModelConfig' type: array type: object security: - ApiKeyAuth: [] summary: Get channel builtin models by type tags: - model /api/models/default: get: description: Returns a list of channel default models and mapping produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: additionalProperties: allOf: - {} - properties: mapping: additionalProperties: type: string type: object models: items: type: string type: array type: object type: object type: object security: - ApiKeyAuth: [] summary: Get channel default models and mapping tags: - model /api/models/default/{type}: get: description: Returns a list of channel default models and mapping by type parameters: - description: Channel type in: path name: type required: true type: string produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: additionalProperties: allOf: - {} - properties: mapping: additionalProperties: type: string type: object models: items: type: string type: array type: object type: object type: object security: - ApiKeyAuth: [] summary: Get channel default models and mapping by type tags: - model /api/models/enabled: get: description: Returns a list of enabled models produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: additionalProperties: items: $ref: '#/definitions/model.ModelConfig' type: array type: object type: object security: - ApiKeyAuth: [] summary: Get enabled models tags: - model /api/models/enabled/{set}: get: description: Returns a list of enabled models by set parameters: - description: Models set in: path name: set required: true type: string produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: items: $ref: '#/definitions/model.ModelConfig' type: array type: object security: - ApiKeyAuth: [] summary: Get enabled models by set tags: - model /api/models/sets: get: description: Returns a list of enabled models and channels sets produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: additionalProperties: additionalProperties: items: $ref: '#/definitions/controller.EnabledModelChannel' type: array type: object type: object type: object security: - ApiKeyAuth: [] summary: Get enabled models and channels sets tags: - model /api/monitor/: delete: description: Clears all model errors produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/middleware.APIResponse' security: - ApiKeyAuth: [] summary: Clear all model errors tags: - monitor get: description: Returns a list of all channel model error rates produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: additionalProperties: additionalProperties: format: float64 type: number type: object type: object type: object security: - ApiKeyAuth: [] summary: Get all channel model error rates tags: - monitor /api/monitor/{id}: delete: description: Clears all model errors for a specific channel parameters: - description: Channel ID in: path name: id required: true type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/middleware.APIResponse' security: - ApiKeyAuth: [] summary: Clear channel all model errors tags: - monitor get: description: Returns a list of channel model error rates parameters: - description: Channel ID in: path name: id required: true type: integer produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: items: additionalProperties: format: float64 type: number type: object type: array type: object security: - ApiKeyAuth: [] summary: Get channel model error rates tags: - monitor /api/monitor/{id}/{model}: delete: description: Clears model errors for a specific channel and model parameters: - description: Channel ID in: path name: id required: true type: integer - description: Model name in: path name: model required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/middleware.APIResponse' security: - ApiKeyAuth: [] summary: Clear channel model errors tags: - monitor /api/monitor/banned_channels: get: description: Returns a list of all banned model channels produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: additionalProperties: items: format: int64 type: integer type: array type: object type: object security: - ApiKeyAuth: [] summary: Get all banned model channels tags: - monitor /api/monitor/models: get: description: Returns a list of models error rate produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: additionalProperties: format: float64 type: number type: object type: object security: - ApiKeyAuth: [] summary: Get models error rate tags: - monitor /api/option/: get: description: Returns a list of options produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: additionalProperties: type: string type: object type: object security: - ApiKeyAuth: [] summary: Get options tags: - option post: description: Updates a single option parameters: - description: Option value in: body name: value required: true schema: $ref: '#/definitions/model.Option' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/middleware.APIResponse' security: - ApiKeyAuth: [] summary: Update option tags: - option put: description: Updates a single option parameters: - description: Option value in: body name: value required: true schema: $ref: '#/definitions/model.Option' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/middleware.APIResponse' security: - ApiKeyAuth: [] summary: Update option tags: - option /api/option/{key}: get: description: Returns a single option parameters: - description: Option key in: path name: key required: true type: string produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: $ref: '#/definitions/model.Option' type: object security: - ApiKeyAuth: [] summary: Get option tags: - option put: description: Updates a single option by key parameters: - description: Option key in: path name: key required: true type: string - description: Option value in: body name: value required: true schema: type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/middleware.APIResponse' security: - ApiKeyAuth: [] summary: Update option by key tags: - option /api/option/batch: post: description: Updates multiple options parameters: - description: Options in: body name: options required: true schema: additionalProperties: type: string type: object produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/middleware.APIResponse' security: - ApiKeyAuth: [] summary: Update options tags: - option /api/status: get: description: Returns the status of the server produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: $ref: '#/definitions/controller.StatusData' type: object summary: Get status tags: - misc /api/test-embedmcp/{id}: delete: consumes: - application/json description: Test Embed MCP Streamable Server with various HTTP methods parameters: - description: MCP ID in: path name: id required: true type: string - description: Initial configuration parameters (e.g. config[host]=http://localhost:3000) in: query name: config[key] type: string - description: Reusing configuration parameters (e.g., reusing[authorization]=apikey) in: query name: reusing[key] type: string produces: - application/json responses: "200": description: OK "400": description: Bad Request security: - ApiKeyAuth: [] summary: Test Embed MCP Streamable Server tags: - embedmcp get: consumes: - application/json description: Test Embed MCP Streamable Server with various HTTP methods parameters: - description: MCP ID in: path name: id required: true type: string - description: Initial configuration parameters (e.g. config[host]=http://localhost:3000) in: query name: config[key] type: string - description: Reusing configuration parameters (e.g., reusing[authorization]=apikey) in: query name: reusing[key] type: string produces: - application/json responses: "200": description: OK "400": description: Bad Request security: - ApiKeyAuth: [] summary: Test Embed MCP Streamable Server tags: - embedmcp post: consumes: - application/json description: Test Embed MCP Streamable Server with various HTTP methods parameters: - description: MCP ID in: path name: id required: true type: string - description: Initial configuration parameters (e.g. config[host]=http://localhost:3000) in: query name: config[key] type: string - description: Reusing configuration parameters (e.g., reusing[authorization]=apikey) in: query name: reusing[key] type: string produces: - application/json responses: "200": description: OK "400": description: Bad Request security: - ApiKeyAuth: [] summary: Test Embed MCP Streamable Server tags: - embedmcp /api/test-embedmcp/{id}/sse: get: description: Test Embed MCP SSE Server parameters: - description: MCP ID in: path name: id required: true type: string - description: Initial configuration parameters (e.g. config[host]=http://localhost:3000) in: query name: config[key] type: string - description: Reusing configuration parameters (e.g. reusing[authorization]=apikey) in: query name: reusing[key] type: string responses: "200": description: OK "400": description: Bad Request security: - ApiKeyAuth: [] summary: Test Embed MCP SSE Server tags: - embedmcp /api/test-publicmcp/{group}/{id}/sse: get: parameters: - description: Group ID in: path name: group required: true type: string - description: MCP ID in: path name: id required: true type: string responses: {} security: - ApiKeyAuth: [] summary: Test Public MCP SSE Server /api/token/{group}: post: consumes: - application/json description: Adds a new token to a specific group parameters: - description: Group name in: path name: group required: true type: string - description: Auto create group in: query name: auto_create_group type: boolean - description: Ignore exist in: query name: ignore_exist type: boolean - description: Token information in: body name: token required: true schema: $ref: '#/definitions/controller.AddTokenRequest' produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: $ref: '#/definitions/controller.TokenResponse' type: object security: - ApiKeyAuth: [] summary: Add group token tags: - token /api/token/{group}/{id}: delete: description: Deletes a specific token from a group parameters: - description: Group name in: path name: group required: true type: string - description: Token ID in: path name: id required: true type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/middleware.APIResponse' security: - ApiKeyAuth: [] summary: Delete group token tags: - token get: description: Returns detailed information about a specific token for a specific group parameters: - description: Group name in: path name: group required: true type: string - description: Token ID in: path name: id required: true type: integer produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: $ref: '#/definitions/controller.TokenResponse' type: object security: - ApiKeyAuth: [] summary: Get token by ID for a specific group tags: - token put: consumes: - application/json description: Updates an existing token in a specific group parameters: - description: Group name in: path name: group required: true type: string - description: Token ID in: path name: id required: true type: integer - description: Updated token information in: body name: token required: true schema: $ref: '#/definitions/model.UpdateTokenRequest' produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: $ref: '#/definitions/controller.TokenResponse' type: object security: - ApiKeyAuth: [] summary: Update group token tags: - token /api/token/{group}/{id}/name: post: consumes: - application/json description: Updates the name of a token in a specific group parameters: - description: Group name in: path name: group required: true type: string - description: Token ID in: path name: id required: true type: integer - description: Name information in: body name: name required: true schema: $ref: '#/definitions/controller.UpdateTokenNameRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/middleware.APIResponse' security: - ApiKeyAuth: [] summary: Update group token name tags: - token /api/token/{group}/{id}/status: post: consumes: - application/json description: Updates the status of a token in a specific group parameters: - description: Group name in: path name: group required: true type: string - description: Token ID in: path name: id required: true type: integer - description: Status information in: body name: status required: true schema: $ref: '#/definitions/controller.UpdateTokenStatusRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/middleware.APIResponse' security: - ApiKeyAuth: [] summary: Update group token status tags: - token /api/token/{group}/batch_delete: post: description: Deletes multiple tokens from a specific group parameters: - description: Group name in: path name: group required: true type: string - description: Token IDs in: body name: ids required: true schema: items: type: integer type: array produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/middleware.APIResponse' security: - ApiKeyAuth: [] summary: Delete group tokens tags: - token /api/token/{group}/search: get: description: Returns a paginated list of tokens for a specific group based on search criteria parameters: - description: Group name in: path name: group required: true type: string - description: Keyword in: query name: keyword type: string - description: Page number in: query name: page type: integer - description: Items per page in: query name: per_page type: integer - description: Order in: query name: order type: string - description: Name in: query name: name type: string - description: Key in: query name: key type: string - description: Status in: query name: status type: integer produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: additionalProperties: allOf: - {} - properties: tokens: items: $ref: '#/definitions/controller.TokenResponse' type: array total: type: integer type: object type: object type: object security: - ApiKeyAuth: [] summary: Search tokens for a specific group tags: - token /api/tokens/: get: description: Returns a paginated list of all tokens parameters: - description: Page number in: query name: page type: integer - description: Items per page in: query name: per_page type: integer - description: Group name in: query name: group type: string - description: Order in: query name: order type: string - description: Status in: query name: status type: integer produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: additionalProperties: allOf: - {} - properties: tokens: items: $ref: '#/definitions/controller.TokenResponse' type: array total: type: integer type: object type: object type: object security: - ApiKeyAuth: [] summary: Get all tokens tags: - tokens /api/tokens/{group}: get: description: Returns a paginated list of all tokens for a specific group parameters: - description: Group name in: path name: group required: true type: string - description: Page number in: query name: page type: integer - description: Items per page in: query name: per_page type: integer - description: Order in: query name: order type: string - description: Status in: query name: status type: integer produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: additionalProperties: allOf: - {} - properties: tokens: items: $ref: '#/definitions/controller.TokenResponse' type: array total: type: integer type: object type: object type: object security: - ApiKeyAuth: [] summary: Get all tokens for a specific group tags: - tokens /api/tokens/{id}: delete: description: Deletes a specific token by ID parameters: - description: Token ID in: path name: id required: true type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/middleware.APIResponse' security: - ApiKeyAuth: [] summary: Delete token tags: - tokens get: description: Returns detailed information about a specific token parameters: - description: Token ID in: path name: id required: true type: integer produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: $ref: '#/definitions/controller.TokenResponse' type: object security: - ApiKeyAuth: [] summary: Get token by ID tags: - tokens put: consumes: - application/json description: Updates an existing token's information parameters: - description: Token ID in: path name: id required: true type: integer - description: Updated token information in: body name: token required: true schema: $ref: '#/definitions/model.UpdateTokenRequest' produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: $ref: '#/definitions/controller.TokenResponse' type: object security: - ApiKeyAuth: [] summary: Update token tags: - tokens /api/tokens/{id}/name: post: consumes: - application/json description: Updates the name of a specific token parameters: - description: Token ID in: path name: id required: true type: integer - description: Name information in: body name: name required: true schema: $ref: '#/definitions/controller.UpdateTokenNameRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/middleware.APIResponse' security: - ApiKeyAuth: [] summary: Update token name tags: - tokens /api/tokens/{id}/status: post: consumes: - application/json description: Updates the status of a specific token parameters: - description: Token ID in: path name: id required: true type: integer - description: Status information in: body name: status required: true schema: $ref: '#/definitions/controller.UpdateTokenStatusRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/middleware.APIResponse' security: - ApiKeyAuth: [] summary: Update token status tags: - tokens /api/tokens/batch_delete: post: consumes: - application/json description: Deletes multiple tokens by their IDs parameters: - description: Token IDs in: body name: ids required: true schema: items: type: integer type: array produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/middleware.APIResponse' security: - ApiKeyAuth: [] summary: Delete multiple tokens tags: - tokens /api/tokens/search: get: description: Returns a paginated list of tokens based on search criteria parameters: - description: Keyword in: query name: keyword type: string - description: Page number in: query name: page type: integer - description: Items per page in: query name: per_page type: integer - description: Order in: query name: order type: string - description: Name in: query name: name type: string - description: Key in: query name: key type: string - description: Status in: query name: status type: integer - description: Group in: query name: group type: string produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/middleware.APIResponse' - properties: data: additionalProperties: allOf: - {} - properties: tokens: items: $ref: '#/definitions/controller.TokenResponse' type: array total: type: integer type: object type: object type: object security: - ApiKeyAuth: [] summary: Search tokens tags: - tokens /mcp: delete: responses: {} security: - ApiKeyAuth: [] summary: Host MCP Streamable Server get: responses: {} security: - ApiKeyAuth: [] summary: Host MCP Streamable Server post: responses: {} security: - ApiKeyAuth: [] summary: Host MCP Streamable Server /mcp/group/{id}: delete: responses: {} security: - ApiKeyAuth: [] summary: Group MCP Streamable Server get: responses: {} security: - ApiKeyAuth: [] summary: Group MCP Streamable Server post: responses: {} security: - ApiKeyAuth: [] summary: Group MCP Streamable Server /mcp/group/{id}/sse: get: responses: {} security: - ApiKeyAuth: [] summary: Group MCP SSE Server /mcp/public/{id}: delete: responses: {} security: - ApiKeyAuth: [] summary: Public MCP Streamable Server get: responses: {} security: - ApiKeyAuth: [] summary: Public MCP Streamable Server post: responses: {} security: - ApiKeyAuth: [] summary: Public MCP Streamable Server /mcp/public/{id}/sse: get: responses: {} security: - ApiKeyAuth: [] summary: Public MCP SSE Server /message: post: responses: {} summary: MCP SSE Message /sse: get: responses: {} security: - ApiKeyAuth: [] summary: Public MCP SSE Server /v1/audio/speech: post: description: AudioSpeech parameters: - description: Request in: body name: request required: true schema: $ref: '#/definitions/model.TextToSpeechRequest' - description: Optional Aiproxy-Channel header in: header name: Aiproxy-Channel type: string produces: - application/json responses: "200": description: audio binary headers: X-RateLimit-Limit-Requests: description: X-RateLimit-Limit-Requests type: integer X-RateLimit-Limit-Tokens: description: X-RateLimit-Limit-Tokens type: integer X-RateLimit-Remaining-Requests: description: X-RateLimit-Remaining-Requests type: integer X-RateLimit-Remaining-Tokens: description: X-RateLimit-Remaining-Tokens type: integer X-RateLimit-Reset-Requests: description: X-RateLimit-Reset-Requests type: string X-RateLimit-Reset-Tokens: description: X-RateLimit-Reset-Tokens type: string schema: type: file security: - ApiKeyAuth: [] summary: AudioSpeech tags: - relay /v1/audio/transcriptions: post: description: AudioTranscription parameters: - description: Model in: formData name: model required: true type: string - description: File in: formData name: file required: true type: file - description: Optional Aiproxy-Channel header in: header name: Aiproxy-Channel type: string produces: - application/json responses: "200": description: OK headers: X-RateLimit-Limit-Requests: description: X-RateLimit-Limit-Requests type: integer X-RateLimit-Limit-Tokens: description: X-RateLimit-Limit-Tokens type: integer X-RateLimit-Remaining-Requests: description: X-RateLimit-Remaining-Requests type: integer X-RateLimit-Remaining-Tokens: description: X-RateLimit-Remaining-Tokens type: integer X-RateLimit-Reset-Requests: description: X-RateLimit-Reset-Requests type: string X-RateLimit-Reset-Tokens: description: X-RateLimit-Reset-Tokens type: string schema: $ref: '#/definitions/model.SttJSONResponse' security: - ApiKeyAuth: [] summary: AudioTranscription tags: - relay /v1/audio/translations: post: description: AudioTranslation parameters: - description: Model in: formData name: model required: true type: string - description: File in: formData name: file required: true type: file - description: Optional Aiproxy-Channel header in: header name: Aiproxy-Channel type: string produces: - application/json responses: "200": description: OK headers: X-RateLimit-Limit-Requests: description: X-RateLimit-Limit-Requests type: integer X-RateLimit-Limit-Tokens: description: X-RateLimit-Limit-Tokens type: integer X-RateLimit-Remaining-Requests: description: X-RateLimit-Remaining-Requests type: integer X-RateLimit-Remaining-Tokens: description: X-RateLimit-Remaining-Tokens type: integer X-RateLimit-Reset-Requests: description: X-RateLimit-Reset-Requests type: string X-RateLimit-Reset-Tokens: description: X-RateLimit-Reset-Tokens type: string schema: $ref: '#/definitions/model.SttJSONResponse' security: - ApiKeyAuth: [] summary: AudioTranslation tags: - relay /v1/chat/completions: post: description: ChatCompletions parameters: - description: Request in: body name: request required: true schema: $ref: '#/definitions/model.GeneralOpenAIRequest' - description: Optional Aiproxy-Channel header in: header name: Aiproxy-Channel type: string produces: - application/json responses: "200": description: OK headers: X-RateLimit-Limit-Requests: description: X-RateLimit-Limit-Requests type: integer X-RateLimit-Limit-Tokens: description: X-RateLimit-Limit-Tokens type: integer X-RateLimit-Remaining-Requests: description: X-RateLimit-Remaining-Requests type: integer X-RateLimit-Remaining-Tokens: description: X-RateLimit-Remaining-Tokens type: integer X-RateLimit-Reset-Requests: description: X-RateLimit-Reset-Requests type: string X-RateLimit-Reset-Tokens: description: X-RateLimit-Reset-Tokens type: string schema: $ref: '#/definitions/model.TextResponse' security: - ApiKeyAuth: [] summary: ChatCompletions tags: - relay /v1/completions: post: description: Completions parameters: - description: Request in: body name: request required: true schema: $ref: '#/definitions/model.GeneralOpenAIRequest' - description: Optional Aiproxy-Channel header in: header name: Aiproxy-Channel type: string produces: - application/json responses: "200": description: OK headers: X-RateLimit-Limit-Requests: description: X-RateLimit-Limit-Requests type: integer X-RateLimit-Limit-Tokens: description: X-RateLimit-Limit-Tokens type: integer X-RateLimit-Remaining-Requests: description: X-RateLimit-Remaining-Requests type: integer X-RateLimit-Remaining-Tokens: description: X-RateLimit-Remaining-Tokens type: integer X-RateLimit-Reset-Requests: description: X-RateLimit-Reset-Requests type: string X-RateLimit-Reset-Tokens: description: X-RateLimit-Reset-Tokens type: string schema: $ref: '#/definitions/model.TextResponse' security: - ApiKeyAuth: [] summary: Completions tags: - relay /v1/dashboard/billing/subscription: get: description: Get subscription produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/openai.SubscriptionResponse' security: - ApiKeyAuth: [] summary: Get subscription tags: - relay /v1/dashboard/billing/usage: get: description: Get usage produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/openai.UsageResponse' security: - ApiKeyAuth: [] summary: Get usage tags: - relay /v1/embeddings: post: description: Embeddings parameters: - description: Request in: body name: request required: true schema: $ref: '#/definitions/model.EmbeddingRequest' - description: Optional Aiproxy-Channel header in: header name: Aiproxy-Channel type: string produces: - application/json responses: "200": description: OK headers: X-RateLimit-Limit-Requests: description: X-RateLimit-Limit-Requests type: integer X-RateLimit-Limit-Tokens: description: X-RateLimit-Limit-Tokens type: integer X-RateLimit-Remaining-Requests: description: X-RateLimit-Remaining-Requests type: integer X-RateLimit-Remaining-Tokens: description: X-RateLimit-Remaining-Tokens type: integer X-RateLimit-Reset-Requests: description: X-RateLimit-Reset-Requests type: string X-RateLimit-Reset-Tokens: description: X-RateLimit-Reset-Tokens type: string schema: $ref: '#/definitions/model.EmbeddingResponse' security: - ApiKeyAuth: [] summary: Embeddings tags: - relay /v1/images/edits: post: description: ImagesEdits parameters: - description: Prompt in: formData name: prompt required: true type: string - description: Model in: formData name: model required: true type: string - description: Images in: formData name: image required: true type: file - description: Optional Aiproxy-Channel header in: header name: Aiproxy-Channel type: string produces: - application/json responses: "200": description: OK headers: X-RateLimit-Limit-Requests: description: X-RateLimit-Limit-Requests type: integer X-RateLimit-Limit-Tokens: description: X-RateLimit-Limit-Tokens type: integer X-RateLimit-Remaining-Requests: description: X-RateLimit-Remaining-Requests type: integer X-RateLimit-Remaining-Tokens: description: X-RateLimit-Remaining-Tokens type: integer X-RateLimit-Reset-Requests: description: X-RateLimit-Reset-Requests type: string X-RateLimit-Reset-Tokens: description: X-RateLimit-Reset-Tokens type: string schema: $ref: '#/definitions/model.SttJSONResponse' security: - ApiKeyAuth: [] summary: ImagesEdits tags: - relay /v1/images/generations: post: description: ImagesGenerations parameters: - description: Request in: body name: request required: true schema: $ref: '#/definitions/model.ImageRequest' - description: Optional Aiproxy-Channel header in: header name: Aiproxy-Channel type: string produces: - application/json responses: "200": description: OK headers: X-RateLimit-Limit-Requests: description: X-RateLimit-Limit-Requests type: integer X-RateLimit-Limit-Tokens: description: X-RateLimit-Limit-Tokens type: integer X-RateLimit-Remaining-Requests: description: X-RateLimit-Remaining-Requests type: integer X-RateLimit-Remaining-Tokens: description: X-RateLimit-Remaining-Tokens type: integer X-RateLimit-Reset-Requests: description: X-RateLimit-Reset-Requests type: string X-RateLimit-Reset-Tokens: description: X-RateLimit-Reset-Tokens type: string schema: $ref: '#/definitions/model.ImageResponse' security: - ApiKeyAuth: [] summary: ImagesGenerations tags: - relay /v1/messages: post: description: Anthropic parameters: - description: Request in: body name: request required: true schema: $ref: '#/definitions/model.AnthropicMessageRequest' - description: Optional Aiproxy-Channel header in: header name: Aiproxy-Channel type: string produces: - application/json responses: "200": description: OK headers: X-RateLimit-Limit-Requests: description: X-RateLimit-Limit-Requests type: integer X-RateLimit-Limit-Tokens: description: X-RateLimit-Limit-Tokens type: integer X-RateLimit-Remaining-Requests: description: X-RateLimit-Remaining-Requests type: integer X-RateLimit-Remaining-Tokens: description: X-RateLimit-Remaining-Tokens type: integer X-RateLimit-Reset-Requests: description: X-RateLimit-Reset-Requests type: string X-RateLimit-Reset-Tokens: description: X-RateLimit-Reset-Tokens type: string schema: $ref: '#/definitions/model.TextResponse' security: - ApiKeyAuth: [] summary: Anthropic tags: - relay /v1/models: get: description: List all models produces: - application/json responses: "200": description: OK schema: properties: data: items: $ref: '#/definitions/controller.OpenAIModels' type: array object: type: string type: object security: - ApiKeyAuth: [] summary: List models tags: - relay /v1/models/{model}: get: description: Retrieve a model produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/controller.OpenAIModels' security: - ApiKeyAuth: [] summary: Retrieve model tags: - relay /v1/parse/pdf: post: description: ParsePdf parameters: - description: Model in: formData name: model required: true type: string - description: File in: formData name: file required: true type: file - description: Optional Aiproxy-Channel header in: header name: Aiproxy-Channel type: string produces: - application/json responses: "200": description: OK headers: X-RateLimit-Limit-Requests: description: X-RateLimit-Limit-Requests type: integer X-RateLimit-Limit-Tokens: description: X-RateLimit-Limit-Tokens type: integer X-RateLimit-Remaining-Requests: description: X-RateLimit-Remaining-Requests type: integer X-RateLimit-Remaining-Tokens: description: X-RateLimit-Remaining-Tokens type: integer X-RateLimit-Reset-Requests: description: X-RateLimit-Reset-Requests type: string X-RateLimit-Reset-Tokens: description: X-RateLimit-Reset-Tokens type: string schema: $ref: '#/definitions/model.ParsePdfResponse' security: - ApiKeyAuth: [] summary: ParsePdf tags: - relay /v1/rerank: post: description: Rerank parameters: - description: Request in: body name: request required: true schema: $ref: '#/definitions/model.RerankRequest' - description: Optional Aiproxy-Channel header in: header name: Aiproxy-Channel type: string produces: - application/json responses: "200": description: OK headers: X-RateLimit-Limit-Requests: description: X-RateLimit-Limit-Requests type: integer X-RateLimit-Limit-Tokens: description: X-RateLimit-Limit-Tokens type: integer X-RateLimit-Remaining-Requests: description: X-RateLimit-Remaining-Requests type: integer X-RateLimit-Remaining-Tokens: description: X-RateLimit-Remaining-Tokens type: integer X-RateLimit-Reset-Requests: description: X-RateLimit-Reset-Requests type: string X-RateLimit-Reset-Tokens: description: X-RateLimit-Reset-Tokens type: string schema: $ref: '#/definitions/model.RerankResponse' security: - ApiKeyAuth: [] summary: Rerank tags: - relay /v1/responses: post: description: Create a new response parameters: - description: Request in: body name: request required: true schema: $ref: '#/definitions/model.CreateResponseRequest' - description: Optional Aiproxy-Channel header in: header name: Aiproxy-Channel type: string produces: - application/json responses: "200": description: OK headers: X-RateLimit-Limit-Requests: description: X-RateLimit-Limit-Requests type: integer X-RateLimit-Limit-Tokens: description: X-RateLimit-Limit-Tokens type: integer X-RateLimit-Remaining-Requests: description: X-RateLimit-Remaining-Requests type: integer X-RateLimit-Remaining-Tokens: description: X-RateLimit-Remaining-Tokens type: integer X-RateLimit-Reset-Requests: description: X-RateLimit-Reset-Requests type: string X-RateLimit-Reset-Tokens: description: X-RateLimit-Reset-Tokens type: string schema: $ref: '#/definitions/model.Response' security: - ApiKeyAuth: [] summary: Create response tags: - relay /v1/responses/{response_id}: delete: description: Delete a response by ID parameters: - description: Response ID in: path name: response_id required: true type: string - description: Optional Aiproxy-Channel header in: header name: Aiproxy-Channel type: string produces: - application/json responses: "204": description: No Content security: - ApiKeyAuth: [] summary: Delete response tags: - relay get: description: Get a response by ID parameters: - description: Response ID in: path name: response_id required: true type: string - description: Optional Aiproxy-Channel header in: header name: Aiproxy-Channel type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/model.Response' security: - ApiKeyAuth: [] summary: Get response tags: - relay /v1/responses/{response_id}/cancel: post: description: Cancel a response by ID parameters: - description: Response ID in: path name: response_id required: true type: string - description: Optional Aiproxy-Channel header in: header name: Aiproxy-Channel type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/model.Response' security: - ApiKeyAuth: [] summary: Cancel response tags: - relay /v1/responses/{response_id}/input_items: get: description: Get input items for a response parameters: - description: Response ID in: path name: response_id required: true type: string - description: Optional Aiproxy-Channel header in: header name: Aiproxy-Channel type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/model.InputItemList' security: - ApiKeyAuth: [] summary: Get response input items tags: - relay /v1/video/generations/{id}/content/video: get: description: VideoGenerationsContent parameters: - description: Request in: body name: request required: true schema: $ref: '#/definitions/model.VideoGenerationJobRequest' - description: Optional Aiproxy-Channel header in: header name: Aiproxy-Channel type: string produces: - application/json responses: "200": description: video binary headers: X-RateLimit-Limit-Requests: description: X-RateLimit-Limit-Requests type: integer X-RateLimit-Limit-Tokens: description: X-RateLimit-Limit-Tokens type: integer X-RateLimit-Remaining-Requests: description: X-RateLimit-Remaining-Requests type: integer X-RateLimit-Remaining-Tokens: description: X-RateLimit-Remaining-Tokens type: integer X-RateLimit-Reset-Requests: description: X-RateLimit-Reset-Requests type: string X-RateLimit-Reset-Tokens: description: X-RateLimit-Reset-Tokens type: string schema: type: file security: - ApiKeyAuth: [] summary: VideoGenerationsContent tags: - relay /v1/video/generations/jobs: post: description: VideoGenerationsJobs parameters: - description: Request in: body name: request required: true schema: $ref: '#/definitions/model.VideoGenerationJobRequest' - description: Optional Aiproxy-Channel header in: header name: Aiproxy-Channel type: string produces: - application/json responses: "200": description: OK headers: X-RateLimit-Limit-Requests: description: X-RateLimit-Limit-Requests type: integer X-RateLimit-Limit-Tokens: description: X-RateLimit-Limit-Tokens type: integer X-RateLimit-Remaining-Requests: description: X-RateLimit-Remaining-Requests type: integer X-RateLimit-Remaining-Tokens: description: X-RateLimit-Remaining-Tokens type: integer X-RateLimit-Reset-Requests: description: X-RateLimit-Reset-Requests type: string X-RateLimit-Reset-Tokens: description: X-RateLimit-Reset-Tokens type: string schema: $ref: '#/definitions/model.VideoGenerationJob' security: - ApiKeyAuth: [] summary: VideoGenerationsJobs tags: - relay /v1/video/generations/jobs/{id}: get: description: VideoGenerationsGetJobs parameters: - description: Request in: body name: request required: true schema: $ref: '#/definitions/model.VideoGenerationJobRequest' - description: Optional Aiproxy-Channel header in: header name: Aiproxy-Channel type: string produces: - application/json responses: "200": description: OK headers: X-RateLimit-Limit-Requests: description: X-RateLimit-Limit-Requests type: integer X-RateLimit-Limit-Tokens: description: X-RateLimit-Limit-Tokens type: integer X-RateLimit-Remaining-Requests: description: X-RateLimit-Remaining-Requests type: integer X-RateLimit-Remaining-Tokens: description: X-RateLimit-Remaining-Tokens type: integer X-RateLimit-Reset-Requests: description: X-RateLimit-Reset-Requests type: string X-RateLimit-Reset-Tokens: description: X-RateLimit-Reset-Tokens type: string schema: $ref: '#/definitions/model.VideoGenerationJob' security: - ApiKeyAuth: [] summary: VideoGenerationsGetJobs tags: - relay securityDefinitions: ApiKeyAuth: in: header name: Authorization type: apiKey swagger: "2.0"