API Crear clave

Kling AIVideo

Kling 4.0

Video de 3 a 30 s con sonido a partir de texto o de tus imágenes de referencia, en 720p o 1080p.

Precio
107 crpor clip · 5 s · 720p
Tiempo habitual
≈ 4 min
Id del modelo
video.kling-4

Zona de pruebas

Zona de pruebas

Imágenes de referencia

Inicia sesión para subir un archivo.

3 - 30

Formato
Resolución
Regístrate para ejecutarlo

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

Un resultado real de Kling 4.0.

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

# 2. Consulta hasta que termine. Cada llamada espera hasta 30 segundos.
while :; do
  JOB=$(curl -s "https://staglight.ai/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://staglight.ai/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.kling-4",
                    "params": {
                      "prompt": "Foto de producto premium de un frasco de sérum de vidrio sobre piedra mojada, luz suave de ventana",
                      "duration": 5,
                      "aspect_ratio": "9:16",
                      "resolution": "720p"
                    },
                    "max_credits": 107
                  })
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://staglight.ai/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.kling-4",
    "params": {
      "prompt": "Foto de producto premium de un frasco de sérum de vidrio sobre piedra mojada, luz suave de ventana",
      "duration": 5,
      "aspect_ratio": "9:16",
      "resolution": "720p"
    },
    "max_credits": 107
  }),
});
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.kling-4",
  "status": "queued",
  "credits": 107,
  "title": "",
  "params": {
    "prompt": "Foto de producto premium de un frasco de sérum de vidrio sobre piedra mojada, luz suave de ventana",
    "duration": 5,
    "aspect_ratio": "9:16",
    "resolution": "720p"
  },
  "progress": null,
  "outputs": [],
  "data": null,
  "error": null,
  "run_id": null,
  "source": "api",
  "created_at": "2026-11-06T12:00:00Z",
  "finished_at": null,
  "eta_seconds": 225
}

Cuánto cuesta

Duración (s)720p1080p
3 s65 cr96 cr
5 s107 cr160 cr
15 s321 cr479 cr
30 s642 cr957 cr

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 2.500 caracteres
reference_imagesImágenes de referencia media id[] Imagen, hasta 10
durationDuración (s) integer 5 3 - 30
aspect_ratioFormato enum 9:16 9:16, 16:9, 1:1
resolutionResolución enum 720p 720p, 1080p

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

Más modelos