%% Request pipeline for /v1/chat/completions %% Reflects: src/app/api/v1/chat/completions/route.ts → open-sse/handlers/chatCore.ts %% v3.8.0 flowchart LR Client["Client
(IDE/CLI/SDK)"] --> Route["Next.js Route
/v1/chat/completions"] Route --> CORS["CORS preflight"] CORS --> Validate["Zod validation
(request body)"] Validate --> Authz["AuthZ pipeline
(extractApiKey +
isValidApiKey)"] Authz --> Policy["API key policy
(allowlist + scopes)"] Policy --> Guard["Prompt-injection
guardrail"] Guard --> ChatCore["handleChatCore"] ChatCore --> Cache{"Cache hit?"} Cache -->|yes| Return["Return cached"] Cache -->|no| Rate["Rate limit
(per-key, per-IP)"] Rate --> Combo{"Combo
target?"} Combo -->|combo| Resolve["resolveComboTargets
(14 strategies)"] Resolve --> Single["handleSingleModel
(per target)"] Combo -->|single| Single Single --> Translate["translateRequest
(OpenAI↔Claude↔Gemini)"] Translate --> Exec["getExecutor
(31 executors)"] Exec --> Upstream["Upstream Provider
(177 providers)"] Upstream --> Stream["SSE / JSON"] Stream --> Transformer["responsesTransformer
(Responses↔Chat)"] Transformer --> Client