// 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 "); 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)); }