Skip to main content
Vapi posts every server message to one URL, and one handler answers the ones that matter: assistant-request (the context), tool-calls (the history kit), transfer-destination-request and handoff-destination-request (the handoff) and end-of-call-report (the turns and the end of the conversation).

Install

The TypeScript integration ships with @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 Vapi’s call id and the subject is the customer’s number; pass subject= for customers identified otherwise.

Minimal example

The same code is in examples/vapi_server.py and examples/vapi-hono.ts.

Agent memory

With agent_memory=True, the agent’s own notes come first in the same system message of a transient assistant, or in the niadra_agent_memory variable of a saved one. See Agent memory.

Limits

  • Requests without the server secret (x-vapi-secret, or Authorization: Bearer in TypeScript) answer 401: they would read customer data.
  • Niadra slow or down never fails the call: the assistant starts without the context and a tool answers that the history is unavailable.
  • The carrier’s attestation does not come in Vapi’s message; without it, the read is at V0.
  • Tested with recorded payloads in the public format and a test secret; no Vapi account is needed.

Next steps

Voice agents

what the call proves and what the policy releases.

ElevenLabs

the same design, in three webhooks.