Leonardo.Ai API alternative for image generation: Sume Images

Leonardo's API submits to /generations and returns a generationId. Sume POST /v1/images works from a model catalog with idempotent retries. Compared.

5 min readSume
All posts

Is Sume a good Leonardo.Ai API alternative?

If you want a model catalog with machine-readable capabilities and idempotent submits, yes. If your product is built around Leonardo's own models and style presets, no: Sume does not host Leonardo's models, and its style options come from whichever catalog model you pick.

What does the Leonardo API look like?

Leonardo's quick start has you send a POST to https://cloud.leonardo.ai/api/rest/v1/generations with dimensions, a model id, style and a prompt. The response carries a generationId, which you use to fetch the finished images. You can instead configure a webhook callback URL to receive results instead of polling. Models are addressed by id (the example shows a UUID), and styles by styleUUID.

Billing is worth noting: the page says API plans are distinct from Leonardo web app plans, that usage is billed in dollars, and that remaining credit appears on the API Access page.

What does Sume Images look like?

Sume uses POST /v1/images with a model slug and a prompt. Pass sume/auto to let the Image Router pick. GET /v1/images/models lists models with their supported parameters, and GET /v1/images/models/{model_id}/endpoints returns capabilities and pricing for one model. Parameters are typed descriptors (enum, range or boolean), and a field the model does not list is rejected with 400 unsupported_parameter instead of ignored.

The Sume response returns hosted image URLs in a data array. The call blocks up to 30 seconds by default; longer work returns a 202 job envelope you read through the standard job endpoints.

Request shape compared (read 2026-10-02)
AspectLeonardo.AiSume Images
SubmitPOST /api/rest/v1/generationsPOST /v1/images
Handle for resultgenerationIdJob id plus hosted URLs
Model selectorModel id (UUID) plus styleUUIDCatalog slug or sume/auto
CompletionFetch by id, or webhookPoll, sync/subscribe, or signed webhook
Retry safetyNot covered in the page I readIdempotency-Key header on submits

Where is Leonardo ahead?

Leonardo has its own model line and a style system tuned for its community use, and its generation endpoint takes direct knobs for dimensions and style. Sume's catalog is broader in third-party model families but you cannot reach Leonardo-specific models or style UUIDs through it. For text-to-image products that depend on a particular Leonardo look, switching changes your output.

How do reference images and masks compare?

Both platforms support image-guided work, but the contract differs. In Sume's catalog, capabilities live on the model entry. For example, the ChatGPT Image 2.5 entries support up to 16 image references, an optional mask_url, and background set to auto, transparent or opaque, with quality from auto to max (omitted defaults to high). Other models list different parameters, which is why you read the descriptor before sending a field.

I could not confirm Leonardo's reference-image and mask parameters from the quick start page alone, so check its endpoint reference before assuming parity. Whatever you find, the Sume pattern is the same: pick the model, read its supported parameters, and expect a 400 if you send something it does not list.

  • Use public HTTPS image URLs for references. Localhost, private-network and non-HTTPS URLs are rejected before generation.
  • Sume image size fields have limits per model; for GPT Image 2.5 both edges must be multiples of 16 with a maximum edge of 3840.
  • Auto routing keeps you off a single model, but Sume does not disclose which family ran: job.model stays sume/auto.

What changes when you port?

Replace the generation id with a Sume job id, replace the model UUID with a catalog slug, and add an Idempotency-Key header on every submit. Handle 402 insufficient_credits and 429 queue_full explicitly; the first means top up the workspace balance, the second means wait for an existing job to finish.

Check one thing first: cost. Sume bills the captured amount in USD per image (usage.cost), so compare that against your Leonardo per-image spend using a few real prompts. Read GET /v1/images/models/{model_id}/endpoints for each model's pricing first.

curl -X POST https://api.sume.com/v1/images \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: leo-port-001" \
  -d '{"model":"sume/auto","prompt":"Isometric cutaway of a tiny bakery, soft pastel light"}'

Sources

Related posts

More in Comparisons

All Comparisons posts

Written by Sume