API Crear clave

ByteDanceVideo

Seedance 2.5

Video de 4 a 30 s con audio.

Precio
237 crpor clip · 5 s · 720p
Tiempo habitual
≈ 3 min
Id del modelo
video.seedance-2-5

Zona de pruebas

Zona de pruebas

4 - 30

Resolución

Primer fotograma

Inicia sesión para subir un archivo.

Más ajustes

Último fotograma

Inicia sesión para subir un archivo.

Imágenes de referencia

Inicia sesión para subir un archivo.

Video de referencia

Inicia sesión para subir un archivo.

Regístrate para ejecutarlo

Cambia los ajustes: el precio y el código se actualizan. Para ejecutarlo necesitas una cuenta.

Un resultado real de Seedance 2.5.

# 1. Crea el trabajo. Se cobra una vez y se reembolsa si falla.
JOB_ID=$(curl -s -X POST https://mobyvid.com/api/v1/jobs \
  -H "Authorization: Bearer $STAGLIGHT_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
    "op": "video.seedance-2-5",
    "params": {
      "prompt": "Foto de producto premium de un frasco de sérum de vidrio sobre piedra mojada, luz suave de ventana",
      "duration": 5,
      "resolution": "720p",
      "aspect_ratio": "9:16"
    },
    "max_credits": 237
  }' | jq -r .id)

# 2. Consulta hasta que termine. Cada llamada espera hasta 30 segundos.
while :; do
  JOB=$(curl -s "https://mobyvid.com/api/v1/jobs/$JOB_ID?wait=30" -H "Authorization: Bearer $STAGLIGHT_API_KEY")
  case "$(echo "$JOB" | jq -r .status)" in queued|running) ;; *) break ;; esac
done

# 3. Descarga el resultado desde outputs[0].download_url.
DOWNLOAD_URL=$(echo "$JOB" | jq -r '.outputs[0].download_url')
curl -L -o result.mp4 "$DOWNLOAD_URL"
import os, uuid, requests

BASE = "https://mobyvid.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['STAGLIGHT_API_KEY']}"}

# 1. Crea el trabajo. Se cobra una vez y se reembolsa si falla.
r = requests.post(f"{BASE}/jobs", timeout=60,
                  headers={**HEADERS, "Idempotency-Key": str(uuid.uuid4())},
                  json={
                    "op": "video.seedance-2-5",
                    "params": {
                      "prompt": "Foto de producto premium de un frasco de sérum de vidrio sobre piedra mojada, luz suave de ventana",
                      "duration": 5,
                      "resolution": "720p",
                      "aspect_ratio": "9:16"
                    },
                    "max_credits": 237
                  })
r.raise_for_status()
job = r.json()

# 2. Consulta hasta que termine. Cada llamada espera hasta 30 segundos.
while job["status"] in ("queued", "running"):
    job = requests.get(f"{BASE}/jobs/{job['id']}", headers=HEADERS,
                       params={"wait": 30}, timeout=60).json()

# 3. Descarga el resultado desde outputs[0].download_url.
print(job["outputs"][0]["download_url"] if job["outputs"] else job["data"] or job["error"])
// Node 18 o posterior. Guárdalo como run.mjs: el await de nivel superior necesita un módulo.
const BASE = "https://mobyvid.com/api/v1";
const headers = { Authorization: `Bearer ${process.env.STAGLIGHT_API_KEY}` };

// 1. Crea el trabajo. Se cobra una vez y se reembolsa si falla.
let res = await fetch(`${BASE}/jobs`, {
  method: "POST",
  headers: { ...headers, "Content-Type": "application/json", "Idempotency-Key": crypto.randomUUID() },
  body: JSON.stringify({
    "op": "video.seedance-2-5",
    "params": {
      "prompt": "Foto de producto premium de un frasco de sérum de vidrio sobre piedra mojada, luz suave de ventana",
      "duration": 5,
      "resolution": "720p",
      "aspect_ratio": "9:16"
    },
    "max_credits": 237
  }),
});
if (!res.ok) throw new Error((await res.json()).error.message);
let job = await res.json();

// 2. Consulta hasta que termine. Cada llamada espera hasta 30 segundos.
while (job.status === "queued" || job.status === "running") {
  job = await (await fetch(`${BASE}/jobs/${job.id}?wait=30`, { headers })).json();
}

// 3. Descarga el resultado desde outputs[0].download_url.
console.log(job.outputs[0]?.download_url ?? job.data ?? job.error);
{
  "id": "job_19a2b3c4d5e6f7a8b9c0d1",
  "op": "video.seedance-2-5",
  "status": "queued",
  "credits": 237,
  "title": "",
  "params": {
    "prompt": "Foto de producto premium de un frasco de sérum de vidrio sobre piedra mojada, luz suave de ventana",
    "duration": 5,
    "resolution": "720p",
    "aspect_ratio": "9:16"
  },
  "progress": null,
  "outputs": [],
  "data": null,
  "error": null,
  "run_id": null,
  "source": "api",
  "created_at": "2026-11-06T12:00:00Z",
  "finished_at": null,
  "eta_seconds": 182
}

Cuánto cuesta

Duración (s)480p720p1080p
4 s84 cr189 cr474 cr
5 s105 cr237 cr593 cr
15 s315 cr709 cr1.778 cr
30 s630 cr1.418 cr3.555 cr

Borrador en 480p también cambia el precio. La zona de pruebas muestra el precio exacto de tus ajustes. La tarea se cobra una vez al aceptarla y se reembolsa si falla. El precio se vuelve a comprobar con tu archivo antes de ejecutar.

Parámetros

NombreTipoPor defectoValores
promptobligatorioDescripción string Hasta 20.000 caracteres
durationDuración (s) integer 5 4 - 30
resolutionResolución enum 720p 480p, 720p, 1080p
draftBorrador en 480p boolean false
aspect_ratioFormato enum 9:16 9:16, 16:9, 1:1, 4:3, 3:4, 21:9, adaptive
soundSonido boolean true
first_framePrimer fotograma media id Imagen
last_frameÚltimo fotograma media id Imagen
reference_imagesImágenes de referencia media id[] Imagen, hasta 9
reference_videoVideo de referencia media id Video

Envíalos dentro de params. Los archivos son ids de POST /api/v1/uploads. Ver la documentación

Más modelos