Launch an Agent
POST Method
The Launch Agent API allows you to submit RCS agents automatically for official launch across one or more carrier networks.
Prerequisites
- After you sign up, your account will be on the trial version. You must complete the KYC to access all the features in kaleyra.io.
- Before you get started, Create an API Key. To view the API Key and the SID, see View API Key and SID.
- Before sending the RCS, you must configure the RCS channel in the Kaleyra platform. To configure the RCS channel in your account, please contact your local Kaleyra representative.
Base URL
| URL | Region |
|---|---|
https://rcs-api.<pod>.kaleyra.io | For North America (NA). |
https://rcs-api.<pod>.kaleyra.io | For the rest of the world. |
API Domain and Value
| api_domain | Value |
|---|---|
| IN pod | https://rcs-api.in.kaleyra.io |
| NA pod | https://rcs-api.na.kaleyra.io |
API request to Launch an Agent
To launch an agent, use the https://rcs-api.<pod>.kaleyra.io/v1/<sid>/rcs/agent/launch endpoint with the following request method:
The following is the request format to launch an agent.
curl --location --request POST 'https://<api_domain>/v1/<sid>/rcs/agent/launch'\
--header 'Content-Type: <content_type>' \
--header 'api-key: <api-key>' \
--data '{
"launch": {
"optin_description": "<optin_description>",
"trigger_description": "<trigger_description>",
"interactions_description": "<interaction_description>",
"optout_description": "<optout_description>",
"agent_access_instructions": "<agent_access_instructions>",
"provider_launch_id": "<provider_launch_id>",
"launch_name": "<launch_name>",
"launch_type": "<launch_type>",
"video_uris": [
"<video_uris>"
],
"screenshot_uris": [
"<screenshot_uris>"
],
"agent_no": "<agent_no>"
},
"regions": [
{
"region_id": "<region_id>",
"region": "<region>"
}
]
}'
The following is the sample request format to launch an agent.
curl --location --request POST 'https://rcs-api.na.kaleyra.io/v1/xxxxx6913850xxxx/rcs/agent/launch' \
--header 'Content-Type: application/json' \
--header 'api-key: xxxxx3b8497f58a94e84b671aca43xxxx ' \
--data '{
"launch": {
"optin_description": "Bigbasket Optin",
"trigger_description": "START",
"interactions_description": "Demo Messages",
"optout_description": "Stop",
"agent_access_instructions": "This is a demo account",
"provider_launch_id": "launch_001_google_rcs",
"launch_name": "launch_48900",
"launch_type": "1",
"video_uris": [
"https://www.example.com/videos"
],
"screenshot_uris": [
"https://www.example.com/uris"
],
"agent_no": "48900"
},
"regions": [
{
"region_id": "8346a250-d7a9-47dc-8202-a8XXXXXXXXe8",
"region": "4f4bf2b0-5110-44e1-9aa1-43XXXXXXXX39"
}
]
}'
URL Parameters and Headers
The following is the list of parameters and headers to send the outgoing message request:
| Parameter/Headers | Data Type | Description | Example | Mandatory? |
|---|---|---|---|---|
sid | String | Account SID (Security Identifier). | XXXXX6913850XXXX | Yes |
Content-Type | String | Indicates the format of the content the API will be processing. | The only allowed value is application/JSON | Yes |
api-key | String | API key generated from kaleyra.io account. | XXXXX3b8497f58a94e84b671aca43XXXX | Yes |
The following is the list of attributes to be used in the payload to launch an agent:
| Parameter | Data Type | Description | Example | Mandatory? |
|---|---|---|---|---|
launch | JSON object | Object encapsulates all necessary details for launching an RCS Business Messaging agent. | See the specific table for details. | Yes |
The following table describes the different attributes used for the launch JSON object:
| Parameter | Data Type | Description | Example | Mandatory? |
|---|---|---|---|---|
optin_description | String | A short explanation on how end users give consent to interact with your agent. | Bigbasket Opt in | Optional |
trigger_description | String | Explain when or how the conversation is initiated. | START | Optional |
interactions_description | String | A description of what type of interaction the agent supports. | Demo Messages | Optional |
optout_description | String | Instructions on how you can stop receiving messages. | Stop | Optional |
agent_access_instructions | String | Detail on how reviewers or carriers can access or test your agent during verification. | This is a demo account | Optional |
provider_launch_id | String | A unique identifier assigned by the carrier or Google when the agent is submitted for launch used for tracking. | launch_001_google_rcs | Optional |
launch_name | String | The unique name for the launch instance. | launch_48900 | Optional |
launch_type | String | Defines the type of launch. Determines who approves and controls the rollout. | 1 | Optional |
video_uris | JSON Object | The Video link (a unique identifier) that tells a system where a video is located so it can be accessed, streamed, or downloaded. | See the specific table for details. | Optional |
screenshot_uris | JSON Object | The screenshot link (a unique identifier) that tells a system where a screenshot is located so it can be accessed, streamed, or downloaded. | See the specific table for details. | Optional |
agent_no | String | Internal agent identifier or sequence number. | 48900 | Yes |
regions | JSON Object | List of carrier regions where the agent will be launched. | See the specific table for details. | Optional |
The following table describes the different attributes used for the video_uris JSON object:
| Parameter | Data Type | Description | Example | Mandatory? |
|---|---|---|---|---|
uris | String | URLs pointing to demo videos that showcase how the agent works. Used during review. | https://www.example.com/video | Optional |
The following table describes the different attributes used for the screenshot_uris JSON object:
| Parameter | Data Type | Description | Example | Mandatory? |
|---|---|---|---|---|
uris | String | URLs pointing to the screenshots of the agent's user experience. Required for verification and carrier approval. | https://www.example.com/uri | Optional |
The following table describes the different attributes used for the regions JSON object:
Parameter | Data Type | Description | Example | Mandatory? |
|---|---|---|---|---|
| UUID | A unique identifier that represents specific launch region. Note: You can launch 5 agents at a time during launch. | 8346a250-d7a9-47dc-8202-a8XXXXXXXXe8 | Optional |
| String | List of carrier regions where the agent will be launched. | 4f4bf2b0-5110-44e1-9aa1-43xxxxxxxx39 | Optional |
Sample Success Response
The following is the sample success response:
{
"code": "RCS902",
"message": "Agent launch request created successfully",
{
"launch": {
"provider_launch_id": "launch_001_google_rcs",
"launch_name": "launch__48900",
"launch_type": 1,
"optin_description": "Bigbasket Optin",
"trigger_description": "START",
"interactions_description": "Demo Messages",
"optout_description": "Stop",
"agent_access_instructions": "This is a demo account",
"video_uris": [
"https://www.example.com/videos"
],
"screenshot_uris": [
"https://www.example.com/uris"
],
"status": "ACTIVE",
"create_date": "Jan 12, 2026, 12:42:58 PM",
"modified_date": "Jan 12, 2026, 12:42:58 PM",
"agent_launch_id": "1370ed9d-53ed-47ec-b150-e2XXXXXXXX3d"
},
"regions": [
{
"region_id": "8346a250-d7a9-47dc-8202-a8XXXXXXXXe8",
"region": "4f4bf2b0-5110-44e1-9aa1-43392c7d3b17",
"entry_point": 0,
"launch_state": 0,
"dirty_flag": "NEW"
}
],
"contacts": []
},
"error": {}
}Sample Failure Responses
The following are the sample failure responses:
Missing Required Fields
{
"code": "RCS904",
"message": "Failed to create Agent launch request",
"data": [],
"error": {
"error_code": "PROV_ERROR",
"error_message": "{\"status\":\"FAILED\",\"message\":\"Missing required fields in launch payload\"}"
}
}Invalid JSON
{
"code": "RCS701",
"message": "Invalid json format passed",
"data": [],
"error": {
"error_code": "INVALID_JSON_PAYLOAD",
"error_message": "invalid character '}' looking for beginning of object key string"
}
}RCS Not Enabled
{
"code": "RCS601",
"message": "RCS Channel is not enabled for this User",
"data": [],
"error": {
"error_code": "RCS_CHANNEL_DISABLED",
"error_message": "RCS Channel is not enabled for this User"
}
}Method Not Allowed
{
"code": "RCS405",
"message": "Method not allowed",
"data": [],
"error": {
"error_code": "METHOD_NOT_ALLOWED",
"error_message": "Method not allowed"
}
}Gateway Error
{
"code": "RCS502",
"message": "Internal Gateway Error",
"data": [],
"error": {
"error_code": "RCS_CHANNEL_INTERNAL_ERROR",
"error_message": "Internal Gateway Error"
}
}Updated 24 days ago
