One API call, authenticated with a single key. A CSV fallback if your vendor won't build it. And an honest answer to “who has actually integrated” — not a logo grid.
Your HIS reports a business event with one HTTP call. Zilo's rules engine owns timing, consent, and channel selection from there — your system is never blocked waiting on a downstream send.
/api/v1/eventscurl -s -X POST https://<your-zilo-host>/api/v1/events \
-H "Authorization: Bearer zilo_sk_live_xxxxx" \
-H "Content-Type: application/json" \
-d '{
"event_type": "visit.completed",
"occurred_at": "2026-08-02T10:15:00+05:30",
"patient": {
"name": "Asha Devi",
"phone": "9812345678",
"external_id": "HIS-4471"
}
}'Returns 202 Accepted with { event_id, status, duplicate, request_id } immediately — no waiting on the send. Authentication is a single bearer API key, issued from the Zilo dashboard (Integrations → API Keys), scoped to reputation:events.
Full reference — auth, rate limits, idempotency, error codes — is at docs/api/v1.md.
Not every HIS/EMR vendor will prioritise a custom integration for one clinic. The dashboard's CSV bulk-upload escape hatch covers the same ground: export your patient contact list, upload it in the Zilo dashboard, and every row runs through the exact same guardrails (suppression, dedupe, monthly cap, consent) a live API call would — no engineering work, no waiting on your vendor's roadmap.
Send them this page. The mechanism above is everything they need to get started — one POST, one API key, and a reference doc.
zilo.care/integrations