REST · WebSocket · gRPC

API'si
referans.

312 uç nokta, eksiksiz OpenAPI spesifikasyonu, her mutasyonda bağımsız çalışma ve genel çalışma süresi sözleşmesi. Kara kutu yok.

Temel URL
api.rozper.com
Sürüm
v2026.05
Oran sınırı
1000 rpm
POSTALAMAK/v2/çağrılar
"color:#22D3EE">curl "color:#22D3EE">-X "renk:#34D399;yazı tipi ağırlığı:600">YAYINLA https://api.rozper.com/v2/calls\
  "renk:#22D3EE">-H "Yetki: Taşıyıcı $ROZPER_API_KEY" \
  "renk:#22D3EE">-H "İçerik Türü: uygulama/json" \
  "renk:#22D3EE">-d '{
    "ile":   "+14155551234",
    "itibaren": "+12025550100",
    "url":  "https://your.app/voice/answer"
  }'
201Yanıt · 84 ms
{
  "id": "call_01HXY7ZQ9V3J3X8K5N",
  "status": "queued",
  "to":     "+14155551234",
  "from":   "+12025550100",
  "created_at": "2026-05-12T14:23:01Z"
}
§01 · Kimlik Doğrulaması

Taşıyıcı jetonları.
Kapsamlı. Döndürülebilir.

Her istek, Taşıyıcı belirteci olarak bir proje anahtarı taşır. Anahtarlar kapsamlıdır (okuma, yazma, faturalandırma), kesinti olmadan döndürülebilir ve kontrol panelinden IP'ye sabitlenebilir.

  • Ortam başına anahtarlar (test / canlı)
  • OAuth 2.0 istemci kimlik bilgileri desteklenir
  • Enterprise'da karşılıklı TLS mevcut
Yetkilendirme başlığı
kıvrılmaDüğümPythonGitmek
# .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 }
}
§02 · Referans

Her uç noktayı keşfedin.

çağrılarArama oluştur

Arama oluştur

Giden bir PSTN araması başlatın. Sıraya alınmış bir çağrı nesnesiyle anında geri döner; durum değişikliklerini web kancalarında dinleyin.

POSTALAMAK/v2/çağrılar
Parametreler
tosicimgerekli

E.164 hedef numarası.

fromsicimgerekli

Doğrulanmış veya kiralanmış Rozper numarası.

urlsicim

Çağrı bağlandığında sesli talimatları döndüren HTTPS uç noktası.

recordboolean

Her iki bacağı da deponuza kaydedin. Varsayılan yanlış.

timeouttamsayı

Saniye cinsinden çalma zaman aşımı. Varsayılan 60.

Rica etmek · düğüm● canlı
const call = await rozper.calls.create({
  to:   "+14155551234",
  from: "+12025550100",
  url:  "https://your.app/voice/answer",
})
Yanıt · 201 oluşturuldu84 ms
{
  "id": "call_01HXY7ZQ9V3J3X8K5N",
  "object": "call",
  "created_at": "2026-05-12T14:23:01Z"
}
§03 · Hatalar

Tahmin edilebilir, makine tarafından okunabilir hatalar.

Her 4xx ve 5xx aynı şekli döndürür: kararlı code, insanlar tarafından okunabilen bir mesaj ve desteğe yapıştırabileceğiniz bir istek kimliği.

Hata zarfı
{
  "error": {
    "code": "invalid_param",
    "message": "to: must be E.164",
    "request_id": "req_01HXY7…",
    "param_errors": [
      { "param": "to", "reason": "format" }
    ]
  }
}
400
bad_request

Hatalı biçimlendirilmiş istek gövdesi veya gerekli alan eksik.

401
unauthorized

Eksik, süresi dolmuş veya iptal edilmiş API anahtarı.

403
forbidden

Anahtar bu kaynak için gereken kapsamdan yoksun.

404
not_found

Bu hesap için kaynak kimliği mevcut değil.

409
conflict

Idempotency anahtarı farklı bir yük ile çarpışıyor.

422
invalid_param

Bir parametre doğrulamada başarısız oldu. param_errors[]'ı inceleyin.

429
rate_limited

Retry-After başlığını kullanarak geri çekilme.

500
server_error

Bize haber verildi. İdempotent çağrıları yeniden deneyin.

§04 · Web Kancaları

İmzalandı, yeniden denendi, tekrar korumalı.

Her etkinlik bir HMAC imzası, benzersiz bir etkinlik kimliği ve bir UTC zaman damgasıyla sunulur. 24 saate kadar üstel geri çekilmeyle yeniden deniyoruz.

Rozper-Signature'da HMAC-SHA256 imzası
En fazla 8 yeniden deneme · 24 saatlik aralık
Aynı anda birden fazla uç noktaya gönderin
Web kancasını doğrulama · Düğüm✓ sabit zamanlı karşılaştırma
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 })
})
Etkinlik kataloğu · Toplam 32
call.initiated

Giden çağrı operatör tarafından kabul edildi.

call.ringing

Uzak uç çalıyor.

call.answered

Uzak uç yanıt verdi (veya AMD insanı algıladı).

call.completed

Arama sona erdi. Süre, faturalandırma ve bacak meta verilerini içerir.

recording.ready

Kayıt varlığı yüklendi ve imzalanmış URL mevcut.

message.delivered

Taşıyıcı teslimat makbuzu (desteklendiği yerlerde).

agent.handoff

Yapay zeka ajanı insan kuyruğuna geçti.

number.purchased

Numara alımı tamamlandı.

§05 · Değişiklik Günlüğü

Her değişiklik sade İngilizce olarak.

  1. 2026-05-10
    v2026.05
    • ustalıkSes aracıları artık akışlı yanıtlarla araç çağrısını destekliyor.
    • ustalıkProgramlı LNP gönderimleri için yeni /v2/numbers/port uç noktası.
  2. 2026-04-22
    v2026.04
    • düzeltmekIdempotency önbelleği artık POST/çağrılarda 24 saatlik TTL'yi doğru şekilde onurlandırıyor.
    • zevksiz işKullanımdan kaldırılan v1 uç noktaları kaldırıldı (2025-11'de duyuruldu).
  3. 2026-03-31
    v2026.03
    • ustalıkWebSocket medya akışları beta artık genel kullanıma sunuldu.
    • ustalık/v2/messages altına eklenen WhatsApp şablon mesajları.
API Referansı · Rozper REST ve WebSocket Belgeleri | Bugün Rozper