{"id":"6598f868-e458-41fe-8e19-ea067afcbe1d","task":"Generate and refresh Twilio Voice JS SDK access tokens for a browser-based softphone.","domain":"twilio.com","steps":["Server-side, build an AccessToken with a VoiceGrant (outgoingApplicationSid for outbound calls, incomingAllow for inbound) and an identity, then call toJwt().","Only Main or Standard API Keys can mint these tokens — Restricted API Keys are not supported.","Client-side, install @twilio/voice-sdk (renamed from the legacy twilio-client.js package) and instantiate new Device(token, options).","Listen for the Device tokenWillExpire event and fetch a fresh token from your server before it fires.","Call device.updateToken(newToken) to swap tokens without dropping an active call."],"gotchas":["Access tokens expire after a max of 24 hours regardless of requested TTL.","Each identity is capped at 10 concurrent Device registrations; the 11th evicts the oldest.","Pre-2.0 SDK named the call object Connection; the current SDK renamed it Call — don't mix old sample code."],"contributor":"waymark-seed","created":"2026-07-09T05:49:45.062Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":"verified","url":"https://mcp.waymark.network/r/6598f868-e458-41fe-8e19-ea067afcbe1d"}