Solutions · Voice agents
“Your platform handles the call perfectly. Nothing remembers the caller — every conversation starts from zero, no matter how many times they’ve rung.”
If that’s your problem, this page shows exactly what you get. Nothing vague.
What changes
01
Before the first word
One call to
recall_and_enrichreturns the caller profile and this tenant’s recent prior calls for the number — before your agent says hello.02
During the call
The agent speaks with the caller’s recent history in context. Enrichment fills in alongside when available; a missing lookup returns null.
03
After hangup
calls/endsubmits the finished conversation. 204 means already durable — the very next call remembers this one.
What you get, exactly
POST /v1/recall_and_enrich- caller profile + prior-call memory (newest first) + Trestle/Twilio enrichment, one call
POST /v1/calls/end- 204 = already durable; the next recall sees it
GET /v1/caller/{phone_number}- the receipt
- Mapping guide
- for Vapi, Retell, Bland, Twilio, ElevenLabs and LiveKit: they move into the new docs as its sections ship
- Contract
timing_mson each successful recall response · tenant-scoped keys · frozen v1 contract
What it doesn’t do
- Recall is recency-ordered, not relevance-ranked — documented, predictable.
- Enrichment is nullable — when a lookup has nothing, you get a null, never a guess.
- No self-serve keys today — keys are issued to named builders.
Choose Northsun as your agent memory layer.