{"record":{"id":"c75e5b9c1061e850","repo":"continuedev/continue","slug":"bedrock-does-not-support-completions-api","errorCode":null,"errorMessage":"Bedrock does not support completions API","messagePattern":"Bedrock does not support completions API","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/openai-adapters/src/apis/Bedrock.ts","lineNumber":577,"sourceCode":"    } catch (error) {\n      if (error instanceof Error) {\n        if (\"code\" in error) {\n          throw new Error(\n            `AWS Bedrock stream error (${(error as any).code}): ${error.message}`,\n          );\n        }\n        throw new Error(`Error processing Bedrock stream: ${error.message}`);\n      }\n      throw new Error(\n        \"Error processing Bedrock stream: Unknown error occurred\",\n      );\n    }\n  }\n\n  completionNonStream(\n    body: CompletionCreateParamsNonStreaming,\n  ): Promise<Completion> {\n    throw new Error(\"Bedrock does not support completions API\");\n  }\n\n  completionStream(\n    body: CompletionCreateParamsStreaming,\n  ): AsyncGenerator<Completion> {\n    throw new Error(\"Bedrock does not support completions API\");\n  }\n\n  fimStream(\n    body: FimCreateParamsStreaming,\n  ): AsyncGenerator<ChatCompletionChunk> {\n    throw new Error(\"Bedrock does not support FIM directly\");\n  }\n\n  private async getInvokeModelResponseBody(model: string, jsonBody: object) {\n    const payload = {\n      body: JSON.stringify(jsonBody),\n      modelId: model,","sourceCodeStart":559,"sourceCodeEnd":595,"githubUrl":"https://github.com/continuedev/continue/blob/5522c6f44ca0ac3528b37244818fbfa39b5af470/packages/openai-adapters/src/apis/Bedrock.ts#L559-L595","documentation":"Bedrock's runtime API only exposes conversational/invoke-model endpoints, not the legacy OpenAI-style /v1/completions text-completion API. The adapter therefore implements the CompletionCreateParamsNonStreaming surface by unconditionally throwing when completionNonStream is called — it is a hard capability gap, not a runtime failure.","triggerScenarios":"Calling completionNonStream({model: 'bedrock/...', prompt: '...'}) on the Bedrock adapter; generic router code that dispatches every provider through the completions API; porting code from an OpenAI adapter to Bedrock without changing the endpoint.","commonSituations":"Multi-provider abstraction layers that assume all adapters support legacy completions; older codebases migrating from Codex-style prompt completion to chat; tools defaulting to the completions endpoint when no messages array is present.","solutions":["Switch the call to chatCompletionNonStream with a messages array ([{role: 'user', content: prompt}]).","If you must keep the completions interface, route Bedrock traffic to a different backend or wrap it in a translation layer that converts prompt→messages.","Add a capability check in your router so Bedrock requests never reach completionNonStream."],"exampleFix":"// before\nconst result = await api.completionNonStream({ model: 'bedrock/anthropic.claude-3-sonnet', prompt: 'Hello' });\n\n// after\nconst result = await api.chatCompletionNonStream({ model: 'bedrock/anthropic.claude-3-sonnet', messages: [{ role: 'user', content: 'Hello' }] });","handlingStrategy":"validation","validationCode":"const supportsCompletions = (api: any) => typeof (api as any).completionNonStream === 'function' && api.constructor.name !== 'Bedrock';\nif (!supportsCompletions(api)) throw new Error('Use chatCompletionNonStream for this provider');","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Maintain a per-provider capability map (completions, fim, embeddings).","Default to chat/messages APIs in provider-agnostic code.","Grep your codebase for completionNonStream/completionStream calls before adding Bedrock."],"tags":["bedrock","unsupported-api","completions","capability"],"backgroundTag":"unsupported-api-endpoint","analyzedSha":"5522c6f44ca0ac3528b37244818fbfa39b5af470","analyzedAt":"2026-08-27T11:28:54.683Z","schemaVersion":2},"datasetVersion":"2026-08-27T13:17:12.746Z"}