Set Encryption Public Key

POST Method

The Set Encryption Public Key API allows you to set up the encryption key for a particular WhatsApp Business Number. Setting up encryption on Business phone numbers is required in scenarios of sensitive API interactions especially in scenarios such as Flows, where Meta hosts or renders UI elements, making integrity and security essential.

📘

Note:

Before setting up the key, the phone number must be successfully registered, and the business must have generated a 2048-bit RSA Key.

For more information, see Flows Encryption - WhatsApp Cloud API

Prerequisites

  1. Before you get started, Create an API Key. To view the API Key and the SID, see View API Key and SID.
    A prerequisite for using Kaleyra WhatsApp APIs is to have an active WhatsApp plan on Kaleyra platform.
  2. To set up a WhatsApp account on Kaleyra platform, see Manual Signup
    and Embedded Signup.
  3. An active WhatsApp for Business API plan that includes:
    • A WhatsApp business number.
    • An associated profile with the business number.
    • A WhatsApp verified and approved profile.
    • A WABA ID onboarded on Kaleyra WhatsApp API V2.

Base URL

https://<api_domain>/v2/<SID>


API Domain and Value

api_domainValue
IN podapi.in.kaleyra.io
SG Podapi.kaleyra.io
EU Podapi.eu.kaleyra.io
NA podapi.na.kaleyra.ai

API request to Set Encryption Public Key

To set the encryption public key for the WhatsApp Flow, use the https://<api_domain>/v2/<sid>/whatsapp/<phone-number>/flows_encryption' \ endpoint with the following request method.

Request Format

The following is the request format to set the encryption public key:

 curl --location --request POST 'https://<api_domain>/v2/sid/whatsapp/<phone-number>/flows_encryption' \
--header 'api-key: <api-key>' \
--header 'Content-Type: <Content-Type>' \
--data-urlencode 'business_public_key=<business_public_key>'

Sample Request Format

The following is the sample request format to set the encryption public key:

curl --location --request POST 'https://api.in.kaleyra.io/v2/HXAP16XXXXXX97IN/whatsapp/+91XXXXXXXXXX/flows_encryption' \
--header 'api-key: Axxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx3' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'business_public_key=-----BEGIN PUBLIC KEY-----
MIBXXXXXQAB
-----END PUBLIC KEY-----'

URL Parameters and Headers

Following is the list of parameters and headers to set the encryption public key:

Parameter

Data Type

Description

Example

Mandatory?

sid

String

Account SID (Security Identifier).

HXAP16XXXXXX97IN

Yes

phone-number

String

The business phone number used to send the WhatsApp Flow.

+91XXXXXXXXXX

Yes

api-key

String

API key generated from Kaleyra platform account.

Axxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx3

Yes

Content-Type

String

Indicates the format of the content the API will be processing.

The only allowed value is application/x-www-form-urlencoded

Yes

business_public_key

String

Public 2048-bit RSA key pair generated by the business.

----BEGIN PUBLIC KEY-----
MIBXXXXQAB
-----END PUBLIC KEY-----

Yes

Sample Success Response

The following success message appears with 200 Accepted:

{
    "code": "WA-200",
    "message": "Request Processed Successfully",
    "data": {
        "success": true
    },
    "error": {}
}

Sample Failure Response

The following are the failure responses:

401 Unauthorized
{
    "code": "RBC001",
    "message": "Incorrect SID or API key.",
    "data": [],
    "error": {
        "error": "Incorrect SID or API key."
    }
}
401 Wrong account
{
    "code": "WA-401",
    "message": "API is not available for given customer.Please contact support for more info",
    "data": {},
    "error": "API is not available for given customer.Please contact support for more info"
}
400 Incorrect payload
{
    "code": "WA-400",
    "message": "Refer to correct payload format",
    "data": {},
    "error": {
        "payload": "Incorrect payload format"
    }
}
500 Internal Server Error
{
    "code": "WA-500",
    "message": "Please try again later",
    "data": {},
    "error": {
        "error": "Internal server error"
    }
}




© 2025 Kaleyra Inc. All rights reserved.
Trademarks, logos and service marks displayed on this site are registered and unregistered trademarks of Kaleyra Inc.