Godot: import a Sume image as a texture, WebP or PNG

Godot imports PNG, JPEG and WebP. Drop a Sume image into res://, pick Lossless or VRAM Compressed, and use 1024x1024 where power-of-two sizes help.

4 min readSume
All posts

Put the file in your project folder and Godot imports it; you do not have to convert a Sume image first. Godot's image import guide lists PNG, JPEG and WebP among the formats it imports, so any of the three output_format values in Sume's image API works. The real choices are the compression mode and the size.

Godot's page names five compression modes: Lossless, Lossy, VRAM Compressed, VRAM Uncompressed and Basis Universal. It also says power-of-two sizes are optimal but not required.

Which mode fits which generated asset?

Compression modes named on Godot's importing-images page; fit column is this post's advice, read 2026-10-05.
ModeWhere it fits a generated imageWatch for
LosslessUI art, icons, 2D sprites you will edit againLarger memory use for big images
LossyBackgrounds and splash art where size mattersVisible artefacts on sharp text
VRAM Compressed3D textures on desktop and mobile GPUsBlocky detail on fine lines
VRAM UncompressedTextures that must stay exactHighest GPU memory cost
Basis UniversalOne texture shipped to many GPU targetsLonger import time

What size should I request?

For GPT Image 2.5, OpenAI's guide lists 1024x1024, 1536x1024 and 1024x1536 as the recommended sizes, and 1024x1024 is a power of two. For a tileable ground or wall texture, ask for the square size and a prompt that says seamless; then check the edges in the editor, because the model does not guarantee a perfect tile.

Keep prototypes cheap. quality: "low" is a valid value on every GPT Image 2.5 request, and you can raise it for the one asset you keep. The usage.cost field on each 200 response tells you what the call billed.

A fetch command for your asset folder

This request saves a square draft straight into the project. It needs jq and a key in the environment; swap png for webp if you prefer the smaller file, since Godot imports both.

curl -s 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":"seamless mossy stone floor texture, top-down","quality":"low","aspect_ratio":"1:1","output_format":"png"}' \
  | jq -r '.data[0].url' \
  | xargs curl -s -o res/textures/moss.png

If the first call returns 202, jq finds no data and xargs downloads nothing; the jobs guide shows how to poll the status_url in that case.

Name files by purpose, not by the prompt, and keep the Sume response's data[0].url in a text file next to each asset. When an art lead asks which prompt made moss.png, the note beside it answers faster than a search through shell history. Godot reimports a changed file the next time the editor regains focus, so you can overwrite a draft with a higher-quality regeneration and keep the same resource path in every scene.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume