HKUDS/nanobot · error · ImageGenerationError
OpenAI image generation failed
Error message
OpenAI image generation failed (HTTP {response.status_code}): {detail} What it means
Raised in the OpenAI image generator's generate when POST /images/generations (or the edits endpoint) returns a non-2xx status. Wraps httpx.HTTPStatusError with status code and up to 1000 chars of response text, meaning the OpenAI Images API rejected the request (invalid key, billing, bad params, content policy).
Solutions
- Verify the OpenAI API key and account billing/quota
- Check the logged error body for the exact API error and fix parameters (model, size, response_format)
- For 429, retry with backoff
- Review extra_body/extra_headers overrides
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at nanobot/providers/image_generation.py:1267 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of HKUDS/nanobot@42f37dc4c0 (2026-08-26).
Data as JSON: /api/errors/3655e6f04a02489c.
Report an issue: GitHub.
Appendix: source
Thrown at nanobot/providers/image_generation.py:1267
else:
logger.info(
"OpenAI Images API request: POST {}/images/generations body={}",
self.api_base,
body,
)
response = await self._http_post(
f"{self.api_base}/images/generations",
headers=generation_headers,
body=body,
)
try:
response.raise_for_status()
except httpx.HTTPStatusError as exc:
detail = response.text[:1000]
logger.error("OpenAI Images API error ({}): {}", response.status_code, detail)
raise ImageGenerationError(
f"OpenAI image generation failed (HTTP {response.status_code}): {detail}"
) from exc
payload = response.json()
logger.info("OpenAI Images API response ({}): {}", response.status_code,
{k: v for k, v in payload.items() if k != "data"})
images = await self._parse_images_response(payload)
self._require_images(images, payload)
return GeneratedImageResponse(images=images, content="", raw=payload)
class CustomImageGenerationClient(ImageGenerationProvider):
"""OpenAI-compatible Images API for user-configured custom providers."""
provider_name = "custom"
missing_base_message = (View on GitHub (pinned to 42f37dc4c0)