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"{
"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.
| Campo | Para qué sirve |
|---|---|
modes | text (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[].credits | Por segundo de video, por imagen o por 1.000 caracteres de voz. silent_credits es el precio del video sin sonido. |
audio | always tiene sonido siempre; optional acepta audio: false, en general más barato; null es mudo. |
refuses | Lo que el modelo se niega a mostrar: real_faces, minors, public_figures. |
typical_seconds, success_rate | Tiempo típico y tasa de éxito de las últimas semanas. null hasta que corran suficientes generaciones. |
presets | El modelo recomendado por tipo y nivel (fast, balanced, best). Úsalo cuando la persona no elige. |
max_running | Cuá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"{ "id": "7412960011002233" }mode | image_ids |
|---|---|
text | ninguna |
image | una, el primer cuadro |
frames | dos: primer y último cuadro |
references | hasta 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
}'{ "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:
secondses obligatorio y debe ser uno de lossecondsdel modelo. - Imagen: sin
seconds. - Voz (
kind: "speech",mode: "text"): lee elpromptpalabra por palabra con lavoiceelegida entre lasvoicesdel modelo. Sinaspect_ratio. Sale un MP3. Cuestacreditspor los caracteres delpromptdivididos 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.urles la vista previa (enlace de 6 horas, MP3 en una voz) youtput.thumbnail_urlla miniatura.failed: el motivo está enerror_codey 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
| Ruta | Qué hace |
|---|---|
GET /generations/{id}/download | Enlace 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}/edit | Abre 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 /generations | Lista 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
| Code | Cuándo |
|---|---|
INSUFFICIENT_CREDITS | Saldo insuficiente. extra.top_up_url lleva a la recarga; extra.is_owner dice si quien llamó puede recargar. |
PRICE_CHANGED | El precio cambió. El nuevo total está en extra.credits. |
TOO_MANY_RUNNING | El 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_INVALID | La solicitud no coincide con lo que acepta el modelo. Revisa en GET /generations/models. |
IMAGE_NOT_FOUND | Un 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.
Transcribe audio y video
Sube un audio o video, transcríbelo con tiempo por frase y, si quieres, quién habla. Descarga en JSON, SRT, VTT o texto.
Crea personas e intercambia a la persona del video
Crea una persona realista a partir de características, fotos del rostro o un personaje listo, y colócala en cualquier video o foto de producto.