Connect isahar Voice with your own systems
Read account data through the API, add notes to calls and send call requests to agents. Webhooks let your applications receive important events as soon as they occur.
Basic Auth · Explicit key permissions · JSON responses
curl -u "key_xxxxx:your_secret" \
https://api.voice.isahar.io/v1/ping{
"ok": true,
"api_version": "v1",
"tenant_id": "tenant_xxxxx"
}Start with an API key
Create the key in the administration panel and choose exactly what it can access. You receive an ID and a secret when the key is created. The secret is shown only once and cannot be retrieved later.
- Authenticate using HTTP Basic Auth
keyIdis the username- The secret is the password
- Send every request to
https://api.voice.isahar.io
curl -u "key_xxxxx:your_secret" \
https://api.voice.isahar.io/v1/ping{
"ok": true,
"api_version": "v1",
"tenant_id": "tenant_xxxxx"
}What you can do with the API
Access account data without manual exports or database access. Every response is isolated to the organization associated with the API key.
Add a note to an existing call and make it visible in isahar Voice. This operation requires thenotes:write permission and a unique Idempotency-Key.
curl -u "key_xxxxx:your_secret" \
-X POST \
-H "Content-Type: application/json" \
-H "Idempotency-Key: crm-note-001" \
-d '{"content":"The customer would like to be contacted tomorrow."}' \
https://api.voice.isahar.io/v1/calls/CALL_ID/notesNotes cannot be edited or deleted through the API.
Your system can send a call request to an available agent. The agent sees the destination in the application and chooses whether to accept or reject it. The call never starts automatically.
POST /v1/agents/:agent_id/dialcurl -u "key_xxxxx:your_secret" \
-X POST \
-H "Content-Type: application/json" \
-H "Idempotency-Key: crm-dial-001" \
-d '{
"to": "+40700000000",
"from_number_id": "NUMBER_ID"
}' \
https://api.voice.isahar.io/v1/agents/AGENT_ID/dialFor write requests, send an Idempotency-Key header. Reuse the same key when retrying the same action to prevent duplicate notes or call requests.
Idempotency-Key: <unique-identifier>Find exactly the calls you need
Filter and sort the call list directly in the request instead of downloading the entire history.
curl -u "key_xxxxx:your_secret" \
"https://api.voice.isahar.io/v1/calls?direction=INBOUND&from=2026-08-01T00%3A00%3A00Z&per_page=20&order=desc"- Every list is paginated
per_pageaccepts up to 200 results- Responses include a
metaobject with the current page, total and next page
Give each key only the access it needs
Write permissions are never granted by default. They must be selected explicitly when the key is created. A legacy key without explicit scopes has read-only access.
Receive events as soon as they happen
Register one or more URLs and choose the events you want to receive. Your CRM, internal dashboard or alerting system can then react without repeated polling.
{
"id": "evt_xxxxx",
"type": "call.ended",
"version": "1",
"created_at": "2026-08-24T10:30:00Z",
"data": {
"callId": "call_xxxxx",
"direction": "INBOUND",
"from": "+40711111111",
"to": "+40788800000",
"status": "COMPLETED"
}
}Errors that are easy to trace
Every error uses the same structure and includes a request_idthat you can use when investigating an issue.
{
"error": {
"code": "agent_unavailable",
"message": "The agent is not available.",
"request_id": "req_xxxxx"
}
}- X-Request-Id is also returned as a response header
- HTTP status codes include 400, 401, 403, 404, 409, 422, 429 and 500
- Resources belonging to another account are returned as not found, without revealing that they exist
Clear limits, no surprises
The API applies limits per key and per account to protect data and service availability.
Building an integration with isahar Voice?
Explore the endpoints, test requests directly in the documentation and connect calls with the systems your team already uses.