Introduction

The Outbound configuration API provides a complete list of API handoffs created in the Proactive Web Tool. This API allows 1) Fetching all handoffs configurations 2) Fetching all handoff configurations filtered by a specific messaging channel (SMS, WhatsApp, Apple Messages for Business, In-app, Google RCS, etc.)

This API provides outbound configuration for Proactive Messaging 2.0 service.

Getting started

Who can access this Outbound Configuration API

All Brands who use Proactive Messaging version 2.0 have access to the Outbound Configuration API service.

What are the limitations

Both endpoints are currently read only, i.e it is not possible to make configuration changes using the outbound configuration API.

OAuth 2.0 authorization

  • Either Administrator or LPA can get client_id and client_secret by clicking the show secrets on the web UI as shown below.

    Secrets

  • The client_id and client_secret will than be used to create AppJWT. Click here to learn how to use AppJWT.
  • The access_token retrieved from above AppJWT response should be used in the Request Header for Authorization.

Outbound configuration API

API for account level outbound configurations

1. Get Outbound Configuration Domain

The Outbound Configuration API is deployed in all regions. Use the Domain API to identify the domain for an account with outboundConfiguration as Service Name.

2. Account - Get outbound configuration for the given account

Click Account to go through API spec to get started.

Method URI
GET https://{domain}/api/account/{id}/app/{appName}/handoffs/list?v=1
Path parameters
Name Description Required Value/Example
domain domain Yes Domain from Step 1
accountId LivePerson site ID Yes 12345678
app App name Yes "prmsg" or "c2m"
v Version Yes 1
Query parameters
Name Description Required Value/Example
limit Max count of outbound configurations to fetch No 30
offset Starting point to fetch from No 0
Request headers
Header Description Value/Example
Content-Type Used to indicate the media type of the resource application/json
Authorization OAuth 2.0 or OAuth 1.0 (Section 8) or LE Bearer token  
Response examples

SMS Twilio:

SMS Twilio 200 Success:

{
  "type": "sms-twilio",
  "language": "en",
  "outboundnumber": "+14156586515",
  "messageComponents": [
    {
      "type": "body",
      "content": "Hi $1",
      "variables": ["1"],
      "optOut": "To stop receiving messages, reply STOP. For help, reply HELP."
    }
  ]
}

WhatsApp:

WhatsApp 200 Success:

​{
  "type": "wa",
  "language": "en",
  "namespace": "b8520e15_f77b_5f76_fb50_9f756d03676b",
  "templatename": "newtemplate_button_cta_feb14",
  "outboundnumber": "12535277322",
  "messageComponents": [
    {
      "type": "body",
      "content": "Your ticket for $1\n\nTime - $2\nVenue - $3\nSeats - $4 - $5",
      "variables": [
          "1",
          "2",
          "3",
          "4",
          "5"
        ]
    }
  ]
}

WhatsApp rich content 200 Success:

{
  "type": "wa",
  "language": "en",
  "namespace": "b8520e15_f77b_5f76_fb50_9f756d03676b",
  "templatename": "newtemplate_button_cta_feb14",
  "outboundnumber": "12535277322",
  "messageComponents": [
    {
      "type": "body",
      "content": "Your ticket for $1\n\nTime - $2\nVenue - $3\nSeats - $4 - $5",
      "variables": ["1", "2", "3", "4", "5"]
    },
    {
      "type": "footer",
      "content": "Just show this QR code at the cinema"
    }
  ]
}

The messageComponents fields can reflect the following fields depending on the template

Header image with static url {
  "type": "header",
  "sub_type": "image",
  "content": "https://upload.wikimedia.org/commons-1/c/ce/1963_Tornadoes.png",
  "variables": []
}
Header image with dynamic url that is expected to be passed in the request payload {
  "type": "header",
  "sub_type": "image",
  "content": "$1",
  "variables": [ "1" ]
}
Header with a static document url {
  "type": "header",
  "sub_type": "document",
  "content": "https://cdn.timelab.se/cellite-1/20180626140206/1.pdf",
  "variables": [ "1" ]
}
Header with a static video url {
  "type": "header",
  "sub_type": "video",
  "content": "https://file-examples-com.github.io/uploads/2017/04/file_example_MP4_640_3MG.mp4",
  "variables": []
}
Button with a static call to action value {
  "type": "button",
  "index": 0,
  "content": "Call",
  "sub_type": "phone_number",
  "phone_number": "+12062061111"
}
Button with a dynamic call to action value that is expected to be passed in the request payload {
  "type": "button",
  "index": 1,
  "content": "Link",
  "sub_type": "url",
  "url": "https://www.google.com/1",
  "variables": [ "1" ]
}
Button with a static value for quick reply {
  [
    {
      "type": "button",
      "index": 0,
      "content": "Yes",
      "sub_type": "quick_reply"
    },
    {
      "type": "button",
      "index": 1,
      "content": "No",
      "sub_type": "quick_reply"
    }
  ]
}

In-app:

In-app 200 response:

[
  {
    "type": "inapp",
    "appNames": ["com.liveperson.sdksample"],
    "language": "en",
    "messageComponents": [
      {
        "type": "text",
        "messageText": "$3",
        "notificationTitle": "we $1",
        "notificationMessage": "wsdc $2",
        "isSameMessageForNotification": true,
        "variables": ["1", "2", "3"]
      },
      {
        "url": "$4",
        "type": "image",
        "isClickable": true,
        "destinationUrl": "https://www.liveperson.com",
        "Variables": ["4"]
      }
    ]
  }
]

Google RCS:

Note: The agentId field identifies the provisioned Google RCS agent for a channel. Unlike other channels, Google RCS responses do not include an outboundnumber field - Google RCS agents send from a registered agent identity (agentId), not a phone number.

Google RCS 200 response — text only:

{
  "type": "googlercs",
  "language": "en",
  "messageComponents": [
    {
      "type": "body",
      "content": "This is example $1",
      "variables": ["1"]
    }
  ],
  "agentId": "c2m-7453907-grcs"
}

Google RCS channel object with text suggestions:

{
  "type": "googlercs",
  "language": "en",
  "messageComponents": [
    {
      // Text
      "type": "body",
      "content": "This is example $1",
      "variables": ["1"]
    },
    {
      // Dial action
      "type": "button",
      "index": 0,
      "content": "Call us",
      "sub_type": "phone_number",
      "phone_number": "+12062061111"
    },
    {
      // URL action
      "type": "button",
      "index": 1,
      "content": "Support FAQ",
      "sub_type": "url",
      "url": "https://www.freedommobile.ca/"
    },
    {
      // View location action
      "type": "button",
      "index": 2,
      "content": "View Location",
      "sub_type": "view_location",
      "latitude": 37.7749,
      "longitude": -122.4194,
      "location_label": "San Francisco"
    },
    {
      // Share location action
      "type": "button",
      "index": 3,
      "content": "Share Location",
      "sub_type": "share_location"
    },
    {
      // Create calendar event action
      "type": "button",
      "index": 4,
      "content": "Add to Calendar",
      "sub_type": "create_calendar_event",
      "calendar_title": "Team Meeting",
      "calendar_description": "Weekly sync",
      "calendar_start_time": "2026-06-15T09:00:00Z",
      "calendar_end_time": "2026-06-15T10:00:00Z"
    }
  ],
  "agentId": "c2m-7453907-grcs"
}

Google RCS channel object with media:

{
  "type": "googlercs",
  "language": "en",
  "messageComponents": [
    {
      "type": "media",
      "content": "https://upload.wikimedia.org/wikipedia/commons/c/ce/1963_Tornadoes.png",
      "variables": []
    }
  ],
  "agentId": "c2m-7452227-grcs"
}

Google RCS channel object with rich card (standalone):

{
  "type": "googlercs",
  "language": "en",
  "messageComponents": [
    // Quick reply object
    {
      "type": "button",
      "index": 0,
      "content": "I need help",
      "sub_type": "quick_reply"
    },
    {
      "type": "button",
      "index": 1,
      "content": "Support FAQ",
      "sub_type": "url",
      "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/5d/Log_Pod_Mangrtom_und_Rombon_10032015_0593.jpg/1920px-Log_Pod_Mangrtom_und_Rombon_10032015_0593.jpg"
    },
    // Media object (title/thumbnailImageAlignment come from the standalone card)
    {
      "type": "media",
      "height": "MEDIUM",
      "thumbnailImageAlignment": "RIGHT",
      "content": "$3",
      "variables": ["3"]
    },
    // Body object — always the last component, holds card title + description
    {
      "type": "body",
      "title": "Thank you for using Freedom Mobile's Rich Messaging Service $1.",
      "content": "You can now message us while you are on the go! Let us know how we can help you today and remember not to proactively provide confidential information i.e. credit card or account information. $2",
      "variables": ["1", "2"]
    }
  ],
  "cardOrientation": "VERTICAL",
  "agentId": "c2m-7453907-grcs"
}

Google RCS channel object with carousel card. Every component belonging to a card carries a cardIndex (0-based) identifying which card it's part of; there is no top-level cardOrientation or cardWidth on carousel responses:

{
  "type": "googlercs",
  "language": "en",
  "messageComponents": [
    // Card 0 — quick reply suggestion
    {
      "type": "button",
      "cardIndex": 0,
      "index": 0,
      "content": "Option A",
      "sub_type": "quick_reply"
    },
    // Card 0 — media
    {
      "type": "media",
      "cardIndex": 0,
      "height": "MEDIUM",
      "content": "https://cdn.example.com/card1.jpg",
      "variables": []
    },
    // Card 0 — body (title + description)
    {
      "type": "body",
      "cardIndex": 0,
      "title": "Card 1 $1",
      "content": "Description 1",
      "variables": ["1"]
    },
    // Card 1 — URL action suggestion
    {
      "type": "button",
      "cardIndex": 1,
      "index": 0,
      "content": "Visit",
      "sub_type": "url",
      "url": "https://www.example.com/"
    },
    // Card 1 — media
    {
      "type": "media",
      "cardIndex": 1,
      "height": "MEDIUM",
      "content": "$3",
      "variables": ["3"]
    },
    // Card 1 — body (title + description)
    {
      "type": "body",
      "cardIndex": 1,
      "title": "Card 2",
      "content": "Description 2 $2",
      "variables": ["2"]
    }
  ],
  "agentId": "c2m-grcs"
}

2. Account - Get outbound configuration by channel

Click Account to go through API spec to get started.

Method URI
GET https://{domain}/api/account/{id}/app/{appName}/handoffs/list/channel /{channelName}?v=1
Path parameters
Name Description Required Value/Example
domain domain Yes Domain from Step 1
accountId LivePerson site ID Yes 12345678
app App name Yes "prmsg" or "c2m"
channel The messaging channel name Yes wa, sms-twilio, apple-twilio, googlercs, inapp
v Version Yes v=1
Query parameters
Name Description Required Value/Example
limit Max count of outbound configurations to fetch No 30
offset Starting point to fetch froms No 0
Request headers
Header Description Value/Example
Content-Type Used to indicate the media type of the resource application/json
Authorization OAuth 2.0 or OAuth 1.0 (Section 8) or LE Bearer token  
Response example

Outbound configuration 200 response:

[
  {
    "type": "sms-twilio",
    "language": "en",
    "outboundnumber": "+13333333333",
    "messageComponents": [
      {
        "type": "body",
        "content": "Hi this is an outbound message #1",
        "variables": ["1"],
        "optOut": "To stop receiving messages, reply STOP. For help, reply HELP."
      }
    ]
  },
  {
    "type": "sms-twilio",
    "language": "en",
    "outboundnumber": "+142222222222",
    "messageComponents": [
      {
        "type": "body",
        "content": "Hi this is an outbound message #1",
        "variables": ["1", "2"],
        "optOut": "To stop receiving messages, reply STOP. For help, reply HELP."
      }
    ]
  },
  {
    "type": "sms-twilio",
    "language": "en",
    "outboundnumber": "+1433333333333",
    "messageComponents": [
      {
        "type": "body",
        "content": "Hi this is an outbound message #3",
        "variables": ["1"],
        "optOut": "To stop receiving messages, reply STOP. For help, reply HELP."
      }
    ]
  }
]

Data fields definitions

Outbound Reporting API provides the following data fields. This table explains the definition of each field.

Data field Definition
id The outbound configuration profile id
name The name of the outbound configuration template
lookbackPeriodDay A numeric value representing the skill lookback back period in days, example: 30min value: 0 Max value: 30
lookbackPeriodHour A numeric value representing the lookback back period in hours, example: 0 min value:0 Max value: 23
routeAllWithinLookback A flag that indicates whether or not to route reopened conversations within the lookback period
updatedAt Shows last updated time in utc
createdAt Shows the configuration created time in utc
channels An array of channels and their respective configuration.
For example:
type (name of the messaging channel):
“wa”: whats app
“sms-twilio”: standard text message
“apple-twilio”: apple messages for business
“googlercs” google rich content
“inapp”: LivePerson consumer application
appName: (in app channel only) the associated SDK data source.
outboundnumber: the “From” number of the sent message
language: the associated language for the channel
namespace: for whats app only indicated the template namespace
messageComponents _ type
_ sub_type
_ content
_ variables
_ optOut
_ index
_ phone_number
_ height
_ thumbnailImageAlignment
_ cardOrientation
* cardIndex
type header,body,button,media (grcs only), footer
sub_type For example:
Type : “header”
sub_type: “image”
content The string (including variables placeholder)
For example: “This is a text with a var $1
variables If the template contains variables it will be reflected here by numbers, for example a configuration for a template with a single var will look like this: “variables: [“1”, “2”, “3”]
optOut The opt out text that will be sent to the consumer
Index For button type only, indicates the order of the button starting from 0, For example 1st out of 2 buttons will be indicated as => index: 0
url: the link attached to the button
phone_number For button type only
For example: “phone_number”: “+14xxxxx5674”

The following attributes are for Google RCS only.

Attribute Description
type media
height String representing the media height parameters (SHORT, MEDIUM, or TALL); required unless the card is HORIZONTAL
thumbnailImageAlignment The image preview alignment (LEFT or RIGHT) for standalone cards with horizontal layout
cardOrientation Indicates the content display orientation for a standalone rich card, for example: “VERTICAL”. This is a top-level field on the channel object, not on an individual component. Not present for carousel cards.
cardIndex For carousel cards only. Identifies which card (0-based) a button, media, or body component belongs to. Not present for standalone cards.
agentId The provisioned Google RCS agent for the channel. Top-level field. Google RCS responses do not include an outboundnumber field.