{"openapi":"3.1.0","info":{"title":"KLai Public v1 API","description":"KLai public AI API. Requests use OpenAI/Anthropic compatible payloads and responses; extension fields are accepted when supported.","version":"0.0.0"},"components":{"securitySchemes":{"bearerAuth":{"bearerFormat":"API Key","description":"Send `Authorization: Bearer <key>`. `x-api-key: <key>` is also accepted for compatibility.","scheme":"bearer","type":"http"},"apiKeyAuth":{"description":"Alternative API key header accepted by Anthropic-compatible clients.","in":"header","name":"x-api-key","type":"apiKey"}}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]}],"paths":{"/v1/models":{"get":{"operationId":"listV1Models","description":"List enabled platform models in OpenAI-compatible list format.","responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"capability":{"type":"string"},"id":{"type":"string"},"object":{"type":"string","const":"model"},"owned_by":{"type":"string","const":"klai"}},"required":["capability","id","object","owned_by"]}},"object":{"type":"string","const":"list"}},"required":["data","object"]}}},"description":"Enabled model list."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"details":{},"message":{"type":"string"},"type":{"type":"string"}},"required":["message","type"],"additionalProperties":{}}},"required":["error"]}}},"description":"Server error."}},"tags":["v1 Models"]}},"/v1/credits":{"get":{"operationId":"getV1Credits","description":"Read the authenticated API key owner credit balance. Values are returned as Credits with four-decimal storage precision.","responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"balance":{"type":"number"},"currency":{"type":"string","const":"credits"},"frozen_balance":{"type":"number"},"object":{"type":"string","const":"credit.balance"},"total_balance":{"type":"number"}},"required":["balance","currency","frozen_balance","object","total_balance"]}}},"description":"Credit balance for the authenticated account."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"details":{},"message":{"type":"string"},"type":{"type":"string"}},"required":["message","type"],"additionalProperties":{}}},"required":["error"]}}},"description":"Missing or invalid API key."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"details":{},"message":{"type":"string"},"type":{"type":"string"}},"required":["message","type"],"additionalProperties":{}}},"required":["error"]}}},"description":"Server error."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]}],"tags":["v1 Credits"]}},"/v1/chat/completions":{"post":{"operationId":"createV1ChatCompletion","description":"OpenAI-compatible chat completions endpoint. Common fields are documented and extension fields are accepted.","parameters":[{"description":"Optional stable conversation key used for soft channel affinity.","in":"header","name":"x-affinity-key","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":{}}},"text/event-stream":{"schema":{"type":"string"}}},"description":"Chat completion or streaming events."},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"details":{},"message":{"type":"string"},"type":{"type":"string"}},"required":["message","type"],"additionalProperties":{}}},"required":["error"]}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"details":{},"message":{"type":"string"},"type":{"type":"string"}},"required":["message","type"],"additionalProperties":{}}},"required":["error"]}}},"description":"Missing or invalid API key."},"502":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"details":{},"message":{"type":"string"},"type":{"type":"string"}},"required":["message","type"],"additionalProperties":{}}},"required":["error"]}}},"description":"The requested model is temporarily unavailable."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]}],"tags":["v1 Chat"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"frequency_penalty":{"type":"number"},"logit_bias":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"max_completion_tokens":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"max_tokens":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"messages":{"minItems":1,"type":"array","items":{"type":"object","properties":{"content":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"object","properties":{},"additionalProperties":{}}}]},"name":{"type":"string"},"role":{"type":"string"}},"required":["content","role"],"additionalProperties":{}}},"model":{"type":"string","minLength":1},"n":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"presence_penalty":{"type":"number"},"response_format":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"seed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"stop":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"stream":{"type":"boolean"},"temperature":{"type":"number"},"tool_choice":{},"tools":{"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"top_p":{"type":"number"},"user":{"type":"string"}},"required":["messages","model"],"additionalProperties":{}}}}}}},"/v1/responses":{"post":{"operationId":"createV1Response","description":"OpenAI-compatible Responses endpoint. `prompt_cache_key` is also used for soft channel affinity.","responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":{}}},"text/event-stream":{"schema":{"type":"string"}}},"description":"Model response or streaming events."},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"details":{},"message":{"type":"string"},"type":{"type":"string"}},"required":["message","type"],"additionalProperties":{}}},"required":["error"]}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"details":{},"message":{"type":"string"},"type":{"type":"string"}},"required":["message","type"],"additionalProperties":{}}},"required":["error"]}}},"description":"Missing or invalid API key."},"502":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"details":{},"message":{"type":"string"},"type":{"type":"string"}},"required":["message","type"],"additionalProperties":{}}},"required":["error"]}}},"description":"The requested model is temporarily unavailable."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]}],"tags":["v1 Responses"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"background":{"type":"boolean"},"include":{"type":"array","items":{"type":"string"}},"input":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"object","properties":{},"additionalProperties":{}}}]},"instructions":{"type":"string"},"max_output_tokens":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"metadata":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"model":{"type":"string","minLength":1},"parallel_tool_calls":{"type":"boolean"},"previous_response_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"prompt_cache_key":{"type":"string","minLength":1,"maxLength":512},"reasoning":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"store":{"type":"boolean"},"stream":{"type":"boolean"},"text":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"tool_choice":{},"tools":{"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}}},"required":["model"],"additionalProperties":{}}}}}}},"/v1/images/generations":{"post":{"operationId":"createV1ImageGeneration","description":"OpenAI-compatible image generation endpoint. Supports platform async task responses and extension parameters.","responses":{"200":{"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"error":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]},"id":{"type":"string"},"model":{"type":"string"},"object":{"type":"string"},"results":{"type":"array","items":{"type":"string"}},"status":{"type":"string"},"usage":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["error","id","model","object","results","status","usage"],"additionalProperties":{}},{"type":"object","properties":{},"additionalProperties":{}}]}}},"description":"Platform task response or compatible synchronous response."},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"details":{},"message":{"type":"string"},"type":{"type":"string"}},"required":["message","type"],"additionalProperties":{}}},"required":["error"]}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"details":{},"message":{"type":"string"},"type":{"type":"string"}},"required":["message","type"],"additionalProperties":{}}},"required":["error"]}}},"description":"Missing or invalid API key."},"502":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"details":{},"message":{"type":"string"},"type":{"type":"string"}},"required":["message","type"],"additionalProperties":{}}},"required":["error"]}}},"description":"The requested model is temporarily unavailable."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]}],"tags":["v1 Images"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"background":{"type":"string"},"image_urls":{"type":"array","items":{"type":"string"}},"model":{"type":"string","minLength":1},"moderation":{"type":"string"},"n":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"output_compression":{"type":"number"},"output_format":{"type":"string"},"prompt":{"type":"string","minLength":1},"quality":{"type":"string"},"resolution":{"type":"string"},"response_format":{"type":"string"},"size":{"type":"string"},"style":{"type":"string"},"user":{"type":"string"}},"required":["model","prompt"],"additionalProperties":{}}}}}}},"/v1/images/edits":{"post":{"operationId":"createV1ImageEdit","description":"OpenAI-compatible image edit endpoint. JSON extension fields and multipart form data are accepted.","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"properties":{"image":{"description":"Reference image file or compatible image value."},"image_urls":{"items":{"type":"string"},"type":"array"},"mask":{"description":"Optional mask file or compatible mask value."},"model":{"type":"string"},"n":{"minimum":1,"type":"integer"},"prompt":{"type":"string"},"quality":{"type":"string"},"resolution":{"type":"string"},"response_format":{"type":"string"},"size":{"type":"string"},"user":{"type":"string"}},"required":["model","prompt"],"type":"object"}},"multipart/form-data":{"schema":{"additionalProperties":true,"properties":{"image":{"description":"Reference image file or compatible image value."},"image_urls":{"items":{"type":"string"},"type":"array"},"mask":{"description":"Optional mask file or compatible mask value."},"model":{"type":"string"},"n":{"minimum":1,"type":"integer"},"prompt":{"type":"string"},"quality":{"type":"string"},"resolution":{"type":"string"},"response_format":{"type":"string"},"size":{"type":"string"},"user":{"type":"string"}},"required":["model","prompt"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"error":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]},"id":{"type":"string"},"model":{"type":"string"},"object":{"type":"string"},"results":{"type":"array","items":{"type":"string"}},"status":{"type":"string"},"usage":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["error","id","model","object","results","status","usage"],"additionalProperties":{}},{"type":"object","properties":{},"additionalProperties":{}}]}}},"description":"Platform task response or compatible synchronous response."},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"details":{},"message":{"type":"string"},"type":{"type":"string"}},"required":["message","type"],"additionalProperties":{}}},"required":["error"]}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"details":{},"message":{"type":"string"},"type":{"type":"string"}},"required":["message","type"],"additionalProperties":{}}},"required":["error"]}}},"description":"Missing or invalid API key."},"502":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"details":{},"message":{"type":"string"},"type":{"type":"string"}},"required":["message","type"],"additionalProperties":{}}},"required":["error"]}}},"description":"The requested model is temporarily unavailable."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]}],"tags":["v1 Images"]}},"/v1/videos/generations":{"post":{"operationId":"createV1VideoGeneration","description":"OpenAI-style video generation proxy. The platform may return a sanitized async task payload for long-running video jobs.","responses":{"200":{"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"error":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]},"id":{"type":"string"},"model":{"type":"string"},"object":{"type":"string"},"results":{"type":"array","items":{"type":"string"}},"status":{"type":"string"},"usage":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["error","id","model","object","results","status","usage"],"additionalProperties":{}},{"type":"object","properties":{},"additionalProperties":{}}]}}},"description":"Platform task response or compatible synchronous response."},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"details":{},"message":{"type":"string"},"type":{"type":"string"}},"required":["message","type"],"additionalProperties":{}}},"required":["error"]}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"details":{},"message":{"type":"string"},"type":{"type":"string"}},"required":["message","type"],"additionalProperties":{}}},"required":["error"]}}},"description":"Missing or invalid API key."},"502":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"details":{},"message":{"type":"string"},"type":{"type":"string"}},"required":["message","type"],"additionalProperties":{}}},"required":["error"]}}},"description":"The requested model is temporarily unavailable."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]}],"tags":["v1 Videos"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"duration":{"anyOf":[{"type":"number"},{"type":"string"}]},"image":{"type":"string"},"image_url":{"type":"string"},"model":{"type":"string","minLength":1},"n":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"prompt":{"type":"string","minLength":1},"quality":{"type":"string"},"resolution":{"type":"string"},"seed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"size":{"type":"string"},"user":{"type":"string"}},"required":["model","prompt"],"additionalProperties":{}}}}}}},"/v1/messages":{"post":{"operationId":"createV1Message","description":"Anthropic-compatible messages endpoint. `anthropic-version` is accepted when present; additional fields are supported.","parameters":[{"description":"Optional Anthropic API version header.","in":"header","name":"anthropic-version","required":false,"schema":{"type":"string"}},{"description":"Optional Anthropic beta feature header. Forwarded to compatible model providers.","in":"header","name":"anthropic-beta","required":false,"schema":{"type":"string"}},{"description":"Optional stable conversation key used for soft channel affinity.","in":"header","name":"x-affinity-key","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":{}}},"text/event-stream":{"schema":{"type":"string"}}},"description":"Message response or streaming events."},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"message":{"type":"string"},"type":{"type":"string"}},"required":["message","type"],"additionalProperties":{}},"type":{"type":"string","const":"error"}},"required":["error","type"]}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"message":{"type":"string"},"type":{"type":"string"}},"required":["message","type"],"additionalProperties":{}},"type":{"type":"string","const":"error"}},"required":["error","type"]}}},"description":"Missing or invalid API key."},"502":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"message":{"type":"string"},"type":{"type":"string"}},"required":["message","type"],"additionalProperties":{}},"type":{"type":"string","const":"error"}},"required":["error","type"]}}},"description":"The requested model is temporarily unavailable."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]}],"tags":["v1 Messages"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"max_tokens":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"messages":{"minItems":1,"type":"array","items":{"type":"object","properties":{"content":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"object","properties":{"text":{"type":"string"},"type":{"type":"string"}},"required":["type"],"additionalProperties":{}}}]},"role":{"type":"string"}},"required":["content","role"],"additionalProperties":{}}},"metadata":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"model":{"type":"string","minLength":1},"stop_sequences":{"type":"array","items":{"type":"string"}},"stream":{"type":"boolean"},"system":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"object","properties":{"text":{"type":"string"},"type":{"type":"string"}},"required":["type"],"additionalProperties":{}}}]},"temperature":{"type":"number"},"tool_choice":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"tools":{"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"top_k":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"top_p":{"type":"number"}},"required":["max_tokens","messages","model"],"additionalProperties":{}}}}}}},"/v1/tasks/{id}":{"get":{"operationId":"getV1Task","description":"Read a platform task payload. Internal execution details are never returned.","parameters":[{"description":"Platform task id returned by an async generation request.","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]},"id":{"type":"string"},"model":{"type":"string"},"object":{"type":"string"},"results":{"type":"array","items":{"type":"string"}},"status":{"type":"string"},"usage":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["error","id","model","object","results","status","usage"],"additionalProperties":{}}}},"description":"Sanitized task payload."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"details":{},"message":{"type":"string"},"type":{"type":"string"}},"required":["message","type"],"additionalProperties":{}}},"required":["error"]}}},"description":"Task not found."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"details":{},"message":{"type":"string"},"type":{"type":"string"}},"required":["message","type"],"additionalProperties":{}}},"required":["error"]}}},"description":"Server error."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]}],"tags":["v1 Tasks"]}}}}