
Konsistente 3D-Charakter-Bilder API für $0.143
Erstelle einen Workflow für 3D-Charakter-Bilder mit Wan 2.7. Master plus fünf Szenen für $0.143. Berechne deine Kosten pro akzeptiertem Bild.
Ja – ein API-Workflow für konsistente 3D-Charakter-Bilder kann einen Master und fünf Szenekandidaten für weniger als fünfzehn Cent generieren. In unserem Test vom 3. September erstellte das Master-Bild in 32,1 Sekunden für 24 Credits. Eine zweite Anfrage an Wan 2.7 Image lieferte fünf Szenedateien in 59,0 Sekunden für 119 Credits. Die Summe betrug 143 Credits oder $0.143.[1]
Es gibt eine wichtige Einschränkung bei diesem Ergebnis. Der Test protokollierte den Task-Status, die Anzahl der Ausgaben, die Dauer und die Credits – er enthielt jedoch keine visuelle Überprüfung. Dies ist daher ein gemessener Generierungs- und Kosten-Test, keine Aussage darüber, dass fünf Bilder die Charakterüberprüfung bestanden. Das Tutorial unten zeigt, wie du denselben Workflow ausführst und die Kosten pro akzeptiertem Bild berechnest, nachdem ein Mensch die Ergebnisse überprüft hat.
Zusammenfassung
- Der Workflow nutzt
wan2.7-imagezweimal: zuerst für einen Kandidaten-Master, dann nach Genehmigung für eine fünfteilige verbundene Serie. - Wan 2.7 Image Gruppenmodus wird mit
enable_sequential: trueaktiviert; dadurch wird dasn-Limit von vier auf zwölf Bilder in einer Task erhöht.[3] - Die gemessene API-Gebühr betrug 24 Credits für den Master + 119 Credits für fünf Szenen = 143 Credits ($0.143).[1]
- Lade die datierten Testergebnisse herunter, die beide Task-IDs, Einstellungen, Abschlusszeiten und abgerechnete Credits ohne Abhängigkeit von temporären Output-URLs auflisten.
- Die fünfteilige Charge kostete $0.0238 pro abgerundetem Kandidaten. Einschließlich des Masters betragen die effektiven Kosten $0,0286 pro Szene nur, wenn der Master genehmigt und alle fünf Szenen die Überprüfung bestehen.
- „3D-Stil" bedeutet flache Bilddateien, die mit einem dreidimensionalen Cartoon-Look gerendert sind. Dieser Workflow erstellt kein Mesh, keine Skelett-, Rig- oder bearbeitbares 3D-Modell.
- Konsistenz ist nicht garantiert. Ein Referenzbild, ein festgelegter Identitätsvertrag, Gruppengenerierung und ein Review-Gate reduzieren Abweichungen; keines ist ein permanenter Charakterschutz.
Was der API-Test zur konsistenten Charakterisierung beantwortet
Kann eine API dieselbe 3D-Cartoonfigur über mehrere Szenen hinweg stabil halten, und was kostet jedes Bild beziehungsweise jeder Batch? Wenn ein Referenzbild die Figur bereits definiert, bleibt die Aufgabe, den Ablauf mit einer manuellen Freigabe zu automatisieren. Ein abgeschlossener Task bedeutet noch nicht, dass das Bild einsatzbereit ist.
Der Test trennt deshalb drei Kennzahlen: den technischen Abschluss des API-Tasks, die Kosten pro zurückgegebenem Kandidaten und die Kosten pro freigegebener Szene. Die ersten beiden stammen aus den Task- und Abrechnungsdaten; die dritte setzt eine Sichtprüfung voraus.
Warum Wan 2.7 Image zu einem fünfteiligen Charaktersatz passt
Wans offizielle Produktseite beschreibt sequenzielle Storytelling mit bis zu zwölf Bildern und Subjekt-/Stil-Kontinuität.[2] Die reAPI-Route stellt diese Funktion direkt bereit: Setze enable_sequential auf true, n auf die Anzahl der Bilder und frage einen Task nach dem geordneten URL-Array ab.[3]
Diese Anfrageleform gibt einen Task das Charakterreferenzbild, den Identitätsvertrag und die komplette Szenenliste. Fünf unabhängige Text-zu-Bild-Aufrufe müssten den Charakter aus Prosa fünfmal neu entdecken.
Dies ist eine Workflow-Wahl, keine universelle Qualitätsaussage. Wan stellt die Gruppen-Serien-Kontrolle bereit, die dieser Test benötigt.
Bevor du die erste API-Anfrage stellst
Du brauchst vier Dinge:
- einen reAPI-Schlüssel, gespeichert in
REAPI_API_KEY; - einen ursprünglichen fiktiven Charakter, den du verwenden darfst;
- eine kurze Liste visueller Merkmale, die jede Szene überstehen müssen;
- einen Ort zum Speichern genehmigter Dateien, da generierte URLs temporär sind.
Nutze einen ursprünglichen Charakter, den du reproduzieren darfst, anstatt einen berühmten Charakter oder den Hausstil eines Studios. Es ist auch einfacher zu bewerten.
Für diesen Test ist der Charaktervertrag bewusst konkret:
CHARACTER: ein ursprünglicher erwachsener anthropomorphe warmörangefarbener Fuchs-Forscher
FACE: cremefarbener Fang, kleine Kerbe im linken Ohr
CLOTHING: türkisfarbener Schal mit genau zwei weißen Streifen
ACCESSORIES: runde Messingschutzbrille auf der Stirn, dunkelblauer diagonal getragener Rucksack
ANCHORS: gelbes Dreieckpflaster auf dem Rucksack, zwei dunkle Schwanzringe, cremefarbene Schwanzspitze
DO NOT CHANGE: warmörangefarbenes Fell, cremefarbener Fang, Ohr-Kerb-Seite, Schal-Muster,
Brille, Rucksack-Pflaster, Schwanzmarkierungen, kompakte athletische KörperproportionenBeschreibungen wie „niedlich", „cinematisch" und „Premium" sind zu vage zum Überprüfen. Eine Ohr-Kerbe oder ein zwei-Streifen-Schal gibt dem Reviewer etwas Beobachtbares.
Schritt 1: Einen neutralen Charakter-Master generieren
Der Master sollte den Charakter erklären, keine Geschichte erzählen. Verwende gleichmäßiges Licht, einen schlichten Hintergrund und Winkel, die Gesicht, Kleidung, Tasche und Schwanz zeigen. Behalte das gleiche Seitenverhältnis bei, das für die Szenenserie geplant ist; im referenzgesteuerten Modus folgt Wan dem letzten Eingabebild-Verhältnis.[3]
curl https://reapi.ai/api/v1/images/generations \
-H "Authorization: Bearer $REAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "wan2.7-image",
"prompt": "Original stylized 3D cartoon character reference sheet for an adult anthropomorphic fox explorer. The same character shown in a clean front view and two three-quarter views. Identity anchors: a small notch in the left ear, teal scarf with exactly two white stripes, round brass goggles resting on the forehead, navy cross-body satchel with one yellow triangle patch, two dark rings on the tail and a cream tail tip. Warm orange fur, cream muzzle, compact athletic proportions, friendly alert expression. Neutral warm-gray studio background, soft even product lighting, full body visible, no text, no labels, no logo, no second character, no collage borders.",
"size": "16:9",
"resolution": "1K",
"n": 1,
"watermark": false
}'Die POST-Anfrage gibt eine Task-ID zurück, nicht das Bild selbst. Frage GET /api/v1/tasks/{id} ab, bis der Status completed oder failed wird.
Das Abfragen verbraucht keine Credits.[5]
In einem Produktions-Workflow solltest du hier anhalten und den Master überprüfen, bevor du die Serie generierst. Lehne ihn ab, wenn die drei Ansichten uneins sind, ein Anker fehlt oder ein Merkmal schwer zu erkennen wäre in einer anderen Pose. Der gemessene Test setzte sich ohne visuelles Genehmigungsgate fort, daher bleibt sein Master ein abgerundetem Kandidat.
Schritt 2: Fünf verbundene Szenen anfordern
Nimm die erste URL aus dem output.image_urls Array des abgeschlossenen Masters und platziere sie in MASTER_IMAGE_URL. Wan akzeptiert öffentliche HTTPS-Referenzbilder; Base64- und data:-URLs werden von dieser Route nicht akzeptiert.[3]
export MASTER_IMAGE_URL="https://your-temporary-or-hosted-url.example/master.png"
curl https://reapi.ai/api/v1/images/generations \
-H "Authorization: Bearer $REAPI_API_KEY" \
-H "Content-Type: application/json" \
-d @- <<JSON
{
"model": "wan2.7-image",
"prompt": "Use the reference image only to preserve the identity of the original adult fox explorer. Create a connected five-image story sequence, one separate scene per output, in the same polished stylized 3D cartoon rendering language. Preserve all identity anchors exactly: left-ear notch, teal scarf with exactly two white stripes, round brass forehead goggles, navy cross-body satchel with one yellow triangle patch, two dark tail rings, cream tail tip, muzzle shape and body proportions. Scene 1: dawn railway platform, medium-wide view, holding one red paper ticket. Scene 2: sunlit workshop, medium view, repairing a small wooden toy airplane. Scene 3: rainy night market, full-body view, carrying one yellow umbrella. Scene 4: snowy wooden footbridge at dusk, three-quarter view, holding a small warm lantern. Scene 5: rooftop at blue hour, rear three-quarter view with face still visible, looking across the city. One fox only in every image. No text, no logo, no wardrobe change, no extra limbs, no duplicate character, and do not combine scenes into a collage.",
"image_urls": ["$MASTER_IMAGE_URL"],
"size": "16:9",
"resolution": "1K",
"n": 5,
"enable_sequential": true,
"watermark": false
}
JSONGruppen- und Bearbeitungsmodi unterstützen bis zu 2K-Ausgabe. Die Pro-Modell-4K-Option ist nur für Text-zu-Bild, daher würde es eine Erhöhung dieser referenzgesteuerten Anfrage auf 4K zu einer ungültigen Konfiguration machen.[3]
Schritt 3: Führe das Genehmigungsgate sicher in Node.js aus
Speichere das komplette Beispiel unten als character-series.mjs und verwende Node.js 18 oder neuer. Der erste Durchlauf generiert nur den Master, gibt seine Task-ID aus und zeichnet sie auf, dann stoppt er. Überprüfe dieses Bild, bevor du APPROVED_MASTER_URL setzt und das Skript erneut für die fünfteilige Gruppe ausführst.
Das Skript wiederholt vorübergehende GET-Fehler, aber es wiederholt nie eine POST. Wenn die Verbindung während der Übermittlung unterbrochen wird, kann der Provider die Anfrage möglicherweise dennoch erhalten haben; überprüfe das Task-Log oder Dashboard, anstatt blind eine andere zahlbare Task zu erstellen.
import { appendFile } from 'node:fs/promises';
const baseUrl = 'https://reapi.ai';
const apiKey = process.env.REAPI_API_KEY;
const approvedMasterUrl = process.env.APPROVED_MASTER_URL?.trim();
const taskLogUrl = new URL(
'./character-series-task-ids.jsonl',
import.meta.url,
);
const masterPrompt = process.env.MASTER_PROMPT ??
'Original stylized 3D cartoon character reference sheet for an adult anthropomorphic fox explorer. The same character shown in a clean front view and two three-quarter views. Identity anchors: a small notch in the left ear, teal scarf with exactly two white stripes, round brass goggles resting on the forehead, navy cross-body satchel with one yellow triangle patch, two dark rings on the tail and a cream tail tip. Warm orange fur, cream muzzle, compact athletic proportions, friendly alert expression. Neutral warm-gray studio background, soft even product lighting, full body visible, no text, no labels, no logo, no second character, no collage borders.';
const groupPrompt = process.env.GROUP_PROMPT ??
"Use the reference image only to preserve the identity of the original adult fox explorer. Create a connected five-image story sequence, one separate scene per output, in the same polished stylized 3D cartoon rendering language. Preserve all identity anchors exactly: left-ear notch, teal scarf with exactly two white stripes, round brass forehead goggles, navy cross-body satchel with one yellow triangle patch, two dark tail rings, cream tail tip, muzzle shape and body proportions. Scene 1: dawn railway platform, medium-wide view, holding one red paper ticket. Scene 2: sunlit workshop, medium view, repairing a small wooden toy airplane. Scene 3: rainy night market, full-body view, carrying one yellow umbrella. Scene 4: snowy wooden footbridge at dusk, three-quarter view, holding a small warm lantern. Scene 5: rooftop at blue hour, rear three-quarter view with face still visible, looking across the city. One fox only in every image. No text, no logo, no wardrobe change, no extra limbs, no duplicate character, and do not combine scenes into a collage.";
if (!apiKey) {
throw new Error('Set REAPI_API_KEY before running this script.');
}
for (const [name, value] of [
['MASTER_PROMPT', masterPrompt],
['GROUP_PROMPT', groupPrompt],
]) {
if (!value.trim()) throw new Error(`${name} cannot be empty.`);
}
const headers = {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
};
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
async function readJson(response) {
const text = await response.text();
if (!text) return {};
try {
return JSON.parse(text);
} catch {
return { raw: text };
}
}
async function submitGeneration(body) {
let response;
try {
response = await fetch(`${baseUrl}/api/v1/images/generations`, {
method: 'POST',
headers,
body: JSON.stringify(body),
});
} catch (error) {
const detail = error instanceof Error ? error.message : String(error);
throw new Error(
`POST outcome is uncertain; do not submit it again automatically. ${detail}`,
);
}
const result = await readJson(response);
if (!response.ok) {
throw new Error(`${response.status}: ${JSON.stringify(result)}`);
}
if (!result.id) {
throw new Error(
'POST returned no task ID; do not resubmit automatically until checked.',
);
}
return result;
}
function retryDelayMs(response, attempt) {
const retryAfter = response?.headers.get('retry-after');
if (retryAfter) {
const seconds = Number(retryAfter);
if (Number.isFinite(seconds)) return Math.max(0, seconds * 1000);
const retryAt = Date.parse(retryAfter);
if (Number.isFinite(retryAt)) return Math.max(0, retryAt - Date.now());
}
return Math.min(1000 * (2 ** Math.min(attempt, 5)), 30000);
}
async function getTaskWithRetry(id, attempt) {
let response;
try {
response = await fetch(`${baseUrl}/api/v1/tasks/${id}`, { headers });
} catch (error) {
const delay = retryDelayMs(null, attempt);
console.warn(`Task GET failed; retrying in ${delay}ms.`);
await sleep(delay);
return null;
}
if (response.status === 429 || response.status >= 500) {
const delay = retryDelayMs(response, attempt);
await response.text();
console.warn(`Task GET returned ${response.status}; retrying in ${delay}ms.`);
await sleep(delay);
return null;
}
const task = await readJson(response);
if (!response.ok) {
throw new Error(`${response.status}: ${JSON.stringify(task)}`);
}
return task;
}
async function waitForTask(id, timeoutMs = 10 * 60 * 1000) {
const deadline = Date.now() + timeoutMs;
let transientAttempt = 0;
while (Date.now() < deadline) {
const task = await getTaskWithRetry(id, transientAttempt);
if (!task) {
transientAttempt += 1;
continue;
}
transientAttempt = 0;
if (task.status === 'completed') return task;
if (task.status === 'failed') {
console.error(JSON.stringify({
taskId: id,
status: task.status,
usageCredits: task.usage?.credits ?? null,
error: task.error ?? null,
}, null, 2));
throw new Error(`Task ${id} failed; see the record above.`);
}
await sleep(5000);
}
throw new Error(
`Polling timed out for ${id}. The task was not cancelled; resume GET polling instead of submitting another POST.`,
);
}
async function recordSubmission(stage, taskId) {
const record = {
stage,
taskId,
submittedAt: new Date().toISOString(),
};
console.log(`Submitted ${stage}: ${taskId}`);
try {
await appendFile(taskLogUrl, `${JSON.stringify(record)}\n`, 'utf8');
} catch (error) {
console.warn(`Could not write ${taskLogUrl.pathname}; keep task ID ${taskId}.`);
}
}
function requirePublicHttpsUrl(value) {
let parsed;
try {
parsed = new URL(value);
} catch {
throw new Error('APPROVED_MASTER_URL must be a valid public HTTPS URL.');
}
if (parsed.protocol !== 'https:') {
throw new Error('APPROVED_MASTER_URL must use HTTPS.');
}
}
async function main() {
if (!approvedMasterUrl) {
const submission = await submitGeneration({
model: 'wan2.7-image',
prompt: masterPrompt,
size: '16:9',
resolution: '1K',
n: 1,
watermark: false,
});
await recordSubmission('character_master', submission.id);
const task = await waitForTask(submission.id);
const masterUrl = task.output?.image_urls?.[0];
if (!masterUrl) throw new Error('Master task returned no image URL.');
console.log(JSON.stringify({
nextStep: 'Review this master. Rerun only after setting APPROVED_MASTER_URL.',
masterTaskId: task.id,
usageCredits: task.usage?.credits ?? null,
masterUrl,
}, null, 2));
return;
}
requirePublicHttpsUrl(approvedMasterUrl);
const submission = await submitGeneration({
model: 'wan2.7-image',
prompt: groupPrompt,
image_urls: [approvedMasterUrl],
size: '16:9',
resolution: '1K',
n: 5,
enable_sequential: true,
watermark: false,
});
await recordSubmission('five_scene_group', submission.id);
const task = await waitForTask(submission.id);
const sceneUrls = task.output?.image_urls ?? [];
console.log(JSON.stringify({
groupTaskId: task.id,
usageCredits: task.usage?.credits ?? null,
returnedSceneCount: sceneUrls.length,
sceneUrls,
}, null, 2));
}
main().catch((error) => {
console.error(error instanceof Error ? error.message : error);
process.exitCode = 1;
});Führe node character-series.mjs zuerst aus. Nach dem Überprüfen des zurückgegebenen Masters, führe es erneut mit APPROVED_MASTER_URL="https://..." node character-series.mjs aus.
Das Skript schreibt Task-IDs in character-series-task-ids.jsonl; seine Stageergebnisse enthalten abgerechnete usageCredits. Du kannst jeden eingebetteten Prompt mit MASTER_PROMPT oder GROUP_PROMPT überschreiben, aber ein leerer Override wird abgelehnt.
In n8n halte die gleiche Genehmigungsgrenze ein: der Master-Branch sollte bei einem menschlichen Review-Schritt enden, und nur eine genehmigte URL sollte in den Gruppengenerierungs-Branch eintreten.
Was der gemessene API-Durchlauf zurückgab
Die beiden Anfragen wurden wie folgt abgeschlossen:[1]
| Stage | Task ID | Time | Credits | Files returned |
|---|---|---|---|---|
| Character master | task_01a065451919736985878cfcbd2eb8a8 | 32.1s | 24 | 1 |
| Five-scene group | task_01a06545f23474bca896f6b98ee252bc | 59.0s | 119 | 5 |
| Total | — | — | 143 | 6 including master |
Dies sind zwei beobachtete Task-Zeiten, keine Latenz-Benchmark. Sie sagen nichts über p95-Leistung, eine andere Region, einen anderen Prompt oder zukünftige Kapazität aus. Die Output-URLs werden auch weggelassen, weil sie vorübergehend sind.
Am wichtigsten: „Dateien zurückgegeben: 5" bedeutet fünf abgerundete Kandidaten. Es beweist nicht, dass jede Ausgabe den Fuchs korrekt darstellt, der beabsichtigten Szene entspricht oder visuelle Mängel vermeidet.
Wie du Charakterkonsistenz Szene für Szene überprüfst
Öffne den Master neben jeder Szene. Beurteile nicht von kleinen Thumbnails; überprüfe das Gesicht, Outfit, Accessoires, Silhouette und angeforderte Aktion in einer nützlichen Zoomstufe.
| Review area | Pass condition | Typical failure |
|---|---|---|
| Fur, face, and species | Warm orange fur, cream muzzle, and fox proportions match | Fur color drifts or the face becomes another species |
| Left-ear anchor | Notch remains on the left ear when that ear is visible | Notch disappears or swaps sides |
| Scarf | Teal color and two white stripes remain | Color shifts, stripe count changes, scarf vanishes |
| Goggles and proportions | Brass goggles stay on the forehead; body proportions match | Goggles move to the eyes or the body is redesigned |
| Satchel | Navy cross-body satchel and yellow triangle patch remain | Patch changes shape or the satchel changes sides without cause |
| Tail | Two dark rings and cream tip remain when visible | Markings change between full-body scenes |
| Scene instruction | Setting, prop, action, and framing match the assigned scene | Two scenes merge or an output becomes a collage |
| Structural quality | No duplicate limbs, fused props, or extra main character | Umbrella, hands, or tail merge into the body |
Markiere einen Anker als N/A, wenn das Framing ihn wirklich verbirgt. Vergebe keinen Pass für ein verborgenes Merkmal, aber nenne es auch keinen Widerspruch. Ein Bild wird nur akzeptiert, wenn jeder sichtbare Identitätsanker korrekt ist, die angeforderte Szene vorhanden ist und kein großer struktureller Mangel besteht.
Dieses Gitter ist absichtlich schlicht. Automatisierte Vision-Bewertung kann dabei helfen, eine große Charge zu sortieren, aber sie sollte die Freigabeentscheidung für einen neuen Charakter nicht stillschweigend ersetzen.
Berechne Kosten pro generiertem und akzeptiertem Bild
Der aktuelle Tarif für Wan 2.7 Image ist $0.0238 pro generiertem Standard-Bild auf reAPI. Credits werden einmal bei der Task-Gesamtsumme abgerechnet und runden auf einen ganzen Credit auf:
ceil($0.0238 × 1 × 1.000) = 24 für den Master, während
ceil($0.0238 × 5 × 1.000) = 119 für die Gruppe.[3][4]
Für diesen Durchlauf:
group candidate cost = $0.119 / 5 = $0.0238
project cost = $0.024 + $0.119 = $0.143
accepted-image cost = $0.143 / accepted scene count| Accepted scenes from the five candidates | Effective cost per accepted scene |
|---|---|
| 5 | $0.0286 |
| 4 | $0.0358 |
| 3 | $0.0477 |
| 2 | $0.0715 |
| 1 | $0.1430 |
Wenn keiner besteht, hat das Projekt kein akzeptiertes Bild produziert, daher ist eine Figur pro akzeptiertem Bild undefiniert statt Null. Die $0.143 deckt auch nur die Generierung ab. Speicher, Orchestrierung, menschliche Überprüfung und spätere Animation gehören in ein vollständiges Produktionsbudget.
Tarife ändern sich. Die obigen Zahlen wurden am 3. September 2026 überprüft und getestet; verwende die Live-Seite Wan 2.7 Image-Modell, bevor du einen Preis in dein eigenes Produkt einfügst.
Behebe den kleinsten fehlgeschlagenen Teil
Wenn der Master falsch ist, stoppa und generiere ihn neu. Für eine fünfteilige Serie basierend auf einem schwachen Referenzbild zu zahlen, vervielfacht nur das Problem.
Wenn eine Szene seine Requisite vermisst, aber der Charakter stabil bleibt, versuche einen einzelnen n: 1 referenzgesteuerten Austausch mit einem kürzeren Szenen-Prompt. Mit der getesteten Rate kostet das etwa 24 Credits. Wenn mehrere Frames den Charakter umgestalten, überarbeite den Master oder entferne widersprüchliche Anweisungen, dann führe die verbundene Gruppe erneut aus.
Wans aktuelle Modell-Dokumentation sagt, dass fehlgeschlagene und abgelehnte Anfragen nicht berechnet werden. Trotzdem lese usage.credits auf jeder endgültigen Task: die kanonische Tasks API erlaubt einen positiven Wert bei einer fehlgeschlagenen Task, wenn eine modellspezifische Richtlinie eine Ladung nach der Generierung beibehält.[3][5]
Ein abgeschlossenes Bild, das dein Team kreativ ablehnt, bleibt zahlbar, weshalb die akzeptierte Bildkosten die nützliche Produktionsmetrik sind.
Sobald eine Szene besteht, speichere sie mit ihrer Task-ID, Prompt-Version, Referenz-Version und Review-Ergebnis. Generierte URLs verfallen, daher verschiebe genehmigte Assets in einen Speicher, den du kontrollierst, sobald praktisch.[3]
Häufige Anfängerfehler
Jede Szene von Text generieren. Eine detaillierte Beschreibung zu wiederholen bedeutet nicht, dass fünf unabhängige Stichproben eine Identität teilen. Verwende genehmigte Pixel erneut.
Die Charaktervereinbarung in Szenen-Prompts ändern. „Einen Wintermantel hinzufügen" kann eine angemessene Geschichtsänderung sein, aber es entfernt einen einfachen Kontinuitäts-Anker. Teste stabile Identität zuerst; führe später absichtliche Garderobe-Änderungen ein.
Zu viele Referenzen bereitstellen. Referenzen, die sich über das Gesicht, den Schwanz oder die Kleidung uneinig sind, geben dem Modell mehrere gültige Antworten. Beginne mit einem genehmigten Master.
Jede abgeschlossene Datei als verwendbar ansehen. Abschluss ist ein Systemzustand. Kreative Genehmigung ist eine Review-Entscheidung.
Nur die Schlagzeilenpreis veröffentlichen. Gebe an, ob die Zahl den Master, Wiederhohlungen, kreativ abgelehnte abgeschlossene Outputs, Speicher und menschliche Überprüfung abdeckt.
Häufig gestellte Fragen
Generiert diese API ein echtes 3D-Charaktermodell?
Nein. Sie gibt Bilddateien mit einem stilisierten 3D-Aussehen zurück. Sie gibt kein Mesh, Rig, Textuer-Paket, Skelett oder bearbeitbare Szene zurück.
Garantiert Wan 2.7 denselben Charakter in jedem Bild?
Nein. Der Gruppenmodus und ein Referenzbild geben dem Modell stärkere Kontinuitätssignale, aber sie erstellen keine permanente Charakter-ID. Jede Szene braucht trotzdem Review.
Wie viel hat die fünfteilige Charge gekostet?
Die Gruppen-Task verwendete 119 Credits oder $0.119 und gab fünf abgerundete Kandidaten zurück. Der separat generierte Master verwendete 24 Credits, was die Test-Summe auf $0.143 brachte.[1]
Warum ist die effektive Kosten nicht einfach $0.0238 pro Bild?
$0.0238 ist die Gruppen-Kosten pro abgerundetem Kandidaten. Ein Projekt braucht auch einen Master, und manche Kandidaten können visuell fehlschlagen. Teile die gesamten Projektausgaben durch die Anzahl der akzeptierten Szenen, um die nützliche Zahl zu erhalten.
Kann ich mein eigenes Charakter-Referenzbild verwenden?
Ja, wenn du es besitzt oder die Berechtigung hast, es zu verwenden und es über eine öffentliche HTTPS-URL verfügbar ist. Wan 2.7 Image akzeptiert bis zu neun Referenzbilder, obwohl ein einziges klares Master ein sinnvoller Anfangspunkt ist.[3]
Sollte ich denselben Seed für jede Szene verwenden?
Wan stellt einen Seed bereit, aber es ist kein Identitätsschutz. Für eine verbundene Serie sind das genehmigte Referenzbild und die Gruppenanfrage wichtiger. Ein wiederholter Seed mit geänderten Eingaben garantiert nicht das gleiche Gesicht oder Accessoires.
Kann ich mehr als fünf Szenen in einer Anfrage generieren?
Ja. Mit enable_sequential: true kann n so hoch wie zwölf sein. Beginne mit einem kleineren Set, weil Review und Prompt-Komplexität beide mit der Sequenz wachsen.
Wie verwandle ich die akzeptierten Bilder in Video?
Verwende jede genehmigte Szene als kontrollierter Start-Frame für ein Image-zu-Video-Modell. Der GPT Image 2 + Seedance 2.0 Charakter-Workflow erklärt die separate Animations-Stufe; das Getrennthalten verhindert, dass Motion-Fehler eine Charakter-Umgestaltung erzwingen.
Notiere, was du wirklich versenden würdest
Der API-Datensatz enthält einen Master, eine fünfteilige Gruppe, sechs zurückgegebene Dateien und eine Gesamtladung von $0.143. Er enthält keine kreative Akzeptanzquote, weil visuelle Bewertung außerhalb dieses Tests liegt.
Führe Abschluss, Kosten und menschliche Akzeptanz als separate Felder auf. Nach Anwendung des Gitters teile die vollständigen Projektkosten durch die Anzahl der Szenen, die du wirklich versenden würdest.
Für das komplette Anfrage-Schema, Limiten und aktuelles Billing-Verhalten, verwende die Wan 2.7 Image API-Dokumentation.
Referenzen
- reAPI. Wan 2.7 Image character-series test
record.
September 3, 2026. Master task
task_01a065451919736985878cfcbd2eb8a8; group tasktask_01a06545f23474bca896f6b98ee252bc. - Alibaba Wan. Wan official product page — Multi-Image Editing and Sequential Storytelling. Retrieved September 3, 2026. wan.video
- reAPI. Wan 2.7 Image API — group mode, reference inputs, resolution limits, task response, and errors. Retrieved September 3, 2026. reapi.ai/docs/wan-2-7-image
- reAPI. Wan 2.7 Image live model page and price estimator. Retrieved September 3, 2026. reapi.ai/models/wan-2-7-image
- reAPI. Tasks API — asynchronous status and polling behavior. Retrieved September 3, 2026. reapi.ai/docs/api/tasks
Further reading
- reAPI. GPT Image 2 + Seedance 2.0: A Character Consistency Workflow. Read the video workflow
- reAPI. AI Image Generation Cost vs Video: 2–9x More Per Frame. Read the cost analysis
Autor

Kategorien
Weitere Beiträge

Das Kontextfenster in Claude: Was zählt bei der Nutzung
Das Kontextfenster in Claude hat 1M Token, aber Werkzeugdefs, beibehaltenes Denken und Cache verbrauchen es alle. Mehr ist nicht automatisch besser.


Seedream 5 Pro Inhaltsfilter: Was sie blockieren
Seedream 5 Pro nutzt mehrschichtige Filter. Ablehnung zeigt selten welche Schicht auslöste. Erfahre was blockiert wird und welche Grenzen bleiben.


Dreamina Seedance 2.5 Prompt-Guide: Referenzen & Timing
Bessere Seedance-2.5-Prompts mit offiziellen Referenzlimits, 30-Sekunden-Phasen, Zeitsteuerung, Bearbeitung, Verlängerung und Keyframe-Vorlagen.
