SDXL · SD 1.5 · LoRA · ControlNet
Stable Diffusion API
with pricing you can model
Hosted SDXL and SD 1.5 with LoRA and ControlNet built in. $0.0047 an image, no VRAM to provision.
Commercial usage rights on every plan · 100% refund within 24 hours
Hosted API vs. running SDXL yourself
Self-hosting looks cheaper per image right up until you account for idle time.
What self-hosting actually costs
SDXL needs roughly 12–16 GB of VRAM to run comfortably. A rented A10G or A100 bills continuously, not per image — so your real per-image cost depends entirely on utilisation. At low or bursty volume, most of the spend is idle GPU.
What the hosted API costs
$0.0047 per image, billed only on generation. Concurrency comes from the plan rather than from how many GPUs you rented, and scaling to a traffic spike is a plan change rather than an infrastructure project.
| Monthly volume | Pay as you go | Best plan | Effective per image |
|---|---|---|---|
| 1,000 images | $4.70 | Pay as you go | $0.0047 |
| 3,250 images | $15.28 | Pay as you go | $0.0047 |
| 10,000 images | $47.00 | Standard — $47/mo | $0.0047 |
| 50,000 images | $235.00 | Unlimited — $149/mo | $0.0030 |
| 250,000 images | $1,175.00 | Unlimited — $149/mo | $0.0006 |
Unlimited tier applies to open-source models including SDXL, SD 1.5, and FLUX.1 schnell. Premium partner models bill separately from wallet balance.
Calling SDXL
If you have used the Automatic1111 or ComfyUI parameter names, these will look familiar — same concepts, JSON instead of a UI.
curl -X POST "$API_BASE/api/v6/images/text2img" \ -H "Content-Type: application/json" \ -d '{ "key": "YOUR_API_KEY", "model_id": "sdxl", "prompt": "architectural render of a timber pavilion, golden hour", "negative_prompt": "lowres, bad anatomy, watermark, text", "width": 1024, "height": 1024, "samples": 1, "num_inference_steps": 30, "guidance_scale": 7.5, "scheduler": "DPMSolverMultistepScheduler", "seed": 12345, "safety_checker": "yes" }'
import requests # SDXL with a LoRA adapter applied at request time payload = { "key": "YOUR_API_KEY", "model_id": "sdxl", "prompt": "architectural render of a timber pavilion, golden hour", "negative_prompt": "lowres, bad anatomy, watermark", "width": 1024, "height": 1024, "num_inference_steps": 30, "guidance_scale": 7.5, "scheduler": "DPMSolverMultistepScheduler", "lora_model": "your-lora-id", "lora_strength": 0.7, "seed": 12345, "safety_checker": "yes", } res = requests.post( API_BASE + "/api/v6/images/text2img", json=payload, timeout=120, ).json() print(res["output"])
const res = await fetch( `${API_BASE}/api/v6/images/text2img`, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ key: process.env.FLUX3_API_KEY, model_id: "sdxl", prompt: "architectural render of a timber pavilion, golden hour", negative_prompt: "lowres, bad anatomy, watermark", width: 1024, height: 1024, num_inference_steps: 30, guidance_scale: 7.5, scheduler: "DPMSolverMultistepScheduler", seed: 12345, safety_checker: "yes", }), } ); const data = await res.json(); console.log(data.output);
API_BASE is issued with your API key.
Parameter reference
The parameters that actually change your output, and sensible starting values.
| Parameter | Type | Notes |
|---|---|---|
model_id | string | sdxl, sd-1.5, or any hosted checkpoint ID |
num_inference_steps | int | 20–30 for SDXL. Past ~40 the quality gain rarely justifies the latency. |
guidance_scale | float | 7–8 is the usable range. Above 12 output tends to over-saturate. |
scheduler | string | DPM++ variants converge fastest; Euler a is a safe default. |
seed | int | Fix it to make generations reproducible. Omit for random. |
lora_model | string | Applied per request; pair with lora_strength (0–1). |
controlnet_model | string | Canny, depth, openpose and others, with init_image as the control input. |
safety_checker | string | "yes" or "no". Keep enabled for user-facing output. |
Frequently asked
How much does the Stable Diffusion API cost?
$0.0047 per image on pay-as-you-go for SDXL and SD 1.5, which is roughly 212 images per dollar. Monthly plans start at $21 for 3,250 calls, and the $149 unlimited tier removes the ceiling on open-source models entirely.
Is SDXL or SD 1.5 the right choice?
SDXL for almost everything — better composition, prompt adherence, and native 1024×1024 output. SD 1.5 remains useful when you depend on a specific fine-tune or LoRA that was only ever trained against it.
Can I use my own LoRA?
Yes. LoRA adapters are applied per request via lora_model and
lora_strength, so different requests can use different adapters
against the same base checkpoint without redeploying anything.
Is ControlNet supported?
Yes, on the image endpoints. Pass controlnet_model along with an
init_image to use as the control signal — canny edges, depth maps, and
pose among the available conditioning types.
How do I make generations reproducible?
Set seed explicitly and hold model_id,
scheduler, guidance_scale, and
num_inference_steps constant. Changing any of those changes the
output even with the same seed.
Start with SDXL
Pick a plan, grab your API key, and make your first call in under five minutes.
View pricing & get API key