Image API docs example vs live catalog: Seedream 4.5 shows 5 ratios

The docs example for Seedream 4.5 lists 5 ratios and 0.033 USD. The catalog lists 9 ratios and 0.05 USD. Why you read the endpoint, not the example.

4 min readSume
All posts

The JSON example on the Sume Image API docs page shows Seedream 4.5 with five aspect ratios and a price of 0.033 USD, but the catalog I read on 2026-10-10 lists nine ratios and 0.05 USD. Do not copy the example into code; read GET /v1/images/models and the endpoint record for the live values.

The docs page says the same thing in another place: the endpoint route gives the definitive capabilities and prices for a model.

The two readings side by side

The left column is the example block on the Image API page. The right column is the catalog descriptor and billed price in the code I read.

Seedream 4.5: docs example versus catalog (Image API docs and catalog code, read 2026-10-10)
FieldDocs exampleCatalog read
aspect_ratio values1:1, 16:9, 9:16, 4:3, 3:41:1, 16:9, 9:16, 4:3, 3:4, 4:5, 5:4, 3:2, 2:3 (nine values)
Price per image (USD)0.0330.05

Why an example drifts

A docs example is a snapshot. It is written once to show the shape of a response, and the catalog it describes keeps changing as models are added, repriced or extended. Nothing is wrong with the shape; the values are illustrative.

The same page shows a billing sentence worth remembering: endpoint pricing lines are the amount Sume charges to your wallet, and they already include Sume's margin, so you pay cost_usd times n. That is the number to trust, and it comes from the endpoint, not from the sample.

What to do in code

Fetch the endpoint record before you rely on a value, and cache it for the process. Validate your own request against the descriptors so a ratio that is not listed never leaves your service. Sume would reject it with 400 invalid_request and the supported list, but a local check saves the round trip and keeps the error message in your control.

import os
import httpx

model = "bytedance-seed/seedream-4.5"
url = f"https://api.sume.com/v1/images/models/{model}/endpoints"
headers = {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"}
data = httpx.get(url, headers=headers, timeout=30).json()
ep = data["endpoints"][0]
params = ep["supported_parameters"]
print(params["aspect_ratio"]["values"])
print(ep["pricing"][0]["cost_usd"])

A worked check

Take the Seedream 4.5 case. A budget written from the docs example would price 100 images at 3.30 USD (100 times 0.033). At the catalog price of 0.05 USD the same 100 images cost 5.00 USD, about 52 percent more than planned. The error comes from copying a sample, not from the API charging unexpectedly, and the usage.cost on each response shows what was actually billed.

The ratio list has the same problem. Code written against the five-value example would never send 4:5, and so would miss the 1080 by 1350 portrait format that the live list supports.

A short rule

Use docs for how the API works and the endpoint for what a model accepts today. When the two disagree, the endpoint is right and the page is a sketch. If you notice a mismatch like this one, record the date and the value you read, so a later reader can tell a catalog change from a mistake.

  • Read supported_parameters before you pin a ratio, n or a reference count.
  • Read pricing before you budget a batch.
  • Do not copy numbers from a docs example into a pricing sheet.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume