REST · WebSocket · gRPC

API
hänvisning.

312 endpoints, komplett OpenAPI-specifikation, idempotens på varje mutation och ett offentligt upptidskontrakt. Inga svarta lådor.

Bas-URL
api.rozper.com
Version
v2026.05
Prisgräns
1000 rps
POSTA/v2/samtal
"color:#22D3EE">curl "color:#22D3EE">-X "color:#34D399;font-weight:600">POSTA https://api.rozper.com/v2/calls \
  "färg:#22D3EE">-H "Auktorisation: Bärare $ROZPER_API_KEY" \
  "färg:#22D3EE">-H "Content-Type: application/json" \
  "färg:#22D3EE">-d '{
    "till":   "+14155551234",
    "från": "+12025550100",
    "url":  "https://your.app/voice/answer"
  }'
201Svar · 84 ms
{
  "id": "call_01HXY7ZQ9V3J3X8K5N",
  "status": "queued",
  "to":     "+14155551234",
  "from":   "+12025550100",
  "created_at": "2026-05-12T14:23:01Z"
}
§01 · Autentisering

Bärarpoletter.
Omfattning. Roterbar.

Varje begäran har en projektnyckel som en bärartoken. Nycklar är omfångade (läs, skriv, fakturering), roterbara utan stilleståndstid och kan IP-fästas från instrumentpanelen.

  • Nycklar per miljö (test / live)
  • OAuth 2.0-klientuppgifter stöds
  • Ömsesidig TLS tillgängligt på Enterprise
Auktoriseringshuvud
ringlaNodPytonorm
# .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 · Referens

Utforska varje slutpunkt.

samtalSkapa ett samtal

Skapa ett samtal

Skapa ett utgående PSTN-samtal. Återkommer omedelbart med ett köat samtalsobjekt — lyssna på webhooks efter tillståndsändringar.

POSTA/v2/samtal
Parametrar
tosträngnödvändig

E.164 destinationsnummer.

fromsträngnödvändig

Verifierat eller hyrt Rozper-nummer.

urlsträng

HTTPS-slutpunkt som returnerar röstinstruktioner när samtalet ansluter.

recordbooleskt

Spela in båda benen till din förvaring. Default false.

timeoutheltal

Ring timeout på sekunder. Standard 60.

Begäran · nod● live
const call = await rozper.calls.create({
  to:   "+14155551234",
  from: "+12025550100",
  url:  "https://your.app/voice/answer",
})
Svar · 201 skapade84 ms
{
  "id": "call_01HXY7ZQ9V3J3X8K5N",
  "object": "call",
  "created_at": "2026-05-12T14:23:01Z"
}
§03 · Fel

Förutsägbara, maskinläsbara fel.

Varje 4xx och 5xx returnerar samma form: en stabil code, ett meddelande som kan läsas av människor och ett förfrågnings-ID som du kan klistra in för att stödja.

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

Felaktig text i begäran eller saknat obligatoriskt fält.

401
unauthorized

Saknade, utgångna eller återkallade API-nyckel.

403
forbidden

Key saknar det utrymme som krävs för denna resurs.

404
not_found

Resurs-id:t finns inte för det här kontot.

409
conflict

Idempotensnyckel kolliderar med en annan nyttolast.

422
invalid_param

En parameter misslyckades valideringen. Inspektera param_errors[].

429
rate_limited

Backoff med hjälp av Retry-After-huvudet.

500
server_error

Vi blev underrättade. Försök idempotenta samtal igen.

§04 · Webhooks

Signerad, återförsökt, uppspelningsskyddad.

Varje event levereras med en HMAC-signatur, ett unikt event-id och en UTC-tidsstämpel. Vi försöker igen med exponentiell backoff i upp till 24 timmar.

HMAC-SHA256-signatur i Rozper-Signature
Upp till 8 försök · 24 timmars fönster
Skicka till flera slutpunkter samtidigt
Verifiera en webhook · Nod✓ konstant-tidsjämförelse
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 })
})
Evenemangskatalog · 32 totalt
call.initiated

Utgående samtal accepteras av operatören.

call.ringing

Längre änden ringer.

call.answered

Far-end svarade (eller AMD upptäckt människa).

call.completed

Samtalet avslutades. Inkluderar varaktighet, fakturering, benmetadata.

recording.ready

Uppladdad och signerad webbadress för inspelningstillgång tillgänglig.

message.delivered

Leveranskvittot från operatören (där stöds).

agent.handoff

AI-agent eskalerade till en mänsklig kö.

number.purchased

Nummerförvärvet slutfört.

§05 · Ändringslogg

Varje förändring, på vanlig engelska.

  1. 2026-05-10
    v2026.05
    • bedriftRöstagenter stöder nu verktygssamtal med strömmande svar.
    • bedriftNy /v2/numbers/port slutpunkt för programmatiska LNP-inlämningar.
  2. 2026-04-22
    v2026.04
    • fixeraIdempotenscache hedrar nu korrekt 24h TTL på POST /samtal.
    • sysslaUtfasade v1-slutpunkter har tagits bort (annonserade 2025-11).
  3. 2026-03-31
    v2026.03
    • bedriftWebSocket media-streams beta är nu allmänt tillgänglig.
    • bedriftWhatsApp-mallmeddelanden läggs till under /v2/meddelanden.
API-referens · Rozper REST & WebSocket Docs | Rozper idag