Makernice

Las generaciones fallidas no se cobran

Cómo Makernice retiene, cobra y libera el dinero en cada generación de video e imagen con IA.

Makernice no cobra las generaciones fallidas de video o imagen con IA. Al crear una generación, el precio cotizado queda retenido en tu saldo prepagado. La retención se convierte en cobro cuando termina la ejecución. Si la ejecución falla o se agota el tiempo, la retención se libera por completo. Los rechazos de la moderación de la entrada antes de generar y las cancelaciones en cola también liberan la retención por completo. La única excepción: si un resultado terminado es bloqueado por la moderación por infringir la política, la ejecución se cobra de todos modos; puedes pedir una revisión manual al soporte.

Aplica a los 17 modelos con una sola clave de API. Fuente: Política de Reembolsos §2 · Documentación de la API: precios y cobros. Última revisión: 21 de octubre de 2026.

Precios al 4 de noviembre de 2026 (versión v12 de la lista de precios).

Cómo funciona: cotización → retención → cobro o liberación

  1. Cotización. POST /v1/generations/quote devuelve el monto exacto para tu modelo, modo, resolución y duración (el video se cobra por segundo y las imágenes, por imagen). El precio queda fijo durante 12 minutos (expires_at). Cotizar no cuesta nada y no retiene nada.
  2. Retención. POST /v1/generations con el quote_id retiene ese monto; solo en ese momento se retiene saldo, y se liquida cuando la generación llega a un estado final. La generación empieza con status: "queued" y billing: "held". El dinero sigue en tu saldo; solo queda reservado.
  3. Cobro al terminar. Cuando termina la ejecución, se cobra el monto retenido (billing: "charged"). El estado es moderating mientras se revisa el resultado y pasa a succeeded cuando el archivo está listo para descargar.
  4. Liberación si falla. Si termina como failed o canceled, la retención se libera por completo (billing: "released"). No hay nada que reclamar ni solicitar: ocurre automáticamente.
Estado final
Estado finalbillingQué pasa con tu dinero
queued / generatingheldRetenido, no cobrado
moderatingchargedSe cobra al terminar la ejecución; el archivo está disponible cuando pasa la moderación del resultado
succeededchargedSe cobra el monto cotizado cuando la ejecución sale bien
failedreleasedToda la retención vuelve a tu saldo
canceled (solo posible mientras está queued)releasedToda la retención vuelve a tu saldo
succeeded, resultado con state: "blocked" (el resultado terminado no pasó la moderación)chargedCobrado; sin URL de archivo. Escribe a support@makernice.com para pedir una revisión manual
checkingheldSigue retenido mientras confirmamos el resultado; solo se cobra si se confirma que la generación salió bien

Una retención liberada no es un reembolso. El dinero nunca salió de tu saldo, así que no hay solicitud de reembolso, ni periodo de espera, ni trámite con el proveedor de pagos.

¿Qué cuenta como una generación fallida?

Según nuestra Política de Reembolsos (§2) y la documentación de la API:

¿Qué cuenta como una generación fallida?
Qué pasó¿Se cobra?Qué ves en la APIQué hacer después
El proveedor del modelo informa que la generación fallóNo, retención liberadastatus: "failed", error.code por ejemplo generation_failed o upstream_unavailablePide una nueva cotización y crea una nueva generación; la retención ya volvió a tu saldo.
La tarea supera su tiempo máximo de ejecuciónNo, retención liberadastatus: "failed", error.code: "timeout"Igual que arriba.
Un error interno de Makernice detiene la tareaNo, retención liberadastatus: "failed"Igual que arriba.
La moderación de la entrada rechaza el prompt o una imagen de entrada antes de generarNo, retención liberada (o nada retenido)error.code: "content_rejected", error.reason = prompt, input_image o modelCambia el prompt o la imagen que indica error.reason (model significa que la política de seguridad del propio proveedor del modelo lo rechazó: cambia el prompt) y vuelve a cotizar.
Una imagen de entrada no se puede usar (no accesible, demasiado grande, formato incorrecto)No, retención liberadaerror.code: "invalid_request", error.input indica la imagenReemplaza la imagen que indica error.input, vuelve a cotizar y crea una nueva generación.
Cancelas mientras la generación sigue queuedNo, retención liberadastatus: "canceled"
La solicitud se rechaza antes de que exista una tarea (clave inválida, cuerpo inválido, campos faltantes, saldo insuficiente, límite de solicitudes, cotización que no coincide)No, nunca se retiene nadaHTTP 4xx, por ejemplo 401 invalid_api_key, 400 invalid_request, 402 insufficient_balance, 429 rate_limitedCorrige lo que indica el código de error; consulta Errores.
El resultado no está claro (por ejemplo, el proveedor no responde)Solo si se confirma que salió bienstatus: "checking", billing: "held"Sigue haciendo polling hasta que termine como succeeded o failed.
El resultado se genera, pero la moderación del resultado lo bloqueaSí, cobrado (reembolso solo después de una revisión manual del soporte)billing: "charged", resultado con state: "blocked", URL de archivo vacíaContacta a soporte para pedir una revisión manual.
La generación sale bien, pero no te gusta el resultadoSístatus: "succeeded", billing: "charged"La próxima vez, prueba primero un clip corto en baja resolución.

La calidad no es una condición de falla: un video o una imagen entregados se cobran, opines lo que opines de ellos. Por eso cada página de modelo muestra primero el costo de una prueba corta en baja resolución.

Ejemplos (versión v12 de la lista de precios, 4 de noviembre de 2026)

En la API, los montos son cadenas en micro-USD (1,000,000 = $1.00).

1 · Un video de 10 segundos de Seedance 2.5 en 720p que agota el tiempo

  • Cotización: $0.2592/s × 10 s = $2.592 → "amount": "2592000"
  • Creación → billing: "held". Tu saldo disponible aparece $2.592 menor mientras se ejecuta.
  • La tarea supera su tiempo máximo → status: "failed", error.code: "timeout", billing: "released".
  • Costo neto: $0.00. La línea de tiempo de /events termina con failed_refunded.
{
  "id": "gen_…",
  "model": "seedance-2.5",
  "status": "failed",
  "amount": "2592000",
  "billing": "released",
  "outputs": [],
  "error": { "code": "timeout", "message": "…" }
}

2 · Un video de 5 segundos de Kling 3.0 Pro que sale bien

  • Cotización: $0.1612/s × 5 s = $0.8064 → "amount": "806400".
  • Creación → retención → succeeded → billing: "charged". Costo neto: $0.8064, exactamente el monto cotizado, aunque los precios cambien mientras se ejecuta.

3 · Un borrador de 5 segundos de MiniMax H3 Max Turbo en 480p que ya no necesitas

  • Cotización: $0.03/s × 5 s = $0.15. Cancelas mientras sigue queued → POST /v1/generations/{id}/cancel → status: "canceled", billing: "released". Costo neto: $0.00.
  • Si ya hubiera empezado (generating), cancelar devolvería 409 not_cancelable y la ejecución seguiría hasta su resultado normal.

4 · Un prompt bloqueado por la moderación

  • Si el prompt se bloquea al enviarlo, recibes 422 content_rejected y no se retiene nada. Si la política de seguridad del proveedor lo rechaza después, la generación termina como failed con error.code: "content_rejected" y la retención se libera. En ambos casos: $0.00.
  • Si el video se genera, pero la moderación del resultado bloquea el resultado terminado, la ejecución se cobra (billing: "charged", resultado con state: "blocked", sin URL de archivo). Escribe a support@makernice.com para pedir una revisión.

Cómo manejarlo en código (Python)

import time, requests

def wait_for(gen_id, headers, api="https://api.makernice.com/v1"):
    while True:
        gen = requests.get(f"{api}/generations/{gen_id}", headers=headers, timeout=15).json()
        if gen["status"] == "succeeded":
            return gen                       # billing == "charged"
        if gen["status"] in ("failed", "canceled"):
            # billing == "released": the full hold is already back in your balance
            raise RuntimeError(f"{gen['status']}: {gen.get('error')}")
        time.sleep(5)                        # queued / generating / moderating / checking

¿Prefieres webhooks? generation.failed y generation.canceled se envían después de liberar el monto retenido; generation.succeeded, después de cobrarlo. Consulta Webhooks.

¿Cómo evito cobros dobles y limito el gasto por clave de API?

Qué revisar en cualquier API de video con IA antes de integrarla

Preguntas para hacerle a cualquier API de video con IA antes de construir sobre ella:

  1. ¿Una ejecución fallida o con tiempo agotado se cobra completa, se cobra en parte o no se cobra?
  2. ¿El dinero se cobra al enviar la solicitud o cuando termina la ejecución?
  3. ¿Un rechazo de la moderación de contenido cuesta algo, antes y después de generar?
  4. ¿Puedes cancelar un trabajo en cola y recuperar el dinero?
  5. ¿El precio queda fijo antes de ejecutar o se calcula después?
  6. ¿Los reintentos son idempotentes, para que un error de red no te cobre dos veces?

En Makernice las respuestas son: no se cobra · cuando termina la ejecución · no antes de generar (un resultado terminado bloqueado se cobra) · sí, por completo · fijo con una cotización durante 12 minutos · sí.

Preguntas frecuentes

¿Makernice cobra las generaciones de video con IA fallidas?

No. Makernice retiene el monto cotizado cuando creas una generación. La retención se convierte en cobro cuando termina la ejecución. Si la ejecución falla o se agota el tiempo, la retención se libera por completo. Los rechazos de la moderación de la entrada antes de generar también liberan la retención. La única excepción: si un resultado terminado es bloqueado por la moderación por infringir la política, la ejecución se cobra de todos modos; puedes pedir una revisión manual al soporte. Esto aplica a los 17 modelos de video e imagen.

¿Qué cuenta como una generación fallida?

Una generación se considera fallida cuando el proveedor del modelo informa una falla, la tarea supera su tiempo máximo de ejecución, un error interno la detiene, la moderación de la entrada rechaza el prompt o una imagen de entrada antes de generar, o una imagen de entrada no se puede usar. En todos los casos, la retención se libera por completo.

¿Qué tan rápido vuelve a mi saldo una retención liberada?

Las retenciones liberadas normalmente se reflejan en tu saldo en cuanto termina la tarea. Como el dinero solo estaba retenido, no cobrado, no hay que presentar una solicitud de reembolso ni esperar al proveedor de pagos.

¿Pago si no me gusta el resultado?

Sí. Una generación que sale bien se cobra por el monto cotizado, sin importar la calidad, el estilo o la pertinencia del resultado. Para reducir ese riesgo, prueba primero un video corto en baja resolución y usa la cotización para ver el precio exacto antes de ejecutar.

¿Puedo cancelar una generación y recuperar mi dinero?

Sí, mientras siga en cola: cancélala con POST /v1/generations/{id}/cancel y la retención se libera por completo. Una vez que la generación está en generating, no se puede detener, y cancelar devuelve 409 not_cancelable.

¿Qué pasa si el proveedor del modelo no responde?

La generación muestra el estado checking y el monto sigue retenido mientras confirmamos el resultado. Solo se te cobra si se confirma que la generación salió bien; si no, la retención se libera.

¿Un reintento me puede cobrar dos veces?

No. Crear una generación requiere el encabezado Idempotency-Key. Repetir la solicitud con la misma clave, cotización y entrada devuelve la generación original y no vuelve a cobrar.

¿El saldo no usado es reembolsable?

En principio, el saldo no usado no es reembolsable, pero nunca vence. Las recargas duplicadas o por error se pueden revisar: escribe a support@makernice.com (puedes escribir en español; respondemos en español con ayuda de herramientas de traducción).

¿Qué pasa si la moderación bloquea mi resultado?

Si la moderación de la entrada rechaza tu prompt o tu imagen antes de generar, la generación falla y no se te cobra. Si el video se genera y luego la moderación del resultado bloquea el resultado terminado, la ejecución se cobra y no se entrega ningún archivo. Escribe a support@makernice.com y lo revisaremos.

Relacionado

Paga por resultados, no por fallas.

Prepago en dólares estadounidenses con tarjeta (incluidos Apple Pay y Google Pay) o criptomonedas. Cada recarga es de $15 a $1,000 y tu saldo nunca vence.