{"record":{"id":"0d0f6632b54dffcd","repo":"openai/codex","slug":"post-url-succeeded-but-no-task-id-found-content","errorCode":null,"errorMessage":"POST {url} succeeded but no task id found; content-type={ct}; body={body}","messagePattern":"POST (.+?) succeeded but no task id found; content-type=(.+?); body=(.+?)","errorType":"http","errorClass":null,"httpStatus":null,"severity":"error","filePath":"codex-rs/backend-client/src/client.rs","lineNumber":521,"sourceCode":"        let req = self\n            .request(Method::POST, &url)\n            .headers(self.headers())\n            .header(CONTENT_TYPE, HeaderValue::from_static(\"application/json\"))\n            .json(&request_body);\n        let (body, ct) = self.exec_request(req, \"POST\", &url).await?;\n        // Extract id from JSON: prefer `task.id`; fallback to top-level `id` when present.\n        match serde_json::from_str::<serde_json::Value>(&body) {\n            Ok(v) => {\n                if let Some(id) = v\n                    .get(\"task\")\n                    .and_then(|t| t.get(\"id\"))\n                    .and_then(|s| s.as_str())\n                {\n                    Ok(id.to_string())\n                } else if let Some(id) = v.get(\"id\").and_then(|s| s.as_str()) {\n                    Ok(id.to_string())\n                } else {\n                    anyhow::bail!(\n                        \"POST {url} succeeded but no task id found; content-type={ct}; body={body}\"\n                    );\n                }\n            }\n            Err(e) => anyhow::bail!(\"Decode error for {url}: {e}; content-type={ct}; body={body}\"),\n        }\n    }\n\n    // rate limit helpers\n    fn rate_limit_snapshots_from_payload(\n        payload: RateLimitStatusPayload,\n    ) -> Vec<RateLimitSnapshot> {\n        let plan_type = Some(Self::map_plan_type(payload.plan_type));\n        let rate_limit_reached_type = payload\n            .rate_limit_reached_type\n            .flatten()\n            .and_then(|details| Self::map_rate_limit_reached_type(details.kind));\n        let mut snapshots = vec![Self::make_rate_limit_snapshot(","sourceCodeStart":503,"sourceCodeEnd":539,"githubUrl":"https://github.com/openai/codex/blob/339751715c64496cb86246bfb3935f40e309dd3d/codex-rs/backend-client/src/client.rs#L503-L539","documentation":"Error \"POST {url} succeeded but no task id found; content-type={ct}; body={body}\" thrown in openai/codex.","triggerScenarios":"Thrown at codex-rs/backend-client/src/client.rs:521 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":"339751715c64496cb86246bfb3935f40e309dd3d","analyzedAt":"2026-08-25T05:35:09.876Z","schemaVersion":2},"datasetVersion":"2026-08-25T06:17:31.827Z"}