{"openapi":"3.0.0","info":{"title":"sass-maker AI Gateway API","version":"1.0.0","description":"OpenAI-compatible AI gateway with health-aware free-tier routing across Workers AI, Groq, Gemini, Voyage AI embeddings, voice (Whisper STT + Workers AI TTS), and optional OpenRouter/Cerebras."},"components":{"schemas":{"ChatCompletionResponse":{"type":"object","properties":{"id":{"type":"string"},"object":{"type":"string"},"created":{"type":"number"},"model":{"type":"string"},"choices":{"type":"array","items":{"type":"object","properties":{"index":{"type":"number"},"message":{"type":"object","properties":{"role":{"type":"string"},"content":{"type":"string","nullable":true}},"required":["role","content"]},"finish_reason":{"type":"string","nullable":true}},"required":["index","message","finish_reason"]}},"usage":{"type":"object","properties":{"prompt_tokens":{"type":"number"},"completion_tokens":{"type":"number"},"total_tokens":{"type":"number"}}},"x_gateway":{"$ref":"#/components/schemas/GatewayMeta"}},"required":["id","object","created","model","choices","x_gateway"]},"GatewayMeta":{"type":"object","properties":{"provider":{"type":"string"},"model":{"type":"string"},"attempts":{"type":"integer","minimum":1},"reasoning_effort":{"type":"string","enum":["auto","low","medium","high"]},"request_id":{"type":"string"},"project_id":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[a-zA-Z0-9._:-]+$"}},"required":["provider","model","attempts","reasoning_effort","request_id"]},"ErrorResponse":{"type":"object","properties":{"error":{"type":"object","properties":{"message":{"type":"string"},"type":{"type":"string"},"code":{"type":"string"}},"required":["message","type"]}},"required":["error"]},"ChatCompletionRequest":{"type":"object","properties":{"model":{"type":"string","default":"auto"},"messages":{"type":"array","items":{"$ref":"#/components/schemas/ChatMessage"}},"prompt":{"type":"string"},"stream":{"type":"boolean","default":false},"temperature":{"type":"number","minimum":0,"maximum":2},"max_tokens":{"type":"integer","minimum":1,"maximum":8192},"reasoning_effort":{"type":"string","enum":["auto","low","medium","high"],"default":"auto"},"min_reasoning_level":{"type":"string","enum":["low","medium","high"]},"project_id":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[a-zA-Z0-9._:-]+$"},"tools":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["function"]},"function":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"parameters":{"type":"object","additionalProperties":{"nullable":true}}},"required":["name"]}},"required":["type","function"]}},"tool_choice":{"anyOf":[{"type":"string","enum":["none","auto","required"]},{"type":"object","properties":{"type":{"type":"string","enum":["function"]},"function":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"]}},"required":["type","function"]}]},"response_format":{"type":"object","properties":{"type":{"type":"string","enum":["text","json_object"]}},"required":["type"]}}},"ChatMessage":{"type":"object","properties":{"role":{"type":"string","enum":["system","user","assistant","tool"]},"content":{"anyOf":[{"type":"string","minLength":1,"maxLength":100000},{"type":"array","items":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string","minLength":1,"maxLength":100000}},"required":["type","text"]},{"type":"object","properties":{"type":{"type":"string","enum":["image_url"]},"image_url":{"type":"object","properties":{"url":{"type":"string","minLength":1},"detail":{"type":"string","enum":["auto","low","high"]}},"required":["url"]}},"required":["type","image_url"]}]},"minItems":1}]},"name":{"type":"string"}},"required":["role","content"]},"ReplayResponse":{"type":"object","properties":{"ok":{"type":"boolean"},"request_id":{"type":"string"},"provider":{"type":"string"},"model":{"type":"string"},"latency_ms":{"type":"number"},"selected":{"type":"object","properties":{"id":{"type":"string"},"provider":{"type":"string"},"model":{"type":"string"},"reasoning":{"type":"string"},"supports_streaming":{"type":"boolean"}},"required":["id","provider","model","reasoning","supports_streaming"]},"completion":{"type":"object","additionalProperties":{"nullable":true}},"error":{"type":"object","properties":{"message":{"type":"string"},"type":{"type":"string"}},"required":["message","type"]}},"required":["ok","request_id","provider","model","latency_ms","selected"]},"ReplayRequest":{"allOf":[{"$ref":"#/components/schemas/ChatCompletionRequest"},{"type":"object","properties":{"provider":{"type":"string","enum":["workers_ai","groq","gemini","openrouter","cerebras","sambanova","nvidia","github_models","pollinations","cohere","mistral","command_code"]},"include_completion":{"type":"boolean","default":true}}}]},"ResponsesResponse":{"type":"object","properties":{"id":{"type":"string"},"object":{"type":"string","enum":["response"]},"created_at":{"type":"number"},"status":{"type":"string"},"model":{"type":"string"},"output":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["message"]},"id":{"type":"string"},"status":{"type":"string"},"role":{"type":"string","enum":["assistant"]},"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["output_text"]},"text":{"type":"string"},"annotations":{"type":"array","items":{"nullable":true}}},"required":["type","text","annotations"]}}},"required":["type","id","status","role","content"]}},"output_text":{"type":"string"},"usage":{"type":"object","properties":{"input_tokens":{"type":"number"},"output_tokens":{"type":"number"},"total_tokens":{"type":"number"}}},"x_gateway":{"$ref":"#/components/schemas/GatewayMeta"}},"required":["id","object","created_at","status","model","output","output_text"]},"ResponsesRequest":{"type":"object","properties":{"model":{"type":"string","default":"auto"},"input":{"anyOf":[{"type":"string"},{"type":"array","items":{"nullable":true}},{"type":"object","additionalProperties":{"nullable":true}}]},"stream":{"type":"boolean","default":false},"temperature":{"type":"number","minimum":0,"maximum":2},"max_output_tokens":{"type":"integer","minimum":1,"maximum":8192},"reasoning_effort":{"type":"string","enum":["auto","low","medium","high"]},"min_reasoning_level":{"type":"string","enum":["low","medium","high"]},"reasoning":{"type":"object","properties":{"effort":{"type":"string","enum":["low","medium","high"]}}},"project_id":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[a-zA-Z0-9._:-]+$"}},"required":["input"]},"EmbeddingsResponse":{"type":"object","properties":{"object":{"type":"string","enum":["list"]},"data":{"type":"array","items":{"type":"object","properties":{"object":{"type":"string","enum":["embedding"]},"index":{"type":"number"},"embedding":{"type":"array","items":{"type":"number"}}},"required":["object","index","embedding"]}},"model":{"type":"string"},"usage":{"type":"object","properties":{"prompt_tokens":{"type":"number"},"total_tokens":{"type":"number"}}},"x_gateway":{"$ref":"#/components/schemas/GatewayMeta"}},"required":["object","data","model","x_gateway"]},"EmbeddingsRequest":{"type":"object","properties":{"model":{"type":"string","minLength":1},"input":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string","minLength":1},"minItems":1}]},"encoding_format":{"type":"string","enum":["float"]},"dimensions":{"type":"integer","minimum":1,"maximum":4096},"project_id":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[a-zA-Z0-9._:-]+$"}},"required":["model","input"]},"ImageGenerationResponse":{"type":"object","properties":{"created":{"type":"number"},"data":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"b64_json":{"type":"string"},"revised_prompt":{"type":"string"}}}},"x_gateway":{"$ref":"#/components/schemas/GatewayMeta"}},"required":["created","data"]},"ImageGenerationRequest":{"type":"object","properties":{"model":{"type":"string","default":"auto"},"prompt":{"type":"string","minLength":1,"maxLength":8000},"n":{"type":"integer","minimum":1,"maximum":4},"size":{"type":"string","enum":["256x256","512x512","1024x1024","1024x1792","1792x1024"]},"response_format":{"type":"string","enum":["url","b64_json"]},"quality":{"type":"string"},"style":{"type":"string"},"project_id":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[a-zA-Z0-9._:-]+$"}},"required":["prompt"]},"VideoGenerationResponse":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["processing","completed","failed"]},"video_url":{"type":"string"},"poll_url":{"type":"string"},"error":{"type":"string"},"x_gateway":{"$ref":"#/components/schemas/GatewayMeta"}},"required":["id","status"]},"VideoGenerationRequest":{"type":"object","properties":{"model":{"type":"string","default":"auto"},"prompt":{"type":"string","minLength":1,"maxLength":8000},"duration_seconds":{"type":"integer","minimum":1,"maximum":60},"aspect_ratio":{"type":"string","enum":["16:9","9:16","1:1"]},"image_url":{"type":"string","format":"uri"},"project_id":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[a-zA-Z0-9._:-]+$"}},"required":["prompt"]},"TtsRequest":{"type":"object","properties":{"model":{"type":"string","default":"auto"},"input":{"type":"string","minLength":1,"maxLength":10000},"voice":{"type":"string"},"response_format":{"type":"string","enum":["mp3","wav","opus","flac"]},"speed":{"type":"number","minimum":0.25,"maximum":4},"project_id":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[a-zA-Z0-9._:-]+$"}},"required":["input"]}},"parameters":{}},"paths":{"/v1/chat/completions":{"post":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatCompletionRequest"}}}},"responses":{"200":{"description":"Chat completion response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatCompletionResponse"}},"text/event-stream":{"schema":{"type":"object","properties":{},"description":"SSE stream"}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"No healthy free-tier model available","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/debug/replay":{"post":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplayRequest"}}}},"responses":{"200":{"description":"Direct provider replay result for debugging","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplayResponse"}}}},"400":{"description":"Invalid replay request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Provider replay failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplayResponse"}}}},"503":{"description":"No matching provider/model configured","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/responses":{"post":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponsesRequest"}}}},"responses":{"200":{"description":"Responses API compatible response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponsesResponse"}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"No healthy free-tier model available","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/embeddings":{"post":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmbeddingsRequest"}}}},"responses":{"200":{"description":"Embeddings response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmbeddingsResponse"}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"No embedding provider available","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/images/generations":{"post":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageGenerationRequest"}}}},"responses":{"200":{"description":"Image generated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageGenerationResponse"}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"All providers failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"No image provider configured","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/videos/generations":{"post":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VideoGenerationRequest"}}}},"responses":{"200":{"description":"Video completed synchronously","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VideoGenerationResponse"}}}},"202":{"description":"Video job submitted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VideoGenerationResponse"}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"No video provider","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/videos/generations/{id}":{"get":{"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":256},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Video job status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VideoGenerationResponse"}}}},"404":{"description":"Job not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Not implemented — upstream poll endpoint undocumented","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Provider not configured","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/audio/speech":{"post":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TtsRequest"}}}},"responses":{"200":{"description":"Synthesized audio bytes","content":{"audio/mpeg":{"schema":{"nullable":true}},"audio/wav":{"schema":{"nullable":true}},"audio/opus":{"schema":{"nullable":true}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"No TTS provider","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/models":{"get":{"responses":{"200":{"description":"Models and routing status","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"provider":{"type":"string"},"model":{"type":"string"},"reasoning":{"type":"string"},"native_reasoning":{"type":"boolean"},"tool_calling":{"type":"boolean"},"json_mode":{"type":"boolean"},"vision":{"type":"boolean"},"context_window":{"type":"number"},"max_output_tokens":{"type":"number"},"supports_streaming":{"type":"boolean"},"cooldown_until":{"type":"number"},"success_rate":{"type":"number"},"headroom":{"type":"number"},"evaluation_weight":{"type":"number"},"evaluation_sample_count":{"type":"number"},"evaluated_at":{"type":"string","nullable":true},"enabled":{"type":"boolean"}},"required":["id","provider","model","reasoning","native_reasoning","tool_calling","json_mode","vision","context_window","max_output_tokens","supports_streaming","cooldown_until","success_rate","headroom","evaluation_weight","evaluation_sample_count","evaluated_at","enabled"]}}},"required":["data"]}}}}}}},"/v1/benchmark/optimizer":{"get":{"responses":{"200":{"description":"Fixture-backed benchmark matrix and workload route recommendations","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"source":{"type":"string"},"fixture_id":{"type":"string"},"generated_at":{"type":"string"},"privacy":{"type":"object","properties":{"stores_prompt_text":{"type":"boolean","enum":[false]},"uses_synthetic_benchmarks":{"type":"boolean"}},"required":["stores_prompt_text","uses_synthetic_benchmarks"]},"cost_basis":{"type":"object","properties":{"unit":{"type":"string"},"note":{"type":"string"}},"required":["unit","note"]},"workloads":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"prompt_class":{"type":"string"},"description":{"type":"string"}},"required":["id","label","prompt_class","description"]}},"candidates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"provider":{"type":"string"},"model":{"type":"string"},"quality_tier":{"type":"string","enum":["low","medium","high"]},"cost_usd_per_1m_tokens":{"type":"number"},"latency_ms_p50":{"type":"number"},"latency_ms_p90":{"type":"number"},"success_rate":{"type":"number"},"cooldown_until":{"type":"number"},"status":{"type":"string","enum":["available","degraded","cooldown","exhausted"]},"headroom":{"type":"number"},"score":{"type":"number"}},"required":["id","provider","model","quality_tier","cost_usd_per_1m_tokens","latency_ms_p50","latency_ms_p90","success_rate","cooldown_until","status","headroom","score"]}},"routes_by_workload":{"type":"array","items":{"type":"object","properties":{"workload_id":{"type":"string"},"recommended":{"type":"object","properties":{"provider":{"type":"string"},"model":{"type":"string"},"id":{"type":"string"},"reason":{"type":"string"}},"required":["provider","model","id","reason"]},"alternates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"reason":{"type":"string"}},"required":["id","reason"]}}},"required":["workload_id","recommended","alternates"]}},"experiments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"recorded_at":{"type":"string"},"change":{"type":"string"},"notes":{"type":"string"},"baseline_id":{"type":"string"},"metrics":{"type":"object","properties":{"avg_success_rate":{"type":"number"},"avg_latency_ms":{"type":"number"},"estimated_cost_usd_per_1k_req":{"type":"number"},"fallback_rate":{"type":"number"}},"required":["avg_success_rate","avg_latency_ms","estimated_cost_usd_per_1k_req","fallback_rate"]}},"required":["id","label","recorded_at","change","notes","metrics"]}}},"required":["ok","source","fixture_id","generated_at","privacy","cost_basis","workloads","candidates","routes_by_workload","experiments"]}}}}}}},"/v1/benchmark/experiments":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"label":{"type":"string","minLength":1},"change":{"type":"string"},"notes":{"type":"string"},"baseline_id":{"type":"string"}},"required":["label"]}}}},"responses":{"200":{"description":"Prototype experiment ledger entry (client merges; no server persistence)","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"stored":{"type":"string","enum":["session_fixture_only"]},"entry":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"recorded_at":{"type":"string"},"change":{"type":"string"},"notes":{"type":"string"},"baseline_id":{"type":"string"},"metrics":{"type":"object","properties":{"avg_success_rate":{"type":"number"},"avg_latency_ms":{"type":"number"},"estimated_cost_usd_per_1k_req":{"type":"number"},"fallback_rate":{"type":"number"}},"required":["avg_success_rate","avg_latency_ms","estimated_cost_usd_per_1k_req","fallback_rate"]}},"required":["id","label","recorded_at","change","notes","metrics"]},"message":{"type":"string"}},"required":["ok","stored","entry","message"]}}}}}}},"/v1/routing/status":{"get":{"responses":{"200":{"description":"Operator-readable text routing and fallback status","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"generated_at":{"type":"string"},"summary":{"type":"object","properties":{"configured_models":{"type":"number"},"available_models":{"type":"number"},"degraded_models":{"type":"number"},"cooldown_models":{"type":"number"},"exhausted_models":{"type":"number"},"fallback_ready":{"type":"boolean"},"top_provider":{"type":"string","nullable":true}},"required":["configured_models","available_models","degraded_models","cooldown_models","exhausted_models","fallback_ready","top_provider"]},"fallback_order":{"type":"array","items":{"type":"object","properties":{"rank":{"type":"number"},"id":{"type":"string"},"provider":{"type":"string"},"model":{"type":"string"},"reasoning":{"type":"string"},"native_reasoning":{"type":"boolean"},"status":{"type":"string","enum":["available","degraded","cooldown","exhausted"]},"success_rate":{"type":"number"},"headroom":{"type":"number"},"avg_latency_ms":{"type":"number"},"p90_latency_ms":{"type":"number"},"p99_latency_ms":{"type":"number"},"cooldown_until":{"type":"number"},"daily_used":{"type":"number"},"daily_limit":{"type":"number","nullable":true},"quota_status":{"type":"string"},"reasons":{"type":"array","items":{"type":"string"}}},"required":["rank","id","provider","model","reasoning","native_reasoning","status","success_rate","headroom","avg_latency_ms","p90_latency_ms","p99_latency_ms","cooldown_until","daily_used","daily_limit","reasons"]}},"providers":{"type":"object","additionalProperties":{"type":"object","properties":{"configured_models":{"type":"number"},"available_models":{"type":"number"},"cooldown_models":{"type":"number"},"exhausted_models":{"type":"number"},"degraded_models":{"type":"number"},"best_model":{"type":"string","nullable":true}},"required":["configured_models","available_models","cooldown_models","exhausted_models","degraded_models","best_model"]}}},"required":["ok","generated_at","summary","fallback_order","providers"]}}}}}}},"/v1/routing/config":{"get":{"responses":{"200":{"description":"Routing policy: scoring weights, cooldown constants, retry limits, and degradation thresholds","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"scoring":{"type":"object","properties":{"success_rate":{"type":"number"},"headroom":{"type":"number"},"latency":{"type":"number"},"reasoning_fit":{"type":"number"},"priority":{"type":"number"}},"required":["success_rate","headroom","latency","reasoning_fit","priority"]},"evaluation_weight_range":{"type":"array","items":{"type":"number"},"minItems":2,"maxItems":2},"cooldown":{"type":"object","properties":{"single_retriable_failure_seconds":{"type":"number"},"burst_retriable_failures_seconds":{"type":"number"},"burst_threshold":{"type":"number"},"burst_window":{"type":"number"}},"required":["single_retriable_failure_seconds","burst_retriable_failures_seconds","burst_threshold","burst_window"]},"retry":{"type":"object","properties":{"max_attempts":{"type":"number"}},"required":["max_attempts"]},"thresholds":{"type":"object","properties":{"degraded_success_rate":{"type":"number"},"degraded_latency_ms":{"type":"number"},"degraded_short_retriable_failures":{"type":"number"}},"required":["degraded_success_rate","degraded_latency_ms","degraded_short_retriable_failures"]}},"required":["ok","scoring","evaluation_weight_range","cooldown","retry","thresholds"]}}}}}}},"/v1/provider-quotas":{"get":{"responses":{"200":{"description":"Advisory provider quota status from official provider endpoints","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"quotas":{"type":"object","additionalProperties":{"type":"object","properties":{"provider":{"type":"string"},"status":{"type":"string","enum":["ok","exhausted","unknown"]},"source":{"type":"string","enum":["openrouter_key","not_supported","unconfigured","error"]},"checkedAt":{"type":"string"},"reason":{"type":"string"},"limitRemaining":{"type":"number","nullable":true},"limit":{"type":"number","nullable":true},"usage":{"type":"number"},"usageDaily":{"type":"number"},"isFreeTier":{"type":"boolean"},"freeDailyLimit":{"type":"number"}},"required":["provider","status","source","checkedAt"]}}},"required":["ok","quotas"]}}}}}}},"/health":{"get":{"responses":{"200":{"description":"Gateway health summary","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"models":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"attempts":{"type":"number"},"success_rate":{"type":"number"},"avg_latency_ms":{"type":"number"},"p90_latency_ms":{"type":"number"},"p99_latency_ms":{"type":"number"},"cooldown_until":{"type":"number"},"headroom":{"type":"number"},"daily_used":{"type":"number"},"daily_limit":{"type":"number","nullable":true}},"required":["key","attempts","success_rate","avg_latency_ms","p90_latency_ms","p99_latency_ms","cooldown_until","headroom","daily_used","daily_limit"]}}},"required":["ok","models"]}}}}}}},"/v1/routing/ledger":{"get":{"parameters":[{"schema":{"type":"string"},"required":false,"name":"project_id","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":90,"default":7},"required":false,"name":"days","in":"query"}],"responses":{"200":{"description":"Anonymous routing experiment ledger (no prompt text)","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"generated_at":{"type":"string"},"days":{"type":"number"},"project_id":{"type":"string"},"privacy":{"type":"object","properties":{"stores_prompt_text":{"type":"boolean","enum":[false]},"stores_request_ids":{"type":"boolean","enum":[false]}},"required":["stores_prompt_text","stores_request_ids"]},"summary":{"type":"object","properties":{"total_requests":{"type":"number"},"successful_requests":{"type":"number"},"failed_requests":{"type":"number"},"success_rate":{"type":"number"},"avg_latency_ms":{"type":"number"},"avg_attempts":{"type":"number"},"fallback_rate":{"type":"number"}},"required":["total_requests","successful_requests","failed_requests","success_rate","avg_latency_ms","avg_attempts","fallback_rate"]},"by_prompt_class":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"requests":{"type":"number"},"successful":{"type":"number"},"failed":{"type":"number"},"success_rate":{"type":"number"},"avg_latency_ms":{"type":"number"},"avg_attempts":{"type":"number"},"fallback_rate":{"type":"number"}},"required":["key","requests","successful","failed","success_rate","avg_latency_ms","avg_attempts","fallback_rate"]}},"by_outcome":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"requests":{"type":"number"},"successful":{"type":"number"},"failed":{"type":"number"},"success_rate":{"type":"number"},"avg_latency_ms":{"type":"number"},"avg_attempts":{"type":"number"},"fallback_rate":{"type":"number"}},"required":["key","requests","successful","failed","success_rate","avg_latency_ms","avg_attempts","fallback_rate"]}},"by_model":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"requests":{"type":"number"},"successful":{"type":"number"},"failed":{"type":"number"},"success_rate":{"type":"number"},"avg_latency_ms":{"type":"number"},"avg_attempts":{"type":"number"},"fallback_rate":{"type":"number"}},"required":["key","requests","successful","failed","success_rate","avg_latency_ms","avg_attempts","fallback_rate"]}},"by_quota_signature":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"requests":{"type":"number"},"successful":{"type":"number"},"failed":{"type":"number"},"success_rate":{"type":"number"},"avg_latency_ms":{"type":"number"},"avg_attempts":{"type":"number"},"fallback_rate":{"type":"number"}},"required":["key","requests","successful","failed","success_rate","avg_latency_ms","avg_attempts","fallback_rate"]}},"top_fallback_signatures":{"type":"array","items":{"type":"object","properties":{"signature":{"type":"string"},"requests":{"type":"number"},"success_rate":{"type":"number"},"avg_latency_ms":{"type":"number"},"fallback_rate":{"type":"number"}},"required":["signature","requests","success_rate","avg_latency_ms","fallback_rate"]}}},"required":["ok","generated_at","days","privacy","summary","by_prompt_class","by_outcome","by_model","by_quota_signature","top_fallback_signatures"]}}}}}}},"/v1/analytics":{"get":{"parameters":[{"schema":{"type":"string"},"required":false,"name":"project_id","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":365},"required":false,"name":"days","in":"query"}],"responses":{"200":{"description":"Usage analytics","content":{"application/json":{"schema":{"type":"object","properties":{"total_requests":{"type":"number"},"successful_requests":{"type":"number"},"failed_requests":{"type":"number"},"success_rate":{"type":"number"},"providers":{"type":"object","additionalProperties":{"type":"object","properties":{"requests":{"type":"number"},"successful":{"type":"number"},"failed":{"type":"number"}},"required":["requests","successful","failed"]}},"models":{"type":"object","additionalProperties":{"type":"object","properties":{"requests":{"type":"number"},"successful":{"type":"number"},"failed":{"type":"number"}},"required":["requests","successful","failed"]}},"projects":{"type":"object","additionalProperties":{"type":"object","properties":{"requests":{"type":"number"},"successful":{"type":"number"},"failed":{"type":"number"}},"required":["requests","successful","failed"]}},"daily":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"requests":{"type":"number"},"successful":{"type":"number"},"failed":{"type":"number"}},"required":["date","requests","successful","failed"]}}},"required":["total_requests","successful_requests","failed_requests","success_rate","providers","models","projects","daily"]}}}},"400":{"description":"Bad Request"}}}}}}