{"record":{"id":"bd387faf32735b7f","repo":"aaif-goose/goose","slug":"api-error","errorCode":null,"errorMessage":"API error: {}","messagePattern":"API error: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/goose-provider-types/src/formats/openai.rs","lineNumber":699,"sourceCode":"\n/// Convert OpenAI's API response to internal Message format\npub fn response_to_message(response: &Value) -> anyhow::Result<Message> {\n    let output_token_limit_reached = response\n        .pointer(\"/choices/0/finish_reason\")\n        .and_then(Value::as_str)\n        == Some(\"length\");\n\n    let Some(original) = response\n        .get(\"choices\")\n        .and_then(|c| c.get(0))\n        .and_then(|m| m.get(\"message\"))\n    else {\n        if let Some(error) = response.get(\"error\") {\n            let error_message = error\n                .get(\"message\")\n                .and_then(|m| m.as_str())\n                .unwrap_or(\"Unknown error\");\n            return Err(anyhow::anyhow!(\"API error: {}\", error_message));\n        }\n        return Err(anyhow::anyhow!(\n            \"No message in API response. This may indicate a quota limit or other restriction.\"\n        ));\n    };\n\n    let mut content = Vec::new();\n\n    // Capture reasoning content if present (DeepSeek uses \"reasoning_content\", vLLM uses \"reasoning\")\n    let reasoning_value = original\n        .get(\"reasoning_content\")\n        .or_else(|| original.get(\"reasoning\"));\n    let mut has_structured_thinking = false;\n    if let Some(reasoning_content) = reasoning_value {\n        if let Some(reasoning_str) = reasoning_content.as_str() {\n            if !reasoning_str.is_empty() {\n                has_structured_thinking = true;\n                content.push(MessageContentBlock::thinking(reasoning_str, \"\"));","sourceCodeStart":681,"sourceCodeEnd":717,"githubUrl":"https://github.com/aaif-goose/goose/blob/3810898a7447ec3299be72e223d3570a7aabf0ab/crates/goose-provider-types/src/formats/openai.rs#L681-L717","documentation":"Error \"API error: {}\" thrown in aaif-goose/goose.","triggerScenarios":"Thrown at crates/goose-provider-types/src/formats/openai.rs:699 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"3810898a7447ec3299be72e223d3570a7aabf0ab","analyzedAt":"2026-08-16T10:14:26.282Z","schemaVersion":2},"datasetVersion":"2026-08-16T13:17:31.715Z"}