REST · WebSocket · gRPC

API
referentie.

312 eindpunten, volledige OpenAPI-specificatie, idempotentie bij elke mutatie en een openbaar uptime-contract. Geen zwarte dozen.

Basis-URL
api.rozper.com
Versie
v2026.05
Tarieflimiet
1000 rps
NA/v2/oproepen
"color:#22D3EE">curl "color:#22D3EE">-X "kleur: #34D399; lettertypegewicht: 600">POST https://api.rozper.com/v2/calls\
  "kleur:#22D3EE">-H "Machtiging: Drager $ROZPER_API_KEY" \
  "kleur:#22D3EE">-H "Inhoudstype: applicatie/json" \
  "kleur:#22D3EE">-d '{
    "naar":   "+14155551234",
    "van": "+12025550100",
    "url":  "https://uw.app/voice/antwoord"
  }'
201Reactie · 84 ms
{
  "id": "call_01HXY7ZQ9V3J3X8K5N",
  "status": "queued",
  "to":     "+14155551234",
  "from":   "+12025550100",
  "created_at": "2026-05-12T14:23:01Z"
}
§01 · Authenticatie

Tokens aan toonder.
Bereikt. Draaibaar.

Elke aanvraag heeft een projectsleutel als Bearer-token. Sleutels zijn scoped (lezen, schrijven, factureren), roteerbaar zonder downtime en kunnen via IP worden vastgemaakt vanaf het dashboard.

  • Sleutels per omgeving (test/live)
  • OAuth 2.0-clientreferenties worden ondersteund
  • Wederzijdse TLS beschikbaar op Enterprise
Autorisatiekop
krulKnooppuntPythonGaan
# .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 · Referentie

Verken elk eindpunt.

oproepenMaak een oproep

Maak een oproep

Breng een uitgaande PSTN-oproep tot stand. Keert onmiddellijk terug met een oproepobject in de wachtrij: luister op webhooks naar statuswijzigingen.

NA/v2/oproepen
Parameters
tosnaarvereist

E.164 bestemmingsnummer.

fromsnaarvereist

Geverifieerd of gehuurd Rozper-nummer.

urlsnaar

HTTPS-eindpunt dat gesproken instructies retourneert wanneer de oproep verbinding maakt.

recordBooleaans

Neem beide benen op in uw opslag. Standaard onwaar.

timeoutgeheel getal

Bel time-out in seconden. Standaard 60.

Verzoek · knooppunt● leven
const call = await rozper.calls.create({
  to:   "+14155551234",
  from: "+12025550100",
  url:  "https://your.app/voice/answer",
})
Reactie · 201 aangemaakt84 ms
{
  "id": "call_01HXY7ZQ9V3J3X8K5N",
  "object": "call",
  "created_at": "2026-05-12T14:23:01Z"
}
§03 · Fouten

Voorspelbare, machinaal leesbare fouten.

Elke 4xx en 5xx retourneert dezelfde vorm: een stal code, een voor mensen leesbaar bericht en een verzoek-ID die u ter ondersteuning kunt plakken.

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

Onjuist opgemaakte verzoektekst of ontbrekend verplicht veld.

401
unauthorized

Ontbrekende, verlopen of ingetrokken API-sleutel.

403
forbidden

Key mist de ruimte die nodig is voor dit hulpmiddel.

404
not_found

De resource-ID bestaat niet voor dit account.

409
conflict

Idempotentiesleutel botst met een andere lading.

422
invalid_param

Een parameter is niet gevalideerd. Inspecteer param_errors[].

429
rate_limited

Stel een back-up uit met behulp van de Retry-After-header.

500
server_error

Wij werden op de hoogte gebracht. Probeer opnieuw idempotente oproepen.

§04 · Webhooks

Ondertekend, opnieuw geprobeerd, beveiligd tegen opnieuw afspelen.

Elke gebeurtenis wordt geleverd met een HMAC-handtekening, een unieke gebeurtenis-ID en een UTC-tijdstempel. We proberen het opnieuw met exponentieel uitstel gedurende maximaal 24 uur.

HMAC-SHA256-handtekening in Rozper-handtekening
Maximaal 8 nieuwe pogingen · 24-uurs venster
Verzend tegelijkertijd naar meerdere eindpunten
Een webhook verifiëren · Node✓ constante tijd vergelijken
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 })
})
Evenementencatalogus · 32 totaal
call.initiated

Uitgaand gesprek geaccepteerd door de provider.

call.ringing

Het verre einde rinkelt.

call.answered

Far-end beantwoord (of AMD heeft een mens gedetecteerd).

call.completed

Gesprek beëindigd. Inclusief duur, facturering en metadata van de leg.

recording.ready

Opname-item geüpload en ondertekende URL beschikbaar.

message.delivered

Ontvangstbewijs vervoerder (indien ondersteund).

agent.handoff

AI-agent escaleerde naar een menselijke wachtrij.

number.purchased

Nummerverwerving voltooid.

§05 · Wijzigingslog

Elke verandering, in gewoon Engels.

  1. 2026-05-10
    v2026.05
    • prestatieSpraakagenten ondersteunen nu toolbellen met streamingreacties.
    • prestatieNieuw /v2/numbers/port-eindpunt voor programmatische LNP-inzendingen.
  2. 2026-04-22
    v2026.04
    • reparerenIdempotency-cache respecteert nu correct 24 uur TTL bij POST/oproepen.
    • klusVerouderde v1-eindpunten verwijderd (aangekondigd 2025-11).
  3. 2026-03-31
    v2026.03
    • prestatieDe bètaversie van WebSocket-mediastreams is nu algemeen beschikbaar.
    • prestatieWhatsApp-sjabloonberichten toegevoegd onder /v2/messages.
API-referentie · Rozper REST- en WebSocket-documenten | Rozper Vandaag