Skip to main content

Production guide

For the canonical public workflow, start with Production workflow.

This page keeps the Node-specific implementation notes that build on that workflow.

Default architecture​

  • Create jobs with conduit.reports.create(...).
  • Persist jobId and request metadata.
  • Process completion in your webhook endpoint.
  • Fetch final data with conduit.reports.get(reportId).

Why webhook-first​

Report generation can take around 150s. Blocking waits increase worker time and reduce throughput.

Idempotent creation​

await conduit.reports.create({
source: { mediaId },
output: { template: "sales_playbook" },
target: { strategy: "dominant" },
webhook: { url: "https://your-app.com/webhooks/conduit" },
idempotencyKey: `report:${userId}:${mediaHash}`,
requestId,
})

Webhook verification​

const payload = await req.text()

await conduit.webhooks.verifySignature({
payload,
headers: Object.fromEntries(req.headers),
secret: process.env.CONDUIT_WEBHOOK_SECRET!,
})

const event = conduit.webhooks.parseEvent(payload)

Fallback only when needed​

const report = await receipt.handle?.wait({ timeoutMs: 10 * 60_000 })

Use this only for low-volume scripts, not as your default app flow.

If you are deciding between verified webhooks and polling for the overall integration shape, use Production workflow as the source of truth.

Observability​

  • Always pass requestId for correlation.
  • Enable telemetry hooks in the client for request/response/error metrics.
  • Track webhook lag and completion rate.

Security​

  • Keep CONDUIT_API_KEY server-side only.
  • Rotate API keys regularly.
  • Reject unsigned webhook payloads.