
API de eliminación de fondo: el coste real por imagen útil
Calcula el precio desde 88 créditos en vivo, luego suma rechazos, reintentos, almacenamiento y revisión para conocer el coste real de cada imagen válida.
La tarifa actual de la API de eliminación de fondo para mj-v7-remove-bg es de 88 créditos, o $0.088 por solicitud completada, según se verificó el 3 de septiembre de 2026. Es el número correcto para comenzar un presupuesto. No es automáticamente el coste de un recorte utilizable.
Una imagen completa puede tener un halo, perder una abertura de tirador, aplanar una sombra o llegar en un formato que el siguiente servicio no pueda aceptar. Esta guía muestra cómo llamar la ruta, votarla con seguridad, inspeccionar el cargo liquidado y calcular el coste por imagen que realmente pasa la revisión.
TL;DR
- El estimador en vivo devolvió 88 créditos ($0.088) por solicitud completada
mj-v7-remove-bgel 3 de septiembre de 2026. Un crédito es $0.001.[1] - La solicitud toma exactamente una URL HTTP(S) pública. No toma prompt, resolución, velocidad ni ID de tarea principal.[2]
- La operación es asincrónica: envía una vez, guarda el ID de tarea devuelto y vota el endpoint de tarea. Votar no consume créditos.[3]
- Presupuesto con
coste total liquidado / resultados aceptados, no el número de archivos enviados. Con una tasa de aceptación del 80%, una solicitud de $0.088 se convierte en $0.11 por imagen útil. - Una tarea fallida con
usage.credits: 0fue reembolsada. Un resultado completado que tu equipo rechaza por malos bordes sigue siendo trabajo completado, así que inclúyelo en el cálculo de imagen aceptada.[3] - Ejecuta un conjunto de prueba pequeño extraído de tu propio catálogo antes de comprometer volumen. Una foto de producto limpia dice poco sobre cabello, vidrio, bajo contraste u objetos con agujeros.
Por qué el precio indicado rara vez es el número útil
Si tu aplicación elimina el fondo de miles de imágenes subidas, ¿cómo comparas servicios cuando el precio, la calidad de los bordes, el tiempo de respuesta, la resolución y la entrega de archivos influyen en el resultado? El precio anunciado no basta para responder. El cálculo útil es más concreto:
coste por imagen útil = coste total de API liquidado / imágenes que pasan revisiónEse denominador cambia la decisión. Un endpoint barato que daña bordes finos puede costar más que uno de precio más alto una vez que se incluyen reintentos y limpieza manual.
Qué compra la tarifa actual de la API de eliminación de fondo
La página del modelo Midjourney V7 en vivo lista Remove BG como una edición ligera. El estimador de solicitud actual se liquida en créditos completos, y la estimación en vivo para la carga útil requerida es 88 créditos.[1] Debido a que un crédito es igual a $0.001, usa $0.088 en un presupuesto.
| Solicitudes | Subtotal de API a 88 créditos | Lo que el número asume |
|---|---|---|
| 1 | $0.088 | Una solicitud de eliminación completada |
| 10 | $0.88 | Diez solicitudes completadas, antes de revisión de aceptación |
| 100 | $8.80 | Ninguna salida completada rechazada |
| 1,000 | $88.00 | Sin coste de almacenamiento, revisión o transformación |
| 10,000 | $880.00 | Misma tarifa y tasa de salida aceptada del 100% |
Puedes ver la operación mostrada como $0.0873 en una etiqueta de precio detallada. No uses esa cifra fraccionaria para reconciliar un balance de créditos. La tabla de precios pública y el estimador muestran la unidad pagadera como 88 créditos completos, o $0.088. Comprueba la página del modelo en vivo de nuevo antes de una ejecución grande porque el precio puede cambiar.
El subtotal de API excluye el trabajo alrededor de la llamada:
- alojar la fuente en una URL que el servicio pueda obtener;
- descargar y almacenar el resultado;
- validar transparencia, dimensiones y compatibilidad de archivo;
- revisión humana o controles de calidad automatizados;
- salidas completadas que fallan tus reglas de aceptación;
- redimensionamiento, corrección de color, reconstrucción de sombra o composición posterior.
Para un prototipo, esos costes pueden ser insignificantes. A escala de catálogo, pertenecen a la misma hoja de cálculo que el artículo de línea de API.
Una URL de fuente, sin prompt ni tarea principal
mj-v7-remove-bg es más simple que las otras operaciones de edición de Midjourney V7. No encadena de una generación anterior. Envía la imagen que ya tienes en image_urls.[2]
| Campo | Requerido | Valor aceptado |
|---|---|---|
model | sí | mj-v7-remove-bg |
image_urls | sí | Un array que contiene exactamente una URL de imagen HTTP(S) pública |
prompt | no aceptado | No lo envíes |
model_params | no aceptado | Sin velocidad, ID de tarea, u opciones de edición |
size / resolution | no aceptado | La ruta no expone control de tamaño de salida |
El esquema es estricto. Agregar campos copiados de otro modelo de imagen no es un no-op inofensivo; hace que la solicitud sea inválida. Las cadenas Base64, las URLs data:, los caminos locales y los enlaces de solo navegador autenticados también son entrada incorrecta. Carga la fuente en almacenamiento que controles y confirma que se carga sin cookie o inicio de sesión.
Aquí está la solicitud cURL completa:
curl https://reapi.ai/api/v1/images/generations \
-H "Authorization: Bearer $REAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "mj-v7-remove-bg",
"image_urls": [
"https://your-cdn.example/catalog/source-product.png"
]
}'Un envío válido devuelve un registro de tarea en estado processing. Guarda su id. La imagen final no llega en la respuesta POST.
Envía una vez, luego vota con una fecha límite
La implementación más segura para principiantes tiene dos acciones separadas: un POST que crea el trabajo, seguido de solicitudes GET limitadas que leen su estado. No pongas el POST dentro del bucle de votación.
Este ejemplo de Node.js vota cada 2.5 segundos y usa un límite local de 15 minutos. La referencia de tarea recomienda un cadencia de dos a tres segundos y explica que las lecturas de tarea en vuelo se cachean, así que votar más rápido agrega presión de solicitud sin hacer que la imagen termine antes.[3]
const API_BASE = 'https://reapi.ai/api/v1';
const API_KEY = process.env.REAPI_API_KEY;
const sourceUrl = process.argv[2];
if (!API_KEY) throw new Error('Set REAPI_API_KEY');
if (!sourceUrl) throw new Error('Pass one public source image URL');
const headers = {
Authorization: `Bearer ${API_KEY}`,
'Content-Type': 'application/json',
};
async function readJson(response) {
const body = await response.json();
if (!response.ok) {
const code = body.error?.code ?? response.status;
const message = body.error?.message ?? 'Request failed';
throw new Error(`${code}: ${message}`);
}
return body;
}
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
async function getTask(taskId) {
for (let attempt = 0; attempt < 4; attempt += 1) {
let response;
try {
response = await fetch(`${API_BASE}/tasks/${taskId}`, {
headers: { Authorization: `Bearer ${API_KEY}` },
signal: AbortSignal.timeout(15_000),
});
} catch (error) {
if (attempt === 3) throw error;
await sleep(1000 * 2 ** attempt);
continue;
}
if (response.status === 429) {
const seconds = Number(response.headers.get('retry-after'));
await response.body?.cancel();
await sleep(Number.isFinite(seconds) ? seconds * 1000 : 5000);
continue;
}
if ([502, 503, 504].includes(response.status)) {
await response.body?.cancel();
await sleep(1000 * 2 ** attempt);
continue;
}
return readJson(response);
}
throw new Error(`Task ${taskId} could not be read after transient errors`);
}
async function removeBackground(imageUrl) {
const submitted = await readJson(
await fetch(`${API_BASE}/images/generations`, {
method: 'POST',
headers,
body: JSON.stringify({
model: 'mj-v7-remove-bg',
image_urls: [imageUrl],
}),
signal: AbortSignal.timeout(30_000),
})
);
const deadline = Date.now() + 15 * 60 * 1000;
while (Date.now() < deadline) {
await sleep(2500);
const task = await getTask(submitted.id);
if (task.status === 'completed') {
const urls = task.output?.image_urls ?? [];
if (urls.length === 0) {
throw new Error('Task completed without an image URL');
}
return {
taskId: task.id,
imageUrls: urls,
credits: task.usage?.credits,
};
}
if (task.status === 'failed') {
const code = task.error?.code ?? 'UNKNOWN_TASK_ERROR';
const message = task.error?.message ?? 'Background removal failed';
const credits = task.usage?.credits ?? 'unknown';
throw new Error(
`${code}: ${message}; task=${task.id}; settled_credits=${credits}`
);
}
}
throw new Error(`Polling deadline reached for task ${submitted.id}`);
}
removeBackground(sourceUrl)
.then(console.log)
.catch((error) => {
console.error(error.message);
process.exitCode = 1;
});Ejecuta con:
REAPI_API_KEY=rk_live_xxx node remove-background.mjs \
https://your-cdn.example/catalog/source-product.pngEn producción, escribe el ID de tarea en tu base de datos antes de regresar del manejador de envío. Un worker puede reanudar la votación después de un reinicio de proceso. Mantén la clave de API en el servidor; nunca la coloques en JavaScript del navegador ni en un bundle de aplicación móvil.
Lo que realmente costó una solicitud en vivo fallida
Enviamos una solicitud mj-v7-remove-bg mientras verificábamos esta guía el 3 de septiembre de 2026, usando una foto de taza propia. La API aceptó la carga útil estricta como tarea task_01a065b32dbe771eb5babd28de9b38d9, pero más tarde terminó en estado failed con código de error 80003 y el mensaje Service authentication failed. No devolvió salida y usage.credits: 0, así que su coste liquidado fue $0, no $0.088.
No reenviamos la solicitud sin cambios solo para fabricar un ejemplo exitoso. Esta ejecución única confirma la tarea y la ruta de reembolso; no dice nada sobre la calidad del recorte, el tipo de archivo, las dimensiones, el soporte alfa o el tiempo de finalización normal. La cifra de 88 créditos anterior sigue siendo la estimación en vivo para una solicitud que se completa. Siempre lee la tarea terminal en lugar de multiplicar el número de envío por la tarifa anunciada.[3]
Convierte el precio de solicitud en coste por imagen útil
Comienza con una regla de aceptación, no un porcentaje que esperas lograr. Luego mide el porcentaje en una muestra de la carga de trabajo que tienes la intención de enviar.

Si cada solicitud completada produce un candidato, la ecuación de planificación es:
coste de imagen útil = $0.088 / tasa de aceptaciónLa tabla siguiente contiene escenarios, no calidad de modelo medida:
| Tasa de aceptación asumida | Solicitudes para 1,000 imágenes aceptadas | Subtotal de API | Coste por imagen útil |
|---|---|---|---|
| 100% | 1,000 | $88.000 | $0.0880 |
| 95% | 1,053 | $92.664 | $0.0927 |
| 90% | 1,112 | $97.856 | $0.0979 |
| 80% | 1,250 | $110.000 | $0.1100 |
| 50% | 2,000 | $176.000 | $0.1760 |
Usa datos de tarea liquidados para el numerador. La respuesta de tarea expone usage.credits en cada estado. processing más cero significa que la facturación no se ha liquidado. completed muestra los créditos facturados. failed más cero significa que la reserva fue reembolsada; un valor positivo significa que se retuvo un cargo documentado.[3]
Esta distinción previene dos errores contables. No cuentes una falla de proveedor reembolsada como salida pagada, y no borres un recorte completo pero feo del gasto. Aún consumió una solicitud pagada.
Decide qué significa "útil" antes de la prueba
Un vistazo visual es demasiado vago para un punto de referencia repetible. Escribe un rubric breve antes de enviar la muestra, luego aplica los mismos controles a cada resultado.
Transparencia e integridad de borde
Abre el archivo descargado en una herramienta que muestre un tablero de ajedrez alfa. Un fondo blanco no es transparencia. Inspecciona la silueta completa al 100% y ampliación del 400% para halos blancos u oscuros, píxeles faltantes y fragmentos del fondo antiguo.
Agujeros, detalle fino y materiales difíciles
Incluye ejemplos con aberturas de tirador, correas, rayos, cabello suelto, pelaje y follaje. Agrega vidrio, embalaje translúcido, metal brillante y bordes de sujeto de bajo contraste si aparecen en tu catálogo real. Un modelo que aprueba una taza oscura sobre blanco aún puede fallar una botella clara o un objeto pálido sobre beige.
Detalles de producto y sombras
Confirma que las etiquetas, el texto impreso, los aditamentos finos y el contorno del producto no cambiaron. Decide si una sombra de contacto debe mantenerse, suavizarse o eliminarse. Los diferentes destinos necesitan respuestas diferentes, así que "sombra eliminada" no es automáticamente un aprobado.
Contrato de archivo
Registra tipo MIME, extensión, ancho, alto, tamaño de byte, presencia alfa y número de URLs devueltas. El contrato público devuelve output.image_urls, pero no promete una extensión específica o tamaño de píxel para esta operación. Prueba el archivo real contra el siguiente API, herramienta de diseño o importador de marketplace en tu pipeline.
Un piloto útil es lo suficientemente grande como para representar los casos difíciles, no solo los fáciles. Diez a treinta imágenes propias pueden exponer incompatibilidades obvias. Un punto de referencia de adquisición final debe seguir la distribución de tu catálogo real.
Reintenta fallos sin crear un bucle de coste
Las reglas de reintento deben usar el error, no la frustración. La referencia de error pública separa entrada inválida, autenticación, balance insuficiente, límites de velocidad, fallos de capacidad y fallos de flujo de trabajo terminal.[4]
| Resultado | Qué hacer |
|---|---|
| HTTP 400, 401, 402 u 404 | Soluciona la solicitud, credenciales, balance o ID de tarea. No repitas sin cambios. |
| HTTP 429 | Espera Retry-After, luego reintenta la misma lectura u operación segura. |
| HTTP 502, 503 o 504 | Retroceso exponencial y límita los intentos. |
Tarea failed | Lee error.code y usage.credits antes de decidir reenviar. |
Tarea completed, QA falló | Cambia la fuente o enruta la imagen a limpieza manual; límita reintentos pagados. |
Mantén la acción de envío fuera de reintentos de votación automática. Una vez que POST devuelve un ID de tarea, cada comprobación posterior debe ser un GET para esa tarea. Para una imagen completada que falla tu rubric, una segunda solicitud idéntica puede reproducir el mismo problema de borde. Cambiar el recorte de entrada, contraste o preprocesamiento es más útil que un reintento sin límites.
Descarga archivos aceptados a tu propio almacenamiento tan pronto como la tarea se complete. La documentación de la tarea dice que las URLs de salida se realojaban en la CDN pero no garantiza retención a largo plazo.[3]
Ruta alojada versus un API oficial de Midjourney
mj-v7-remove-bg es una ruta alojada expuesta a través de reAPI. No debe describirse como el API pública oficial de Midjourney. Las directrices comunitarias actuales de Midjourney dicen que generalmente no proporciona un API y prohíbe la automatización no autorizada excepto para casos raros y explícitamente otorgados.[5]
Esa distinción importa durante la adquisición. Revisa el contrato y los términos de uso aceptable del servicio alojado en lugar de asumir que una etiqueta de modelo crea una relación oficial de proveedor. La guía separada ¿Tiene Midjourney un API? cubre esa pregunta en detalle; este artículo se enfoca en la ruta llamable y su coste.
FAQ
¿Necesita mj-v7-remove-bg una tarea anterior de Midjourney?
No. Es una edición de imagen directa. Pasa una URL de imagen pública en image_urls; no envíes task_id ni model_params.[2]
¿Puedo enviar una imagen base64?
No. El esquema de solicitud acepta una URL HTTP(S) pública. Carga el archivo primero, luego envía una URL que el servicio pueda obtener sin tu sesión de navegador.
¿Es el precio actual $0.0873 o $0.088?
Usa $0.088 para estimaciones de facturación. La operación puede aparecer como $0.0873 en una visualización detallada, pero el estimador en vivo devuelve 88 créditos completos y un crédito es igual a $0.001.[1]
¿Una solicitud devuelve cuatro imágenes con fondo eliminado?
No presupuestes en esa suposición. Cuatro imágenes por solicitud describe la generación base de Midjourney V7. El contrato Remove BG directo toma una imagen de fuente y devuelve un array de URL de imagen, pero no promete cuatro recortes. Inspecciona la longitud del array de la tarea terminal en tu piloto.[2]
¿El API siempre devuelve un PNG transparente?
El contrato público actual promete URLs de imagen, no una extensión particular, tipo MIME o garantía de canal alfa. Descarga un resultado real y verifica alfa antes de construir un flujo de trabajo solo PNG.
¿Votar consume créditos?
No. Votar una tarea no consume créditos. Vota cada dos o tres segundos y detente en una fecha límite que se adapte a tu aplicación.[3]
¿Se facturan las tareas fallidas de eliminación de fondo?
Lee usage.credits en la tarea terminal. Una tarea fallida con cero créditos fue totalmente reembolsada. El contrato de tarea genérico permite un cargo retenido positivo en algunos casos de seguridad posteriores a la generación específicos del modelo, así que no deduzcas la factura del estado solo.[3]
¿Cuánto costarán 1,000 imágenes útiles?
Con una tasa de aceptación del 100%, 1,000 solicitudes cuestan $88 a la tarifa actual. Con aceptación del 80%, alcanzar 1,000 archivos útiles requiere 1,250 solicitudes y cuesta $110, antes de almacenamiento y revisión. Reemplaza la tarifa asumida con tu piloto medido.
Elige por coste aceptado, no precio de etiqueta
El precio actual de la API de eliminación de fondos es sencillo por solicitud: 88 créditos, o $0.088. La decisión de producción empieza después. Prueba los bordes y el contrato de archivo que tu aplicación necesita de verdad, lee el uso liquidado de cada tarea y divide el gasto total entre las salidas que superan una rúbrica fija.
Empieza con la referencia de la API de Midjourney V7, ejecuta un pequeño piloto con imágenes propias y mantén a mano la referencia de sondeo de tareas durante la implementación. Así obtendrás un coste defendible por imagen utilizable, en lugar de un precio de titular sin verificar.
References
- reAPI. Midjourney V7 model page and live pricing. Retrieved September 3, 2026 from reapi.ai/models/midjourney-v7
- reAPI. Midjourney V7 API reference. Retrieved September 3, 2026 from reapi.ai/docs/midjourney-v7
- reAPI. Tasks: polling, usage, output, and refund semantics. Retrieved September 3, 2026 from reapi.ai/docs/api/tasks
- reAPI. API error codes and retry guidance. Retrieved September 3, 2026 from reapi.ai/docs/api/errors
- Midjourney. Community Guidelines: unauthorized automation and third-party apps. Retrieved September 3, 2026 from docs.midjourney.com/hc/en-us/articles/32013696484109-Community-Guidelines
Autor

Categorías
mj-v7-remove-bg una tarea anterior de Midjourney?¿Puedo enviar una imagen base64?¿Es el precio actual $0.0873 o $0.088?¿Una solicitud devuelve cuatro imágenes con fondo eliminado?¿El API siempre devuelve un PNG transparente?¿Votar consume créditos?¿Se facturan las tareas fallidas de eliminación de fondo?¿Cuánto costarán 1,000 imágenes útiles?Elige por coste aceptado, no precio de etiquetaReferencesMás publicaciones

Cómo usar Claude Opus 4.8: codificación, honestidad y coste
Claude Opus 4.8: tabla de referencia oficial, mejoras de honestidad, Dynamic Workflows y planificación de migración desde Opus 4.7 con cambio de esfuerzo.


Seedance 2.5 vs Seedance 2.0: cuál elige según tu tarea
Seedance 2.5 vs 2.0 comparados en precio por segundo actual: 2.5 genera videos de 30s y ediciones de vídeo; 2.0 soporta 1080p/4K más barato.


Generador de vídeo IA con personas reales: qué funciona
Generador de vídeo IA con personas reales: referencias permitidas, diálogo nativo, límites documentados, sistema de moderación y costes reales.
