Browser phone
Place and receive WebRTC calls with short-lived, user-bound sessions and deployment-provided ICE configuration.
View SDK surface →Public API · v1.0.0
One international, tenant-isolated API for browser phones, server-side calls and signed events. Your application keeps its own user experience; Telephony Core carries the telephony.
One boundary, three integration modes
Place and receive WebRTC calls with short-lived, user-bound sessions and deployment-provided ICE configuration.
View SDK surface →Request calls through a durable, idempotent API and follow normalized state without knowing the media topology.
View call operations →Receive signed webhooks for call lifecycle events and connect telephony to your own workflows.
View webhook operations →Live contract
Authenticated example
Answer your phone to hear a short demonstration in Polish. The call ends automatically within 60 seconds and is not recorded. Use a number you are authorized to call.
The access token stays only in this page's memory and disappears when the page is refreshed.
Generated server integration kit
Each customer application receives its own confidential OIDC identity and a client generated from the live OpenAPI contract. The kit owns short-lived tokens, correlation and idempotency without exposing SIP infrastructure.
import crypto from "node:crypto";
import { TelephonyCoreClient } from "./telephony-core-client.mjs";
const telephony = TelephonyCoreClient.fromCredentialFile(
"/run/secrets/telephony-core-application.json"
);
const callRef = crypto.randomUUID();
const idempotencyKey = "crm-order-7842";
await telephony.createCallV1({
idempotencyKey,
body: {
callRef,
to: "+48221234567",
from: "+48221522036",
applicationRef: "customer-crm",
recording: "required"
}
});Explore the phone interface. Preview mode does not place calls.
Framework-neutral browser package
The SDK uses the access token already obtained by your host product. It resolves the authenticated user's phone identity and never accepts a static SIP password.
import { TelephonyCorePhone } from "@telephony-core/browser-phone";
const phone = new TelephonyCorePhone({
apiBaseUrl: "https://api.telephony.amplika.pl/",
tenantId: currentTenantId,
accessToken: () => identity.getAccessToken(),
onStateChange: renderPhoneState
});
await phone.connect();
await phone.call("+48221234567");