Sourceful Riverflow 2.0 Pro Text To Image
Playground
Try it on WaveSpeedAI!Sourceful Riverflow 2.0 Pro is an agentic image model optimized for robust, high-precision text-to-image generations. Ready-to-use REST inference API, best performance, no cold starts, affordable pricing.
Features
Riverflow 2.0 Pro is a premium text-to-image generation model that creates photorealistic and highly detailed images from text descriptions. With resolution options up to 4K, extensive aspect ratio support, and optional transparent background, it delivers professional-grade visuals for demanding creative workflows.
Why Choose This?
-
Ultra-high resolution Generate images at 1K, 2K, or 4K for stunning clarity and detail.
-
Extensive aspect ratios 10 preset options including ultra-wide 21:9, standard 16:9, square 1:1, and portrait 9:16.
-
Transparent background Optional transparency support for compositing and design workflows.
-
Photorealistic quality Excels at natural textures, lighting, and National Geographic-level photography.
-
Prompt Enhancer Built-in tool to automatically improve your image descriptions.
Parameters
| Parameter | Required | Description |
|---|---|---|
| prompt | Yes | Text description of the image you want to generate |
| resolution | No | Output resolution: 1K (default), 2K, 4K |
| aspect_ratio | No | Output ratio: 1:1, 21:9, 16:9, 3:2, 4:3, 5:4, 4:5, 3:4, 2:3, 9:16 |
| transparency | No | Enable transparent background (default: disabled) |
How to Use
- Write your prompt — describe the image in detail, including style, lighting, and composition.
- Select resolution — 1K for fast generation, 2K for balanced quality, 4K for maximum detail.
- Choose aspect ratio — select based on your target use case.
- Enable transparency (optional) — check if you need a transparent background.
- Run — submit and download your image.
Pricing
| Resolution | Cost per image |
|---|---|
| 1K | $0.135 |
| 2K | $0.135 |
| 4K | $0.297 |
Best Use Cases
- Professional Photography — Generate photorealistic portraits and landscapes.
- Marketing & Advertising — Create high-resolution visuals for campaigns and print.
- Editorial & Magazine — Produce National Geographic-style imagery.
- Product Visualization — Generate detailed product and lifestyle images.
- Design & Compositing — Use transparency for layered design workflows.
Pro Tips
- Use the Prompt Enhancer to refine your descriptions automatically.
- Include specific photography terms (natural light, sharp focus, raw texture) for more realistic results.
- 1K and 2K share the same price — choose 2K for better quality at no extra cost.
- Enable transparency when creating assets for compositing or layered designs.
- Use ultra-wide 21:9 for cinematic banners, 9:16 for mobile-first content.
- Describe lighting conditions and camera style for more precise outputs.
Notes
- Only prompt is required; other parameters have defaults.
- Transparent background works best when the generated content has a clear subject.
- 4K images take longer to generate but provide maximum detail.
- For best results, write detailed prompts with style, mood, and technical attributes.
Authentication
For authentication details, please refer to the Authentication Guide.
API Endpoints
Submit Task & Query Result
set -euo pipefail
export WAVESPEED_API_KEY="your-api-key"
REQUEST_BODY=$(cat <<'JSON'
{
"prompt": "A cinematic ocean wave at sunrise, highly detailed",
"resolution": "1k",
"aspect_ratio": "1:1",
"transparency": false
}
JSON
)
# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
-X POST "https://api.wavespeed.ai/api/v3/sourceful/riverflow-2.0-pro/text-to-image" \
-H "Authorization: Bearer ${WAVESPEED_API_KEY}" \
-H "Content-Type: application/json" \
-d "${REQUEST_BODY}")
TASK=$(printf '%s' "${SUBMIT_RESPONSE}" | jq 'if type == "object" and has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "${TASK}" | jq -r '.id // empty')
if [ -z "${PREDICTION_ID}" ]; 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 type == "object" and has("data") then .data else . end')
STATUS=$(printf '%s' "${RESULT}" | jq -r '.status // empty')
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
doneParameters
Task Submission Parameters
Request Parameters
| Parameter | Type | Required | Default | Range | Description |
|---|---|---|---|---|---|
| prompt | string | Yes | - | Text description of the image you want to generate. | |
| resolution | string | No | 1k | 1k, 2k, 4k | Output image resolution. Higher resolution produces more detailed images but costs more. |
| aspect_ratio | string | No | 1:1 | 1:1, 21:9, 16:9, 3:2, 4:3, 5:4, 4:5, 3:4, 2:3, 9:16 | Aspect ratio of the generated image. |
| transparency | boolean | No | false | - | Enable transparent background when supported by the generated content. |
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| code | integer | HTTP status code (e.g., 200 for success) |
| message | string | Status message (e.g., “success”) |
| data.id | string | Unique identifier for the prediction, Task Id |
| data.model | string | Model ID used for the prediction |
| data.outputs | array | Output values, usually URL strings; some models return text strings or structured result objects (empty when status is not completed) |
| data.urls | object | Object containing related API endpoints |
| data.urls.get | string | URL to retrieve the prediction result |
| data.status | string | Status of the task: created, processing, completed, or failed |
| data.created_at | string | ISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”) |
| data.error | string | Error message (empty if no error occurred) |
| data.timings | object | Object containing timing details |
| data.timings.inference | integer | Inference time in milliseconds |
Result Request Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| id | string | Yes | - | Task ID |
Result Response Parameters
| Parameter | Type | Description |
|---|---|---|
| code | integer | HTTP status code (e.g., 200 for success) |
| message | string | Status message (e.g., “success”) |
| data | object | The prediction data object containing all details |
| data.id | string | Unique identifier for the prediction |
| data.model | string | Model ID used for the prediction |
| data.outputs | array<string | object> | Array of generated outputs (empty when status is not completed). Items are usually URL strings, but may be text strings or structured result objects, depending on the model. |
| data.urls | object | Object containing related API endpoints |
| data.urls.get | string | URL to poll for the prediction result |
| data.status | string | Status: created, processing, completed, or failed |
| data.created_at | string | ISO timestamp of when the request was created |
| data.error | string | Error message (empty if no error occurred) |
| data.timings | object | Object containing timing details |
| data.timings.inference | integer | Inference time in milliseconds |