const API_KEY = "mk_your_api_key";
const BASE = "https://api.mosaic.so";
// 1. Get upload URL
const data = await fetch(`${BASE}/uploads/audio/get_upload_url`, {
method: "POST",
headers: { "Authorization": `Bearer ${API_KEY}` }
}).then(r => r.json());
// 2. Upload file
const formData = new FormData();
Object.entries(data.upload_fields).forEach(([k, v]) => formData.append(k, v));
formData.append("file", audioFile);
await fetch(data.upload_url, { method: "POST", body: formData });
// 3. Finalize
const result = await fetch(`${BASE}/uploads/audio/finalize_upload`, {
method: "POST",
headers: { "Authorization": `Bearer ${API_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({ audio_id: data.audio_id })
}).then(r => r.json());
// 4. Use in update_params
const run = await fetch(`${BASE}/agent/YOUR_AGENT_ID/run`, {
method: "POST",
headers: { "Authorization": `Bearer ${API_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({
video_urls: ["https://youtube.com/watch?v=dQw4w9WgXcQ"],
update_params: {
"AUDIO_NODE_ID": { audio_id: result.audio_id }
}
})
}).then(r => r.json());
console.log(`Run ID: ${run.run_id}`);