واجهة برمجة التطبيقات
مرجع.
312 نقطة نهاية، ومواصفات OpenAPI كاملة، وعدم القدرة على كل طفرة، وعقد تشغيل عام. لا صناديق سوداء.
"color:#22D3EE">curl "color:#22D3EE">-X "اللون:#34D399;وزن الخط:600"> مشاركة https://api.rozper.com/v2/calls \
"اللون:#22D3EE">-ح «التفويض: حامل $ROZPER_API_KEY" \
"اللون:#22D3EE">-ح "نوع المحتوى: تطبيق/json" \
"اللون:#22D3EE">-د '{
"ل": "+14155551234",
"من": "+12025550100",
"عنوان URL": "https://your.app/voice/answer"
}'{
"id": "call_01HXY7ZQ9V3J3X8K5N",
"status": "queued",
"to": "+14155551234",
"from": "+12025550100",
"created_at": "2026-05-12T14:23:01Z"
}الرموز الحاملة.
نطاق. للتدوير.
يحمل كل طلب مفتاح مشروع كرمز مميز لحامله. يتم تحديد نطاق المفاتيح (القراءة، والكتابة، والفوترة)، وقابلة للتدوير دون توقف، ويمكن تثبيتها عبر IP من لوحة المعلومات.
- مفاتيح لكل بيئة (اختبار/مباشر)
- دعم بيانات اعتماد عميل OAuth 2.0
- TLS المتبادل متاح على المؤسسة
# .env → never commit me
ROZPER_API_KEY=sk_live_8FzqQ...XW7p
# request
curl https://api.rozper.com/v2/account \
-H "Authorization: Bearer $ROZPER_API_KEY"
# 200 OK
{
"id": "acct_01HXY7ZQ9V3J3X8K5N",
"scopes": ["calls.write", "messages.write", "numbers.read"],
"rate_limit": { "limit": 1000, "remaining": 998, "reset": 1715520000 }
}استكشف كل نقطة نهاية.
قم بإنشاء مكالمة
إنشاء مكالمة PSTN الصادرة. يعود فورًا مع كائن استدعاء في قائمة الانتظار - استمع إلى خطافات الويب لتغييرات الحالة.
toخيطمطلوبE.164 رقم الوجهة.
fromخيطمطلوبرقم Rozper الذي تم التحقق منه أو استئجاره.
urlخيطنقطة نهاية HTTPS التي تقوم بإرجاع التعليمات الصوتية عند اتصال المكالمة.
recordمنطقيةقم بتسجيل كلا الساقين في مساحة التخزين الخاصة بك. الافتراضي كاذبة.
timeoutعدد صحيحمهلة الرنين بالثواني. الافتراضي 60.
const call = await rozper.calls.create({
to: "+14155551234",
from: "+12025550100",
url: "https://your.app/voice/answer",
}){
"id": "call_01HXY7ZQ9V3J3X8K5N",
"object": "call",
"created_at": "2026-05-12T14:23:01Z"
}أخطاء يمكن التنبؤ بها ويمكن قراءتها آليًا.
كل 4xx و5xx يُرجعان نفس الشكل: إسطبل codeورسالة يمكن قراءتها بواسطة الإنسان ومعرف طلب يمكنك لصقه للدعم.
{
"error": {
"code": "invalid_param",
"message": "to: must be E.164",
"request_id": "req_01HXY7…",
"param_errors": [
{ "param": "to", "reason": "format" }
]
}
}bad_requestنص الطلب غير صحيح أو الحقل المطلوب مفقود.
unauthorizedمفتاح API مفقود أو منتهي الصلاحية أو تم إبطاله.
forbiddenيفتقر المفتاح إلى النطاق المطلوب لهذا المورد.
not_foundمعرف المورد غير موجود لهذا الحساب.
conflictيصطدم مفتاح العجز بحمولة مختلفة.
invalid_paramفشلت المعلمة في التحقق من الصحة. فحص param_errors[].
rate_limitedالتراجع باستخدام رأس إعادة المحاولة بعد.
server_errorلقد تم إخطارنا. أعد محاولة المكالمات العاجزة.
تم التوقيع وإعادة المحاولة ومحمية من إعادة التشغيل.
يتم تسليم كل حدث بتوقيع HMAC، ومعرف حدث فريد، وطابع زمني UTC. نعيد المحاولة مع التراجع الأسي لمدة تصل إلى 24 ساعة.
import { verify } from "@rozper/sdk/webhooks"
app.post("/webhooks/rozper", (req, res) => {
const ok = verify({
payload: req.rawBody,
signature: req.header("Rozper-Signature"),
secret: process.env.ROZPER_WEBHOOK_SECRET,
})
if (!ok) return res.status(401).end()
const event = JSON.parse(req.rawBody)
switch (event.type) {
case "call.completed": /* … */
case "recording.ready": /* … */
}
res.json({ received: true })
})call.initiatedالمكالمة الصادرة مقبولة من قبل الناقل.
call.ringingالنهاية البعيدة ترن.
call.answeredأجاب الطرف البعيد (أو اكتشفت AMD الإنسان).
call.completedانتهت المكالمة. يشمل المدة، والفواتير، والبيانات الوصفية للساق.
recording.readyتسجيل الأصول التي تم تحميلها وعنوان URL الموقع متاح.
message.deliveredإيصال تسليم شركة النقل (حيثما يكون مدعومًا).
agent.handoffتصاعد وكيل الذكاء الاصطناعي إلى قائمة انتظار بشرية.
number.purchasedتم الانتهاء من الحصول على الرقم.
كل تغيير، باللغة الإنجليزية البسيطة.
- 2026-05-10v2026.05
- الفذيدعم وكلاء الصوت الآن أداة الاتصال مع الاستجابات المتدفقة.
- الفذنقطة نهاية /v2/numbers/port جديدة لعمليات إرسال LNP الآلية.
- 2026-04-22v2026.04
- يصلحتعمل ذاكرة التخزين المؤقت Idempotency الآن على تكريم TTL لمدة 24 ساعة على POST/calls بشكل صحيح.
- عمل روتينيتمت إزالة نقاط النهاية v1 المهملة (تم الإعلان عنها في 2025-2011).
- 2026-03-31v2026.03
- الفذأصبح الإصدار التجريبي من تدفقات الوسائط WebSocket متاحًا الآن بشكل عام.
- الفذتمت إضافة رسائل قالب WhatsApp ضمن /v2/messages.