API Crear clave

StaglightHerramientas

Subtítulos

Subtítulos incrustados en el video, con estilos, fuentes y colores dentro de la zona segura.

Precio
15 crpor uso
Tiempo habitual
≈ 60 s
Id del modelo
edit.captions

Zona de pruebas

Zona de pruebas

Video *

Inicia sesión para subir un archivo.

Idioma del audio

1 - 6

Estilo

50 - 150

Contorno
Sombra
Posición
Mayúsculas
Regístrate para ejecutarlo

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

edit.captions
Admite
Texto, Video

Aún no hay un ejemplo de este modelo. Estos son sus ajustes reales.

# 0. Primero sube tu archivo y pon en params el id que imprime.
curl -s -X POST https://staglight.ai/api/v1/uploads \
  -H "Authorization: Bearer $STAGLIGHT_API_KEY" -F file=@your-file | jq -r .id

# 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": "edit.captions",
    "params": {
      "video": "med_your_upload_id"
    },
    "max_credits": 15
  }' | 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.
echo "$JOB" | jq '.outputs[0].download_url // .data'
import os, uuid, requests

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

# 0. Primero sube tu archivo y pon en params el id que imprime.
with open("your-file", "rb") as f:
    print(requests.post(f"{BASE}/uploads", headers=HEADERS, files={"file": f}, timeout=300).json()["id"])

# 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": "edit.captions",
                    "params": {
                      "video": "med_your_upload_id"
                    },
                    "max_credits": 15
                  })
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}` };

// 0. Primero sube tu archivo y pon en params el id que imprime.
// const form = new FormData(); form.append('file', yourFile);
// const { id } = await (await fetch(`${BASE}/uploads`, { method: 'POST', headers, body: form })).json();

// 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": "edit.captions",
    "params": {
      "video": "med_your_upload_id"
    },
    "max_credits": 15
  }),
});
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": "edit.captions",
  "status": "queued",
  "credits": 15,
  "title": "",
  "params": {
    "video": "med_your_upload_id"
  },
  "progress": null,
  "outputs": [],
  "data": null,
  "error": null,
  "run_id": null,
  "source": "api",
  "created_at": "2026-11-06T12:00:00Z",
  "finished_at": null,
  "eta_seconds": 60
}

Cuánto cuesta

15 cr por ejecución. Los ajustes no cambian 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
videoobligatorioVideo media id Video
textTexto de los subtítulos (opcional) string Hasta 40.000 caracteres
langIdioma del audio enum auto auto, es, en
words_per_linePalabras por línea integer 3 1 - 6
presetEstilo enum bold bold, minimal, karaoke, subtitle
fontFuente enum archivo archivo, anton, bebas, poppins, bangers, archivoblack, kanit, barlow, titillium, titan, bungee, alfaslab, ...
sizeTamaño (%) integer 100 50 - 150
colorColor del texto string #FFFFFF Hasta 7 caracteres
highlightColor de resaltado string #FFE600 Hasta 7 caracteres
outlineContorno enum auto auto, off, thin, medium, thick
outline_colorColor del contorno string #000000 Hasta 7 caracteres
shadowSombra enum auto auto, off, soft, hard
positionPosición enum low low, middle, top, bottom
caseMayúsculas enum as_is as_is, upper

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

Más modelos