{"openapi":"3.1.0","info":{"title":"LLM API Gateway","description":"OpenAI-compatible REST API Gateway providing high-availability access to Google Gemini 3.8, 3.7, 3.6 & Anthropic Claude models with multi-account rotation and streaming.","version":"0.1.0"},"paths":{"/v1/models":{"get":{"tags":["LLM API Gateway"],"summary":"List Models","description":"List all supported OpenAI-compatible models.","operationId":"list_models_v1_models_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/chat/completions":{"post":{"tags":["LLM API Gateway"],"summary":"Chat Completions","description":"OpenAI-compatible Chat Completions endpoint with streaming and reasoning.","operationId":"chat_completions_v1_chat_completions_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/embeddings":{"post":{"tags":["LLM API Gateway"],"summary":"Embeddings","description":"Stub endpoint for embeddings compatibility.","operationId":"embeddings_v1_embeddings_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Req"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/control/keys":{"get":{"tags":["Control API"],"summary":"List Keys","description":"List all registered API keys.","operationId":"list_keys_v1_control_keys_get","parameters":[{"name":"password","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Password"}},{"name":"X-Admin-Password","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Admin-Password"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Control API"],"summary":"Create Key","description":"Generate and register a new native API key.","operationId":"create_key_v1_control_keys_post","parameters":[{"name":"password","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Password"}},{"name":"X-Admin-Password","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Admin-Password"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateKeyRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/control/keys/{key_id}":{"delete":{"tags":["Control API"],"summary":"Delete Key","description":"Delete an API key.","operationId":"delete_key_v1_control_keys__key_id__delete","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"integer","title":"Key Id"}},{"name":"password","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Password"}},{"name":"X-Admin-Password","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Admin-Password"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/control/accounts":{"get":{"tags":["Control API"],"summary":"List Accounts","description":"List account status and concurrency metrics.","operationId":"list_accounts_v1_control_accounts_get","parameters":[{"name":"password","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Password"}},{"name":"X-Admin-Password","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Admin-Password"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/control/accounts/add-manual":{"post":{"tags":["Control API"],"summary":"Add Account Manual","description":"Manually add a Google account with OAuth refresh token to the rotation pool.","operationId":"add_account_manual_v1_control_accounts_add_manual_post","parameters":[{"name":"password","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Password"}},{"name":"X-Admin-Password","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Admin-Password"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddAccountRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/control/accounts/{email}/toggle":{"post":{"tags":["Control API"],"summary":"Toggle Account","description":"Toggle account enabled/disabled status.","operationId":"toggle_account_v1_control_accounts__email__toggle_post","parameters":[{"name":"email","in":"path","required":true,"schema":{"type":"string","title":"Email"}},{"name":"password","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Password"}},{"name":"X-Admin-Password","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Admin-Password"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/control/accounts/{email}/cooldown-reset":{"post":{"tags":["Control API"],"summary":"Reset Account Cooldown","description":"Reset rate-limit cooldown timers on an account.","operationId":"reset_account_cooldown_v1_control_accounts__email__cooldown_reset_post","parameters":[{"name":"email","in":"path","required":true,"schema":{"type":"string","title":"Email"}},{"name":"password","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Password"}},{"name":"X-Admin-Password","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Admin-Password"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/health":{"get":{"tags":["Status & Config"],"summary":"Health","description":"Service health check.","operationId":"health_v1_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health":{"get":{"tags":["Status & Config"],"summary":"Health","description":"Service health check.","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/status/auth":{"post":{"tags":["Status & Config"],"summary":"Status Auth","description":"Authenticate session password for /status console.","operationId":"status_auth_v1_status_auth_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/status/data":{"get":{"tags":["Status & Config"],"summary":"Get Status Data","description":"Retrieve aggregate system metrics, account capacity, and usage ledger.","operationId":"get_status_data_v1_status_data_get","parameters":[{"name":"password","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Password"}},{"name":"X-Admin-Password","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Admin-Password"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/status/opencode-config":{"get":{"tags":["Status & Config"],"summary":"Get Opencode Provider Config","description":"Returns provider JSON configuration for opencode.json using @ai-sdk/openai-compatible.","operationId":"get_opencode_provider_config_v1_status_opencode_config_get","parameters":[{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/opencode/provider.json":{"get":{"tags":["Status & Config"],"summary":"Get Opencode Provider Config","description":"Returns provider JSON configuration for opencode.json using @ai-sdk/openai-compatible.","operationId":"get_opencode_provider_config_v1_opencode_provider_json_get","parameters":[{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AddAccountRequest":{"properties":{"email":{"type":"string","title":"Email"},"refresh_token":{"type":"string","title":"Refresh Token"},"project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Id"},"managed_project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Managed Project Id"}},"type":"object","required":["email","refresh_token"],"title":"AddAccountRequest"},"AuthRequest":{"properties":{"password":{"type":"string","title":"Password"}},"type":"object","required":["password"],"title":"AuthRequest"},"CreateKeyRequest":{"properties":{"label":{"type":"string","title":"Label","default":"default"},"daily_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Daily Limit"}},"type":"object","title":"CreateKeyRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}}