Make the right connections.
Bring call events into your tools, originate calls from your workflow and use your own data in an IVR.
Choose the right API surface
MunaSIP separates the session-authenticated admin API, extension-authenticated portal API and API-key-authenticated integration API. External integrations use /api/v1/ext.
| Integration endpoint | Purpose |
|---|---|
| POST /api/v1/ext/calls/originate | Click-to-call: ring an extension first, then dial the destination. |
| GET /api/v1/ext/cdr | Read call detail records. |
| GET /api/v1/ext/recordings/:id/stream | Stream a recording with the required key permissions. |
Create and manage API keys in Admin → Integrations. Follow the upstream API contract and current application schemas for authentication, permissions and request bodies.
Let your tools know what happened
Webhook events cover ringing, answered, ended and missed calls. The project documents HMAC-signed bodies and three retries. Use the configured webhook secret to verify authenticity in your receiver and make event processing safe to repeat.
call.ringing
call.answered
call.ended
call.missed
For example, your own CRM integration could open the caller’s record on a ringing event. This is an integration pattern, not a bundled CRM connector.
Use your data inside the IVR
An API request node can look up a customer, map response fields to variables and choose the next destination. Keep API credentials in encrypted Settings → Secrets. Provide an error route for failed, slow or malformed responses.
Pair a short announcement with a lookup so the caller understands the pause. Simulate with mock data before connecting a real endpoint. See the IVR guide for request methods, mapping and timeout behavior.
Put a call button on your website
In Admin → Integrations, create a website call widget and copy the generated embed. It uses browser WebRTC calling and supports an optional callback form.
<!-- Example shape: use the actual embed generated by your PBX. -->
<script
src="https://pbx.example.com/widget.js"
data-widget="YOUR_GENERATED_WIDGET_ID">
</script>
The widget’s media connection still needs your PBX’s HTTPS, WSS and RTP/TURN setup. This product site does not embed a live widget or request microphone permission.
Connect deliberately
- Issue separate keys for separate integrations and grant only the access each needs.
- Keep keys and webhook secrets on a trusted server, outside publicly shipped browser code.
- Use HTTPS and avoid exposing internal admin APIs as public integration endpoints.
- Test failure paths and retries with your own receiver before enabling business workflows.