
Imágenes de personajes 3D consistentes con API por $0.143
Crea un flujo de personaje 3D consistente con Wan 2.7: genera un maestro y cinco escenas por $0.143 y calcula el coste real por imagen aceptada.
Sí: un flujo de trabajo de API para imágenes de personaje 3D consistente puede producir un personaje base y cinco escenas candidatas por menos de quince centavos. En nuestra prueba del 3 de septiembre, la imagen base se completó en 32,1 segundos por 24 créditos. Una segunda solicitud Wan 2.7 Image devolvió cinco archivos de escena en 59,0 segundos por 119 créditos. El total fue 143 créditos, o $0.143.[1]
Hay un límite importante para ese resultado. La prueba registró estado de tarea, cantidad de salida, tiempo y créditos; no incluyó una revisión visual. Por lo tanto, es una prueba medida de generación y costo, no una afirmación de que cinco imágenes pasaron revisión de personaje. El tutorial a continuación muestra cómo ejecutar el mismo flujo de trabajo y calcular el costo por imagen aceptada después de que un humano revise los resultados.
TL;DR
- El flujo de trabajo usa
wan2.7-imagedos veces: una para un candidato de personaje base, luego, después de aprobación, una para una serie conectada de cinco imágenes. - El modo de grupo Wan 2.7 Image se habilita con
enable_sequential: true; aumenta el límitende cuatro a doce imágenes en una tarea.[3] - El cargo de API medido fue 24 créditos para el base + 119 créditos para cinco escenas = 143 créditos ($0.143).[1]
- Descarga el registro de prueba fechado, que lista ambos IDs de tarea, configuración, tiempos de finalización y créditos liquidados sin depender de URLs de salida temporales.
- El lote de cinco escenas costó $0.0238 por candidato completado. Incluyendo el base, el costo efectivo es $0.0286 por escena solo si el base es aprobado y las cinco escenas pasan revisión.
- "Estilo 3D" significa archivos de imagen plana renderizados con un aspecto de dibujos animados dimensional. Este flujo de trabajo no crea una malla, esqueleto, rigging o modelo 3D editable.
- La consistencia no está garantizada. Una imagen de referencia, contrato de identidad fijo, generación de grupo y una compuerta de revisión reducen la variación; ninguno es un bloqueo permanente de personaje.
Qué responde la prueba de API de personaje consistente
¿Puede una API mantener el mismo personaje de estilo 3D entre varias escenas y cuánto cuesta cada imagen o lote? Si una imagen de referencia ya define al personaje, el reto que queda es automatizar el proceso sin eliminar la revisión humana. Que una tarea termine no significa que la imagen ya sea aprovechable.
Por eso, la prueba separa tres métricas: la finalización técnica de la tarea, el coste por imagen candidata y el coste por escena aprobada. Las dos primeras salen de los registros de tareas y facturación; la tercera exige revisar las imágenes.
Por qué Wan 2.7 Image se ajusta a un conjunto de cinco escenas de personaje
La página oficial del producto Wan describe narración secuencial con hasta doce imágenes y continuidad de sujeto y estilo.[2] La ruta reAPI expone esa característica directamente: establece enable_sequential en true, establece n al número de imágenes y sondea una tarea para el arreglo de URL ordenado.[3]
Esa forma de solicitud proporciona a una tarea la referencia de personaje, contrato de identidad y lista completa de escenas. Cinco llamadas de generación de imagen independientes tendrían que redescubrir el personaje de la prosa cinco veces.
Esta es una opción de flujo de trabajo, no una afirmación universal de calidad. Wan proporciona el control de grupo y serie necesario para esta prueba.
Antes de hacer la primera solicitud de API
Necesitas cuatro cosas:
- una clave reAPI almacenada en
REAPI_API_KEY; - un personaje ficticio original que tienes derecho a usar;
- una lista corta de rasgos visuales que deben sobrevivir en cada escena;
- un lugar para retener archivos aprobados, porque las URLs generadas son temporales.
Usa un personaje original que tienes derecho a reproducir, en lugar de un personaje famoso o un estilo de estudio nombrado. También es más fácil de evaluar.
Para esta prueba, el contrato de personaje es deliberadamente concreto:
CHARACTER: an original adult anthropomorphic warm orange fox explorer
FACE: cream muzzle, small notch in the left ear
CLOTHING: teal scarf with exactly two white stripes
ACCESSORIES: round brass goggles on forehead, navy cross-body satchel
ANCHORS: yellow triangle patch on satchel, two dark tail rings, cream tail tip
DO NOT CHANGE: warm orange fur, cream muzzle, ear-notch side, scarf pattern,
goggles, satchel patch, tail markings, compact athletic body proportionsDescripciones tales como "lindo", "cinematográfico" y "premium" son demasiado amplias para auditar. Una muesca de oreja o un pañuelo de dos franjas da al revisor algo observable.
Paso 1: Generar un personaje base neutral
El base debe explicar el personaje, no contar una historia. Usa luz uniforme, fondo plano y ángulos que revelen la cara, ropa, bolsa y cola. Mantenlo en la relación de aspecto planeada para el conjunto de escenas; en modo impulsado por referencia, Wan sigue la relación de la última imagen de entrada.[5]
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
}'El POST devuelve un ID de tarea en lugar de la imagen misma. Sondea GET /api/v1/tasks/{id} hasta que el estado sea completed o failed. El sondeo no consume créditos.[5]
En un flujo de trabajo de producción, detente aquí e inspecciona el base antes de generar la serie. Recházalo si las tres vistas no concuerdan, falta un ancla o una característica sería difícil de reconocer en otra pose. La prueba medida continuó sin una compuerta de aprobación visual, por lo que su base sigue siendo un candidato completado.
Paso 2: Solicitar cinco escenas conectadas
Toma la primera URL del arreglo output.image_urls del base completado y colócala en MASTER_IMAGE_URL. Wan acepta imágenes de referencia HTTPS públicas; URLs base64 y data: no son aceptadas por esta ruta.[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
}
JSONEl grupo y los modos de edición soportan hasta salida 2K. La opción 4K del modelo Pro es solo texto a imagen, por lo que elevar esta solicitud impulsada por referencia a 4K sería una configuración inválida.[3]
Paso 3: Ejecutar la compuerta de aprobación de forma segura en Node.js
Guarda el ejemplo completo a continuación como character-series.mjs y usa Node.js 18 o más nuevo. La primera ejecución genera solo el base, imprime y registra su ID de tarea, luego se detiene. Revisa esa imagen antes de establecer APPROVED_MASTER_URL y ejecutar el script de nuevo para el grupo de cinco escenas.
El script reintenta fallos GET transitorios, pero nunca reintenta un POST. Si la conexión se cae durante el envío, el proveedor aún puede haber recibido la solicitud; revisa el registro de tarea o el dashboard en lugar de crear ciegamente otra tarea facturable.
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;
});Ejecuta node character-series.mjs primero. Después de revisar el base devuelto, vuelve a ejecutar con APPROVED_MASTER_URL="https://..." node character-series.mjs. El script escribe IDs de tarea en character-series-task-ids.jsonl; sus resultados de etapa incluyen usageCredits liquidados. Puedes anular cualquiera de los avisos integrados con MASTER_PROMPT o GROUP_PROMPT, pero un override vacío es rechazado.
En n8n, mantén el mismo límite de aprobación: la rama base debe terminar en un paso de revisión humana, y solo una URL aprobada debe entrar en la rama de generación de grupo.
Qué devolvió la ejecución de API medida
Las dos solicitudes se completaron así:[1]
| Etapa | ID de tarea | Tiempo | Créditos | Archivos devueltos |
|---|---|---|---|---|
| Personaje base | task_01a065451919736985878cfcbd2eb8a8 | 32,1s | 24 | 1 |
| Grupo de cinco escenas | task_01a06545f23474bca896f6b98ee252bc | 59,0s | 119 | 5 |
| Total | — | — | 143 | 6 incluyendo base |
Estos son dos tiempos de tarea observados, no una referencia de latencia. No dicen nada sobre rendimiento p95, otra región, un prompt diferente o capacidad futura. Las URLs de salida también se omiten porque son temporales.
Lo más importante es que "archivos devueltos: 5" significa cinco candidatos completados. No prueba que cada salida represente al zorro correctamente, se asigne a la escena prevista o evite defectos visuales.
Cómo revisar consistencia de personaje escena por escena
Abre el base junto a cada escena. No juzgues desde miniaturas pequeñas; inspecciona la cara, atuendo, accesorios, silueta y acción solicitada en un zoom útil.
| Área de revisión | Condición de aprobación | Fallo típico |
|---|---|---|
| Pelaje, cara y especie | El pelaje naranja cálido, hocico crema y proporciones de zorro coinciden | El color del pelaje cambia o la cara se convierte en otra especie |
| Ancla de oreja izquierda | La muesca permanece en la oreja izquierda cuando esa oreja es visible | La muesca desaparece o cambia de lado |
| Pañuelo | El color azul verdoso y dos franjas blancas permanecen | El color cambia, el número de franjas cambia, el pañuelo desaparece |
| Gafas y proporciones | Las gafas de latón permanecen en la frente; las proporciones del cuerpo coinciden | Las gafas se mueven a los ojos o el cuerpo se rediseña |
| Bolsa | La bolsa de hombro azul marino y parche de triángulo amarillo permanecen | El parche cambia de forma o la bolsa cambia de lados sin motivo |
| Cola | Dos anillos oscuros y punta crema permanecen cuando son visibles | Las marcas cambian entre escenas de cuerpo completo |
| Instrucción de escena | El escenario, utilería, acción y encuadre coinciden con la escena asignada | Dos escenas se fusionan o una salida se convierte en un collage |
| Calidad estructural | Sin extremidades duplicadas, accesorios fusionados o personaje principal extra | Paraguas, manos o cola se fusionan en el cuerpo |
Marca un ancla N/A cuando el encuadre genuinamente lo oculta. No concedas una aprobación por un rasgo oculto, pero tampoco lo llames una contradicción. Una imagen se acepta solo cuando cada ancla de identidad visible es correcta, la escena solicitada está presente y no hay un defecto estructural importante.
Esta rúbrica es intencionalmente simple. La puntuación automática de visión puede ayudar a ordenar un lote grande, pero no debe reemplazar silenciosamente la decisión de lanzamiento para un personaje nuevo.
Calcula el costo por imagen completada y aceptada
La tasa actual de Wan 2.7 Image es $0.0238 por imagen Standard generada en reAPI. Los créditos se liquidan una vez en el total de la tarea y se redondean al alza a un crédito completo: ceil($0.0238 × 1 × 1,000) = 24 para el base, mientras que ceil($0.0238 × 5 × 1,000) = 119 para el grupo.[3][4]
Para esta ejecución:
costo de candidato de grupo = $0.119 / 5 = $0.0238
costo de proyecto = $0.024 + $0.119 = $0.143
costo de imagen aceptada = $0.143 / número de escenas aceptadas| Escenas aceptadas de los cinco candidatos | Costo efectivo por escena aceptada |
|---|---|
| 5 | $0.0286 |
| 4 | $0.0358 |
| 3 | $0.0477 |
| 2 | $0.0715 |
| 1 | $0.1430 |
Si ninguno pasa, el proyecto no produjo imagen aceptada, por lo que una cifra por imagen aceptada es indefinida en lugar de cero. Los $0.143 también cubren solo generación. Almacenamiento, orquestación, revisión humana y animación posterior pertenecen a un presupuesto completo de producción.
Las tarifas cambian. Las cifras anteriores se verificaron y probaron el 3 de septiembre de 2026; usa la página de modelo en vivo de Wan 2.7 Image antes de colocar un precio en tu propio producto.
Arregla la parte más pequeña fallida
Si el base es incorrecto, detente y regeneralo. Pagar por una serie de cinco imágenes basada en una referencia débil solo multiplica el problema.
Si una escena pierde su utilería pero el personaje permanece estable, intenta un reemplazo impulsado por referencia n: 1 único con un prompt de escena más corto. En la tasa probada, eso suma aproximadamente 24 créditos. Si varios fotogramas rediseñan el personaje, revisa el base o elimina instrucciones conflictivas, luego vuelve a ejecutar el grupo conectado.
La documentación del modelo actual de Wan dice que las solicitudes fallidas y rechazadas no se cobran. Aún así, lee usage.credits en cada tarea terminal: la API de tareas canónica permite un valor positivo en una tarea fallida cuando una política específica del modelo mantiene un cargo posterior a la generación.[3][5] Una imagen completada que tu equipo rechaza creativamente permanece facturable, razón por la cual el costo de imagen aceptada es la métrica de producción útil.
Una vez que una escena pasa, consérvala con su ID de tarea, versión de prompt, versión de referencia y resultado de revisión. Las URLs generadas expiran, así que mueve activos aprobados al almacenamiento que controles tan pronto como sea práctico.[3]
Errores comunes para principiantes
Generar cada escena desde texto. Repetir una descripción detallada no hace que cinco muestras independientes compartan una identidad. Reutiliza píxeles aprobados.
Cambiar el contrato de personaje dentro de prompts de escena. "Añade un abrigo de invierno" puede ser un cambio de historia razonable, pero elimina un ancla de continuidad fácil. Prueba identidad estable primero; introduce cambios de guardarropa deliberados después.
Suministrar demasiadas referencias. Referencias que discrepan sobre la cara, cola o ropa dan al modelo varias respuestas válidas. Comienza con un base aprobado.
Llamar usable a cada archivo completado. La finalización es un estado del sistema. La aprobación creativa es una decisión de revisión.
Publicar solo el precio titular. Establece si la cifra cubre el base, reintentos, salidas completadas rechazadas creativamente, almacenamiento y revisión humana.
Preguntas frecuentes
¿Esta API genera un modelo de personaje 3D real?
No. Devuelve archivos de imagen con una apariencia 3D estilizada. No devuelve malla, rigging, paquete de texturas, esqueleto o escena editable.
¿Wan 2.7 garantiza el mismo personaje en cada imagen?
No. El modo de grupo y una imagen de referencia dan al modelo señales de continuidad más fuertes, pero no crean una ID de personaje permanente. Cada escena aún necesita revisión.
¿Cuánto costó el lote de cinco escenas?
La tarea de grupo utilizó 119 créditos, o $0.119, y devolvió cinco candidatos completados. El base generado por separado utilizó 24 créditos, llevando el total de la prueba a $0.143.[1]
¿Por qué el costo efectivo no es simplemente $0.0238 por imagen?
$0.0238 es el costo de grupo por candidato completado. Un proyecto también necesita un base, y algunos candidatos pueden fallar la revisión visual. Divide el gasto total del proyecto por el número de escenas aceptadas para obtener la cifra útil.
¿Puedo usar mi propia imagen de referencia de personaje?
Sí, si eres propietario o tienes permiso para usarla y está disponible a través de una URL HTTPS pública. Wan 2.7 Image acepta hasta nueve imágenes de referencia, aunque un base único y claro es un punto de partida sensato.[3]
¿Debo usar la misma semilla para cada escena?
Wan expone una semilla, pero no es un bloqueo de identidad. Para una serie conectada, la referencia aprobada y la solicitud de grupo son más importantes. Una semilla repetida con entradas cambiadas no garantiza la misma cara o accesorios.
¿Puedo generar más de cinco escenas en una solicitud?
Sí. Con enable_sequential: true, n puede ser tan alto como doce. Comienza con un conjunto más pequeño porque la revisión y la complejidad del prompt crecen con la secuencia.
¿Cómo convierto las imágenes aceptadas en vídeo?
Usa cada escena aprobada como fotograma de inicio controlado para un modelo de imagen a vídeo. La guía de flujo de trabajo de personaje GPT Image 2 + Seedance 2.0 explica la etapa de animación separada; mantenerla separada evita que fallos de movimiento fuerzen un rediseño del personaje.
Registra lo que en realidad enviarías
El registro de API contiene un base, un grupo de cinco imágenes, seis archivos devueltos y un cargo total de $0.143. No contiene una tasa de aceptación creativa porque la puntuación visual estuvo fuera de esta prueba.
Mantén finalización, costo y aceptación humana como campos separados. Después de aplicar la rúbrica, divide el costo total del proyecto por el número de escenas que en realidad enviarías.
Para el esquema de solicitud completo, límites y comportamiento de facturación actual, usa la documentación de API de Wan 2.7 Image.
Referencias
- 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

Categorías
Más publicaciones

Wan 3.0 vs Wan 2.7: duración, entradas, edición y precio
Compara Wan 3.0 y Wan 2.7: duración máxima, resolución, documentos, referencias, edición de vídeo y precio. Descubre cuál elegir para tu proyecto.


Flujo Seedream 5.0 Pro a Seedance 2.5: qué se envía realmente
Crea un flujo en vivo de Seedream 5.0 Pro a Seedance 2.5 en reAPI. Descubre ID de modelo, precios, iteración imagen primero y código funcional.


Qué es reAPI: modelos, precios y uso en 2026
reAPI ofrece API de chat y medios para más de 200 modelos de imagen, vídeo, audio y lenguaje. Conoce sus funciones, precios y cómo hacer la primera llamada.
