> ## Documentation Index
> Fetch the complete documentation index at: https://plivo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# SDK and Endpoints

> Plivo SDKs, WebRTC endpoints, browser and mobile client setup

Frequently asked questions about Plivo's SDKs, SIP endpoints, WebRTC integration, and browser/mobile calling.

***

## What SDKs does Plivo provide?

| Platform                                   | Use Case                |
| ------------------------------------------ | ----------------------- |
| Web (JavaScript)                           | Browser-based calling   |
| iOS                                        | Mobile app calling      |
| Android                                    | Mobile app calling      |
| Node.js, Python, Ruby, PHP, Java, .NET, Go | Server-side integration |

***

## What are server-side SDKs used for?

* Making API calls
* Generating XML responses
* Managing resources (numbers, applications, recordings)

***

## What are client-side SDKs used for?

* Browser-based calls (WebRTC)
* Mobile app integration
* SIP endpoint functionality

***

## How do I create a SIP endpoint?

1. Navigate to **Voice > Endpoints**
2. Click **Add New Endpoint**
3. Enter username and password
4. Attach to a Plivo application
5. Save

***

## What credentials does an endpoint have?

| Field       | Description               |
| ----------- | ------------------------- |
| Username    | Unique identifier         |
| Password    | Authentication credential |
| Alias       | Friendly name (optional)  |
| Application | Plivo app handling calls  |

***

## How do I register an endpoint with a SIP client?

Configure your SIP client with:

* SIP URI: `sip:<username>@phone.plivo.com`
* Domain: `phone.plivo.com`
* Username and password from console

***

## Can I register the same endpoint on multiple devices?

Yes. The same endpoint can register on multiple devices. Incoming calls ring all registered devices.

***

## What softphones are supported?

* Zoiper
* X-Lite (Bria Solo Free)
* Linphone
* Any SIP-compliant client

***

## How do I set up WebRTC browser calling?

1. Include the Plivo Browser SDK
2. Create an endpoint in console
3. Initialize SDK with endpoint credentials
4. Handle call events

**Example:**

```javascript theme={null}
const plivoBrowserSdk = new window.Plivo.Client({
  debug: false,
  permOnClick: true,
});

plivoBrowserSdk.login(username, password);
plivoBrowserSdk.call(destination);
plivoBrowserSdk.answer();
plivoBrowserSdk.hangup();
```

***

## What events does the Browser SDK provide?

| Event              | Description            |
| ------------------ | ---------------------- |
| `onLogin`          | Login successful       |
| `onLoginFailed`    | Login failed           |
| `onIncomingCall`   | Incoming call received |
| `onCallAnswered`   | Call connected         |
| `onCallTerminated` | Call ended             |

***

## What are WebRTC browser requirements?

* Users must grant microphone access
* HTTPS required (secure context)
* PreAnswer not supported

***

## What are the iOS SDK requirements?

* iOS 10.0+
* Xcode
* CallKit integration (optional)

**Installation:**

```
pod 'PlivoVoiceKit'
```

***

## What are the Android SDK requirements?

* Android API 21+
* Android Studio

**Installation (Gradle):**

```
implementation 'com.plivo.endpoint:endpoint:x.x.x'
```

***

## How do I configure push notifications for mobile SDKs?

| Platform | Service                                |
| -------- | -------------------------------------- |
| iOS      | APNs (Apple Push Notification service) |
| Android  | FCM (Firebase Cloud Messaging)         |

***

## What causes registration failures?

Incorrect credentials. Verify username/password in the console.

***

## Why am I not receiving incoming calls on my endpoint?

The application is not linked to the endpoint. Attach endpoint to application.

***

## What causes one-way audio?

Firewall blocking media ports. Open required ports.

***

## What ports are required for SIP endpoints?

| Type          | Ports                      |
| ------------- | -------------------------- |
| SIP Signaling | 5060 (UDP/TCP), 5061 (TLS) |
| Media (RTP)   | 10000-30000 (UDP)          |

***

## What are SDK security best practices?

* Never expose Auth ID/Token in client-side code
* Use endpoint credentials for browser/mobile SDKs
* Implement server-side validation

***

## What are SDK performance best practices?

* Initialize SDK once, reuse instance
* Handle reconnection gracefully
* Implement proper error handling

***

## What are SDK user experience best practices?

* Request permissions before call attempt
* Show clear call state indicators
* Handle network changes smoothly

***

## Related Resources

* [Browser SDK Documentation](https://www.plivo.com/docs/voice/sdk/web/)
* [iOS SDK Documentation](https://www.plivo.com/docs/voice/sdk/ios/)
* [Android SDK Documentation](https://www.plivo.com/docs/voice/sdk/android/)
* [Server SDK Quickstarts](https://www.plivo.com/docs/voice/quickstart/)
* [Endpoint API Reference](https://www.plivo.com/docs/voice/api/endpoint/)
