Introduction
The Public Integration API enables you to query certain info from your WhatsApp Cloud Integration, or perform certain actions without the need to operate in the platform UI.
API Endpoint
Please use the following Endpoint URL for the Public API:
https://api.whatsapp-cloud.woztell.sanuker.com/v1.2/api/
Authentication
WhatsApp Cloud Access Token
The access token from the WhatsApp Cloud channel can be applied to the public APIs except the GET /conversation-analytics
, Business Encryption APIs and Flow APIs.
- In "Settings" -> "Channels", click "Edit" to enter the corresponding WhatsApp Cloud channel.
- In "Platform", head to the "Advanced Access".
- Click "Generate" to generate the access token.
- The access token has been generated. The existing access tokens can be managed in the below section.
- The access token should be passed as query parameter accessToken, for example:
Payload & Signed Context
This authentication method can only be applied to GET /conversation-analytics
, GET /whatsapp-displayname-status
, Business Encryption APIs and Flow APIs.
To perform authentication for the Public Integration API, it is needed to utilize the corresponding Payload and SignedContext which is required by the integration.
- Payload:
{"app":"appId","appIntegration":"appIntegrationId","channel":"channelId"}
- SignedContext:
(signature).{{base64(JSON.stringify(payload))}}
- Obtain the information related to the corresponding WhatsApp Cloud channel by querying the
channel
with Open API.
Request:
query {
apiViewer{
channel(channelId:"696327315430a1f98231dfde"){
appId
environment(envId:"7lQNjrXbDO"){
info
integration{
integrationId
}
appIntegrationSignature
}
}
}
}
Copy
Response:
{
"data": {
"apiViewer": {
"channel": {
"appId": "699802d69a73fc555f1c6bc4",
"environment": {
"info": {
"integrationId": "whatsapp-cloud",
"build": 3,
"alias": "dev-whats-app-cloud",
"appIntegrationId": "696327325430a1cbd131dfdf",
"subscribed": true
},
"integration": {
"integrationId": "whatsapp-cloud"
},
"appIntegrationSignature": "1RJ7rKRTHbOBoY95AgtXF5WT2578gy9+b4ekBp727cQ="
}
}
}
}
}
Copy
Create Payload with in the following format:
{"app":"appId","appIntegration":"appIntegrationId","channel":"channelId"}
Example Payload:
{"app":"699802d69a73fc555f1c6bc4","appIntegration":"696327325430a1cbd131dfdf","channel":"696327315430a1f98231dfde"}
Copy
Encode the Payload Base64
format
Combine the encoded Payload and Signature in order to create the SignedContext in the following format:
(signature).{{base64(JSON.stringify(payload))}}
Example SignedContext
WAIBCzM6tnzboIwkEPAVVyaVq7VGaIKBaQ/Q+gP6qdA=.eyJhcHAiOiI2MjA2MmMwYjcxNzE5NTMyMDE5MmIxOGY3IiwiYXBwSW50ZWdyYXRpb24iOiI2NDIwZmlnMjhlNjViNDY2ZDQ2MDdlYTIiLCJjaGFubmVsIjoiNzIxZjMyYWM0ZTEyMzYzZGUxMjBkMjlkIg==
Copy
- Add them to the header as the
X-Woztell-Payload
and X-Woztell-SignedContext
.
General APIs
GET /waba-info
This API call could get the WABA-related info including WABA name, Phone Number, WABA Namespace, WABA ID of a channel.
Parameters
Name | Type | Description | Required |
---|
accessToken | string | Access token generated from the WhatsApp Cloud channel | true |
channelId | string | Channel ID | either this or wabaID |
wabaId | string | WABA ID | either this or channelId |
Request
curl --location --request GET '/waba-info?accessToken=${ACCESS_TOKEN}&channelId=${CHANNEL_ID}'
Copy
or
curl --location --request GET '/waba-info?accessToken=${ACCESS_TOKEN}&wabaId=${WABA_ID}'
Copy
Response
{
"ok": 1,
"result": {
"waId" : "11111111111",
"phoneNumberId" : "123124123232",
"wabaId" : "422126422872292",
"name" : "My Business",
"phoneNumber" : "85212345678",
"phoneNumberCC" : "1",
"formattedPhoneNumber" : "+1 111-111-1111",
"namespace" : "2dwsa4_e24e_42f8_6b5a_110232ae4d5",
"embeddedSignup" : true
}
}
Copy
GET /whatsapp-business-profile
This API call could get the business profile of a WhatsApp number.
Parameters
Name | Type | Description | Required |
---|
accessToken | string | Access token generated from the WhatsApp Cloud channel | true |
phoneNumberId | string | Phone number ID | true |
Request
curl --location --request GET '/whatsapp-business-profile?accessToken=${ACCESS_TOKEN}&phoneNumberId=${PHONE_NUMBER_ID}'
Copy
Response
{
"ok": 1,
"data": {
"about": "Hello this is John!",
"address": "ABC Building",
"description": "Testing 123",
"email": "testemail@woztell.com",
"profile_picture_url": "IMAGE_URL",
"websites": [
"https://woztell.com/"
],
"vertical": "PROF_SERVICES",
"messaging_product": "whatsapp"
}
}
Copy
GET /whatsapp-displayname-status
This API call is for retrieving the details related to the WhatsApp number
Authentication
The Payload & Signed context are required in the header.
Parameters
Name | Type | Description | Required |
---|
accessToken | string | Access token generated from the WhatsApp Cloud channel | true |
phoneNumberId | string | Phone number ID | true |
Request
Response
{
"ok": 1,
"data": {
"account_mode": "LIVE",
"verified_name": "WozTell Test",
"code_verification_status": "EXPIRED",
"display_phone_number": "+1 123-321-2652",
"quality_rating": "GREEN",
"is_official_business_account": false,
"messaging_limit_tier": "TIER_1K",
"id": "123465061846704"
}
}
Copy
PATCH /whatsapp-business-profile
This API call could update the business profile of a WhatsApp number.
Parameters
Name | Type | Description | Required |
---|
accessToken | string | Access token generated from the WhatsApp Cloud channel | true |
phoneNumberId | string | Phone number ID | true |
profile | object | Content to be updated in the business profile | true |
Profile Object
Name | Type | Description | Required |
---|
messaging_product | string | Only accept whatsapp | true |
about | string | The "About" text | false |
address | string | The address of your business | false |
description | string | The "Description" text | false |
email | string | Email address of the your business | false |
vertical | string | Industry of the business, please refer to here for the accepted values | false |
website | array | URL(s) to the website(s) of your business including http:// or https:// ; 2 websites max. | false |
profile_picture_url | string | URL to the profile picture | false |
Endpoint
Request Body
{
"accessToken": "ACCESS_TOKEN",
"phoneNumberId": "123456890999",
"profile": {
"about": "This is the about text.",
"address": "Office",
"description": "Testing Text",
"email": "test999@woztell.com",
"profile_picture_url": "IMAGE_URL",
"websites": [
"https://woztell.com/blog/", "https://woztell.com/pricing/"
],
"vertical": "PROF_SERVICES",
"messaging_product": "whatsapp"
}
}
Copy
Response
This API call could upload a media file to WhatsApp server, in order to obtain a media ID.
The uploaded media file will be kept in WhatsApp Cloud server for 30 days. After the expiration, users need to upload again to obtain another media ID.
Parameters
Name | Type | Description | Required |
---|
phoneNumberId | string | Phone number ID | true |
accessToken | string | Access token generated from the WhatsAp | true |
type | string | image , audio , video , file | true |
url | string | Link to the media file | true |
Endpoint
Request Body
{
"phoneNumberId": "123164329653069",
"accessToken": "ACCESS_TOKEN",
"type": "image",
"url": "MEDIA_URL",
}
Copy
Response
{
"ok": 1,
"mediaId": "5770270532993662",
"fileType": "image"
}
Copy
GET /conversation-analytics
This API is for retrieving the conversation analytics within the selected date range.
Authentication
The Payload & Signed context are required in the header.
Parameters
Name | Type | Description | Required |
---|
from | UNIX Timestamp | The start date for the target date range | Yes |
to | UNIX Timestamp | The end date for the target ate range | Yes |
granularity | string | The granularity by which you would like to retrieve the analytics; HALF_HOUR , DAILY or MONTHLY | Yes |
numbers | array | The list of phone number(s) to get the analytics from | No |
metric_types | string | List of metrics to retrieve; COST and CONVERSATION | No |
conversation_types | string | List of conversation; FREE_ENTRY_POINT , FREE_TIER , REGULAR and UNKNOWN | No |
conversation_directions | string | List of direction of initiating the conversation; business_initiated and uesr_initiated | No |
dimensions | string | List of breakdown to apply to the analytics; phone , country , conversation_type and conversation_reaction | No |
Request
Response
{
"ok": 1,
"conversationAnalytics": {
"data_points": [
{
"start": 1672675200,
"end": 1672761600,
"conversation": 1,
"phone_number": "14132521446",
"country": "HK",
"conversation_type": "FREE_TIER",
"conversation_direction": "USER_INITIATED",
"cost": 0
},
{
"start": 1664899200,
"end": 1664985600,
"conversation": 1,
"phone_number": "14132521446",
"country": "HK",
"conversation_type": "FREE_TIER",
"conversation_direction": "BUSINESS_INITIATED",
"cost": 0
},
{
"start": 1676476800,
"end": 1676563200,
"conversation": 1,
"phone_number": "14132521446",
"country": "HK",
"conversation_type": "FREE_TIER",
"conversation_direction": "USER_INITIATED",
"cost": 0
}
]
}
}
Copy
GET /catalogs
This API call could list out the catalogs associated to a specific WABA.
Authentication
The Payload & Signed context are required in the header.
Request
Response
{
"ok": 1,
"data": [
{
"id": "1234577510532066",
"name": "test_products"
}
],
"paging": {
"hasPrevious": false,
"hasNext": false
}
}
Copy
GET /products
This API call could list out the products under a catalog associated to a specific WABA.
Authentication
The Payload & Signed context are required in the header.
Parameters
Name | Type | Description | Required |
---|
catalogId | string | ID of the catalog | true |
Request
Response
{
"ok": 1,
"data": [
{
"name": "Test Product 1",
"price": "HK$900.00",
"image_url": "IMAGE_URL_1",
"retailer_id": "a6y7a9y6f0",
"id": "25233996219581593"
},
{
"name": "Test Product 2",
"price": "HK$2,000.00",
"image_url": "IMAGE_URL_2",
"retailer_id": "yu7q27pbg1",
"id": "7887884911230830"
}
],
"paging": {
"cursors": {
"before": "QVFIUjNtVGtsNzNVRF9sTlhla2JOLVhzUGtlbGdSUURvRDFzelB2MVQwZAHpCb3NieHZAvbXhwZADVud09hZA1pwQVhNMHk4NkNwOEw2ZAEt4MFNpZAk4tR05YVTZAB",
"after": "QVFIUmRwOElZAeHVsWHhiUmk2WlJWcTdnY181UTUzUmx0NEpiSDAzSGdJcHFZALURQSXdmSFZALWHI0ekwyMkx1dU4tXzZAXQnppWjc5MTVWZAmNtb0oyOU9KcEhB"
},
"hasPrevious": false,
"hasNext": false
}
}
Copy
Message Template APIs
GET /whatsapp-message-templates
This API call could list out the WhatsApp message templates of a specific WABA with pagination and optional filters.
Parameters
Name | Type | Description | Required |
---|
wabaId | string | Target WABA ID | true |
first | integer | Number of messages templates; maximum 100 | true |
after | string | Cursor for getting pagination result of the next page; either "after" or "before" should be specified | false |
before | string | Cursor for getting pagination result of the previous page. Either "after" or "before" should be specified | false |
status | string | Array of status to filter out; defaults to: ["APPROVED"] , ["PENDING"] , ["REJECTED"] , ["PENDING_DELETION"] , ["DELETED"] if not specified | false |
category | string | Category of the message template: ["TRANSACTIONAL"] , ["MARKETING"] or ["OTP"] | false |
quality_score | String | Quality rating of the template: GREEN , YELLOW or RED | false |
language | array | Language of message template; must be in array and in the supported language code such as en_US , es . | false |
name | string | Name search of the message template | false |
content | Content | Content search of the message template | false |
name or content | string | Name or content search of the message templates | false |
Request
curl --location --request GET '/whatsapp-message-templates?accessToken=${ACCESS_TOKEN}&wabaId=${WABA_ID}&first=10&after=MAZDZD&status=["APPROVED"]'
Copy
Response
"ok": 1,
"data": [
{
"id": "363730401994967",
"name": "sample_flight_confirmation",
"category": "TICKET_UPDATE",
"languages": [
"pt_BR",
"es",
"id",
"en_US"
],
"statuses": [
{
"language": "pt_BR",
"status": "APPROVED"
},
{
"language": "es",
"status": "APPROVED"
},
{
"language": "id",
"status": "APPROVED"
},
{
"language": "en_US",
"status": "APPROVED"
}
],
"templates": [
{
"language": "pt_BR",
"status": "APPROVED",
"rejected_reason": "NONE",
"components": [
{
"type": "HEADER",
"format": "DOCUMENT"
},
{
"type": "BODY",
"text": "Esta é a sua confirmação de voo para {{1}}-{{2}} em {{3}}."
},
{
"type": "FOOTER",
"text": "Esta mensagem é de uma empresa não verificada."
}
],
"quality_score": {
"score": "UNKNOWN"
}
},
{
"language": "es",
"status": "APPROVED",
"rejected_reason": "NONE",
"components": [
{
"type": "HEADER",
"format": "DOCUMENT"
},
{
"type": "BODY",
"text": "Confirmamos tu vuelo a {{1}}-{{2}} para el {{3}}."
},
{
"type": "FOOTER",
"text": "Este mensaje proviene de un negocio no verificado."
}
],
"quality_score": {
"score": "UNKNOWN"
}
},
{
"language": "id",
"status": "APPROVED",
"rejected_reason": "NONE",
"components": [
{
"type": "HEADER",
"format": "DOCUMENT"
},
{
"type": "BODY",
"text": "Ini merupakan konfirmasi penerbangan Anda untuk {{1}}-{{2}} di {{3}}."
},
{
"type": "FOOTER",
"text": "Pesan ini berasal dari bisnis yang tidak terverifikasi."
}
],
"quality_score": {
"score": "UNKNOWN"
}
},
{
"language": "en_US",
"status": "APPROVED",
"rejected_reason": "NONE",
"components": [
{
"type": "HEADER",
"format": "DOCUMENT"
},
{
"type": "BODY",
"text": "This is your flight confirmation for {{1}}-{{2}} on {{3}}."
},
{
"type": "FOOTER",
"text": "This message is from an unverified business."
}
],
"quality_score": {
"score": "UNKNOWN"
}
}
]
}
],
"paging": {
"cursors": {
"before": "MAZDZD",
"after": "MAZDZD"
},
"hasNext": true,
"hasPrevious": false
}
}
Copy
PUT /whatsapp-message-template
This API call could create a brand new WhatsApp message template.
Each WhatsApp Business account is allowed to create 100 message templates per hour.
Parameters
Name | Type | Description | Required |
---|
wabaId | string | WABA ID | true |
accessToken | string | Access token generated from the WhatsApp Cloud channel | true |
name | string | Name of the message template | true |
language | string | Language of the message template | true |
category | string | Category of the message template: TRANSACTIONAL , MARKETING or OTP | true |
components | array | Content of the message template. Please refer to here for the structure of the component. | true |
By inserting the image URL into "example":{"header_handle":["IMAGE_URL"]}
, this API will automatically upload the example while creating the message template for you.
Endpoint
Request Body
Sample Request (Image Header)
{
"wabaId": "190787529545503",
"accessToken": "ACCESS_TOKEN",
"name": "test_template",
"language": "en_US",
"category": "MARKETING"
"components": [
{
"type": "BODY",
"text": "Hi there! Are you interested in our latest promotional sale?"
},
{
"type": "HEADER",
"format": "IMAGE",
"example":{"header_handle":["IMAGE_URL"]}
}
]
}
Copy
Sample Request (Parameters, Footer and Call to Actions Buttons)
{
"wabaId": "190787529545503",
"accessToken": "ACCESS_TOKEN",
"name": "test_template",
"language": "en_US",
"category": "MARKETING"
"components": [
{
"type": "BODY",
"text": "hello {{1}} this is body template",
"example":{"body_text":[["Test"]]}
},
{
"type": "FOOTER",
"text": "this is footer template"
},
{
"type": "BUTTONS",
"buttons": [
{
"type": "PHONE_NUMBER",
"text": "Call",
"phone_number":"+85212769072"
},
{
"type": "URL",
"text": "URL",
"url":"https://www.woztell.com/"
}
]
}
]
}
Copy
Sample Request (Parameters and Quick Reply Buttons)
{
"wabaId": "190787529545503",
"accessToken": "ACCESS_TOKEN",
"name": "test_template",
"language": "en_US",
"category": "MARKETING"
"components": [
{
"type": "BODY",
"text": "hello {{1}} this is body template",
"example":{
"body_text":[["Test"]]
}
},
{
"type": "BUTTONS",
"buttons": [
{
"type": "QUICK_REPLY",
"text": "yes"
},
{
"type": "QUICK_REPLY",
"text": "no"
}
]
}
]
}
Copy
Response
{
"ok": 1,
"id": "516723536625510",
"language": "en_US"
}
Copy
PATCH /whatsapp-message-template
This API call could edit an existing message template.
A message template can only be edited once in a 24 hour window, and up to 10 times in a 30 day window.
Parameters
Name | Type | Description | Required |
---|
wabaId | string | WABA ID | true |
accessToken | string | Access token generated from the WhatsApp Cloud channel | true |
messageTemplateName | string | Name of the message template | true |
messageTemplateLanguage | string | Language of the message template | true |
messageTemplateId | string | Unique ID of the message template | true |
components | array | Content to be updated to the message template | true |
NOTES
Each language version of a message template has its own ID. In order edit a message template with PATCH /whatsapp-message-templates
, you will need to specify the language version of the template.
Normally, GET /whatsapp-message-templates
will only return the ID of the most recent language. Therefore, you should first obtain the ID of a particular language by applying the language filter in GET /whatsapp-message-templates
.
Endpoint
Request Body
{
"wabaId": "12986521265530",
"accessToken": "ACCESS_TOKEN",
"messageTemplateLanguage": "en_US",
"messageTemplateName": "test_template",
"messageTemplateId": "1748340935544945",
"components": [
{
"type": "BODY",
"text": "Winter's coming, it's time to check out our latest winter collection!"
}
]
}
Copy
Response
{
"ok": 1,
"success": true
}
Copy
DEL /whatsapp-message-template
This API call could delete an existing message template.
Parameters
Name | Type | Description | Required |
---|
wabaId | string | WABA ID | true |
accessToken | string | Access token generated from the WhatsApp Cloud channel | true |
name | string | Name of the message template | true |
Endpoint
Request Body
{
"wabaId": "12986521265530",
"accessToken": "ACCESS_TOKEN",
"name": "test_template"
}
Copy
Response
{
"ok": 1,
"success": true
}
Copy
Flow APIs
GET /flow
This API is for retrieving the list of flows.
Authentication
The Payload & Signed context are required in the header.
Parameters
Name | Type | Description | Required |
---|
limit | integer | Number of flows to get | true |
after | string | For getting next batch of threads, can be obtained from paging.cursors in the response | No |
before | string | For getting next batch of threads, can be obtained from paging.cursors in the response | No |
Request
Response
{
"ok": 1,
"data": [
{
"label": "TEST FLOW (DRAFT)",
"value": "885692686603466",
"status": "draft",
"assets": [
{
"id": "SIGN_UP",
"label": "Customer Success (SIGN_UP)",
"data": "{}",
"preview": {
"preview_url": "https://business.facebook.com/wa/manage/flows/885692686603466/preview/?token=abdfac6c-1319-4a01-a896-d26482f44659",
"expires_at": "2024-03-08T04:52:37+0000"
}
}
],
"triggerMatchingObject": null
}
],
"paging": {
"cursors": {
"before": "QVFIUnJEbERTSFN1TEM5THFDdkJYNjExaF9xSUxjNjVGazJUWHBWTWV3Ukx0V2JQSFlMYmRzT0RXanpMeUVnd1VnSUlnQVBkamVyNkQ5dW9Ocm5YNVpoY2VR",
"after": "QVFIUnJEbERTSFN1TEM5THFDdkJYNjExaF9xSUxjNjVGazJUWHBWTWV3Ukx0V2JQSFlMYmRzT0RXanpMeUVnd1VnSUlnQVBkamVyNkQ5dW9Ocm5YNVpoY2VR"
},
"hasNext": false,
"hasPrevious": false
}
}
Copy
GET /flow-screen-payload
This API is for retrieving the flow screen payload of a flow.
Authentication
The Payload & Signed context are required in the header.
Parameters
Name | Type | Description | Required |
---|
flowId | string | The unique ID of a flow. | true |
Request
Response
{
"ok": 1,
"payload": {
"id": "screen_with_data",
"label": "Feedback With Data (screen_with_data)",
"data": "{\n \"would_recommend\": \"\",\n \"how_to_do_better\": \"\"\n}",
"screens": [
{
"id": "screen_with_data",
"label": "Feedback With Data (screen_with_data)",
"data": "{\n \"would_recommend\": \"\",\n \"how_to_do_better\": \"\"\n}",
"preview": {
"preview_url": "https://business.facebook.com/wa/manage/flows/1332875717353551/preview/?token=ed47bb0a-f749-4a0f-87f3-889f003b53ed",
"expires_at": "2024-03-06T03:56:10+0000"
}
}
]
}
}
Copy
GET /flow-preview
This API is for retrieving teh URL to the preview of a flow.
Authentication
The Payload & Signed context are required in the header.
Parameters
Name | Type | Description | Required |
---|
flowId | string | The unique ID of a flow. | true |
Request
Response
GET /flow-detail
This API is for retrieving the details of a flow.
Authentication
The Payload & Signed context are required in the header.
Parameters
Name | Type | Description | Required |
---|
flowId | string | The unique ID of a flow. | true |
Request
Response
{
"ok": 1,
"id": "678952344393952",
"name": "Test Flow 2",
"categories": [
"OTHER"
],
"preview": {
"preview_url": "https://business.facebook.com/wa/manage/flows/678952344393952/preview/?token=90fd19f9-edf7-4a6a-8fea-8da4cbb687f7",
"expires_at": "2024-03-06T07:39:50+0000"
},
"status": "DRAFT",
"validation_errors": [],
"json_version": "3.1",
"whatsapp_business_account": {
"id": "619018099309339",
"name": "Test Group Limited (UAT)",
"currency": "USD",
"timezone_id": "42",
"message_template_namespace": "a02e2441_69dd_4ea2_a90b_4aca392f0afa"
},
"application": {
"link": "https://platform.woztell.com/",
"name": "Woztell",
"id": "689996742158814"
}
}
Copy
PUT /create-flow
This API is for creating a new flow.
Authentication
The Payload & Signed context are required in the header.
Parameters
Name | Type | Description | Required |
---|
name | string | Name of the new flow. | true |
categories | array | A list of Flow categories. Multiple values are possible, but at least one is required: SIGN_UP , SIGN_IN , APPOINTMENT_BOOKING , LEAD_GENERATION , CONTACT_US , CUSTOMER_SUPPORT , SURVEY , OTHER | true |
clone_flow_id | string | ID of the flow to be cloned from | false |
endpoint_url | string | The URL of the flow endpoint. Do not provide this field if you are cloning a Flow with Flow JSON version below 3.0. | false |
Endpoint
Request Body
Response
{
"ok": 1,
"id": "1557286081777970"
}
Copy
This API is for updating the metadata of a flow.
Authentication
The Payload & Signed context are required in the header.
Parameters
Name | Type | Description | Required |
---|
flowId | string | ID of the flow that is being updated | true |
name | string | New name of the flow | false |
categories | array | New categories of the flow | false |
endpoint_url | string | The URL of the WA Flow Endpoint. Do not provide this field if you are updating a Flow with Flow JSON version below 3.0 | false |
Endpoint
Request Body
Response
{
"ok": 1,
"success": true
}
Copy
PATCH /flow-json
This API is for updating the JSON of a flow.
Authentication
The Payload & Signed context are required in the header.
Parameters
Name | Type | Description | Required |
---|
name | string | Name of the flow | true |
version | string | Flow JSON version | true |
screens | JSON | The screens of the flow that can be input in the flow builder in WhatsApp Manager | true |
Endpoint
Request Body
{
"flowId": "910367050421850",
"data": {
"version": "3.1",
"screens": [
{
"id": "PREFERENCES",
"title": "Update Preferences",
"data": {},
"terminal": true,
"layout": {
"type": "SingleColumnLayout",
"children": [
{
"type": "Form",
"name": "form",
"children": [
{
"type": "CheckboxGroup",
"label": "Communication types",
"required": true,
"name": "communicationTypes",
"data-source": [
{
"id": "0",
"title": "Special offers and promotions"
},
{
"id": "1",
"title": "Changes to my subscription"
},
{
"id": "2",
"title": "News and events"
},
{
"id": "3",
"title": "New products"
}
]
},
{
"type": "CheckboxGroup",
"label": "Contact Preferences",
"required": false,
"name": "contactPrefs",
"data-source": [
{
"id": "0",
"title": "Whatsapp"
},
{
"id": "1",
"title": "Email"
},
{
"id": "2",
"title": "SMS"
}
]
},
{
"type": "Footer",
"label": "Done",
"on-click-action": {
"name": "complete",
"payload": {
"communicationTypes": "${form.communicationTypes}",
"contactPrefs": "${form.contactPrefs}"
}
}
}
]
}
]
}
}
]
}
}
Copy
Response
{
"ok": 1,
"success": true,
"validation_errors": []
}
Copy
DEL /flow
This API is for deleting a flow.
Authentication
The Payload & Signed context are required in the header.
Parameters
Name | Type | Description | Required |
---|
flowId | string | ID of the flow to be deleted | true |
Endpoint
Request Body
{
"flowId": "913687770028833"
}
Copy
Response
{
"ok": 1,
"success": true
}
Copy
POST /publish-flow
This API is for publishing a flow.
Authentication
The Payload & Signed context are required in the header.
Parameters
Name | Type | Description | Required |
---|
flowId | string | ID of the flow to be published | true |
Endpoint
Request Body
{
"flowId": "913687770028833"
}
Copy
Response
{
"ok": 1,
"success": true
}
Copy
POST /deprecate-flow
This API is for deprecating a flow.
Authentication
The Payload & Signed context are required in the header.
Parameters
Name | Type | Description | Required |
---|
flowId | string | ID of the flow to be deprecated | true |
Endpoint
Request Body
{
"flowId": "913687770028833"
}
Copy
Response
{
"ok": 1,
"success": true
}
Copy
Business Encryption APIs
POST /whatsapp-business-encryption
This API is for setting the business public key.
Authentication
The Payload & Signed context are required in the header.
Parameters
Name | Type | Description | Required |
---|
publicKey | string | 2048-bit RSA business public key generated. Please refer to here for how to generate the public key | true |
Endpoint
Request Body
{
"publicKey": "-----BEGIN PUBLIC KEY-----\nABCDIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAls1409DedWXmHnt0Pb6s\nIdGkL6pFXxd5vPxrk/CChQssCGLK7jEPQwzhAZ/La7Cg/IvxjxvgC8DD3v8ZniU7\nHu5xPftKm3rEvNRwstRHaoPF+CNxHzHMy2DkgdVxvnBI6qtEjn+yZXdEOHhGHejH\nEf0EfFSMoyCaXea4E3LqvOE8iJ42uNtC7D4TmyeE+dTKudclswNA3QDA0zLH1M+Y\n9Oxv06FgD9S8gmvSwJgn3hfwLc/j5Dj5Qr6NAd9dRMQGLGeFEbg/JJXAVaAAxFlb\nvITHRG1ynRZDcrAri377Z+HS8G43o3TmrPyD0zRXQFbHCu+kOH5DBs3yFRcFjA7L\nwQIDAQAB\n-----END PUBLIC KEY-----"
}
Copy
Response
GET /whatsapp-business-encryption
This API is for retrieving the business public key.
Authentication
The Payload & Signed context are required in the header.
Request
Response
{
"ok": 1,
"data": [
{
"business_public_key": "-----BEGIN PUBLIC KEY-----\nABCDIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAls1409DedWXmHnt0Pb6s\nIdGkL6pFXxd5vPxrk/CChQssCGLK7jEPQwzhAZ/La7Cg/IvxjxvgC8DD3v8ZniU7\nHu5xPftKm3rEvNRwstRHaoPF+CNxHzHMy2DkgdVxvnBI6qtEjn+yZXdEOHhGHejH\nEf0EfFSMoyCaXea4E3LqvOE8iJ42uNtC7D4TmyeE+dTKudclswNA3QDA0zLH1M+Y\n9Oxv06FgD9S8gmvSwJgn3hfwLc/j5Dj5Qr6NAd9dRMQGLGeFEbg/JJXAVaAAxFlb\nvITHRG1ynRZDcrAri377Z+HS8G43o3TmrPyD0zRXQFbHCu+kOH5DBs3yFRcFjA7L\nwQIDAQAB\n-----END PUBLIC KEY-----",
"business_public_key_signature_status": "VALID"
}
]
}
Copy