REST · WebSocket · gRPC

API
참조.

312 엔드포인트, 완전한 OpenAPI 사양, 모든 변형에 대한 멱등성 및 공개 가동 시간 계약을 제공합니다. 블랙박스가 없습니다.

기본 URL
api.rozper.com
버전
v2026.05
비율 제한
1000rps
우편/v2/호출
"color:#22D3EE">curl "color:#22D3EE">-X "색상:#34D399;글꼴 두께:600">포스트 https://api.rozper.com/v2/calls \
  "색상:#22D3EE">-H "권한: 무기명 $ROZPER_API_KEY" \
  "색상:#22D3EE">-H "콘텐츠 유형: 애플리케이션/json" \
  "색상:#22D3EE">-d '{
    "에게":   "+14155551234",
    "에서": "+12025550100",
    "URL":  "https://your.app/voice/answer"
  }'
201응답 · 84ms
{
  "id": "call_01HXY7ZQ9V3J3X8K5N",
  "status": "queued",
  "to":     "+14155551234",
  "from":   "+12025550100",
  "created_at": "2026-05-12T14:23:01Z"
}
§01 · 인증

무기명 토큰.
범위가 지정되었습니다. 회전 가능.

모든 요청에는 프로젝트 키가 Bearer 토큰으로 전달됩니다. 키는 범위가 지정되고(읽기, 쓰기, 청구) 다운타임 없이 순환 가능하며 대시보드에서 IP 고정이 가능합니다.

  • 환경별 키(테스트/라이브)
  • OAuth 2.0 클라이언트 자격 증명 지원
  • Enterprise에서 상호 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 }
}
§02 · 참조

모든 엔드포인트를 탐색하세요.

전화통화 만들기

통화 만들기

아웃바운드 PSTN 통화를 시작합니다. 대기 중인 호출 객체를 사용하여 즉시 반환합니다. 웹후크에서 상태 변경을 수신합니다.

우편/v2/호출
매개변수
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",
})
응답 · 201개 생성됨84ms
{
  "id": "call_01HXY7ZQ9V3J3X8K5N",
  "object": "call",
  "created_at": "2026-05-12T14:23:01Z"
}
§03 · 오류

예측 가능하고 기계가 읽을 수 있는 오류.

4xx와 5xx마다 동일한 모양이 반환됩니다. code, 사람이 읽을 수 있는 메시지 및 지원에 붙여넣을 수 있는 요청 ID입니다.

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

요청 본문이 잘못되었거나 필수 필드가 누락되었습니다.

401
unauthorized

API 키가 누락, 만료 또는 취소되었습니다.

403
forbidden

키에 이 리소스에 필요한 범위가 부족합니다.

404
not_found

이 계정에 대한 리소스 ID가 존재하지 않습니다.

409
conflict

멱등성 키가 다른 페이로드와 충돌합니다.

422
invalid_param

매개변수 검증에 실패했습니다. param_errors[]를 검사합니다.

429
rate_limited

Retry-After 헤더를 사용하여 백오프합니다.

500
server_error

우리는 통보를 받았습니다. 멱등성 호출을 다시 시도합니다.

§04 · 웹훅

서명, 재시도, 재생 보호됨.

모든 이벤트는 HMAC 서명, 고유 이벤트 ID 및 UTC 타임스탬프와 함께 제공됩니다. 최대 24시간 동안 지수 백오프를 사용하여 재시도합니다.

Rozper-Signature의 HMAC-SHA256 서명
최대 8회 재시도 · 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 })
})
이벤트 카탈로그 · 총 32개
call.initiated

이동통신사에서 아웃바운드 전화를 수락했습니다.

call.ringing

맨 끝에서 벨이 울리고 있습니다.

call.answered

원단이 응답했습니다(또는 AMD가 사람을 감지했습니다).

call.completed

통화가 종료되었습니다. 기간, 청구, 구간 메타데이터가 포함됩니다.

recording.ready

녹화 자산 업로드 및 서명된 URL을 사용할 수 있습니다.

message.delivered

운송업체 배송 영수증(지원되는 경우)

agent.handoff

AI 에이전트가 인간 대기열로 에스컬레이션되었습니다.

number.purchased

번호획득이 완료되었습니다.

§05 · 변경 내역

모든 변경 사항은 일반 영어로 제공됩니다.

  1. 2026-05-10
    v2026.05
    • 위업이제 음성 에이전트는 스트리밍 응답을 통한 도구 호출을 지원합니다.
    • 위업프로그래밍 방식 LNP 제출을 위한 새로운 /v2/numbers/port 엔드포인트.
  2. 2026-04-22
    v2026.04
    • 고치다멱등성 캐시는 이제 POST /calls에서 24시간 TTL을 올바르게 적용합니다.
    • 하기 싫은 일지원 중단된 v1 엔드포인트가 제거되었습니다(2025-11년에 발표).
  3. 2026-03-31
    v2026.03
    • 위업WebSocket 미디어 스트림 베타가 이제 일반 공급됩니다.
    • 위업/v2/messages 아래에 WhatsApp 템플릿 메시지가 추가되었습니다.
API 참조 · Rozper REST & WebSocket Docs | 로즈퍼 투데이