GPT Image 2.5 SVG output: why the API rejects svg
GPT Image 2.5 on Sume advertises png, jpeg and webp. Asking for svg returns a 400 that lists the accepted formats. How to check and what to do for vector art.

GPT Image 2.5 does not return SVG through Sume. The two 2.5 ids, openai/gpt-image-2.5 and openai/gpt-image-2.5-sunburst, list png, jpeg and webp as their output_format values, and a request for svg returns 400 invalid_request with the accepted values in details.supported.
Read from the Image API docs and the catalog code on 2026-09-29. The docs' general parameter list also mentions svg, and the model's own catalog entry is what decides.
Why does the docs list svg if the model rejects it?
The Image API reference describes output_format for the whole surface as png, jpeg, webp or svg. The docs also say a model only accepts the values its catalog descriptors list. In the catalog code read today, no image model lists svg; the descriptors carry the raster formats only.
| Model id | `output_format` values |
|---|---|
openai/gpt-image-2.5 | png, jpeg, webp |
openai/gpt-image-2.5-sunburst | png, jpeg, webp |
recraft/recraft-v4 | webp |
What does the rejected request return?
The status is 400 and the code is invalid_request; the message names the model and the value it did not accept. Nothing is generated, so nothing is billed.
curl -X POST "https://api.sume.com/v1/images" \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-image-2.5",
"prompt": "a flat logo mark of a paper crane",
"output_format": "svg"
}'How do I check the formats a model advertises?
Read the endpoint record and look at supported_parameters.output_format.values. Sume serves each model through one sume endpoint, so the model-level and endpoint-level descriptors match.
curl "https://api.sume.com/v1/images/models/openai/gpt-image-2.5/endpoints" \
-H "Authorization: Bearer $SUME_API_KEY"What can I do when I need vector art?
Generate a raster mark with png and trace it in a vector tool afterwards; keep the prompt to flat shapes and few colors to make that easier. Sume's docs do not offer a conversion step. For the one catalog model whose vendor advertises SVG, see Recraft V4 SVG; it lists webp on Sume, so the same limit applies there.
What does a successful response look like?
A completed call returns Sume-hosted URLs. Each entry has a url and a media_type, and a non-PNG file carries its own extension, for example .webp with image/webp. Save the file you keep to your own storage.
Pick png when you plan to trace the image or need lossless edges, and webp or jpeg for delivery. The docs give no price difference between formats, so choose by what happens to the file next. Completed generations are billed in full and failed ones are not; the endpoint record's pricing lines already include Sume's margin, so cost_usd times n is what you pay.
Does sume/auto get around the limit?
No. A request to sume/auto is validated against the family that will serve it, so an svg value is checked against that family's descriptors, and no family in the catalog code lists svg. Pin a model when the format matters, so the answer to GET .../endpoints is the one that applies to your call.
Sources
Related posts
More in Developers
- GPT Image 2 vs GPT Image 2.5: what changes when you migrate
GPT Image 2 stays selectable on Sume. Moving to 2.5 means a new model id and new limits: six quality values, 16 references, mask_url. Old requests keep working.
- GPT Image 2.5 4K: how to request a 3840x2160 image by API
To get a 4K image from GPT Image 2.5 on Sume, send image_size 3840x2160 to POST /v1/images and be ready for a 202 job response. Request, cost, and polling.
- GPT Image 2.5 image editing API: edit a photo with a prompt
Edit a photo with GPT Image 2.5 on Sume: send the image in input_references, describe the change, and set aspect_ratio to auto. Up to 16 references per call.
- GPT Image 2.5 request returned 202: how to get the image from the job
When GPT Image 2.5 takes longer than 30 seconds on Sume, POST /v1/images returns 202 with a job. Poll the status URL, then read the result, or use a webhook.
Written by Sume