Cut.ProDocs

Genera imagen, video y voz

Elige un modelo, confirma el precio, genera a partir de texto o de imágenes y usa el resultado en el editor o en un post.

Una ruta genera imagen, video o voz con modelos de varios fabricantes (Veo, Kling, Seedance, Wan, Nano Banana, GPT Image, voces de ElevenLabs y otros). Creas la generación, consultas hasta que esté lista y usas el resultado.

Generar siempre cobra, incluso en uso liberado. Muéstrale a la persona el modelo y el precio y espera el sí antes de llamar a POST /generations. Si falla, los créditos vuelven solos.

Elige el modelo

curl https://api.cut.pro/api/v1/generations/models \
  -H "X-Api-Key: $CUTPRO_API_KEY"
200 OK (ejemplo resumido)
{
  "models": [
    {
      "id": "google/veo-3.1-lite",
      "name": "Veo 3.1 Lite",
      "kind": "video",
      "modes": ["text", "image", "frames"],
      "resolutions": ["720p", "1080p"],
      "seconds": [4, 6, 8],
      "aspect_ratios": ["16:9", "9:16"],
      "audio": "always",
      "max_images": 2,
      "typical_seconds": 74,
      "success_rate": 0.97,
      "prices": [{ "mode": "text", "resolution": "720p", "credits": 12, "silent_credits": null }]
    }
  ],
  "presets": { "video": [{ "id": "balanced", "model": "google/veo-3.1-lite", "resolution": "720p" }] },
  "prompt_max": 4000,
  "max_running": 4,
  "improve_credits": 1
}

Los precios acompañan el costo de cada modelo y cambian sin aviso: lee esta ruta justo antes de generar.

CampoPara qué sirve
modestext (solo prompt), image (anima una imagen), frames (del primer al último cuadro), references (toma persona, producto o estilo de las imágenes, o las edita).
prices[].creditsPor segundo de video, por imagen o por 1.000 caracteres de voz. silent_credits es el precio del video sin sonido.
audioalways tiene sonido siempre; optional acepta audio: false, en general más barato; null es mudo.
refusesLo que el modelo se niega a mostrar: real_faces, minors, public_figures.
typical_seconds, success_rateTiempo típico y tasa de éxito de las últimas semanas. null hasta que corran suficientes generaciones.
presetsEl modelo recomendado por tipo y nivel (fast, balanced, best). Úsalo cuando la persona no elige.
max_runningCuántas generaciones corre el workspace al mismo tiempo.

Envía las imágenes, si el modo lo pide

curl -X POST https://api.cut.pro/api/v1/generations/images \
  -H "X-Api-Key: $CUTPRO_API_KEY" \
  -F "image=@produto.jpg"
201 Created
{ "id": "7412960011002233" }
modeimage_ids
textninguna
imageuna, el primer cuadro
framesdos: primer y último cuadro
referenceshasta max_images del modelo

Una imagen generada por Cut.Pro no necesita subida: su output.image_id vale igual.

Genera

curl -X POST https://api.cut.pro/api/v1/generations \
  -H "X-Api-Key: $CUTPRO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "kind": "video",
    "model": "google/veo-3.1-lite",
    "mode": "text",
    "resolution": "720p",
    "prompt": "un perro surfeando al atardecer",
    "seconds": 8,
    "aspect_ratio": "9:16",
    "credits": 96
  }'
201 Created
{ "id": "7412960099887766", "status": "processing", "credits_charged": 96 }

credits es el total que la persona aceptó: credits del precio por seconds en un video (12 × 8 = 96). Si el precio cambió, no se cobra nada y la respuesta es 409 PRICE_CHANGED con el nuevo total en extra.credits. Muestra el nuevo valor y pide el sí de nuevo.

  • Video: seconds es obligatorio y debe ser uno de los seconds del modelo.
  • Imagen: sin seconds.
  • Voz (kind: "speech", mode: "text"): lee el prompt palabra por palabra con la voice elegida entre las voices del modelo. Sin aspect_ratio. Sale un MP3. Cuesta credits por los caracteres del prompt divididos entre 1.000, redondeado hacia arriba.

Sigue la generación

curl https://api.cut.pro/api/v1/generations/7412960099887766 \
  -H "X-Api-Key: $CUTPRO_API_KEY"

Consulta cada 10 segundos mientras status sea processing. expected_seconds dice cuánto suele tardar el modelo.

  • ready: output.url es la vista previa (enlace de 6 horas, MP3 en una voz) y output.thumbnail_url la miniatura.
  • failed: el motivo está en error_code y los créditos ya volvieron.

Mejora el prompt

POST /generations/improve reescribe una solicitud corta de la manera que el modelo elegido entiende mejor, en el idioma de la solicitud. No genera nada. Cobra improve_credits y lo devuelve si falla. Muéstrale el texto nuevo a la persona antes de generar con él.

curl -X POST https://api.cut.pro/api/v1/generations/improve \
  -H "X-Api-Key: $CUTPRO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "model": "google/veo-3.1-lite", "mode": "text", "prompt": "un perro surfeando al atardecer", "seconds": 8 }'

Usa el resultado

RutaQué hace
GET /generations/{id}/downloadEnlace al archivo en calidad total, válido por 6 horas. Después de descargar, ya no se pueden pedir los créditos de vuelta.
POST /generations/{id}/editAbre un video listo en el editor y devuelve el edit_id. Úsalo en POST /posts o POST /renders. Llamar de nuevo devuelve el mismo.
GET /generationsLista las generaciones, de la más nueva a la más antigua. Filtra con kind.
DELETE /generations/{id}La saca de la lista y elimina el archivo de la biblioteca. No vale para una en processing.

Evalúa o pide los créditos de vuelta

Evaluar es gratis y ayuda a elegir modelos:

curl -X POST https://api.cut.pro/api/v1/generations/7412960099887766/feedback \
  -H "X-Api-Key: $CUTPRO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "vote": "down", "reason": "bad_motion" }'

vote es up, down o null (limpia). Con down, reason es uno de prompt_ignored, defects, bad_motion, not_realistic, speech_wrong (palabra, nombre o número dicho mal) u other. Un down cancela los posts de ese resultado que aún están programados.

Si el resultado no sirve, pide el reembolso con el mismo reason y una note corta:

curl -X POST https://api.cut.pro/api/v1/generations/7412960099887766/refund \
  -H "X-Api-Key: $CUTPRO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "reason": "defects", "note": "Las manos salen deformadas en todos los planos." }'

El equipo lo analiza. refund_status pasa de requested a approved o denied.

El reembolso vale una vez por generación, solo en ready, y nunca después de descargar o publicar: 409 REFUND_AFTER_DOWNLOAD y 409 REFUND_AFTER_POST.

Errores

CodeCuándo
INSUFFICIENT_CREDITSSaldo insuficiente. extra.top_up_url lleva a la recarga; extra.is_owner dice si quien llamó puede recargar.
PRICE_CHANGEDEl precio cambió. El nuevo total está en extra.credits.
TOO_MANY_RUNNINGEl workspace ya tiene max_running generaciones corriendo. Espera a que una termine.
MODEL_UNAVAILABLE, MODE_UNSUPPORTED, RESOLUTION_INVALID, SECONDS_INVALID, RATIO_INVALID, IMAGES_INVALID, VOICE_INVALIDLa solicitud no coincide con lo que acepta el modelo. Revisa en GET /generations/models.
IMAGE_NOT_FOUNDUn image_ids no es de este workspace.

Cuando la generación termina en failed, error_code dice por qué: SAFETY_BLOCKED, COPYRIGHT_BLOCKED y REAL_FACES_BLOCKED son rechazos del modelo por el contenido (cambia la solicitud o el modelo); TIMEOUT y MEDIA_FAILED valen un nuevo intento.

En esta página