Voice agent integration · 6 minutes quickstart

Mnemix + Bland

Bland.ai builds production voice pathways. Mnemix slots in as the memory + identity layer behind those pathways: every inbound call resolves the caller through Twilio Lookup + Trestle + Baylio before the first audio packet, and every completed call writes back a structured summary that Bland can route on next time.

What
Mnemix is a memory + real-world enrichment API for AI voice agents.
Who
For developers building AI voice agents on Vapi, Retell, Bland, LiveKit, or Twilio.
Price
Hobby $0 (free tier · 50 sessions / 1,000 memory ops / 100 lookups). Starter, Pro, and Elite tiers — contact sales for pricing while billing is in private beta.
How
One API call per turn — lookup, remember, recall. Sub-300ms voice recall is a design target at the Cloudflare edge.

What Mnemix adds to a Bland pathway

Code sample

Planned SDK form — preview of @mnemix/client shipping with v1.0.

import { Mnemix } from "@mnemix/client";
const mx = new Mnemix({ apiKey: process.env.MNEMIX_KEY! });

// Bland webhook — fired before pathway starts
export async function POST(req: Request) {
  const { phone_number } = await req.json();
  const { caller, memories, enrichment } = await mx.recall_and_enrich({
    phone_number,
    tenant_id: "your-tenant-id",
  });
  return Response.json({
    variables: {
      caller_name: caller.name ?? "there",
      last_intent: memories[0]?.summary ?? null,
      is_returning: caller.last_seen ? true : false,
      carrier: enrichment.twilio?.carrier ?? null,
    },
  });
}

Works today — call the REST API directly:

// Until @mnemix/client publishes, call the REST API directly:
export async function POST(req: Request) {
  const { phone_number } = await req.json();
  const r = await fetch(
    "https://mnemix-api.sayeed965.workers.dev/v1/recall_and_enrich",
    {
      method: "POST",
      headers: {
        "content-type": "application/json",
        authorization: `Bearer ${process.env.MNEMIX_KEY}`,
      },
      body: JSON.stringify({ phone_number, tenant_id: "your-tenant-id" }),
    }
  );
  const { caller, memories, enrichment } = await r.json();
  return Response.json({
    variables: {
      caller_name: caller.name ?? "there",
      last_intent: memories[0]?.summary ?? null,
      is_returning: !!caller.last_seen,
      carrier: enrichment.twilio?.carrier ?? null,
    },
  });
}

FAQ

How long does the Bland integration take?
About 6 minutes. Drop the Mnemix middleware into your Bland pathway's pre-call webhook, then add the post-call write-back to /v1/calls/end. No SDK install required if you call the REST API directly.
Does it work with both inbound and outbound Bland calls?
Yes. The pre-call webhook fires for both directions. For outbound calls Bland already has the phone number; Mnemix returns the enriched caller object the same way.
What if Twilio Lookup misses?
Mnemix gracefully degrades. If Twilio Lookup returns no carrier metadata, the caller object still contains whatever Trestle and Baylio resolved, plus any prior memory. Your Bland pathway gets a partial enrichment envelope rather than failing.
Can I bring my own enrichment vendors?
Trestle, Twilio Lookup, and Baylio are the bundled providers in Wave 1. Bring-your-own enrichment vendors land at Pro+ tier — contact hello@mnemix.ai if you need a specific vendor today.
What happens to memory if Mnemix is down?
Your Bland pathway continues running. The pre-call webhook returns whatever defaults you set (e.g. caller_name: 'there'); the post-call write-back retries on its own queue. Mnemix is non-blocking by design — voice agents can't wait.

Last updated: .