Install
@niadra/sdk 0.3.0, ready on main and on npm when it is published; until then the npm package is 0.1.1.
The five primitives
The Niadra conversation id is the call’s
call_sid (else ElevenLabs’ conversation_id), the same in all three webhooks. The subject is the caller’s number; pass subject= (a function of the call’s variables) for callers identified otherwise.
Minimal example
examples/elevenlabs_server.py and examples/elevenlabs-hono.ts.
Agent memory
Withagent_memory=True, the agent’s own notes arrive in the niadra_agent_memory variable; put {{niadra_agent_memory}} right before {{niadra_context}} in the agent’s prompt. See Agent memory.
Limits
- The initiation webhook and the server tools return customer data, so they require the
X-Niadra-Secretheader you configure in ElevenLabs (shared_secret); without it, 401. - Niadra slow or down never fails the call: the initiation answers an empty context, a tool answers that the history is unavailable, and the post-call webhook still answers 200.
- The carrier’s attestation does not come in ElevenLabs’ webhook; without it, the read is at V0.
- Tested with recorded payloads in the public format of the three webhooks and signatures computed in the test itself; no ElevenLabs account is needed.
Next steps
Voice agents
what the call proves and what the policy releases.
Vapi
the same design, on one server URL.

