# Diffusion Chat Completions API vLLM-Omni supports generating and editing images via the `/v1/chat/completions` endpoint using diffusion models. This page explains how to pass generation parameters (such as `num_inference_steps`, `height`, `width`) to diffusion models through this endpoint. !!! tip For dedicated endpoints that accept generation parameters as top-level fields, see [Image Generation API](image_generation_api.md) and [Image Edit API](image_edit_api.md). ## Passing Generation Parameters The `/v1/chat/completions` endpoint follows the OpenAI Chat API schema, which does not natively include diffusion-specific fields like `num_inference_steps` or `height`. How you pass these extra fields depends on your client. ### curl / Python `requests` Wrap generation parameters inside an `"extra_body"` key in the JSON body: ```bash curl -s http://localhost:8091/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "messages": [ {"role": "user", "content": "A beautiful landscape painting"} ], "extra_body": { "num_inference_steps": 50, "seed": 42 } }' ``` ### OpenAI Python SDK Use the `extra_body` **keyword argument**. The SDK automatically merges these fields into the top-level request body: ```python response = client.chat.completions.create( model="Qwen/Qwen-Image", messages=[{"role": "user", "content": "A beautiful landscape painting"}], extra_body={ "num_inference_steps": 50, "seed": 42, }, ) ``` !!! note "SDK `extra_body` vs. JSON `extra_body`" These two `extra_body` usages look similar but work differently under the hood. The SDK flattens the dict into the top-level request JSON, while the curl/requests approach sends it as a nested `"extra_body"` key. Both are handled correctly by the server. !!! note "About the `ignored fields` warning" You may see a log message like: ``` WARNING: The following fields were present in the request but ignored: {'height', 'width', ...} ``` This is **harmless**. It is emitted by vLLM's request validation layer because these fields are not part of the standard OpenAI `ChatCompletionRequest` schema. The fields are still stored internally and correctly forwarded to the diffusion pipeline. ## Model-Specific Examples For complete examples with full request/response details, see the model-specific guides: - [Text-to-Image (Qwen-Image)](../user_guide/examples/online_serving/text_to_image.md) - [Image-to-Image (Qwen-Image-Edit, Qwen-Image-Layered)](../user_guide/examples/online_serving/image_to_image.md) - [GLM-Image](../user_guide/examples/online_serving/glm_image.md)