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
- 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://mobyvid.com/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://mobyvid.com/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://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.
echo "$JOB" | jq '.outputs[0].download_url // .data'
import os, uuid, requests
BASE = "https://mobyvid.com/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://mobyvid.com/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
| Nombre | Tipo | Por defecto | Valores |
|---|---|---|---|
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
-
Herramientasvideo.upscale
- Escala
- 1, 2, 4
- Admite
- Video
Topaz Labs / Mejorar video
Sube la resolución de tu video x2 o x4 con Topaz.
80 crpor clip · varía con la duración o el tamaño
-
Herramientasedit.merge
- Formato
- keep, 9:16, 4:5, 1:1, ...
- Admite
- Video, Audio
Staglight / Unir clips
Junta de 2 a 12 clips en un solo video en 9:16, 4:5, 1:1 o 16:9.
10 crpor uso
-
Herramientasedit.clean
Staglight / Quitar metadatos
Quita del archivo los datos de ubicación, dispositivo, edición y modelo de IA.
2 crpor uso