رفتن به محتوای اصلی

مستندات وب‌سرویس ویپانو

برای شروع، توکن را از پنل کاربری بسازید و endpoint موردنیاز را از سایدبار انتخاب کنید. همه جزئیات عملیاتی و امنیتی در همین صفحه قابل دسترسی است.

Base URL https://voipano.com/api/v1/webservice
Authorization Bearer YOUR_TOKEN
Content-Type application/json
Rate Limit 6 req/min
Token TTL 90 روز
آخرین بروزرسانی 2026/08/24 18:23

شروع سریع

برای هر درخواست هدرهای زیر الزامی هستند:

Authorization: Bearer YOUR_TOKEN
Content-Type: application/json

هدر اختیاری برای رهگیری بهتر:

X-Request-Id: your-custom-id

توکن را از پنل کاربری بخش «خدمات وب‌سرویس» ایجاد کنید. هر توکن قابل غیرفعال‌سازی است.

محدودیت درخواست: 6 درخواست در دقیقه برای هر کاربر.

قواعد مالی و اجرایی

  • اگر مرکز تماس خطا بدهد یا درخواست fail شود، هزینه درخواست به کیف پول برمی‌گردد.
  • همه درخواست‌ها با `request_id` در تاریخچه مصرف API پنل کاربری ثبت می‌شوند.
  • اگر کاربر IP whitelist فعال کرده باشد، درخواست فقط از همان IPهای ثبت‌شده پذیرفته می‌شود.

تعرفه Endpoint ها

Endpoint Slug تعرفه وضعیت دسترسی
ارسال کد تایید صوتی call-otp 160 تومان / هر درخواست فعال عمومی
تماس سریع click-to-call 80 تومان / هر درخواست فعال عمومی
تماس امن secure-call 220 تومان / هر درخواست فعال عمومی
استعلام صوت‌های انتظار سرویس music-on-holds رایگان فعال عمومی
دریافت گزارش تماس call-reports رایگان فعال عمومی
دریافت لیست سرویس‌ها services رایگان فعال عمومی
دریافت لیست صندوق صوتی voicemail-inboxes رایگان فعال عمومی
دریافت صوت یک مکالمه call-recordings رایگان فعال عمومی
دریافت فایل صندوق صوتی voicemail-recordings رایگان فعال عمومی
لیست و جستجوی مخاطبین contacts رایگان فعال عمومی
مشاهده مخاطب contacts-show رایگان فعال عمومی
ایجاد مخاطب contacts-create رایگان فعال عمومی
ویرایش مخاطب contacts-update رایگان فعال عمومی
حذف مخاطب contacts-delete رایگان فعال عمومی
درون‌ریزی گروهی مخاطبین contacts-bulk-import رایگان فعال عمومی
لیست گروه‌های مخاطب contact-groups رایگان فعال عمومی
ایجاد گروه مخاطب contact-groups-create رایگان فعال عمومی
حذف گروه مخاطب contact-groups-delete رایگان فعال عمومی

API Endpoints

لیست کامل مسیرهای قابل استفاده در لایه وب‌سرویس ویپانو

POST https://voipano.com/api/v1/webservice/call-otp 160 تومان / هر درخواست

ارسال کد تایید صوتی

ارسال OTP برای شماره مقصد از طریق سرویس صوتی.

پارامترهای ورودی

نام نوع الزامی توضیح
phone_number string بله شماره مقصد OTP
purpose string خیر شناسه سناریوی درخواست (اختیاری)
client_ref string خیر شناسه دلخواه سمت کلاینت برای رهگیری
payload object خیر متادیتای دلخواه کلاینت
POST https://voipano.com/api/v1/webservice/click-to-call 80 تومان / هر درخواست

تماس سریع

شروع تماس بین دو شماره از طریق مرکز تماس.

پارامترهای ورودی

نام نوع الزامی توضیح
call_source string بله شماره مبدا تماس
call_destination string بله شماره مقصد تماس
timeout integer خیر تایم‌اوت اولیه (پیش‌فرض 30)
limit integer خیر سقف زمان مکالمه بر حسب ثانیه
client_ref string خیر شناسه رهگیری سمت کلاینت
POST https://voipano.com/api/v1/webservice/secure-call 220 تومان / هر درخواست

تماس امن

برقراری تماس امن با پروکسی ویپانو، امکان انتخاب موسیقی انتظار، دریافت رخداد تماس در URL دلخواه و تنظیم تلاش مجدد.

پارامترهای ورودی

نام نوع الزامی توضیح
call_source string بله شماره مبدا تماس
call_destination string بله شماره مقصد تماس
timeout integer خیر تایم‌اوت اولیه بر حسب ثانیه، از 1 تا 120 (پیش‌فرض 30)
limit integer خیر سقف زمان مکالمه بر حسب ثانیه، از 1 تا 7200
musiconhold string خیر شناسه MusicOnHold ثبت‌شده برای خط انتخاب‌شده؛ مالکیت آن پیش از تماس در مرکز تماس بررسی می‌شود
callback_url string (URL) خیر آدرس HTTP/HTTPS برای دریافت رخداد و اطلاعات این تماس
retry_count integer خیر تعداد تلاش مجدد در صورت ناموفق بودن تماس (پیش‌فرض 0)
retry_delay_seconds integer خیر فاصله بین تلاش‌های مجدد بر حسب ثانیه (حداقل 1)
client_ref string خیر شناسه رهگیری سمت کلاینت
GET https://voipano.com/api/v1/webservice/music-on-holds رایگان

استعلام صوت‌های انتظار سرویس

دریافت رایگان نام و مشخصات MusicOnHoldهای قابل استفاده در تماس امن برای سرویس انتخاب‌شده.

پارامترهای ورودی

نام نوع الزامی توضیح
limit integer خیر حداکثر تعداد خروجی؛ پیش‌فرض و سقف ۱۰۰
client_ref string خیر شناسه رهگیری سمت کلاینت
GET https://voipano.com/api/v1/webservice/call-reports رایگان

دریافت گزارش تماس

دریافت گزارش تماس مشابه صفحه گزارش تماس پنل.

پارامترهای ورودی

نام نوع الزامی توضیح
disposition string خیر فیلتر وضعیت تماس (مثال: ANSWERED)
call_type string خیر فیلتر نوع تماس (INBOUND / OUTBOUND / INTERNAL)
has_recording integer خیر ۱ برای تماس دارای ضبط
from date خیر تاریخ شروع (مثال: 2026-02-01)
to date خیر تاریخ پایان (مثال: 2026-02-17)
limit integer خیر تعداد در هر صفحه
page integer خیر شماره صفحه
GET https://voipano.com/api/v1/webservice/services رایگان

دریافت لیست سرویس‌ها

دریافت لیست سرویس‌ها و اشتراک‌های کاربر همراه با زمان باقی‌مانده هر سرویس.

پارامترهای ورودی

نام نوع الزامی توضیح
این endpoint پارامتر ورودی ندارد.
GET https://voipano.com/api/v1/webservice/voicemail-inboxes رایگان

دریافت لیست صندوق صوتی

دریافت لیست صندوق‌های صوتی کاربر.

پارامترهای ورودی

نام نوع الزامی توضیح
context string خیر context صندوق صوتی
mailbox string خیر شماره mailbox
limit integer خیر تعداد در هر صفحه
page integer خیر شماره صفحه
GET https://voipano.com/api/v1/webservice/call-recordings/{cdrId} رایگان

دریافت صوت یک مکالمه

دانلود فایل ضبط مکالمه.

پارامترهای ورودی

نام نوع الزامی توضیح
call_details_record_id string بله شناسه رکورد تماس
GET https://voipano.com/api/v1/webservice/voicemail-recordings/{uniqueId} رایگان

دریافت فایل صندوق صوتی

دانلود فایل پیام صوتی.

پارامترهای ورودی

نام نوع الزامی توضیح
context string بله context صندوق صوتی
mailbox string بله شماره mailbox
GET https://voipano.com/api/v1/webservice/contacts رایگان

لیست و جستجوی مخاطبین

نمایش یا جستجوی مخاطبین دفترچه مرکز تماس. این API رایگان است.

پارامترهای ورودی

نام نوع الزامی توضیح
search string خیر عبارت جستجو
endpoint_number string خیر خط هدف؛ پیش‌فرض سرویس token
page / per_page integer خیر صفحه و تعداد رکورد، حداکثر 100
GET https://voipano.com/api/v1/webservice/contacts/{contactId} رایگان

مشاهده مخاطب

دریافت یک مخاطب با شناسه برگشتی از دایکومت.

پارامترهای ورودی

نام نوع الزامی توضیح
contactId string بله شناسه مخاطب
POST https://voipano.com/api/v1/webservice/contacts رایگان

ایجاد مخاطب

ایجاد مخاطب جدید در دفترچه مرکز تماس.

پارامترهای ورودی

نام نوع الزامی توضیح
primary_number string بله شماره اصلی
first_name / last_name string خیر نام مخاطب
email, organization, metadata, group_ids mixed خیر فیلدهای تکمیلی
PATCH / PUT https://voipano.com/api/v1/webservice/contacts/{contactId} رایگان

ویرایش مخاطب

فقط فیلدهای ارسال‌شده تغییر می‌کنند؛ آرایه خالی عضویت گروه یا شماره‌های ثانویه را پاک می‌کند.

پارامترهای ورودی

نام نوع الزامی توضیح
contactId string بله شناسه مخاطب
first_name, last_name, primary_number, email, organization, metadata, group_ids mixed بله حداقل یک فیلد قابل ویرایش
DELETE https://voipano.com/api/v1/webservice/contacts/{contactId} رایگان

حذف مخاطب

حذف مخاطب از دفترچه مرکز تماس.

پارامترهای ورودی

نام نوع الزامی توضیح
contactId string بله شناسه مخاطب
POST https://voipano.com/api/v1/webservice/contacts/bulk-import رایگان

درون‌ریزی گروهی مخاطبین

ایجاد یا به‌روزرسانی گروهی تا 3000 مخاطب؛ ارسال داخلی در بسته‌های 100تایی انجام می‌شود.

پارامترهای ورودی

نام نوع الزامی توضیح
contacts array بله 1 تا 3000 مخاطب
update_existing boolean خیر به‌روزرسانی مورد موجود؛ پیش‌فرض true
default_group_id string خیر گروه پیش‌فرض
GET https://voipano.com/api/v1/webservice/contact-groups رایگان

لیست گروه‌های مخاطب

لیست گروه‌های دفترچه مخاطبین.

پارامترهای ورودی

نام نوع الزامی توضیح
page / per_page integer خیر صفحه‌بندی
POST https://voipano.com/api/v1/webservice/contact-groups رایگان

ایجاد گروه مخاطب

ساخت گروه جدید برای دفترچه مخاطبین.

پارامترهای ورودی

نام نوع الزامی توضیح
name string بله نام گروه
description string خیر توضیح
DELETE https://voipano.com/api/v1/webservice/contact-groups/{groupId} رایگان

حذف گروه مخاطب

حذف گروه مخاطبین.

پارامترهای ورودی

نام نوع الزامی توضیح
groupId string بله شناسه گروه

نمونه درخواست‌ها

ارسال کد تایید صوتی https://voipano.com/api/v1/webservice/call-otp

نمونه درخواست JSON:

{
  "phone_number": "09123***789",
  "purpose": "login",
  "client_ref": "req-otp-1001"
}

نمونه پاسخ:

{
  "ok": true,
  "data": {
    "request_id": "3dfd4fd4-5a2e-42a7-8f51-944fe18ca81a",
    "phone_number": "09123***789",
    "purpose": "login",
    "message": "کد تایید ارسال شد."
  },
  "billing": {
    "charged": 160,
    "unit_price": 160,
    "remaining_credit": 9840
  }
}
تماس سریع https://voipano.com/api/v1/webservice/click-to-call

نمونه درخواست JSON:

{
  "call_source": "09123***789",
  "call_destination": "09129***543",
  "timeout": 30,
  "limit": 45
}

نمونه پاسخ:

{
  "ok": true,
  "data": {
    "request_id": "7c8f3dd6-18c7-4e34-94bf-009d019f1d58",
    "endpoint_number": "02191010001",
    "status": "accepted",
    "provider": {
      "success": true,
      "status": 201
    }
  },
  "billing": {
    "charged": 80,
    "unit_price": 80,
    "remaining_credit": 9920
  }
}
تماس امن https://voipano.com/api/v1/webservice/secure-call

نمونه درخواست JSON:

{
  "call_source": "09123***789",
  "call_destination": "09129***543",
  "timeout": 45,
  "limit": 45,
  "musiconhold": "musiconhold-default-1",
  "callback_url": "https://example.com/webhook",
  "retry_count": 0,
  "retry_delay_seconds": 30
}

نمونه پاسخ:

{
  "ok": true,
  "data": {
    "request_id": "6319a18f-6e51-4e0f-927b-44e1c7fa0eb1",
    "endpoint_number": "02191010001",
    "musiconhold": "musiconhold-default-1",
    "status": "accepted"
  },
  "billing": {
    "charged": 120,
    "unit_price": 120,
    "remaining_credit": 9880
  }
}
استعلام صوت‌های انتظار سرویس https://voipano.com/api/v1/webservice/music-on-holds

نمونه درخواست JSON:

GET /api/v1/webservice/music-on-holds
Authorization: Bearer YOUR_TOKEN

نمونه پاسخ:

{
  "ok": true,
  "data": {
    "endpoint_number": "2191305383",
    "items": [
      {
        "name": "musiconhold-2191305383-1",
        "musiconhold": "musiconhold-2191305383-1",
        "description": "موسیقی انتظار فروش",
        "mode": "files",
        "is_public": false
      }
    ],
    "total": 1
  },
  "billing": {
    "charged": 0,
    "unit_price": 0
  }
}
دریافت گزارش تماس https://voipano.com/api/v1/webservice/call-reports

نمونه درخواست JSON:

GET /api/v1/webservice/call-reports?has_recording=1&limit=10&page=1
Authorization: Bearer YOUR_TOKEN

نمونه پاسخ:

{
  "ok": true,
  "data": {
    "endpoint_number": "02191010001",
    "items": [
      {
        "id": "67bc8ea2f8f8a7d1287995f1",
        "call_details_record_id": "67bc8ea2f8f8a7d1287995f1",
        "call_source": "09123***789",
        "call_destination": "09129***543",
        "has_recording": true,
        "recording_url": "https://example.com/api/v1/webservice/call-recordings/67bc8ea2f8f8a7d1287995f1?call_details_record_id=67bc8ea2f8f8a7d1287995f1"
      }
    ],
    "pagination": {
      "page": 1,
      "per_page": 10,
      "total": 32,
      "last_page": 4
    }
  },
  "billing": {
    "charged": 0,
    "unit_price": 0
  }
}
دریافت لیست سرویس‌ها https://voipano.com/api/v1/webservice/services

نمونه درخواست JSON:

GET /api/v1/webservice/services
Authorization: Bearer YOUR_TOKEN

نمونه پاسخ:

{
  "ok": true,
  "data": {
    "items": [
      {
        "subscription_id": 12,
        "status": "active",
        "remaining_days": 26,
        "package": {
          "id": 2,
          "name": "پلن پیوند",
          "slug": "peyvand"
        },
        "phone_number": "002191010001"
      }
    ],
    "total": 1
  },
  "billing": {
    "charged": 0,
    "unit_price": 0
  }
}
دریافت لیست صندوق صوتی https://voipano.com/api/v1/webservice/voicemail-inboxes

نمونه درخواست JSON:

GET /api/v1/webservice/voicemail-inboxes?context=voicemail-02191010001&limit=20
Authorization: Bearer YOUR_TOKEN

نمونه پاسخ:

{
  "ok": true,
  "data": {
    "items": [
      {
        "id": "67bc8f2df8f8a7d12879960f",
        "mailbox": "1001",
        "context": "voicemail-02191010001",
        "fullname": "Ali"
      }
    ],
    "allowed_contexts": [
      "voicemail-02191010001",
      "voicemail-user-15"
    ]
  },
  "billing": {
    "charged": 0,
    "unit_price": 0
  }
}
دریافت صوت یک مکالمه https://voipano.com/api/v1/webservice/call-recordings/{cdrId}

نمونه درخواست JSON:

GET /api/v1/webservice/call-recordings/67bc8ea2f8f8a7d1287995f1?call_details_record_id=67bc8ea2f8f8a7d1287995f1
Authorization: Bearer YOUR_TOKEN

نمونه پاسخ:

HTTP/1.1 200 OK
Content-Type: audio/wav
Content-Disposition: attachment; filename="recording-67bc8ea2f8f8a7d1287995f1.wav"
X-Billing-Charged: 0
دریافت فایل صندوق صوتی https://voipano.com/api/v1/webservice/voicemail-recordings/{uniqueId}

نمونه درخواست JSON:

GET /api/v1/webservice/voicemail-recordings/1739558127.155?context=voicemail-02191010001&mailbox=1001
Authorization: Bearer YOUR_TOKEN

نمونه پاسخ:

HTTP/1.1 200 OK
Content-Type: audio/wav
Content-Disposition: attachment; filename="voicemail-1739558127.155.wav"
X-Billing-Charged: 0
لیست و جستجوی مخاطبین https://voipano.com/api/v1/webservice/contacts

نمونه درخواست JSON:

GET /api/v1/webservice/contacts?search=0912&page=1&per_page=20
Authorization: Bearer YOUR_TOKEN

نمونه پاسخ:

{
  "ok": true,
  "data": { "items": [], "pagination": { "page": 1, "per_page": 20 } },
  "billing": { "charged": 0 }
}
مشاهده مخاطب https://voipano.com/api/v1/webservice/contacts/{contactId}

نمونه درخواست JSON:

GET /api/v1/webservice/contacts/CONTACT_ID
Authorization: Bearer YOUR_TOKEN

نمونه پاسخ:

{ "ok": true, "data": { "contact": { "id": "..." } }, "billing": { "charged": 0 } }
ایجاد مخاطب https://voipano.com/api/v1/webservice/contacts

نمونه درخواست JSON:

POST /api/v1/webservice/contacts
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json

{
  "first_name": "علی",
  "primary_number": "09120000000"
}

نمونه پاسخ:

{ "ok": true, "data": { "contact": { "id": "..." } }, "billing": { "charged": 0 } }
ویرایش مخاطب https://voipano.com/api/v1/webservice/contacts/{contactId}

نمونه درخواست JSON:

PATCH /api/v1/webservice/contacts/CONTACT_ID
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json

{ "organization": "شرکت ویپانو" }

نمونه پاسخ:

{ "ok": true, "data": { "contact": { "id": "..." } }, "billing": { "charged": 0 } }
حذف مخاطب https://voipano.com/api/v1/webservice/contacts/{contactId}

نمونه درخواست JSON:

DELETE /api/v1/webservice/contacts/CONTACT_ID
Authorization: Bearer YOUR_TOKEN

نمونه پاسخ:

{ "ok": true, "data": { "id": "...", "deleted": true }, "billing": { "charged": 0 } }
درون‌ریزی گروهی مخاطبین https://voipano.com/api/v1/webservice/contacts/bulk-import

نمونه درخواست JSON:

POST /api/v1/webservice/contacts/bulk-import
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json

{ "contacts": [{ "first_name": "علی", "primary_number": "09120000000" }], "update_existing": true }

نمونه پاسخ:

{ "ok": true, "data": { "submitted": 1, "result": {} }, "billing": { "charged": 0 } }
لیست گروه‌های مخاطب https://voipano.com/api/v1/webservice/contact-groups

نمونه درخواست JSON:

GET /api/v1/webservice/contact-groups
Authorization: Bearer YOUR_TOKEN

نمونه پاسخ:

{ "ok": true, "data": { "items": [] }, "billing": { "charged": 0 } }
ایجاد گروه مخاطب https://voipano.com/api/v1/webservice/contact-groups

نمونه درخواست JSON:

POST /api/v1/webservice/contact-groups
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json

{ "name": "مشتریان" }

نمونه پاسخ:

{ "ok": true, "data": { "group": { "id": "..." } }, "billing": { "charged": 0 } }
حذف گروه مخاطب https://voipano.com/api/v1/webservice/contact-groups/{groupId}

نمونه درخواست JSON:

DELETE /api/v1/webservice/contact-groups/GROUP_ID
Authorization: Bearer YOUR_TOKEN

نمونه پاسخ:

{ "ok": true, "data": { "id": "...", "deleted": true }, "billing": { "charged": 0 } }
نمونه PHP (تماس امن) https://voipano.com/api/v1/webservice/secure-call
$client = new \GuzzleHttp\Client();
$headers = [
    'Authorization' => 'Bearer YOUR_TOKEN',
    'Content-Type' => 'application/json',
];

$body = [
    'call_source' => '0912***6789',
    'call_destination' => '0912***9876',
    'timeout' => 30,
    'limit' => 30,
    'musiconhold' => 'musiconhold-default-1',
    'callback_url' => 'https://example.com/webhook',
    'retry_count' => 0,
    'retry_delay_seconds' => 30,
];

$response = $client->post('https://voipano.com/api/v1/webservice/secure-call', [
    'headers' => $headers,
    'json' => $body,
]);

echo $response->getBody();

کدهای خطا

Status توضیح
401 توکن معتبر نیست یا ارسال نشده است.
402 اعتبار کیف پول کافی نیست.
403 دسترسی وب‌سرویس کاربر غیرفعال است، IP مجاز نیست، endpoint فعال نشده یا musiconhold در سرویس انتخابی یافت نشده است.
422 ورودی نامعتبر یا خطای اعتبارسنجی payload.
500 خطای داخلی در ثبت مالی یا پردازش درخواست.
502 ارتباط با مرکز تماس برقرار نشده یا پاسخ معتبر دریافت نشده است.
503 اعتبارسنجی امن منبعی مانند موسیقی انتظار موقتاً در دسترس نیست.

نمونه پاسخ Rate Limit (HTTP 429):

{
  "message": "Too Many Attempts.",
  "exception": "Illuminate\\Http\\Exceptions\\ThrottleRequestsException"
}

هدرهای پاسخ دانلود فایل

برای endpointهای دانلود ضبط مکالمه و صندوق صوتی، هدرهای زیر برمی‌گردد.

Header توضیح
Content-Type نوع فایل صوتی (معمولاً `audio/wav`)
Content-Disposition نام فایل دانلودی
X-Request-Id شناسه یکتای درخواست برای رهگیری
X-Billing-Charged میزان کسر هزینه این درخواست
X-Billing-Unit-Price تعرفه endpoint در زمان درخواست
X-Billing-Remaining-Credit اعتبار باقی‌مانده کیف پول بعد از ثبت درخواست

ارسال اطلاعات هر تماس

وقتی کاربر endpoint دریافت CDR تعریف کند، ویپانو اطلاعات پایان تماس را به همان URL ارسال می‌کند.

فعال‌سازی این قابلیت فقط از پنل انجام می‌شود: پنل کاربری > خدمات وب‌سرویس > نمای کلی > ارسال اطلاعات هر تماس

فراخوانی‌ها و نتیجه ارسال (request/response) در تب رخدادها ثبت می‌شود.

هدرهای ارسال‌شده از ویپانو به endpoint کاربر:

X-Voipano-Delivery-Id: <uuid>
X-Voipano-Event: <event_key>

payload شامل فیلدهای `delivery_id`, `event` (معمولا `call_ended` در CDR), `call_details_record_id`, `endpoint_number`, `call_type`, `call_source`, `call_destination`, `caller_name`, `callee_name`, `timestamp` است.

ارتباط در واتس‌اپ