MiniMax H3 Open Weights | Try in Video Generator →

Stable Diffusion | High-Quality Text-to-Image API

stability-ai/

Stability AI Stable Diffusion is a latent text-to-image diffusion model that generates photo-realistic images from any text prompt. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

text-to-image
Input

Idle

The sun sets slowly over the sea level at Labrador Nature Reserve. The fiery sunset afterglow dyes the sky and sea red, while the silhouettes of the old fort and jetty appear especially solemn in the fading light. A wide-angle shot, capturing the vast scenery of the sea and sky as one.

$0.0035per run·~285 / $1

Next:

ExamplesView all

The sun sets slowly over the sea level at Labrador Nature Reserve. The fiery sunset afterglow dyes the sky and sea red, while the silhouettes of the old fort and jetty appear especially solemn in the fading light. A wide-angle shot, capturing the vast scenery of the sea and sky as one.

The sun sets slowly over the sea level at Labrador Nature Reserve. The fiery sunset afterglow dyes the sky and sea red, while the silhouettes of the old fort and jetty appear especially solemn in the fading light. A wide-angle shot, capturing the vast scenery of the sea and sky as one.

Lyrical abstraction inspired by Kandinsky, a symphony of floating geometric shapes, circles, triangles, and flowing lines, vibrant and harmonious color palette, evokes the feeling of classical music, spiritual and rhythmic, watercolor-like transparency on a textured paper background.

Lyrical abstraction inspired by Kandinsky, a symphony of floating geometric shapes, circles, triangles, and flowing lines, vibrant and harmonious color palette, evokes the feeling of classical music, spiritual and rhythmic, watercolor-like transparency on a textured paper background.


Minimalist geometric abstraction, style of Piet Mondrian, a composition of intersecting thick black lines creating rectangles of primary colors (red, blue, yellow) and white, perfectly balanced, clean and harmonious, flat planes of color, intellectual and orderly.

Minimalist geometric abstraction, style of Piet Mondrian, a composition of intersecting thick black lines creating rectangles of primary colors (red, blue, yellow) and white, perfectly balanced, clean and harmonious, flat planes of color, intellectual and orderly.

Surrealist automatism, biomorphic and organic forms flowing from the subconscious, dreamlike landscape of strange, interconnected shapes, muted earth tones with sudden bursts of vivid color, style of Joan Miró, playful yet mysterious, ink and wash on aged parchment.

Surrealist automatism, biomorphic and organic forms flowing from the subconscious, dreamlike landscape of strange, interconnected shapes, muted earth tones with sudden bursts of vivid color, style of Joan Miró, playful yet mysterious, ink and wash on aged parchment.

Professional photograph, the sun rises from behind the calm water of Lower Seletar Reservoir. Golden morning light illuminates the iconic observation bridge and the trees along the shore. The water's surface reflects the soft colors of the sky, the entire scene is full of peace and harmony.

Professional photograph, the sun rises from behind the calm water of Lower Seletar Reservoir. Golden morning light illuminates the iconic observation bridge and the trees along the shore. The water's surface reflects the soft colors of the sky, the entire scene is full of peace and harmony.

Viewed from the peak of Mount Faber Park, the first light of sunrise breaks through the clouds, casting its glow on the distant port and city skyline. Ships on the sea and the building clusters below are gradually illuminated, revealing the spectacular sight of a city awakening from its slumber.

Viewed from the peak of Mount Faber Park, the first light of sunrise breaks through the clouds, casting its glow on the distant port and city skyline. Ships on the sea and the building clusters below are gradually illuminated, revealing the spectacular sight of a city awakening from its slumber.

At dawn, the sky over Punggol Waterway Park displays soft pink and lilac hues. The modern-style pedestrian bridge is outlined in a graceful silhouette against the morning light, reflected in the tranquil waterway. The air is fresh and everything is serene, filled with a sense of hope.

At dawn, the sky over Punggol Waterway Park displays soft pink and lilac hues. The modern-style pedestrian bridge is outlined in a graceful silhouette against the morning light, reflected in the tranquil waterway. The air is fresh and everything is serene, filled with a sense of hope.

Related Models

README

Stable Diffusion

Stable Diffusion is Stability AI's efficient and affordable text-to-image and image-to-image generation model. Generate quality images from text descriptions at an ultra-low cost — perfect for high-volume generation, prototyping, and budget-conscious projects.

Why It Stands Out

  • Ultra-affordable: Generate images at just $0.0035 each — ideal for high-volume use cases.
  • Dual mode support: Works as both text-to-image and image-to-image generator.
  • Prompt Enhancer: Built-in AI-powered prompt optimization for better results.
  • Flexible sizing: Customize width and height independently for any aspect ratio.
  • Fast generation: Optimized for speed and efficiency.
  • Reproducibility: Use the seed parameter to recreate exact results.

Parameters

ParameterRequiredDescription
promptYesText description of the image you want to generate.
imageNoSource image for image-to-image transformation.
widthNoOutput width in pixels (default: 1024).
heightNoOutput height in pixels (default: 1024).
seedNoSet for reproducibility; -1 for random.
enable_base64_outputNoReturn base64 string instead of URL (API only).

How to Use

Text-to-Image:

  1. Write a prompt describing the image you want. Use the Prompt Enhancer for AI-assisted optimization.
  2. Set dimensions — adjust width and height for your desired aspect ratio.
  3. Set a seed (optional) for reproducible results.
  4. Click Run and download your image.

Image-to-Image:

  1. Upload a source image.
  2. Write a prompt describing the transformation you want.
  3. Adjust dimensions and set a seed (optional).
  4. Click Run and download your transformed image.

Best Use Cases

  • High-Volume Generation — Generate thousands of images affordably.
  • Rapid Prototyping — Quickly test ideas and concepts at minimal cost.
  • Batch Processing — Create large datasets of images for training or testing.
  • Creative Exploration — Experiment with prompts without budget concerns.
  • Thumbnail Generation — Produce placeholder images and quick previews.

Pricing

OutputPrice
Per image$0.0035

Pro Tips for Best Quality

  • Be descriptive in your prompt — include style, mood, lighting, and specific details.
  • Use style keywords to guide the aesthetic output.
  • Adjust dimensions to match your intended use case.
  • For image-to-image, provide a clear source image and describe the desired transformation.
  • Fix the seed when iterating to compare different prompt variations.

Notes

  • Ensure uploaded image URLs are publicly accessible.
  • Processing time varies based on resolution and current queue load.
  • Please ensure your prompts comply with content guidelines.
Note:This website uses AI models provided by third parties.

Stable Diffusion API — Quick start

Grab a WaveSpeedAI API key, then call POST https://api.wavespeed.ai/api/v3/stability-ai/stable-diffusion with your input as JSON. The endpoint returns a prediction id. Start polling the result endpoint around every 2 seconds, increase the interval for long-running tasks, and stop on any terminal status. On completed, read output values from data.outputs. Examples for Stable Diffusion below.

HTTP example
set -euo pipefail

: "${WAVESPEED_API_KEY:?Set WAVESPEED_API_KEY}"

REQUEST_BODY=$(cat <<'JSON'
{
    "prompt": "A cinematic shot of a city at sunset, soft golden light",
    "size": "1024*1024",
    "seed": -1
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/stability-ai/stable-diffusion" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $WAVESPEED_API_KEY" \
  -d "$REQUEST_BODY")

TASK=$(printf '%s' "$SUBMIT_RESPONSE" | jq 'if has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "$TASK" | jq -r '.id')
if [ -z "$PREDICTION_ID" ] || [ "$PREDICTION_ID" = "null" ]; then
  printf 'Submission response did not contain a prediction id
' >&2
  exit 1
fi
RESULT_URL=$(printf '%s' "$TASK" | jq -r '.urls.get // empty')
if [ -z "$RESULT_URL" ]; then
  RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/$PREDICTION_ID/result"
fi

# 2. Poll until the prediction finishes.
while true; do
  RESPONSE=$(curl --silent --show-error --fail-with-body "$RESULT_URL" \
    -H "Authorization: Bearer $WAVESPEED_API_KEY")
  RESULT=$(printf '%s' "$RESPONSE" | jq 'if has("data") then .data else . end')
  STATUS=$(printf '%s' "$RESULT" | jq -r '.status')
  case "$STATUS" in
    completed) printf '%s\n' "$RESULT" | jq '.outputs'; break ;;
    failed|cancelled|timeout) printf '%s\n' "$RESULT" | jq . >&2; exit 1 ;;
    created|processing) sleep 2 ;;
    *) printf 'Unexpected status: %s
' "$STATUS" >&2; exit 1 ;;
  esac
done
Node.js example
const submitUrl = "https://api.wavespeed.ai/api/v3/stability-ai/stable-diffusion";
const apiKey = process.env.WAVESPEED_API_KEY;
if (!apiKey) throw new Error('Set WAVESPEED_API_KEY');

async function requestJson(url, options = {}) {
  const response = await fetch(url, options);
  if (!response.ok) throw new Error(await response.text());
  return response.json();
}

// 1. Submit the prediction.
const body = await requestJson(submitUrl, {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
        "prompt": "A cinematic shot of a city at sunset, soft golden light",
        "size": "1024*1024",
        "seed": -1
}),
});
const task = body.data ?? body;
if (!task.id) throw new Error("Submission response did not contain a prediction id");
const resultUrl = task.urls?.get ||
  `https://api.wavespeed.ai/api/v3/predictions/${task.id}/result`;

// 2. Poll until the prediction finishes.
while (true) {
  const resultBody = await requestJson(resultUrl, {
    headers: { "Authorization": `Bearer ${apiKey}` },
  });
  const result = resultBody.data ?? resultBody;
  if (result.status === "completed") {
    console.log(result.outputs);
    break;
  }
  if (["failed", "cancelled", "timeout"].includes(result.status)) throw new Error(JSON.stringify(result));
  if (!["created", "processing"].includes(result.status)) throw new Error("Unexpected status: " + result.status);
  await new Promise(resolve => setTimeout(resolve, 2000));
}
Python example
import json
import os
import time
from urllib.request import Request, urlopen

api_key = os.environ["WAVESPEED_API_KEY"]
headers = {"Authorization": f"Bearer {api_key}", "Content-Type": "application/json"}
payload = {
    "prompt": "A cinematic shot of a city at sunset, soft golden light",
    "size": "1024*1024",
    "seed": -1
}

def request_json(url, data=None):
    request = Request(url, data=data, headers=headers, method="POST" if data else "GET")
    with urlopen(request) as response:
        return json.load(response)

# 1. Submit the prediction.
body = request_json("https://api.wavespeed.ai/api/v3/stability-ai/stable-diffusion", json.dumps(payload).encode())
task = body.get("data", body)
if not task.get("id"):
    raise RuntimeError("Submission response did not contain a prediction id")
result_url = task.get("urls", {}).get("get") or f"https://api.wavespeed.ai/api/v3/predictions/{task['id']}/result"

# 2. Poll until the prediction finishes.
while True:
    result_body = request_json(result_url)
    result = result_body.get("data", result_body)
    status = result.get("status")
    if status == "completed":
        print(result.get("outputs", []))
        break
    if status in {"failed", "cancelled", "timeout"}:
        raise RuntimeError(result)
    if status not in {"created", "processing"}:
        raise RuntimeError(f"Unexpected status: {status}")
    time.sleep(2)

Stable Diffusion API — Frequently asked questions

What is the Stable Diffusion API?

Stable Diffusion is a Stability AI model for image generation, exposed as a REST API on WaveSpeedAI. Stability AI Stable Diffusion is a latent text-to-image diffusion model that generates photo-realistic images from any text prompt. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing. You can call it programmatically or try it from the playground above.

How do I call the Stable Diffusion API?

POST your input parameters to the model's REST endpoint (shown in the API tab of this playground) with your WaveSpeedAI API key in the Authorization header. Submission returns a prediction ID. Poll the result endpoint starting around every 2 seconds, increase the interval for long-running tasks, and stop on any terminal status. The playground generates production-oriented Python, JavaScript, and cURL examples with timeouts, transient-error handling, and safe GET retries. Full request/response shape is documented at https://wavespeed.ai/docs/docs-api/stability-ai/stability-ai-stable-diffusion.

How much does Stable Diffusion cost per run?

Stable Diffusion starts at $0.004 per run. That figure is the base price — the final charge scales with the parameters you set in the form (output size, length, count, references, or whatever knobs this model exposes), so a higher-quality or larger output costs more than a minimal one. The exact cost for your current input is shown live next to the Generate button before you submit, and the actual per-call charge is recorded on the prediction afterwards.

What inputs does Stable Diffusion accept?

Key inputs: `prompt`, `image`, `size`, `seed`, `enable_base64_output`. The full JSON schema (types, defaults, allowed values) is rendered above the Generate button and mirrored in the API reference at https://wavespeed.ai/docs/docs-api/stability-ai/stability-ai-stable-diffusion.

How long does Stable Diffusion take to generate?

Median end-to-end generation time on WaveSpeedAI is around 4 seconds per request, based on recent successful runs. Queue time varies with global demand; live status is visible in the prediction record.

Can I use Stable Diffusion outputs commercially?

Commercial usage rights depend on the model's license, set by its provider (Stability AI). The license summary appears on the model card above; see WaveSpeedAI's Terms of Service for platform-level conditions.

Stable Diffusion | High-Quality Text-to-Image API on WaveSpeedAI