How to Make and Receive Phone Calls Using Plivo’s Voice API and Java

How to Make and Receive Phone Calls Using Plivo’s Voice API and Java

Your company has settled on Plivo to handle its voice and messaging communications, and now it’s your job to start integrating Plivo into your company’s applications. Don’t worry — Plivo has an SDK to help you out. Let’s see how to make outbound calls and handle incoming calls through Plivo's voice API in a Java application.

Install the Plivo SDK

We’ll presume you already have Java installed. The easiest way to install the Plivo SDK is by using IntelliJ IDEA. Install it, create a new project, and choose a dependency manager and Java SE SDK for the new project. Then edit pom.xml, add these lines, and save the file.


If you don’t want to use IntelliJ IDEA, you can download the jar file from our GitHub repo.

Find your Auth ID and Auth Token

You have to have proper credentials before you can use the Plivo API. We provide an Auth ID and Auth Token in the Account section at the top of the overview page of the Plivo console.

Find Your Auth Credentials on Plivo Console

Choose a phone number

You need an voice-enabled Plivo phone number if you want to receive incoming calls. Check the Numbers screen of the Plivo console to see what numbers you have available. You can also rent numbers from this screen.

Buy a New Plivo Number

Use PHLO to set up an outbound call

Now you can turn to PHLO, Plivo’s visual workflow design studio, to set up the workflow for an outbound call. Click on the PHLO icon on the left navigation bar, then on Create New PHLO. In the window that pops up, click Build My Own.

Let’s start with a very simple workflow. From the list of components on the left side, drag and drop the Initiate Call component onto the canvas, then connect the Start node to the Initiate Call node using the API Request trigger state.

Now you can add configuration information for the call in the right pane. Valid phone numbers begin with a plus sign and a country code. Add a caller ID number in the From field and a destination number in the To field, then click Validate to save the configuration.

PHLO lets you use variables for From and To values, but we’re keeping it simple for this example.

Now drag the Play Audio component onto the canvas. Connect the Initiate Call node to Play Audio using the Answered trigger state. In the Configuration panel, enter the text you want to play for the call recipient, then click Validate.

Create a PHLO for outbound calls

That’s all we’re going to do for now — we told you it was simple. Give the PHLO a name by clicking on the pencil icon in the upper left, then click the Save button in the upper right.

Run the PHLO to make a call

Now you can trigger the PHLO and test it out. Copy the PHLO ID from the end of the URL of the workflow you just created. You’re also going to need your Auth ID and Auth Token. Create a Java class in the project — let’s call it PlivoVoiceApplication — and paste this code into it:

package com.example.demo;
import com.plivo.api.Plivo;
import com.plivo.api.PlivoClient;
import com.plivo.api.exceptions.PlivoRestException;
import com.plivo.api.models.phlo.Phlo;
import com.plivo.api.models.phlo.PhloUpdateResponse;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;


public class PlivoVoiceApplication {

	public static void main(String[] args) {, args);
	public PhloUpdateResponse triggerPhlo() throws IOException, PlivoRestException {
		final String authId = "<auth_id>";
		final String authToken = "<auth_token>";
		PlivoClient client = new PlivoClient(authId, authToken);
		String phloId = "<PHLO_ID>";
		Plivo.init(authId, authToken);
		Phlo phlo = Phlo.getter(phloId).client(client).get();
		PhloUpdateResponse response = Phlo.updater(phloId).run();
		return response;


Substitute actual values for <auth_id>, <auth_token>, and <PHLO_ID>. Save the file and run it from Intellij.

Boom — you’ve made an outbound call.

Note: To setup your Java dev environment using the Spring framework in less than five minutes, refer to the Java Quickstart guide using Spring framework.

Set up inbound calls

Of course outbound calls are only half of the equation. Plivo supports inbound calls as well. To see how, let’s create another PHLO and again specify Build My Own. This time, drag the Play Audio component onto the canvas and connect the Start node to it using the Incoming Call trigger state. In the Configuration panel, enter some text to speak to the caller when the call is answered, then click Validate to save the configuration. Give this PHLO a name, then click Save.

Before you can receive a call using this PHLO, you have to assign it to a Plivo number. Go back to the Plivo console and click on Phone Numbers on the left nav bar. From the list of Your Numbers, click on the number you want to use. On the next screen, from the Application Type dropdown, choose PHLO. From the PHLO Name dropdown, choose the PHLO you just created. Then click Update Number at the bottom of the screen.

Create a PHLO to receive incoming call

Guess what? You’re done! You don’t have to run a program for this PHLO to work. Just call the Plivo number you specified and you should hear the message you configured read by Plivo’s text-to-speech processor.


And that’s all there is to sending and receiving voice calls using Plivo’s Java SDK. Don’t use Java? Don’t worry — we have SDKs for PHP, Python, Node.js, Ruby, .NET Core, .NET Framework, and Go.

Haven’t tried Plivo yet? Getting started takes only five minutes. Sign up today.

footer bg

Subscribe to Our Newsletter

Get monthly product and feature updates, the latest industry news, and more!

Thank you icon
Thank you!
Thank you for subscribing
Oops! Something went wrong while submitting the form.