เอพีไอ
อ้างอิง.
จุดสิ้นสุด 312, ข้อมูลจำเพาะของ OpenAPI ที่สมบูรณ์, ความไม่แน่นอนในการเปลี่ยนแปลงทุกครั้ง และสัญญาสถานะการออนไลน์สาธารณะ ไม่มีกล่องดำ.
"color:#22D3EE">curl "color:#22D3EE">-X "สี:#34D399;แบบอักษร-น้ำหนัก:600">โพสต์ https://api.rozper.com/v2/calls \
"สี:#22D3EE">-ฮ “การอนุญาต: ผู้ถือ $ROZPER_API_KEY" \
"สี:#22D3EE">-ฮ "ประเภทเนื้อหา: application/json" \
"สี:#22D3EE">-d '{
"ถึง": "+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 รวมมีอยู่ใน Enterprise
# .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 ขาออก กลับมาทันทีพร้อมกับออบเจ็กต์การโทรที่อยู่ในคิว - ฟัง webhooks สำหรับการเปลี่ยนแปลงสถานะ
toเชือกที่จำเป็นจ.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คีย์ Idempotency ขัดแย้งกับเพย์โหลดอื่น
invalid_paramพารามิเตอร์ไม่ผ่านการตรวจสอบ ตรวจสอบ param_errors[]
rate_limitedBackoff โดยใช้ส่วนหัว Retry-After
server_errorเราได้รับแจ้ง ลองเรียก idempotent อีกครั้ง
ลงนาม ลองใหม่ ป้องกันการเล่นซ้ำ
ทุกเหตุการณ์จะถูกส่งพร้อมกับลายเซ็น HMAC, รหัสเหตุการณ์ที่ไม่ซ้ำกัน และการประทับเวลา UTC เราลองอีกครั้งโดยใช้ Exponential Backoff สูงสุด 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เจ้าหน้าที่ AI เลื่อนระดับเป็นคิวมนุษย์
number.purchasedการได้มาซึ่งหมายเลขเสร็จสมบูรณ์
ทุกการเปลี่ยนแปลงเป็นภาษาอังกฤษธรรมดา
- 2026-05-10เวอร์ชัน 2026.05
- ความสำเร็จขณะนี้ตัวแทนเสียงรองรับการเรียกเครื่องมือพร้อมการตอบกลับแบบสตรีม
- ความสำเร็จใหม่ /v2/numbers/port endpoint สำหรับการส่ง LNP แบบเป็นโปรแกรม
- 2026-04-22เวอร์ชัน 2026.04
- แก้ไขขณะนี้แคช Idempotency ยอมรับ TTL 24 ชั่วโมงบน POST / การโทรอย่างถูกต้องแล้ว
- งานบ้านนำปลายทาง v1 ที่เลิกใช้งานแล้วออก (ประกาศปี 2025-11)
- 2026-03-31เวอร์ชัน 2026.03
- ความสำเร็จWebSocket media-streams รุ่นเบต้าพร้อมให้ใช้งานทั่วไปแล้ว
- ความสำเร็จข้อความเทมเพลต WhatsApp ถูกเพิ่มภายใต้ /v2/messages