Install
Quickstart
Verifying webhooks
Rate-limit handling
The client auto-retries 429s up to 3 times, respectingRetry-After:
Error handling
Types
Every request + response is typed. Hover in VS Code for docs on each field.OAuth helpers
For partner apps that act on behalf of individual Yotel users, the SDK ships PKCE-ready OAuth helpers — works in browser + Node.JWTBearerFlow is Node-only (it signs with node:crypto). Browser
bundles that only use the authorization-code flow won’t include any
Node-specific imports.
See OAuth 2.0 for the full flow reference.
Recordings
Access call recordings — signed URLs, raw bytes, or streamed.getSignedUrl requires calls:read scope. fetchBytes, download,
and streamTo require the separate recordings:download scope.Voice agents
Full CRUD for voice agent routing aliases.AI sessions
Control active voice AI sessions with typed verb methods.transfer, hangup, log, mute, unmute, hold, unhold,
sendDtmf, playAudio, setDisposition, recordingPause,
recordingResume, getCallState, conferenceStart,
conferenceAdd, conferenceRemove, conferenceLeave,
requestSupervisor, whisper, barge, monitorStart,
monitorStop, setLeadField, setLeadStatus,
scheduleCallback.
reportOutcome is not one of them — it is the post-call report, so send it
after the call has ended. It resolves to an OutcomeReportResponse. The
per-call callback token stays valid for 180 seconds after the audio WebSocket
closes, for this endpoint only, and the endpoint accepts a session that has
already ended, so it never returns a 409. Last write wins, which makes retries
safe: unlike the control verbs, this call deliberately sends no
Idempotency-Key header. endInitiatedBy and summary are left out of the
request body when they are null or undefined.
See AI sessions and the
Control API reference for verb parameters, and
Report a post-call outcome
for the full body rules.

