Skip to main content

Batch processing

Create report jobs in small batches, then let webhooks handle completion.

import { Conduit } from "@mappa-ai/conduit"

const conduitClient = new Conduit({ apiKey: process.env.CONDUIT_API_KEY! })

const urls = [
"https://example.com/recording1.mp3",
"https://example.com/recording2.mp3",
"https://example.com/recording3.mp3",
]

async function processBatch(urls: string[], concurrency = 3) {
const receipts = []

for (let i = 0; i < urls.length; i += concurrency) {
const batch = urls.slice(i, i + concurrency)
const created = await Promise.all(
batch.map((url) =>
conduitClient.reports.create({
source: { url },
output: { template: "general_report" },
target: { strategy: "dominant" },
webhook: { url: "https://your-app.com/webhooks/conduit" },
}),
),
)
receipts.push(...created)
}

return receipts
}

const receipts = await processBatch(urls)
console.info(receipts.map((receipt) => receipt.jobId))