EasyCall API Documentation
Developer Documentation

EasyCall API Docs

EasyCall системийн Call API болон SMS API холболтын гарын авлага. Endpoint бүр дээр request, parameter, response example болон cURL, PHP, Python, JavaScript жишээ кодыг тухайн endpoint-ийн доор оруулсан.

API Base URL

Бүх жишээ код дээр дараах үндсэн домэйныг ашиглана.

Base URL
https://api.easycall.mn

Нэвтрэх эрх

Call API нь байгууллагад холбогдсон API token ашиглана.
SMS API нь байгууллагад холбосон api_key-ийг JSON body дотор api_key утгаар дамжуулна.

Call API header
Authorization: Bearer YOUR_API_TOKEN
SMS API body
{
  "api_key": "YOUR_SMS_API_KEY"
}

Нийтлэг алдааны кодууд

HTTP CodeТайлбар
400Parameter дутуу эсвэл буруу format-тай.
401API token эсвэл api_key буруу.
403Тухайн resource-д хандах эрхгүй.
404Дуудлага, бичлэг эсвэл resource олдсонгүй.
500Серверийн дотоод алдаа.

Filters & Pagination

Call API endpoint-үүд дээр дараах нийтлэг query parameter-үүд ашиглагдана.

ParameterTypeRequiredТайлбар
start_datedateYesЭхлэх огноо. Format: YYYY-MM-DD
end_datedateYesДуусах огноо. Format: YYYY-MM-DD
sip_numberstringNoToken-д зөвшөөрөгдсөн SIP дотроос нэгийг сонгоно.
srcstringNoCaller дугаараар хайх.
dststringNoDestination дугаараар хайх.
dispositionstringNoANSWERED, NO ANSWER, BUSY, FAILED, CONGESTION.
pageintegerNoDefault: 1.
limitintegerNoDefault: 100. Max: 1000.
GET/api_v1/call/stats

Call Statistics

Дуудлагын тоон үзүүлэлт, хариулсан хувь, ярианы хугацаа, disposition болон цагийн задаргаа буцаана.

Parameter / FieldTypeRequiredТайлбар
start_datedateYesЭхлэх огноо.
end_datedateYesДуусах огноо.
directionstringNoall, inbound, outbound. Default: all.
Response example
{
  "success": true,
  "data": {
    "total_calls": 1520,
    "answered": 1203,
    "failed": 317,
    "answer_rate": 79.14,
    "total_talk_time": "58:23:17",
    "avg_talk_time_seconds": 174.7,
    "avg_wait_time_seconds": 8.2
  }
}

Example code

cURL
curl -X GET "{{base_url}}/api_v1/call/stats?start_date=2026-06-01&end_date=2026-06-10&direction=all" \
  -H "Authorization: Bearer YOUR_API_TOKEN"
PHP
<?php
$token = 'YOUR_API_TOKEN';
$url = '{{base_url}}/api_v1/call/stats?' . http_build_query([
    'start_date' => '2026-06-01',
    'end_date' => '2026-06-10',
    'direction' => 'all'
]);

$ch = curl_init($url);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $token]
]);

$response = curl_exec($ch);
curl_close($ch);

print_r(json_decode($response, true));
Python
import requests

token = "YOUR_API_TOKEN"
response = requests.get(
    "{{base_url}}/api_v1/call/stats",
    params={
        "start_date": "2026-06-01",
        "end_date": "2026-06-10",
        "direction": "all"
    },
    headers={"Authorization": f"Bearer {token}"}
)

print(response.json())
JavaScript
const params = new URLSearchParams({
  start_date: '2026-06-01',
  end_date: '2026-06-10',
  direction: 'all'
});

const response = await fetch(`{{base_url}}/api_v1/call/stats?${params}`, {
  headers: { Authorization: 'Bearer YOUR_API_TOKEN' }
});

const data = await response.json();
console.log(data);
GET/api_v1/call/inbound

Inbound Calls

Ирсэн дуудлагын жагсаалт авна.

Parameter / FieldTypeRequiredТайлбар
start_datedateYesЭхлэх огноо.
end_datedateYesДуусах огноо.
pageintegerNoDefault: 1.
limitintegerNoDefault: 100.
Response example
{
  "success": true,
  "meta": { "page": 1, "limit": 100, "count": 1 },
  "data": [
    {
      "id": 41265026,
      "start": "2026-06-01 09:15:00",
      "src": "99112233",
      "dst": "77327733",
      "duration": 45,
      "duration_format": "00:45",
      "billsec": 30,
      "billsec_format": "00:30",
      "disposition": "ANSWERED",
      "session": "1748912345.123",
      "recordings": []
    }
  ]
}

Example code

cURL
curl -X GET "{{base_url}}/api_v1/call/inbound?start_date=2026-06-01&end_date=2026-06-10&page=1&limit=100" \
  -H "Authorization: Bearer YOUR_API_TOKEN"
PHP
<?php
$token = 'YOUR_API_TOKEN';
$url = '{{base_url}}/api_v1/call/inbound?' . http_build_query([
    'start_date' => '2026-06-01',
    'end_date' => '2026-06-10',
    'page' => 1,
    'limit' => 100
]);

$ch = curl_init($url);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $token]
]);

$response = curl_exec($ch);
curl_close($ch);

print_r(json_decode($response, true));
Python
import requests

token = "YOUR_API_TOKEN"
response = requests.get(
    "{{base_url}}/api_v1/call/inbound",
    params={
        "start_date": "2026-06-01",
        "end_date": "2026-06-10",
        "page": 1,
        "limit": 100
    },
    headers={"Authorization": f"Bearer {token}"}
)

print(response.json())
JavaScript
const params = new URLSearchParams({
  start_date: '2026-06-01',
  end_date: '2026-06-10',
  page: '1',
  limit: '100'
});

const response = await fetch(`{{base_url}}/api_v1/call/inbound?${params}`, {
  headers: { Authorization: 'Bearer YOUR_API_TOKEN' }
});

const data = await response.json();
console.log(data);
GET/api_v1/call/outbound

Outbound Calls

Гарсан дуудлагын жагсаалт авна.

Parameter / FieldTypeRequiredТайлбар
start_datedateYesЭхлэх огноо.
end_datedateYesДуусах огноо.
pageintegerNoDefault: 1.
limitintegerNoDefault: 100.
Response example
{
  "success": true,
  "meta": { "page": 1, "limit": 100, "count": 1 },
  "data": [
    {
      "id": 41265088,
      "start": "2026-06-01 10:20:00",
      "src": "1501",
      "dst": "99112233",
      "duration": 65,
      "billsec": 51,
      "disposition": "ANSWERED",
      "session": "1748912999.200"
    }
  ]
}

Example code

cURL
curl -X GET "{{base_url}}/api_v1/call/outbound?start_date=2026-06-01&end_date=2026-06-10&page=1&limit=100" \
  -H "Authorization: Bearer YOUR_API_TOKEN"
PHP
<?php
$token = 'YOUR_API_TOKEN';
$url = '{{base_url}}/api_v1/call/outbound?' . http_build_query([
    'start_date' => '2026-06-01',
    'end_date' => '2026-06-10',
    'page' => 1,
    'limit' => 100
]);

$ch = curl_init($url);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $token]
]);

$response = curl_exec($ch);
curl_close($ch);

print_r(json_decode($response, true));
Python
import requests

token = "YOUR_API_TOKEN"
response = requests.get(
    "{{base_url}}/api_v1/call/outbound",
    params={
        "start_date": "2026-06-01",
        "end_date": "2026-06-10",
        "page": 1,
        "limit": 100
    },
    headers={"Authorization": f"Bearer {token}"}
)

print(response.json())
JavaScript
const params = new URLSearchParams({
  start_date: '2026-06-01',
  end_date: '2026-06-10',
  page: '1',
  limit: '100'
});

const response = await fetch(`{{base_url}}/api_v1/call/outbound?${params}`, {
  headers: { Authorization: 'Bearer YOUR_API_TOKEN' }
});

const data = await response.json();
console.log(data);
GET/api_v1/call/details

Call Details

Нэг session-д хамаарах бүх CDR мөрүүдийг авна.

Parameter / FieldTypeRequiredТайлбар
sessionstringYesInbound/outbound response-оос ирсэн session.
startdateYesДуудлага эхэлсэн огноо.
Response example
{
  "success": true,
  "data": [
    {
      "id": 41265026,
      "start": "2026-06-01 09:15:00",
      "src": "99112233",
      "dst": "77327733",
      "duration_format": "00:45",
      "billsec_format": "00:30",
      "disposition": "ANSWERED"
    }
  ]
}

Example code

cURL
curl -X GET "{{base_url}}/api_v1/call/details?session=1748912345.123&start=2026-06-01" \
  -H "Authorization: Bearer YOUR_API_TOKEN"
PHP
<?php
$token = 'YOUR_API_TOKEN';
$url = '{{base_url}}/api_v1/call/details?' . http_build_query([
    'session' => '1748912345.123',
    'start' => '2026-06-01'
]);

$ch = curl_init($url);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $token]
]);

$response = curl_exec($ch);
curl_close($ch);

print_r(json_decode($response, true));
Python
import requests

token = "YOUR_API_TOKEN"
response = requests.get(
    "{{base_url}}/api_v1/call/details",
    params={"session": "1748912345.123", "start": "2026-06-01"},
    headers={"Authorization": f"Bearer {token}"}
)

print(response.json())
JavaScript
const params = new URLSearchParams({
  session: '1748912345.123',
  start: '2026-06-01'
});

const response = await fetch(`{{base_url}}/api_v1/call/details?${params}`, {
  headers: { Authorization: 'Bearer YOUR_API_TOKEN' }
});

const data = await response.json();
console.log(data);

Recording download flow

Ярианы бичлэгийг storage URL харуулахгүйгээр нэг удаагийн download token ашиглан татна.

1
recording-token endpoint рүү call_id, start, file илгээнэ.
2
API тухайн дуудлага token-д зөвшөөрөгдсөн эсэхийг шалгана.
3
Амжилттай бол нэг удаагийн download_url буцаана.
4
/api_v1/call/download endpoint-оор файл татна.
GET/api_v1/call/recording-token

Create recording download token

Ярианы бичлэг татах нэг удаагийн token үүсгэнэ.

Parameter / FieldTypeRequiredТайлбар
call_idintegerYesДуудлагын ID.
startdateYesДуудлага эхэлсэн огноо.
filestringYesrecordings дотор ирсэн файлын нэр.
Response example
{
  "success": true,
  "data": {
    "download_url": "{{base_url}}/api_v1/call/download?token=ONE_TIME_TOKEN",
    "expires_in_seconds": 300,
    "one_time": true
  }
}

Example code

cURL
curl -X GET "{{base_url}}/api_v1/call/recording-token?call_id=41265026&start=2026-06-01&file=2026-06%2Fauto-1780480309-99149780-1099.wav" \
  -H "Authorization: Bearer YOUR_API_TOKEN"
PHP
<?php
$token = 'YOUR_API_TOKEN';
$url = '{{base_url}}/api_v1/call/recording-token?' . http_build_query([
    'call_id' => 41265026,
    'start' => '2026-06-01',
    'file' => '2026-06/auto-1780480309-99149780-1099.wav'
]);

$ch = curl_init($url);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $token]
]);

$response = curl_exec($ch);
curl_close($ch);

$data = json_decode($response, true);
print_r($data);
Python
import requests

token = "YOUR_API_TOKEN"
response = requests.get(
    "{{base_url}}/api_v1/call/recording-token",
    params={
        "call_id": 41265026,
        "start": "2026-06-01",
        "file": "2026-06/auto-1780480309-99149780-1099.wav"
    },
    headers={"Authorization": f"Bearer {token}"}
)

print(response.json())
JavaScript
const params = new URLSearchParams({
  call_id: '41265026',
  start: '2026-06-01',
  file: '2026-06/auto-1780480309-99149780-1099.wav'
});

const response = await fetch(`{{base_url}}/api_v1/call/recording-token?${params}`, {
  headers: { Authorization: 'Bearer YOUR_API_TOKEN' }
});

const data = await response.json();
console.log(data);
GET/api_v1/call/download

Download recording

Нэг удаагийн token ашиглан бичлэгийн файлыг татна. Энэ endpoint нь JSON биш, аудио файлыг attachment байдлаар буцаана.

Parameter / FieldTypeRequiredТайлбар
tokenstringYesrecording-token endpoint-оос авсан нэг удаагийн token.
Response example
Binary audio file response

Example code

cURL
curl -L -o recording.wav "{{base_url}}/api_v1/call/download?token=ONE_TIME_TOKEN"
PHP
<?php
$downloadUrl = '{{base_url}}/api_v1/call/download?token=ONE_TIME_TOKEN';

$ch = curl_init($downloadUrl);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_FOLLOWLOCATION => true
]);

$fileContent = curl_exec($ch);
curl_close($ch);

file_put_contents('recording.wav', $fileContent);
Python
import requests

url = "{{base_url}}/api_v1/call/download?token=ONE_TIME_TOKEN"
response = requests.get(url)
response.raise_for_status()

with open("recording.wav", "wb") as f:
    f.write(response.content)
JavaScript
const response = await fetch('{{base_url}}/api_v1/call/download?token=ONE_TIME_TOKEN');
const blob = await response.blob();

const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = 'recording.wav';
a.click();
URL.revokeObjectURL(url);

SMS API Overview

SMS API нь JSON body ашиглан ажиллана. api_key заавал дамжуулна.

POST /api_v1/send_sms_apiPOST /api_v1/check_sms_balance_apiPOST /api_v1/send_broadcast_api
POST/api_v1/send_sms_api

Send SMS

Нэг утасны дугаар руу SMS илгээнэ.

Parameter / FieldTypeRequiredТайлбар
api_keystringYesSMS API key.
phonestringYesИлгээх утасны дугаар.
messagestringYesИлгээх мессеж.
Response example
{
  "success": true,
  "message": "SMS queued successfully"
}

Example code

cURL
curl -X POST "{{base_url}}/api_v1/send_sms_api" \
  -H "Content-Type: application/json" \
  -d '{
  "api_key": "YOUR_SMS_API_KEY",
  "phone": "99101261",
  "message": "Hello EasyCall"
}' 
PHP
<?php
$payload = [
    'api_key' => 'YOUR_SMS_API_KEY',
    'phone' => '99101261',
    'message' => 'Hello EasyCall'
];

$ch = curl_init('{{base_url}}/api_v1/send_sms_api');
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
    CURLOPT_POSTFIELDS => json_encode($payload)
]);

$response = curl_exec($ch);
curl_close($ch);

print_r(json_decode($response, true));
Python
import requests

response = requests.post(
    "{{base_url}}/api_v1/send_sms_api",
    json={
        "api_key": "YOUR_SMS_API_KEY",
        "phone": "99101261",
        "message": "Hello EasyCall"
    }
)

print(response.json())
JavaScript
const response = await fetch('{{base_url}}/api_v1/send_sms_api', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    api_key: 'YOUR_SMS_API_KEY',
    phone: '99101261',
    message: 'Hello EasyCall'
  })
});

const data = await response.json();
console.log(data);
POST/api_v1/check_sms_balance_api

Check SMS Balance

SMS үлдэгдэл шалгана.

Parameter / FieldTypeRequiredТайлбар
api_keystringYesSMS API key.
Response example
{
  "success": true,
  "balance": 12500
}

Example code

cURL
curl -X POST "{{base_url}}/api_v1/check_sms_balance_api" \
  -H "Content-Type: application/json" \
  -d '{
  "api_key": "YOUR_SMS_API_KEY"
}' 
PHP
<?php
$payload = ['api_key' => 'YOUR_SMS_API_KEY'];

$ch = curl_init('{{base_url}}/api_v1/check_sms_balance_api');
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
    CURLOPT_POSTFIELDS => json_encode($payload)
]);

$response = curl_exec($ch);
curl_close($ch);

print_r(json_decode($response, true));
Python
import requests

response = requests.post(
    "{{base_url}}/api_v1/check_sms_balance_api",
    json={"api_key": "YOUR_SMS_API_KEY"}
)

print(response.json())
JavaScript
const response = await fetch('{{base_url}}/api_v1/check_sms_balance_api', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ api_key: 'YOUR_SMS_API_KEY' })
});

const data = await response.json();
console.log(data);
POST/api_v1/send_broadcast_api

Send Broadcast

Олон дугаар руу ижил SMS илгээнэ.

Parameter / FieldTypeRequiredТайлбар
api_keystringYesSMS API key.
phonesarrayYesУтасны дугааруудын array.
messagestringYesИлгээх мессеж.
Response example
{
  "success": true,
  "message": "Broadcast SMS queued successfully",
  "total": 3
}

Example code

cURL
curl -X POST "{{base_url}}/api_v1/send_broadcast_api" \
  -H "Content-Type: application/json" \
  -d '{
  "api_key": "YOUR_SMS_API_KEY",
  "phones": ["+97699101261", "97688808075", "99101261"],
  "message": "Hello EasyCall"
}' 
PHP
<?php
$payload = [
    'api_key' => 'YOUR_SMS_API_KEY',
    'phones' => ['+97699101261', '97688808075', '99101261'],
    'message' => 'Hello EasyCall'
];

$ch = curl_init('{{base_url}}/api_v1/send_broadcast_api');
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
    CURLOPT_POSTFIELDS => json_encode($payload)
]);

$response = curl_exec($ch);
curl_close($ch);

print_r(json_decode($response, true));
Python
import requests

response = requests.post(
    "{{base_url}}/api_v1/send_broadcast_api",
    json={
        "api_key": "YOUR_SMS_API_KEY",
        "phones": ["+97699101261", "97688808075", "99101261"],
        "message": "Hello EasyCall"
    }
)

print(response.json())
JavaScript
const response = await fetch('{{base_url}}/api_v1/send_broadcast_api', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    api_key: 'YOUR_SMS_API_KEY',
    phones: ['+97699101261', '97688808075', '99101261'],
    message: 'Hello EasyCall'
  })
});

const data = await response.json();
console.log(data);

Changelog

DateUpdate
2026-06-11Call API болон SMS API documentation, endpoint бүрийн cURL/PHP/Python/JavaScript example code нэмэв.