models

wan2.7-image

Markdown · JSON

wan2.7-image

Modell zur Bildgenerierung aus Text für Designvarianten und Illustrationen. Laut Alibaba ist diese Version auf eine schnellere Erstellung von Bildern ausgerichtet.

Über das Modell

Diese Beschreibung erläutert die Fähigkeiten des Modells. Die über Ailoot verfügbaren Eingaben, Ausgaben und Optionen sind unten für die ausgewählte Methode aufgeführt.

Wan2.7-Image erstellt Bilder aus einer Textvorgabe. In der aktuellen Ailoot-Karte sind ausschliesslich Texteingabe und ein Bild als Ergebnis enthalten. Laut Alibaba ist diese Version darauf ausgerichtet, Varianten schneller zu erzeugen. Die Herstellerspezifikation sieht ausserdem Bearbeitung, die Kombination von Referenzen und lokale Änderungen vor. Sie benötigen separate Unterstützung für Eingabebilder, die in der aktuellen Methode der Karte nicht enthalten ist.

Von Alibaba beschriebene Modi

Für den Referenzmodus sieht Alibaba bis zu neun Ausgangsbilder in einer Vorgabe vor. Sie bilden die Grundlage für das Erscheinungsbild eines Objekts, die Komposition und Details. Das Modell kann mehrere Materialien zu einer neuen Szene verbinden oder ein Ausgangsbild verändern und dabei den Hauptgegenstand erhalten. Für gezielte Bearbeitung sind ausdrücklich markierte Bereiche vorgesehen: In einem Bild können bis zu zwei rechteckige Abschnitte angegeben werden.

In der Alibaba-Spezifikation erzeugt der normale Modus ein bis vier Ergebnisse. Eine fortlaufende Serie erlaubt die Anfrage von bis zu 12 Bildern, die durch eine Geschichte oder gemeinsame Figurenmerkmale verbunden sind. Das ist für eine Serie die Obergrenze: Das Modell bestimmt die nötige Framezahl selbst und kann weniger zurückgeben. Die Vorgabe und die Ausgangsmaterialien helfen, die gemeinsame Handlungslinie beizubehalten.

Für normale Textgenerierung ohne Referenzen oder fortlaufende Serie ist ein Reasoning-Modus vorgesehen. Darin analysiert das Modell eine komplexe Beschreibung vor der Bilderstellung genauer. Bei bildbasierter Bearbeitung und fortlaufenden Serien wird dieser Modus nicht angewandt. Eine vorgegebene Palette mit 3–10 Farben ist ausserhalb fortlaufender Serien verfügbar.

Eingabe und Ergebnis

In den Modi mit Ausgangsbildern unterstützt der Hersteller JPEG, JPG, PNG ohne Transparenz, BMP und WEBP. Jede Seite darf 240 bis 8000 Pixel lang sein; die Dateigrösse beträgt höchstens 20 MB, das Seitenverhältnis reicht von 1:8 bis 8:1.

Die Textvorgabe unterstützt Chinesisch und Englisch und ist auf 5000 Zeichen begrenzt; der überzählige Teil wird abgeschnitten. Für diese Version sind weder eine negative Beschreibung noch eine zusätzliche Erweiterung der Vorgabe vorgesehen.

Das Ausgabeformat ist PNG, die Auflösung reicht bis zum Niveau 2K. Diese Bezeichnung bezieht sich auf die gesamte Pixelfläche und nicht auf eine feste maximale Seitenlänge; das Bildformat kann zwischen 1:8 und 8:1 gewählt werden. Bei Bearbeitung mit einer voreingestellten Auflösung behält das Ergebnis das Seitenverhältnis der letzten Referenz. Derselbe anfängliche Zufallswert hilft, ähnliche Varianten zu erhalten, garantiert aber keine vollständige Übereinstimmung.

Ailoot · Bilder POST /v1/images/generations wan2.7-image

wan2.7-image

Alibaba /wan2.7-image

Einstieg

Modell zur Bildgenerierung aus Text für Designvarianten und Illustrationen. Laut Alibaba ist diese Version auf eine schnellere Erstellung von Bildern ausgerichtet.

Zulässige Eingaben
Text
Ergebnisse
Bilder

In Ailoot verfügbar · Eingaben und Methoden

Ailoot · Bilder POST /v1/images/generations
Eingabe
text
Ausgabe
image
Ausgabeformat
Bilddatei
FeldTypAnforderungWerte und LimitsStandard
FeldmodelTypstringAnforderungErforderlichWerte und Limits
wan2.7-image
Standard—
FeldpromptTypstringAnforderungErforderlichWerte und Limits
Mindestlänge: 1
Standard—
FeldnTypintegerAnforderungOptionalWerte und Limits
Minimum: 1
Standard1
Feldresponse_formatTypstringAnforderungOptionalWerte und Limits
url, b64_json
Standard—
FeldstreamTypbooleanAnforderungOptionalWerte und LimitsStandardfalse
FeldsizeTypstringAnforderungOptionalWerte und Limits
Modellabhängig
Standard—
Feldpartial_imagesTypintegerAnforderungOptionalWerte und Limits
Modellabhängig
Standard—
Feldimages[].image_urlTypstringAnforderungNicht unterstütztWerte und Limits
Maximale Anzahl dekodierter Bytes: 20'971'520
MIME-Typen: image/png, image/jpeg
Maximale Anzahl Bilder je Array: 9
Bedingungen: Eine tatsächliche URL pro images[]-Objekt. Die Anzahl im Array ist von diesem Zeichenketten-Endwert zu unterscheiden.
Gilt, wenn: Nur JSON images/edits; JSON images/generations liest keine images-Referenzen ein.
Standard—
FeldimageTypfileAnforderungOptionalWerte und Limits
Maximale Anzahl dekodierter Bytes: 20'971'520
MIME-Typen: image/png, image/jpeg
Gilt, wenn: Erzeugung mit multipart/form-data
Standard—
Feldimage[]Typfile[]AnforderungOptionalWerte und Limits
Maximale Anzahl Elemente: 9
Maximale Anzahl dekodierter Bytes: 20'971'520
MIME-Typen: image/png, image/jpeg
Gilt, wenn: Erzeugung mit multipart/form-data
Standard—
Kombinationen von Eingabematerialien

Text zu Bild · Erforderlich: prompt

reference_images_generation · Erforderlich: prompt

Methodenparameter und Lebenszyklus
ParameterVertrag
Parametermaterial_typesVertragtext
ParameterrequiredVertragmodel, prompt
Parameteroptional_controlsVertragnull
Parametercontent_typeVertragapplication/json

Lebenszyklus: synchronous_result_then_owned_library

GET /v1/media/tasks/{task_id} · die tatsächlich zurückgegebene task_id oder ein Eintrag in der Medienbibliothek

GET /v1/media/assets/{asset_id}/content

GET /v1/media/assets

GET /v1/media/assets/{asset_id}

Methodenstrukturen und IDs sind exakt; die Fähigkeiten des Anbieters sind von der Zulassung einer Anfrage zu unterscheiden.

Tarife

Ailoot-Methodentarife

Ailoot BilderPOST /v1/images/generations
Ausgabe
$ 0.03 pro 1K-Bild
Ausgabe
$ 0.03 pro 2K-Bild

Ailoot reserviert vor einer Anfrage einen geschätzten Betrag. Nach dem Ergebnis rechnet Ailoot die endgültige Gebühr anhand des gemessenen Verbrauchs ab. Bei Streaming erfolgt die Abrechnung anhand des abschliessenden Verbrauchsdatensatzes. So funktionieren Reservierung und Abrechnung →

Details zum Referenztarif

Referenztarifstaffeln auf Modellebene ändern weder Methodenauswahl noch Kostenvoranschläge oder Gebühren. Für die aktive Abrechnung gelten die Tarife der ausgewählten Ailoot-Methode.

wan2.7-image

Preise nach Konfiguration

KonfigurationAbrechnungsbedingungenGebühr
Konfigurationwan2.7-image · StandardkonfigurationAbrechnungsbedingungenStandardkonfigurationGebühr
Eingabe · Eingabe $ 0.00 pro Aufruf
Ausgabe · Ausgabe $ 0.06 pro Aufruf

Beispielanfragen

Ailoot · Bilder

curlPython SDKNode.js SDK
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
export AILOOT_API_KEY
: "${AILOOT_PROMPT_FILE:?Set your actual UTF-8 image brief}"
export AILOOT_PROMPT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "wan2.7-image", "prompt": ""}')
f=Path(os.environ["AILOOT_PROMPT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 brief")
p['prompt']=f.read_text(encoding="utf-8")
if not p['prompt'].strip():raise SystemExit("Brief must contain text")
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin

def save_images(items):
    if not items: raise SystemExit("No completed images; retain the full response")
    for index, item in enumerate(items):
        encoded=item.get("b64_json")
        uri=item.get("url", "")
        if not encoded and uri.startswith("data:image/"):
            header, separator, encoded=uri.partition(",")
            if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
        if encoded:
            raw=base64.b64decode(encoded,validate=True)
        elif uri:
            uri=urljoin("https://api.ailoot.ai",uri)
            parsed=urlsplit(uri)
            if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
                raise SystemExit("Invalid returned image URL")
            owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
            args=["curl","--fail-with-body","--silent","--show-error",uri]
            if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
            temporary=Path(f"image-{index}.bin")
            subprocess.run(args+["-o",str(temporary)],check=True)
            raw=temporary.read_bytes()
            temporary.unlink()
        else: raise SystemExit("Image has neither bytes nor URL")
        if not raw: raise SystemExit("Empty image result")
        ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
        Path(f"image-{index}.{ext}").write_bytes(raw)
    print("Every returned image saved; complete response metadata retained")
save_images(json.loads(Path("result.json").read_text())["data"])
PY_RESULT
from openai import OpenAI
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin

def save_images(items):
    if not items: raise SystemExit("No completed images; retain the full response")
    for index, item in enumerate(items):
        encoded=item.get("b64_json")
        uri=item.get("url", "")
        if not encoded and uri.startswith("data:image/"):
            header, separator, encoded=uri.partition(",")
            if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
        if encoded:
            raw=base64.b64decode(encoded,validate=True)
        elif uri:
            uri=urljoin("https://api.ailoot.ai",uri)
            parsed=urlsplit(uri)
            if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
                raise SystemExit("Invalid returned image URL")
            owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
            args=["curl","--fail-with-body","--silent","--show-error",uri]
            if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
            temporary=Path(f"image-{index}.bin")
            subprocess.run(args+["-o",str(temporary)],check=True)
            raw=temporary.read_bytes()
            temporary.unlink()
        else: raise SystemExit("Image has neither bytes nor URL")
        if not raw: raise SystemExit("Empty image result")
        ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
        Path(f"image-{index}.{ext}").write_bytes(raw)
    print("Every returned image saved; complete response metadata retained")

f=Path(os.environ["AILOOT_PROMPT_FILE"])
if not f.is_file():raise SystemExit("Set your actual UTF-8 image brief file")
request={'model': 'wan2.7-image', 'prompt': ''}
request["prompt"]=f.read_text(encoding="utf-8")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.images.generate(**request)
Path("sdk-result.txt").write_text(str(result),encoding="utf-8")
save_images([{"b64_json":getattr(item,"b64_json",None),"url":getattr(item,"url",None)} for item in result.data])
import OpenAI from "openai";
import { readFileSync, writeFileSync } from "node:fs";
const key=process.env.AILOOT_API_KEY;
if(!key) throw new Error("Set your actual Ailoot API key");
const client=new OpenAI({baseURL:"https://api.ailoot.ai/v1",apiKey:key,maxRetries:0});
const request={"model": "wan2.7-image", "prompt": ""};
if(!process.env.AILOOT_PROMPT_FILE)throw new Error("Set your actual UTF-8 image brief file");
request.prompt=readFileSync(process.env.AILOOT_PROMPT_FILE,"utf8");
const result=await client.images.generate(request);
writeFileSync("sdk-result.json",JSON.stringify(result,null,2));
if(!result.data?.length) throw new Error("No completed images");
for(let index=0;index<result.data.length;index++) {
  const item=result.data[index];let encoded=item.b64_json,uri=item.url||"",raw;
  if(!encoded && uri.startsWith("data:image/")) {
    const comma=uri.indexOf(",");if(comma<0 || !uri.slice(0,comma).includes(";base64")) throw new Error("Unsupported image data URI");
    encoded=uri.slice(comma+1);
  }
  if(encoded) {
    if(encoded.length%4!==0 || !/^[A-Za-z0-9+/]*={0,2}$/.test(encoded)) throw new Error("Invalid Base64");
    raw=Buffer.from(encoded,"base64");
  } else if(uri) {
    const u=new URL(uri,"https://api.ailoot.ai");
    if(u.protocol!=="https:" || u.username || u.password) throw new Error("Invalid returned URL");
    const owned=u.origin==="https://api.ailoot.ai" && u.pathname.startsWith("/v1/media/assets/") && u.pathname.endsWith("/content");
    const response=await fetch(u,{headers:owned?{Authorization:"Bearer "+key}:{},redirect:"manual"});
    if(!response.ok) throw new Error("Image content download failed: "+response.status);
    raw=Buffer.from(await response.arrayBuffer());
  } else throw new Error("Image has neither bytes nor URL");
  if(!raw.length) throw new Error("Empty image result");
  const ext=raw.subarray(0,4).equals(Buffer.from([137,80,78,71]))?"png":raw[0]===255&&raw[1]===216?"jpg":raw.toString("ascii",0,4)==="RIFF"&&raw.toString("ascii",8,12)==="WEBP"?"webp":raw.toString("utf8").trimStart().startsWith("<svg")||raw.toString("utf8").trimStart().startsWith("<?xml")?"svg":"bin";
  writeFileSync(`image-${index}.${ext}`,raw);
}
console.log("Every returned image saved; sdk-result.json retains complete metadata");

Ergebnisse abrufen und speichern

Ailoot · Bilder

Laden Sie jedes zurückgegebene Bild herunter oder speichern Sie seinen Base64-Inhalt

  • GET /v1/media/tasks/{task_id}
  • GET /v1/media/assets/{asset_id}/content
  • GET /v1/media/assets
  • GET /v1/media/assets/{asset_id}
Alle fertiggestellten Ergebnisse aufbewahren

Speichern Sie jedes fertiggestellte Bild; rufen Sie jede zurückgegebene URL ab oder dekodieren Sie seinen Base64-Inhalt.

Jedes Datenelement speichern. Jedes b64_json dekodieren oder jede zurückgegebene signierte URL abrufen. Die Dateiendung anhand des tatsächlichen MIME-Typs bzw. der Bytes wählen.

Wenn die ursprüngliche Antwort geprüft werden muss

Wenn das Ergebnis einer Bildgenerierung oder -bearbeitung geprüft werden muss, die ursprüngliche operation_id/X-Client-Request-ID und die zurückgegebenen Ergebnisinformationen aufbewahren. Bereits vorhandene eigene Ergebnisse über die Medienbibliothek anhand tatsächlicher task_id- oder asset_id-Werte wiederherstellen. Die Generierungs-/Bearbeitungsanfrage nicht erneut senden und keine Abfrage-URL aus operation_id bilden.

Antwortfelder
FeldTyp
FeldcreatedTypinteger
Felddata[].urlTypstring
Felddata[].b64_jsonTypbase64 string
FeldusageTypobject
Fehler und nächste Schritte
AntwortBedingungNächster Schritt
Antwort400 · invalid_request_errorBedingungPflichtfelder, Darstellung des Eingabematerials oder Parameterwert ungültigNächster SchrittDie angegebenen Felder vor einer neuen Erstellungsanfrage korrigieren.
Antwortserver_errorBedingungDie zurückgegebene Antwort gibt an, dass der Vorgang oder das Ergebnis eine Prüfung erfordertNächster SchrittDie ursprünglich zurückgegebene Vorgangs-/Aufgaben-ID, die Anfrageheader und die Antwort aufbewahren; mit unterstützten Leseaufrufen für diesen ursprünglichen Vorgang fortfahren. Die Erstellungsanfrage nicht erneut senden.

Aliasnamen

Modellaliasnamen

Ailoot wan2.7-image

Aliasnamen für Methodenpfade

Verwenden Sie die oben angezeigten Methodenpfade.

Zugehörige Aufrufer-IDs

wan2.7-image

FAQ · wan2.7-image
Welche Eingaben und Ergebnisse sind verfügbar?

POST /v1/images/generations · wan2.7-image: text → image

Welche Felder verwendet die Anfrage?

POST /v1/images/generations · wan2.7-image: model, prompt, n, response_format, stream, image, image[]

Welche Grenzen gelten?

POST /v1/images/generations · wan2.7-image: n.minimum: 1

Weitere Details

Verbinden Sie Ailoot mit Claude Code, OpenCode, Hermes oder Ihrer eigenen Anwendung.

Das Unternehmen und sein Projektportfolio

Das Unternehmen und sein Projektportfolio: Millionen von Kunden; monatliche Umsätze in Milliardenhöhe.

Tokens mit Rabatt kaufen.

Aborabatt für regelmäßige Arbeit. Aktionscodes bieten bis 50% beim Tokenkauf.

Abo
Wählen Sie einen Tarif mit Rabatt für Ihre regelmäßigen Anfragen.
Aktionscode bis 50%
Geben Sie den Code beim Kauf ein. Der Preis wird nach den gültigen Aktionsbedingungen berechnet.
Ausgaben in der Historie
Modell, Tokens und Betrag werden für jede Anfrage gespeichert.

Abo wählen · Modellpreise ansehen

Verbinden Sie die API mit dem Produkt, das Sie verkaufen.

SaaS, Anwendungen und Bots nach dem offiziellen Angebot und Lizenzvertrag von Ailoot. Fordern Sie für den Weiterverkauf eine Reseller-Lizenz an.

Kommerzielle Anwendung
Integrieren Sie Text-, Bild-, Video- und Audioerzeugung in kostenpflichtige Funktionen Ihres Dienstes.
Reseller-Lizenz
Senden Sie Projektbeschreibung und Zugangsmodell. Fordern Sie schriftliche Nutzungs- und Weiterverkaufsbedingungen an.
Dokumente auf der Website
Offizielles Angebot, Lizenzvertrag und Datenschutzerklärung sind vor der Verbindung zugänglich.

Reseller-Lizenz anfordern · Offizielles Angebot und Lizenzvertrag