Service-account file
| Field | Purpose |
|---|---|
tenant_id | The tenant the JWT is signed for. Becomes the JWT iss claim. |
private_key | RSA-2048 PKCS#8 private key in PEM. Used to sign tokens. |
private_key_id | Public-key id; embedded as kid so the gateway picks the right key. |
TELEQUICK_CREDENTIALS.
Signing
The SDK builds a JWT with these claims:| Claim | Value |
|---|---|
alg | RS256 |
kid | private_key_id from the service-account file |
iss | telequick-sdk |
sub | tenant_id |
exp | now + 1h |
Browser tokens
Browsers cannot read PEM keys safely. For the WebTransport SDK, your backend mints a short-lived (≤ 5 min) JWT and ships it to the page. Pass it to the client as the second positional argument withisBrowserToken = true:
Tenant isolation guarantees
The gateway enforces:- A tenant can only originate calls on trunks they own.
- A tenant can only terminate / barge calls whose
call_sidbelongs to them. StreamEventsonly delivers events for calls owned by the connection’s tenant.
Rotating keys
- Generate a new RSA-2048 keypair.
- Upload the public half via the TeleQuick admin console — note the
kidit returns. - Update the service-account JSON on every host that runs the SDK.
- Wait for in-flight tokens to expire (max 1h), then revoke the old
kid.