WAN 3.0 is LIVE — 30s in one shot | Try in Video Generator →

wavespeed-ai/

SAM 3 RLE is a unified foundation model for promptable image segmentation using text, points, or boxes to detect and segment objects. Returns RLE (Run-Length Encoding) encoded masks for efficient storage and processing. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

image-to-text
Input
Enable Safety Checker

Idle

wavespeed-ai/sam3-image-rle preview unavailable

$0.005per run·~200 / $1

Next:

ExamplesView all

the juice

the boat

the man

the woman

the cat

Related Models

README

SAM3 Image Segmentation RLE

SAM3 Image Segmentation RLE is an advanced image segmentation model based on Meta's Segment Anything Model 3. It returns segmentation masks in RLE (Run-Length Encoding) format — a compact, program-friendly output ideal for API integration, automated pipelines, and machine learning workflows.

Why Choose This?

  • RLE output format Returns compact Run-Length Encoded mask data instead of image files — smaller payload, faster transfer.

  • Multiple prompt types Segment objects using text prompts, point prompts, box prompts, or any combination.

  • API-optimized Designed for programmatic use, batch processing, and automated workflows.

  • COCO-compatible RLE format is directly compatible with COCO dataset tools and annotation pipelines.

  • Prompt Enhancer Built-in tool to automatically improve your text prompts for better results.

  • Ultra-affordable Just $0.005 per image for professional-quality segmentation.

Parameters

ParameterRequiredDescription
imageYesSource image to segment (upload or URL)
promptNo*Text description of the object to segment
point_promptsNo*Point coordinates to identify the target object
box_promptsNo*Bounding box coordinates to identify the target object
apply_maskNoOverlay the segmentation mask on the original image

*At least one prompt type (text, boxes, or points) must be provided.

How to Use

  1. Upload your image — drag and drop or paste a URL.
  2. Add prompts — provide at least one of the following:
  • Text prompt — describe the object to segment (e.g., "the man", "the dog").
  • Point prompts — click "+ Add Item" to add point coordinates.
  • Box prompts — click "+ Add Item" to add bounding box coordinates.
  1. Enable apply_mask (optional) — check to include mask overlay data.
  2. Run — submit and receive RLE-encoded segmentation data.

Output Format

The model returns RLE (Run-Length Encoding) data in JSON format:

{
 "rle": "146301 3 147834 11 149368 14 150903 16..."
}

Decoding RLE in Python

from pycocotools import mask as mask_utils

rle_data = {"counts": "146301 3 147834 11...", "size": [height, width]}
binary_mask = mask_utils.decode(rle_data) # Returns numpy array

Pricing

ItemCost
Per image$0.005

Simple flat-rate pricing regardless of image size or prompt complexity.

Best Use Cases

  • ML Data Annotation — Generate segmentation masks for training datasets in COCO format.
  • Automated Pipelines — Integrate segmentation into batch processing workflows.
  • API Integration — Compact output for efficient API responses.
  • Computer Vision — Programmatic mask processing for CV applications.
  • Background Removal at Scale — Extract masks for automated image processing.

Pro Tips

  • Use this model when you need programmatic access to mask data.
  • Use SAM3 Image if you need direct image output.
  • RLE format is compatible with pycocotools for easy decoding.
  • Combine multiple prompt types for more accurate segmentation.
  • Text prompts work best for common objects with clear descriptions.

Notes

  • At least one prompt type must be provided (text, points, or boxes).
  • Output is RLE-encoded JSON, not an image file.
  • Use pycocotools or similar libraries to decode RLE data.
  • Ideal for automated and batch processing workflows.

Related Models

  • SAM3 Image — Same segmentation with direct image output.
  • Bria RMBG — Background removal model.
Note:This website uses AI models provided by third parties. Documentation prices are for reference and may be outdated. The Generate button shows an estimate; the final task charge prevails.

Sam3 Image Rle API — Quick start

Grab a WaveSpeedAI API key, then call POST https://api.wavespeed.ai/api/v3/wavespeed-ai/sam3-image-rle 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 Sam3 Image Rle below.

HTTP example
set -euo pipefail

: "${WAVESPEED_API_KEY:?Set WAVESPEED_API_KEY}"

REQUEST_BODY=$(cat <<'JSON'
{
    "image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
    "apply_mask": true
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/wavespeed-ai/sam3-image-rle" \
  -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="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
done
Node.js example
const submitUrl = "https://api.wavespeed.ai/api/v3/wavespeed-ai/sam3-image-rle";
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({
        "image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
        "apply_mask": true
}),
});
const task = body.data ?? body;
if (!task.id) throw new Error("Submission response did not contain a prediction id");
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));
}
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 = {
    "image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
    "apply_mask": True
}

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/sam3-image-rle", 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 = 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)

Sam3 Image Rle API — Frequently asked questions

What is the Sam3 Image Rle API?

Sam3 Image Rle is a WaveSpeedAI model for AI inference, exposed as a REST API on WaveSpeedAI. SAM 3 RLE is a unified foundation model for promptable image segmentation using text, points, or boxes to detect and segment objects. Returns RLE (Run-Length Encoding) encoded masks for efficient storage and processing. 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 Sam3 Image Rle 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/wavespeed-ai/sam3-image-rle.

How much does Sam3 Image Rle cost per run?

Sam3 Image Rle starts at $0.005 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 Sam3 Image Rle accept?

Key inputs: `prompt`, `image`, `apply_mask`, `box_prompts`, `enable_sync_mode`, `point_prompts`. 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/wavespeed-ai/sam3-image-rle.

How long does Sam3 Image Rle take to generate?

Median end-to-end generation time on WaveSpeedAI is around 6 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 Sam3 Image Rle outputs commercially?

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

SAM3 Image RLE | AI Image Understanding API on WaveSpeedAI