Compare image providers on operational fit and accepted-output cost — not only headline per-image pricing.
“A routed image generation example”
FLUX Schnell · fast · 960 × 1472The APIs expose the same task through different contracts
Runware’s REST endpoint accepts a JSON array of tasks. An imageInference task includes a UUID, prompt, dimensions, model ID, and result count. Together exposes a conventional /v1/images/generations body with prompt, model, dimensions, steps, response format, and safety control.
RenderRoute translates both into one public request. The response identifies the provider actually used, so abstraction does not erase accountability. Provider-specific tests remain essential because normalized JSON cannot make model behavior identical.
| Area | Runware | Together AI |
|---|---|---|
| Fast model ID | runware:100@1 | black-forest-labs/FLUX.1-schnell |
| Request style | Array of typed tasks | Image generation object |
| Output | URL, base64, data URI options | URL or base64 |
| Recommended route role | Primary fast | Standard fast fallback |
Reproduce the internal cost gap before making it a sales claim
The operator’s 960×1472 measurement was $0.0006 on Runware and approximately $0.0037 on Together, a ratio near 6.2. That is compelling routing evidence for this configuration, not a permanent universal comparison. Official pricing units and account terms may not map directly to one measured call.
Run at least a meaningful sample across the same prompts, dimensions, output count, and success criteria. Include retries, failures, and output acceptance. Publish the date and raw methodology. If the result changes, update the page rather than preserving a stale headline.
- Same prompt set and safety mode
- Same dimensions and image count
- Comparable model and steps
- Actual billed cost where available
- Cost per accepted output
Retain a fallback because cheap primary inference is not an availability plan
A primary provider can rate-limit, time out, change capacity, or encounter a regional incident. Together remains useful when it improves the probability of completing a standard fast request inside the product’s latency budget.
The router retries only transient Runware errors before moving to Together. A prompt or safety rejection stops. Circuit breakers reduce repeated exposure to an active incident, and idempotency protects against duplicate work when the client retries the whole operation.
1. Runware / runware:100@1
2. Together / black-forest-labs/FLUX.1-schnell
3. Leonardo / Flux Schnell
4. Local OpenAI-compatible routeChoose the primary from your workload, then keep the router reversible
Measure p50 and p95 latency, error rate, moderation behavior, prompt adherence, artifact rate, provider cost, and acceptance. Weight them by your product: an editor values latency differently from an overnight catalog job.
Keep model IDs and provider order in environment configuration. A comparison page should document why the current order exists, while the code should allow a measured change without rewriting clients.
Questions about Runware vs Together AI image API
Is Runware always 6.2 times cheaper?
No. That ratio comes from the operator’s one-size internal benchmark and must be revalidated.
Why keep Together if Runware is cheaper in the benchmark?
Fallback capacity can protect availability, and provider performance can vary by workload, region, account, and time.
Will a fallback produce the same image?
No. Even similar model families can differ across providers, implementations, and seed handling. Promise task completion, not pixel identity.
Can I pin Together for a test?
Yes. Set provider=together and a compatible Together model ID. Pinning intentionally disables cross-provider fallback.