From 4310fd3aee7a103a4dd2b1e37e923db029bdcefc Mon Sep 17 00:00:00 2001 From: kamilbenkirane Date: Thu, 29 Jan 2026 23:06:41 +0100 Subject: [PATCH] fix(xai): use ImageUrl struct format for image edits xAI API expects {"image": {"url": "..."}} not a raw string. Supports both URL and data URI (for base64 images). Co-Authored-By: Claude Opus 4.5 --- src/celeste/modalities/images/providers/xai/client.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/celeste/modalities/images/providers/xai/client.py b/src/celeste/modalities/images/providers/xai/client.py index 31e16882..66c19ebc 100644 --- a/src/celeste/modalities/images/providers/xai/client.py +++ b/src/celeste/modalities/images/providers/xai/client.py @@ -29,11 +29,13 @@ def _init_request(self, inputs: ImageInput) -> dict[str, Any]: """Initialize request from inputs.""" request: dict[str, Any] = {"prompt": inputs.prompt} if inputs.image is not None: - # xAI accepts URL or base64 string + # xAI expects {"image": {"url": "..."}} with URL or data URI if inputs.image.url: - request["image"] = inputs.image.url + request["image"] = {"url": inputs.image.url} else: - request["image"] = inputs.image.get_base64() + mime_type = inputs.image.mime_type + base64_data = inputs.image.get_base64() + request["image"] = {"url": f"data:{mime_type};base64,{base64_data}"} return request async def generate(