poll.mjs
784 Bytes
// spike, one-off: poll a H3 Console job until done/error.
process.loadEnvFile(new URL("../../.env", import.meta.url));
const BASE = process.env.H3_CONSOLE_BASE;
const TOKEN = process.env.H3_CONSOLE_TOKEN;
const id = process.argv[2];
if (!id) { console.error("usage: node poll.mjs <jobId>"); process.exit(1); }
while (true) {
const res = await fetch(`${BASE}/v1/videos/${id}`, {
headers: { Authorization: `Bearer ${TOKEN}` },
});
const job = await res.json();
console.log(new Date().toISOString(), job.status, job.step, "/", job.total_steps);
if (job.status === "done" || job.status === "error" || job.status === "failed" || job.status === "cancelled") {
console.log(JSON.stringify(job, null, 2));
break;
}
await new Promise((r) => setTimeout(r, 10000));
}