# Voice and Video for Browsers - In‑app Calling

This guide describes the Sinch JavaScript SDK components and how they work
together. Use it when you need a deeper understanding of responsibilities,
lifecycle, and integration points in the browser.

- SinchClient: The primary entry point to the SDK; manages configuration, authentication, and feature controllers.
- CallCient: Exposes APIs to place and receive calls, and notifies about incoming call events.
- Call: Represents an active call with methods for answering, declining, and hanging up. Access point to `CallListener` which emits state changes (progressing, ringing, answered, established, ended).
- Listeners: `SinchClientListener`, `CallClientListener`, and `CallListener` provide callbacks for state and events.
- Authentication (JWT): Use a backend‑generated, secret‑signed JWT to authorize the client; never embed secrets in the app.


See the
[Reference Documentation](https://download.sinch.com/js/latest/reference/index.html)
for a comprehensive description of all classes.

## Reference application

Explore a complete JavaScript reference application that demonstrates common
use cases:

- App to App Calling (audio and video)
- App to PSTN Calling
- App to SIP Calling


Find the JavaScript reference app on GitHub:
[rtc-reference-applications (JavaScript)](https://github.com/sinch/rtc-reference-applications/tree/master/javascript)

To test calling in Chrome, you can run both sides of a call in two separate
tabs of the same browser instance.

If you don’t want to build the reference app locally, try the
[JavaScript sample](https://in-app.sinch.com/javascript/samples/index.html)
online.