{"record":{"id":"c00f49c2ad360125","repo":"router-for-me/CLIProxyAPI","slug":"executeprotocolstreamwithauthmanager-requires-stre","errorCode":null,"errorMessage":"ExecuteProtocolStreamWithAuthManager requires Stream=true","messagePattern":"ExecuteProtocolStreamWithAuthManager requires Stream=true","errorType":"http","errorClass":null,"httpStatus":400,"severity":"error","filePath":"sdk/api/handlers/model_execution.go","lineNumber":168,"sourceCode":"\t\tHeaders:            req.Headers,\n\t\tQuery:              req.Query,\n\t\tForcedProvider:     req.ForcedProvider,\n\t\tAuthSelectionModel: req.AuthSelectionModel,\n\t})\n\tif errMsg != nil {\n\t\treturn ModelExecutionResponse{}, errMsg\n\t}\n\treturn ModelExecutionResponse{\n\t\tStatusCode: http.StatusOK,\n\t\tHeaders:    cloneHeader(headers),\n\t\tBody:       cloneBytes(body),\n\t}, nil\n}\n\n// ExecuteProtocolStreamWithAuthManager executes a route-level streaming request with explicit protocols.\nfunc (h *BaseAPIHandler) ExecuteProtocolStreamWithAuthManager(ctx context.Context, req ProtocolExecutionRequest) (ModelExecutionStream, *interfaces.ErrorMessage) {\n\tif !req.Stream {\n\t\treturn ModelExecutionStream{}, modelExecutionModeError(\"ExecuteProtocolStreamWithAuthManager requires Stream=true\")\n\t}\n\tdataChan, headers, errChan := h.executeStreamWithAuthManagerFormats(ctx, req.EntryProtocol, req.ExitProtocol, req.Model, cloneBytes(req.Body), req.Alt, false, modelExecutionOptions{\n\t\tHeaders:            req.Headers,\n\t\tQuery:              req.Query,\n\t\tForcedProvider:     req.ForcedProvider,\n\t\tAuthSelectionModel: req.AuthSelectionModel,\n\t})\n\tchunks, errMsg := prepareModelExecutionStream(ctx, dataChan, errChan)\n\tif errMsg != nil {\n\t\treturn ModelExecutionStream{}, errMsg\n\t}\n\treturn ModelExecutionStream{\n\t\tStatusCode: http.StatusOK,\n\t\tHeaders:    cloneHeader(headers),\n\t\tChunks:     chunks,\n\t}, nil\n}\n","sourceCodeStart":150,"sourceCodeEnd":186,"githubUrl":"https://github.com/router-for-me/CLIProxyAPI/blob/78f0c4079e3e6273d65d03b5549cffc898703264/sdk/api/handlers/model_execution.go#L150-L186","documentation":"Programmer error in the route-level execution API: ExecuteProtocolStreamWithAuthManager() performs streaming requests with explicit entry/exit protocols, so passing ProtocolExecutionRequest{Stream: false} (the zero value) is rejected with a mode error. Use ExecuteProtocolWithAuthManager for non-streaming execution.","triggerScenarios":"An internal route handler or plugin calls BaseAPIHandler.ExecuteProtocolStreamWithAuthManager without setting Stream: true on the request.","commonSituations":"Forgetting the Stream flag because false is the struct zero value; sharing one request builder between both variants.","solutions":["Set Stream: true on the request before calling ExecuteProtocolStreamWithAuthManager","Use ExecuteProtocolWithAuthManager when a buffered response is wanted"],"exampleFix":"// before\nstream, errMsg := h.ExecuteProtocolStreamWithAuthManager(ctx, req) // req.Stream == false\n// after\nreq.Stream = true\nstream, errMsg := h.ExecuteProtocolStreamWithAuthManager(ctx, req)","handlingStrategy":"validation","validationCode":"if !req.Stream {\n    return nil, fmt.Errorf(\"use ExecuteProtocolWithAuthManager for buffered responses\")\n}\nstream, errMsg := h.ExecuteProtocolStreamWithAuthManager(ctx, req)","typeGuard":"func isStreamingProtocolRequest(req ProtocolExecutionRequest) bool {\n    return req.Stream\n}","tryCatchPattern":"stream, errMsg := h.ExecuteProtocolStreamWithAuthManager(ctx, req)\nif errMsg != nil && strings.Contains(errMsg.Error(), \"requires Stream=true\") {\n    log.Error(\"route bug: Stream flag missing for the streaming protocol executor\")\n}","preventionTips":["Explicitly set Stream: true whenever the streaming executor is used — the zero value fails","Add compile-time-style helpers that force the flag, e.g. newStreamProtocolRequest(...)"],"tags":["api-misuse","sdk","plugin-api","validation","streaming","protocols"],"backgroundTag":null,"analyzedSha":"78f0c4079e3e6273d65d03b5549cffc898703264","analyzedAt":"2026-08-15T12:26:37.444Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}