Bland
@mnemix-ai/bland-kit is a real, published integration kit: pre-call enrichment and post-call memory write-back for a Bland.ai pathway. It calls the same two frozen routes documented on Voice integration patterns — POST /v1/recall_and_enrich before the call, POST /v1/calls/end after — and nothing else. This is a Northsun-built, Northsun-maintained kit against Bland's documented webhook contract — not a native Bland feature or a certified Bland integration.
Prefer zero package dependencies? The custom-HTTP Bland guide maps the same two calls with plain fetch and no npm install at all.
Install
npm install @mnemix-ai/bland-kit @mnemix-ai/client
Verified in a clean directory: @mnemix-ai/bland-kit@0.3.0's peer dependency on @mnemix-ai/client@^0.2.1 resolves against the published @mnemix-ai/client@0.2.2, install exits 0, and both packages import clean.
@mnemix-ai/*is today's published scope. If your integration will outlive a possible future move to@northsun-ai/*, pin the version above rather than trackinglatest.
Set your key
MNEMIX_KEY=sk_live_...
MNEMIX_BASE_URL=https://mcp.mnemix.ai # optional; this is the default
BLAND_WEBHOOK_SECRET=... # shared secret from Bland, recommended
MNEMIX_KEY is your Northsun API key — see Installation for how to get one. Set it as a platform secret (wrangler secret put MNEMIX_KEY on Cloudflare Workers, or your platform's equivalent), never as a plaintext environment value in a repo or client bundle.
MNEMIX_KEY is the kit's own Env binding name (matches its published source and README), a different name than the CLI's MNEMIX_API_KEY from Installation — same key value, two independent surfaces, name whichever variable you're setting for whichever tool reads it.
Wire the webhooks
The kit's Cloudflare Worker example exposes two routes:
import { Mnemix } from "@mnemix-ai/client";
import { handleBlandPostCall, handleBlandPreCall } from "@mnemix-ai/bland-kit";
const mnemix = new Mnemix({ apiKey: env.MNEMIX_KEY, baseUrl: env.MNEMIX_BASE_URL });
// route /bland/pre-call -> handleBlandPreCall(...)
// route /bland/post-call -> handleBlandPostCall(...)
In your Bland pathway configuration, set:
pre-call webhook = https://your-worker.example.com/bland/pre-call
post-call webhook = https://your-worker.example.com/bland/post-call
Bland calls the pre-call URL before connecting the agent and the post-call URL after the call ends; the key never leaves your server.
Use the context in your pathway
The pre-call response returns variables and a system_prompt fragment, not raw JSON, so your pathway template stays readable:
{{caller_name}}{{is_returning}}{{last_call_summary}}{{suggested_intent}}
See What recall gives you back for what populates these and when a value is legitimately absent rather than wrong.
Verify it
Run a test call through the pathway. Your worker logs should show one pre-call recall, then one POST /v1/calls/end when Bland's post-call webhook fires. See Hangup, and what happens next for what happens immediately after that call.
Next steps
- Vapi — the same lifecycle for Vapi assistants.
- Voice integration patterns — the platform-neutral lifecycle this kit implements.
- Production readiness — the launch checklist before you point this at real traffic.