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

$0.0047per image, SDXL and SD 1.5
~212images per dollar
Unlimitedopen-source tier at $149/mo
IncludedLoRA and ControlNet support

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.

Fixed hourly cost

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.

Per image
Monthly volumePay as you goBest planEffective per image
1,000 images$4.70Pay as you go$0.0047
3,250 images$15.28Pay as you go$0.0047
10,000 images$47.00Standard — $47/mo$0.0047
50,000 images$235.00Unlimited — $149/mo$0.0030
250,000 images$1,175.00Unlimited — $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.

ParameterTypeNotes
model_idstringsdxl, sd-1.5, or any hosted checkpoint ID
num_inference_stepsint20–30 for SDXL. Past ~40 the quality gain rarely justifies the latency.
guidance_scalefloat7–8 is the usable range. Above 12 output tends to over-saturate.
schedulerstringDPM++ variants converge fastest; Euler a is a safe default.
seedintFix it to make generations reproducible. Omit for random.
lora_modelstringApplied per request; pair with lora_strength (0–1).
controlnet_modelstringCanny, depth, openpose and others, with init_image as the control input.
safety_checkerstring"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