Image job metadata on Sume: stored on the job, not sent upstream
The metadata field on Image 1.0 and POST /v1/images is stored on the job and not sent to the provider. Use it to tie jobs to your own records.

Both Image 1.0 and POST /v1/images take an optional metadata object described as caller metadata stored on the job and not sent to the provider. Put your own order or SKU reference there so you can match a finished job to your records.
Where does metadata go?
It is stored on the job. It is not part of the prompt and is not forwarded to the model provider, so it will not change the image. Keep values to your own identifiers rather than secrets, since the docs do not describe how metadata is returned or protected beyond storage on the job.
| Route | Field | Behavior |
|---|---|---|
| Image 1.0 | metadata | Stored on the job; not sent to the provider |
POST /v1/images | metadata | Stored on the job; not sent to the provider |
How do I send it?
Add the object next to the prompt:
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": "Catalog shot of a linen shirt",
"mode": "async",
"metadata": { "sku": "demo-001", "batch": "spring" }
}'How do I match a result back?
Poll GET /v1/jobs/{id}/status and fetch GET /v1/jobs/{id}/result for each job id you stored, or take the terminal event on a webhook. Pair the job id with your own row when you submit, since that is the reliable key.
Does it replace an idempotency key?
No. Idempotency keys guard retries after client timeouts; reuse one only for the same operation and payload. Metadata is only a label.
How do I check this myself?
Keep metadata small and boring: identifiers, not personal data. If you need a value in the image itself, put it in the prompt instead, because metadata never reaches the model. The linked docs pages and the catalog endpoint show the current values, and this post reflects them as of 2026-09-30.
Sources
Related posts
More in Developers
- Image 1.0 mode vs POST /v1/images: default wait and 202 explained
POST /v1/images defaults to sync and blocks up to 30 seconds; Image 1.0 lists async, sync, subscribe and webhook. Compare defaults and wait_timeout_seconds.
- num_images 1-4 or n 1-10? Images per call on Sume's image APIs
Image 1.0 takes num_images 1 to 4. POST /v1/images takes n up to 10, with lower per-model ceilings. Which to use and how to read the real limit.
- output_format jpg or jpeg? What Sume's image routes accept
Image 1.0 accepts png, jpeg, jpg and webp. POST /v1/images lists png, jpeg, webp and svg, not jpg, so use jpeg there.
- POST /v1/image-router/generate deprecated: what to call instead
Sume's legacy /v1/image-router/generate and /v1/image-router/models routes still work but gain no new parameters. Use POST /v1/images and GET /v1/images/models.
Written by Sume