{"record":{"id":"241107bade81dda9","repo":"JuliusBrussee/caveman","slug":"bedrock-invalid-api-key","errorCode":null,"errorMessage":"bedrock: invalid API key","messagePattern":"bedrock: invalid API key","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"proxy/providers/bedrock/signing.go","lineNumber":51,"sourceCode":"\t\tcopyIfPresent(out, req.Header, \"x-amzn-bedrock-guardrail-identifier\")\n\t\tcopyIfPresent(out, req.Header, \"x-amzn-bedrock-guardrail-version\")\n\t\tcopyIfPresent(out, req.Header, \"x-amzn-bedrock-performanceconfig-latency\")\n\t\tcopyIfPresent(out, req.Header, \"x-amzn-bedrock-request-metadata\")\n\t\tcopyIfPresent(out, req.Header, \"x-amzn-bedrock-service-tier\")\n\t\tcopyIfPresent(out, req.Header, \"x-amzn-bedrock-trace\")\n\t}\n\tif out.Get(\"content-type\") == \"\" {\n\t\tout.Set(\"content-type\", \"application/json\")\n\t}\n\n\tauthKind, err := credentialAuthKind(credential)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif authKind == \"bedrock_api_key\" {\n\t\tkey := strings.TrimSpace(credential.Key)\n\t\tif key == \"\" || strings.ContainsAny(key, \"\\r\\n\") {\n\t\t\treturn nil, fmt.Errorf(\"bedrock: invalid API key\")\n\t\t}\n\t\tif mantle {\n\t\t\tout.Set(\"x-api-key\", key)\n\t\t} else {\n\t\t\tout.Set(\"Authorization\", \"Bearer \"+key)\n\t\t}\n\t\treturn out, nil\n\t}\n\n\tcreds, err := parseAWSCredentials(credential.Key)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Sign against the SAME URL the proxy will forward to. The caller passes the\n\t// already-resolved upstream (which honors a per-project base URL); re-resolving\n\t// here with an empty route would sign the adapter's fallback host instead, so a\n\t// project with a custom Bedrock endpoint would get a SigV4 Host mismatch","sourceCodeStart":33,"sourceCodeEnd":69,"githubUrl":"https://github.com/JuliusBrussee/caveman/blob/27d5a3981a347890211bb1bf2439e5c821a63bc9/proxy/providers/bedrock/signing.go#L33-L69","documentation":"Error \"bedrock: invalid API key\" thrown in JuliusBrussee/caveman.","triggerScenarios":"Thrown at proxy/providers/bedrock/signing.go:51 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Provide a valid Bedrock API key."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"27d5a3981a347890211bb1bf2439e5c821a63bc9","analyzedAt":"2026-08-15T09:26:11.751Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}