MOSS Image API
OpenMOSS MOSS Image — an open-weights text-to-image model for long, detailed prompts, with sharp Chinese and English text rendered inside the image, 1K, 1.5K or 2K output, 15 aspect ratios from 1:3 to 3:1, and a LoRA variant that takes up to three custom LoRAs.
This MOSS Image API guide covers the two live endpoints on WaveSpeedAI, text-to-image and text-to-image-lora, with the 1K, 1.5K and 2K tiers, the aspect ratios, the output formats and the LoRA inputs. Playground, examples, pricing and API samples below all use the live MOSS Image endpoints.
/filters:quality(82)/examples/87f92188828c699eee25291d0c9eb320/6850341a-b54e-44db-a1c4-9194a5a22c8a-019c45b211a1.webp)
Overview
About the MOSS Image API
What MOSS Image does, how it fits in the OpenMOSS model lineup, and why teams reach for it.
MOSS Image is a image generation and editing model from OpenMOSS, available through the WaveSpeedAI REST API. OpenMOSS MOSS Image — an open-weights text-to-image model for long, detailed prompts, with sharp Chinese and English text rendered inside the image, 1K, 1.5K or 2K output, 15 aspect ratios from 1:3 to 3:1, and a LoRA variant that takes up to three custom LoRAs.
This MOSS Image API guide covers the two live endpoints on WaveSpeedAI, text-to-image and text-to-image-lora, with the 1K, 1.5K and 2K tiers, the aspect ratios, the output formats and the LoRA inputs. Playground, examples, pricing and API samples below all use the live MOSS Image endpoints.
The MOSS Image family on WaveSpeedAI ships 2 REST endpoints covering Text-To-Image workflow. Each variant carries its own pricing, parameter knobs, and example outputs — pick the one that matches your input modality and production constraints, or call several from the same API key to compose multi-step pipelines.
Run MOSS Image through the same API key, billing account, and rate-limit envelope you use for the other 1,000+ AI models on WaveSpeedAI. No separate vendor setup, no per-provider SDKs, no per-vendor rate-limit envelopes — one integration covers everything from text-to-image and text-to-video through audio synthesis, 3D generation, upscaling, and editing.
Specs
MOSS Image API capabilities and release status
The model-specific details developers search for before choosing an API: availability, expected output length, reference support, and the current live fallback.
Availability
Live now
MOSS Image is live in the WaveSpeedAI catalog as two endpoints on the same REST prediction flow: text-to-image and text-to-image-lora.
Resolution tiers
1K, 1.5K, 2K
The resolution parameter picks the total output size: 1k is about 1 megapixel, 1.5k about 2.4 megapixels and 2k about 4 megapixels. The aspect ratio then sets the shape.
Aspect ratios
15 ratios
From 1:3 and 3:1 through 1:1, 4:5, 3:2, 16:9 and 9:16 to the tall 9:21 and the wide 21:9, so one endpoint covers posters, banners, phone screens and square posts.
Text in images
Chinese and English
The prompt supports long, detailed descriptions and renders Chinese and English text inside the image.
LoRA
Up to 3
The text-to-image-lora endpoint accepts a list of up to three LoRAs, each with a path and a scale from 0 to 4.
Output formats
JPEG, PNG, WebP
JPEG is the default; PNG and WebP are available through the output_format parameter.
Endpoints
All MOSS Image API endpoints
2 MOSS Image endpoints available now on WaveSpeedAI — pick the variant that matches your workflow.
/filters:quality(82)/media/images/c97fd47a-ac26-4b5b-8ee1-b1680c2438eb.webp)
Moss Image Text To Image Lora
MOSS Image Text-to-Image LoRA generates images from long text prompts with up to 3 custom LoRAs, with sharp Chinese and English text rendering, 1K, 1.5K or 2K output and flexible aspect ratios. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.
/filters:quality(82)/media/images/8f17d71a-c9c5-44a2-9043-e997f7328f2e.webp)
Moss Image Text To Image
MOSS Image Text-to-Image generates images from long text prompts, with sharp Chinese and English text rendering, 1K, 1.5K or 2K output and flexible aspect ratios. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.
Examples
See MOSS Image in action
Real outputs generated by the MOSS Image API. Hover any video to preview, click to open the full-size viewer.
How to
How to use the MOSS Image API
Four steps from signup to a finished generation. Full Python, Node.js, and cURL examples are in the API section below.
- 01
Get an API key
Sign up for a WaveSpeedAI account and copy your API key from the dashboard. New accounts come with free starter credits — enough to run the playground a few dozen times before billing kicks in.
- 02
Submit a prediction
POST your input as JSON to https://api.wavespeed.ai/api/v3/wavespeed-ai/moss-image/text-to-image. The endpoint returns a prediction id immediately — generations are async so you don't hold an open connection during inference.
- 03
Poll for completion
GET https://api.wavespeed.ai/api/v3/predictions/{request_id}/result. Return outputs on completed; stop with an error on failed, cancelled, timeout, or deleted; continue polling for every other status.
- 04
Read the output URL
Once status is "completed", read the URL from data.outputs[0]. The URL points to your generated media on the WaveSpeedAI CDN — image, video, audio, or 3D file depending on the MOSS Image variant you called.
Use cases
What you can build with MOSS Image
Common workflows developers and creators use the MOSS Image API for.
Long, detailed prompts
wavespeed-ai/moss-image/text-to-image is built for prompts that describe a whole scene in detail: subject, setting, lighting, composition and style in one paragraph.
Posters and covers with Chinese or English text
The model renders Chinese and English text inside the image, which suits posters, book and album covers, signage mockups and social cards where the words are part of the picture.
Custom styles and characters with LoRA
wavespeed-ai/moss-image/text-to-image-lora applies up to three LoRAs at once, each with its own scale, for a house style, a recurring character or a product look.
Large images for print and displays
The 2k tier produces about 4 megapixels in one pass, and the 1.5k tier sits between it and 1k for a larger image at a lower cost.
Repeatable runs with a seed
Set the seed to repeat a result while you change only the prompt or the LoRA scale, and leave it at -1 for a new variation each time.
Tips
Tips for prompting MOSS Image
Practical advice for getting better outputs from MOSS Image — drawn from the patterns that work across image models in production pipelines.
- 01
Write the whole scene in one paragraph
MOSS Image takes long prompts well. Describe the subject, the setting, the lighting, the composition and the style in one paragraph instead of a list of keywords.
- 02
Put the exact words in quotes
For text inside the image, quote the words you want and say where they go, such as a headline at the top or a small line under the logo. Chinese and English both render.
- 03
Pick the tier before the ratio
Use 1k to explore, 1.5k for most deliverables and 2k for large prints, then choose the aspect ratio. The tier sets the total pixels and the ratio sets the shape.
- 04
Tune LoRAs with the scale
On the text-to-image-lora endpoint start each LoRA at scale 1 and adjust in small steps; with several LoRAs lower each scale a little so they do not fight.
Pricing
MOSS Image API pricing
Pricing is per-output. The final charge scales with the parameters you set in each variant's playground (resolution, duration, output count, references).
| Endpoint | Type | Starting price |
|---|---|---|
| wavespeed-ai/ | text-to-image | $0.025 |
| wavespeed-ai/ | text-to-image | $0.02 |
API
Call the MOSS Image API
Sign up for an API key at wavespeed.ai/accesskey, then submit a prediction via REST. The playground generates ready-to-paste samples for any combination of inputs.
POSThttps://api.wavespeed.ai/api/v3/wavespeed-ai/moss-image/text-to-image
# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
-X POST "https://api.wavespeed.ai/api/v3/wavespeed-ai/moss-image/text-to-image" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $WAVESPEED_API_KEY" \
-d '{
"prompt": "A cinematic shot of a city at sunset, soft golden light",
"aspect_ratio": "1:1",
"resolution": "1k",
"output_format": "jpeg"
}')
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="https://api.wavespeed.ai/api/v3/predictions/$PREDICTION_ID/result"
# 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|deleted) printf '%s\n' "$RESULT" | jq . >&2; exit 1 ;;
*) sleep 2 ;;
esac
doneconst submitUrl = "https://api.wavespeed.ai/api/v3/wavespeed-ai/moss-image/text-to-image";
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",
"aspect_ratio": "1:1",
"resolution": "1k",
"output_format": "jpeg"
}),
});
const task = body.data ?? body;
const resultUrl = `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", "deleted"].includes(result.status)) throw new Error(JSON.stringify(result));
await new Promise(resolve => setTimeout(resolve, 2000));
}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",
"aspect_ratio": "1:1",
"resolution": "1k",
"output_format": "jpeg"
}
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/wavespeed-ai/moss-image/text-to-image", json.dumps(payload).encode())
task = body.get("data", body)
result_url = 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", "deleted"}:
raise RuntimeError(result)
time.sleep(2)Compare
MOSS Image vs alternatives
When to pick MOSS Image over similar models on WaveSpeedAI.
MOSS Image vs Qwen-Image
Qwen-Image also supports Chinese and English text and adds image editing, multi-image editing and a camera-angle system in its family. MOSS Image is text-to-image only, with a LoRA variant and 1.5K and 2K tiers.
MOSS Image vs FLUX.2 [klein]
FLUX.2 [klein] ships 4B and 9B generation and edit models with LoRA support. MOSS Image focuses on long prompts and Chinese and English text rendering, with generation and LoRA endpoints but no edit endpoint.
MOSS Image vs Seedream 5
Seedream 5 Pro adds interactive precision editing, layer separation and multi-image fusion. MOSS Image does not edit existing images; it generates from a prompt and optional LoRAs.
FAQ
MOSS Image API — Frequently asked questions
Pricing, license, integration — common questions about running MOSS Image on WaveSpeedAI.
What is MOSS Image?
MOSS Image is an open-weights text-to-image model from OpenMOSS. On WaveSpeedAI it runs behind a REST API as two endpoints: text-to-image and text-to-image-lora.
Does MOSS Image edit images or take a reference image?
No. The live endpoints generate images from a text prompt, and the LoRA endpoint adds up to three LoRAs. For editing, use an edit model such as Seedream 5 or Qwen-Image.
How do I use LoRAs with MOSS Image?
Send the loras parameter to the text-to-image-lora endpoint: a list of up to three items, each with the LoRA path (a URL) and a scale between 0 and 4.
Which resolutions and aspect ratios does MOSS Image support?
Three resolution tiers (1k, 1.5k, 2k, about 1, 2.4 and 4 megapixels) and 15 aspect ratios from 1:3 to 3:1, including 9:16, 16:9, 9:21 and 21:9.
What is the MOSS Image API?
MOSS Image is a OpenMOSS image generation model exposed as a REST API on WaveSpeedAI. OpenMOSS MOSS Image — an open-weights text-to-image model for long, detailed prompts, with sharp Chinese and English text rendered inside the image, 1K, 1.5K or 2K output, 15 aspect ratios from 1:3 to 3:1, and a LoRA variant that takes up to three custom LoRAs. You can call it programmatically or try it from the playground linked above.
How do I call the MOSS Image API?
Sign up for a WaveSpeedAI account, copy your API key from /accesskey, then POST to https://api.wavespeed.ai/api/v3/wavespeed-ai/moss-image/text-to-image with your input as JSON. The endpoint 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. Production-oriented Python / Node.js / cURL examples are above.
How much does the MOSS Image API cost?
MOSS Image starts at $0.02 per run. The exact cost scales with the parameters you set (resolution, duration, output count, references). The live cost preview next to the Generate button in the playground shows the exact price for your current input.
Which MOSS Image variants are available?
WaveSpeedAI hosts 2 live MOSS Image endpoints: wavespeed-ai/moss-image/text-to-image-lora, wavespeed-ai/moss-image/text-to-image. Each variant has its own playground page and pricing.
Can I use MOSS Image outputs commercially?
Commercial usage rights follow the OpenMOSS model license. Most OpenMOSS models permit commercial output use; see each model's playground page for the specific license summary, and WaveSpeedAI's Terms of Service for platform-level conditions.
Why use MOSS Image on WaveSpeedAI instead of going direct?
One API key + one billing account across MOSS Image AND 1,000+ other AI models from other providers. No per-vendor SDK setup, no separate rate-limit envelopes, no rewrite-per-vendor integration code. Pricing is typically at parity with or below OpenMOSS's direct API.
Provider
About OpenMOSS
The team behind MOSS Image and the broader OpenMOSS model lineup on WaveSpeedAI.
OpenMOSS is the open-source team behind the MOSS family of models. MOSS Image is released as open weights under the Apache-2.0 licence and generates images from long prompts, with Chinese and English text rendering, up to 2K output and LoRA support. WaveSpeedAI hosts it behind a REST API with a text-to-image and a text-to-image-lora endpoint.
Start building with MOSS Image on WaveSpeedAI
Free starter credits on signup. One API key across 1,000+ AI models from OpenMOSS and every other provider.
/filters:quality(82)/examples/4548754d1cbb6e8d56379b58596214b7/89caa298-c8be-41db-ae63-b17e780fe154-b85c474690f4.webp)
/filters:quality(82)/examples/d12b5fb5c170478e4f83c29174fd589d/6b96a4a4-6f86-4486-8638-daf2116802f0-fd6de2aa232b.webp)
/filters:quality(82)/examples/c0361ea4b3a99a8ea038eb097ee35890/49b13827-adb8-4ad1-bc8d-3d7f41dfc319-831071ad8641.webp)
/filters:quality(82)/examples/9b7f93a3ce5599956b7cc672404c2c94/c2dfda45-0c03-47ed-a6c0-23910da910b1-89ad0a2b88dc.webp)