<!-- BusyBot node reference — https://busybot.net/tools/plivo/ -->

> Node: Plivo (`plivo`) · Action · v1
> Category: Communication · Credentials: Plivo API (`plivoApi`)
> Updated: 2026-08-16

# Plivo

> Send SMS/MMS or make calls via Plivo

## Overview

Plivo is a cloud communications platform that provides SMS, MMS, and voice call APIs. This tool supports sending SMS messages, sending MMS messages (US/Canada only), and initiating outbound voice calls. It uses the Plivo REST API v1 with HTTP Basic Auth. SMS and MMS use the /Message/ endpoint while calls use the /Call/ endpoint.

**Category:** Communication  
**Tool Name:** `plivo`  
**Version:** 1

**Appearance:** Icon: `lucide-Phone` | Color: `#39AF6A`

## Node Type

**Action** — processes input items and produces output

## Input / Output

| Direction | Port(s) |
|-----------|--------|
| Input | `Input` |
| Output | `Output`, `Error` |

## Credentials

This tool requires **Plivo API** credentials.
See the [Credentials Guide](https://busybot.net/credentials/plivo-api/) for setup instructions.

### Resources

| Resource | Value |
|----------|-------|
| Call | `call` |
| MMS | `mms` |
| SMS | `sms` |

### Operations

| Operation | Value | Description |
|-----------|-------|-------------|
| Call: Make | `make` | Make a voice call |
| MMS: Send | `send` | Send an MMS message (US/Canada only) |
| SMS: Send | `send` | Send an SMS message |

### Parameters

#### Call: Make

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| From | `string` | Yes | — | Caller ID phone number (E.164 format). Supports expressions. |
| To | `string` | Yes | — | Destination phone number to call (E.164 format). Supports expressions. |
| Answer Method | `options` | Yes | `POST` | HTTP method Plivo uses to request the answer URL. |
| | | | | Options: `GET`, `POST` |
| Answer URL | `string` | Yes | — | URL Plivo will request when the call is answered. Must return valid Plivo XML to control the call. Supports expressions. |

#### MMS: Send

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| From | `string` | Yes | — | Plivo phone number to send the MMS from (E.164 format). Supports expressions. |
| To | `string` | Yes | — | Destination phone number (E.164 format). Supports expressions. |
| Message | `string` | No | — | Text message content (optional for MMS). Supports expressions. |
| Media URLs | `string` | No | — | Comma-separated list of media file URLs from your file server. Supports expressions. |

#### SMS: Send

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| From | `string` | Yes | — | Plivo phone number to send the SMS from (E.164 format). Supports expressions. |
| To | `string` | Yes | — | Destination phone number (E.164 format). Supports expressions. |
| Message | `string` | Yes | — | Text message content to send. Supports expressions. |

#### All Operations

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Max Concurrency | `number` | No | `10` | Maximum number of items to process concurrently. |

## Output Data

One output item per input item, on the `Output` port. Plivo's API response is merged onto the item JSON at the top level rather than nested under a wrapper, so the incoming fields pass through unchanged and the response fields sit beside them; binary data on the input item is forwarded untouched.

Every operation returns the same shape of acknowledgement: the UUID Plivo assigns to the message or call, together with the status text describing what it accepted. The exact key names come straight from the Plivo API, so run the node once and read the output item before wiring those fields into downstream expressions.

An item whose request is rejected — an unverified caller ID, a destination Plivo will not deliver to, an answer URL it cannot reach — fails individually. In **errorPort** mode that item leaves through the `Error` port carrying an `_error` object; the successful items continue out of `Output`.

## Usage Examples

- Send an SMS message to a phone number
- Send an MMS with media attachments
- Make an outbound voice call

## Example Configuration

Send a fixed SMS to one number:

```json
{
  "type": "plivo",
  "parameters": {
    "resource": "sms",
    "operation": "send",
    "from": "+15551234567",
    "to": "+15559876543",
    "message": "Your order #12345 has been shipped and will arrive tomorrow."
  }
}
```

Send a personalised SMS per item, with concurrency held down for a bulk run:

```json
{
  "type": "plivo",
  "parameters": {
    "resource": "sms",
    "operation": "send",
    "from": "+15551234567",
    "to": "{{ $json.customer_phone }}",
    "message": "Hi {{ $json.customer_name }}, your appointment is confirmed for {{ $json.appointment_date }}.",
    "maxConcurrency": 5
  }
}
```

Send an MMS with two media files attached (US and Canada numbers only):

```json
{
  "type": "plivo",
  "parameters": {
    "resource": "mms",
    "operation": "send",
    "from": "+15551234567",
    "to": "{{ $json.subscriber_phone }}",
    "message": "Here is your receipt and the product photo.",
    "media_urls": "https://files.example.com/receipt.pdf,https://files.example.com/product.jpg"
  }
}
```

Place an outbound call and hand control to your own Plivo XML endpoint:

```json
{
  "type": "plivo",
  "parameters": {
    "resource": "call",
    "operation": "make",
    "from": "+15551234567",
    "to": "{{ $json.customer_phone }}",
    "answer_url": "https://app.example.com/plivo/emergency-alert",
    "answer_method": "POST",
    "maxConcurrency": 1
  }
}
```

### Error Handling

| Mode | Behavior |
|------|----------|
| **stop** | Halts workflow on first error |
| **continue** | Skips failed items, passes successful ones through |
| **errorPort** | Routes failed items to Error output port |

## Tips

Send SMS/MMS messages or make phone calls via the Plivo cloud communications API.

### Notes

- **Each resource has exactly one operation.** Picking SMS or MMS gives you `send`; picking Call gives you `make`. Switching resource changes which fields the node shows, so set Resource first.
- **Message is optional for MMS, Media URLs is not marked required either** — but an MMS carrying neither has nothing to deliver. Set at least one of them.
- **Expressions are resolved per item** in From, To, Message, Media URLs, Answer URL and Answer Method, so one node can message a different recipient for every item that reaches it.
- **A call needs somewhere to go once answered.** Answer URL must serve valid Plivo XML; without it the call connects and then has no instructions to follow.