Introducción
La API de Integración Pública te permite consultar cierta información de tu Integración WhatsApp Cloud, o realizar ciertas acciones sin la necesidad de operar en la interfaz de la plataforma.
Punto de Acceso API
Por favor, utiliza la siguiente URL de Punto de Acceso para la API Pública:
https://api.whatsapp-cloud.woztell.sanuker.com/v1.2/api/
Autenticación
Token de Acceso WhatsApp Cloud
El token de acceso del canal WhatsApp Cloud puede aplicarse a las APIs públicas excepto a la GET /conversation-analytics
, APIs de Encriptación Empresarial y APIs de Flujos.
- En "Configuración" -> "Canales", haz clic en "Editar" para ingresar al canal WhatsApp Cloud correspondiente.
- En "Plataforma", dirígete a "Acceso Avanzado".
- Haz clic en "Generar" para crear el token de acceso.
- El token de acceso ha sido generado. Los tokens existentes pueden gestionarse en la sección siguiente.
- El token de acceso debe enviarse como parámetro de consulta accessToken, por ejemplo:
Carga Útil & Contexto Firmado
Este método de autenticación solo puede aplicarse a GET /conversation-analytics
, GET /whatsapp-displayname-status
, APIs de Encriptación Empresarial y APIs de Flujos.
Para realizar la autenticación en la API de Integración Pública, es necesario utilizar la correspondiente Carga Útil y Contexto Firmado que requiere la integración.
- Carga Útil:
{"app":"appId","appIntegration":"appIntegrationId","channel":"channelId"}
- Contexto Firmado:
(firma).{{base64(JSON.stringify(payload))}}
- Obtén la información relacionada con el canal WhatsApp Cloud correspondiente consultando el
canal
con Open API.
Solicitud:
query {
apiViewer{
channel(channelId:"696327315430a1f98231dfde"){
appId
environment(envId:"7lQNjrXbDO"){
info
integration{
integrationId
}
appIntegrationSignature
}
}
}
}
Copiar
Respuesta:
{
"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="
}
}
}
}
}
Copiar
Crea la Carga Útil con el siguiente formato:
{"app":"appId","appIntegration":"appIntegrationId","channel":"channelId"}
Ejemplo de Carga Útil:
{"app":"699802d69a73fc555f1c6bc4","appIntegration":"696327325430a1cbd131dfdf","channel":"696327315430a1f98231dfde"}
Copiar
-
Codifica la Carga Útil en formato Base64
Combina la Carga Útil codificada y la Firma para crear el Contexto Firmado con el siguiente formato:
(firma).{{base64(JSON.stringify(payload))}}
Ejemplo de Contexto Firmado
WAIBCzM6tnzboIwkEPAVVyaVq7VGaIKBaQ/Q+gP6qdA=.eyJhcHAiOiI2MjA2MmMwYjcxNzE5NTMyMDE5MmIxOGY3IiwiYXBwSW50ZWdyYXRpb24iOiI2NDIwZmlnMjhlNjViNDY2ZDQ2MDdlYTIiLCJjaGFubmVsIjoiNzIxZjMyYWM0ZTEyMzYzZGUxMjBkMjlkIg==
Copiar
- Agrégalos en el encabezado como
X-Woztell-Payload
y X-Woztell-SignedContext
.
APIs Generales
GET /waba-info
Esta llamada a la API puede obtener información relacionada con WABA incluyendo nombre WABA, número de teléfono, namespace WABA, ID WABA de un canal.
Parámetros
Nombre |
Tipo |
Descripción |
Requerido |
accessToken |
cadena |
Token de acceso generado desde el canal WhatsApp Cloud |
sí |
channelId |
cadena |
ID del canal |
este o wabaID |
wabaId |
cadena |
ID WABA |
este o channelId |
Solicitud
curl --location --request GET '/waba-info?accessToken=${ACCESS_TOKEN}&channelId=${CHANNEL_ID}'
Copiar
o
curl --location --request GET '/waba-info?accessToken=${ACCESS_TOKEN}&wabaId=${WABA_ID}'
Copiar
Respuesta
{
"ok": 1,
"result": {
"waId" : "11111111111",
"phoneNumberId" : "123124123232",
"wabaId" : "422126422872292",
"name" : "Mi Negocio",
"phoneNumber" : "85212345678",
"phoneNumberCC" : "1",
"formattedPhoneNumber" : "+1 111-111-1111",
"namespace" : "2dwsa4_e24e_42f8_6b5a_110232ae4d5",
"embeddedSignup" : true
}
}
Copiar
GET /whatsapp-business-profile
Esta llamada a la API puede obtener el perfil comercial de un número de WhatsApp.
Parámetros
Nombre |
Tipo |
Descripción |
Requerido |
accessToken |
cadena |
Token de acceso generado desde el canal WhatsApp Cloud |
sí |
phoneNumberId |
cadena |
ID del número telefónico |
sí |
Solicitud
curl --location --request GET '/whatsapp-business-profile?accessToken=${ACCESS_TOKEN}&phoneNumberId=${PHONE_NUMBER_ID}'
Copiar
Respuesta
{
"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"
}
}
Copiar
GET /whatsapp-displayname-status
Esta llamada a la API es para obtener los detalles relacionados con el número de WhatsApp
Autenticación
El Payload y Contexto Firmado son requeridos en el encabezado.
Parámetros
Nombre |
Tipo |
Descripción |
Requerido |
accessToken |
cadena |
Token de acceso generado desde el canal WhatsApp Cloud |
sí |
phoneNumberId |
cadena |
ID del número telefónico |
sí |
Solicitud
Respuesta
{
"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"
}
}
Copiar
PATCH /whatsapp-business-profile
Esta llamada a la API puede actualizar el perfil comercial de un número de WhatsApp.
Parámetros
Nombre |
Tipo |
Descripción |
Requerido |
accessToken |
cadena |
Token de acceso generado desde el canal WhatsApp Cloud |
sí |
phoneNumberId |
cadena |
ID del número telefónico |
sí |
profile |
objeto |
Contenido a actualizar en el perfil comercial |
sí |
Objeto Perfil
Nombre |
Tipo |
Descripción |
Requerido |
messaging_product |
cadena |
Solo acepta whatsapp |
sí |
about |
cadena |
El texto "Acerca de" |
no |
address |
cadena |
La dirección de tu negocio |
no |
description |
cadena |
El texto "Descripción" |
no |
email |
cadena |
Correo electrónico de tu negocio |
no |
vertical |
cadena |
Industria del negocio, por favor consulta aquí para los valores aceptados |
no |
website |
arreglo |
URL(s) del(los) sitio(s) web de tu negocio incluyendo http:// o https:// ; máximo 2 sitios web. |
no |
profile_picture_url |
cadena |
URL de la imagen de perfil |
no |
Endpoint
Cuerpo de la Solicitud
{
"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"
}
}
Copiar
Respuesta
Esta llamada a la API podría subir un archivo multimedia al servidor de WhatsApp para obtener un ID de medio.
El archivo multimedia subido se mantendrá en el servidor WhatsApp Cloud por 30 días. Después de la expiración, los usuarios deberán subirlo nuevamente para obtener otro ID de medio.
Parámetros
Nombre |
Tipo |
Descripción |
Requerido |
phoneNumberId |
cadena |
ID del número telefónico |
sí |
accessToken |
cadena |
Token de acceso generado desde WhatsApp |
sí |
type |
cadena |
image , audio , video , file |
sí |
url |
cadena |
Enlace al archivo multimedia |
sí |
Endpoint
Cuerpo de la Solicitud
{
"phoneNumberId": "123164329653069",
"accessToken": "ACCESS_TOKEN",
"type": "image",
"url": "MEDIA_URL",
}
Copiar
Respuesta
{
"ok": 1,
"mediaId": "5770270532993662",
"fileType": "image"
}
Copiar
GET /conversation-analytics
Esta API es para obtener el análisis de conversaciones dentro del rango de fechas seleccionado.
Autenticación
El Payload y Contexto Firmado son requeridos en el encabezado.
Parámetros
Nombre |
Tipo |
Descripción |
Requerido |
from |
Timestamp UNIX |
Fecha de inicio para el rango de fechas objetivo |
Sí |
to |
Timestamp UNIX |
Fecha de fin para el rango de fechas objetivo |
Sí |
granularity |
cadena |
La granularidad con la que deseas obtener el análisis; HALF_HOUR , DAILY o MONTHLY |
Sí |
numbers |
arreglo |
Lista de números telefónicos para obtener el análisis |
No |
metric_types |
cadena |
Lista de métricas a obtener; COST y CONVERSATION |
No |
conversation_types |
cadena |
Lista de tipos de conversación; FREE_ENTRY_POINT , FREE_TIER , REGULAR y UNKNOWN |
No |
conversation_directions |
cadena |
Lista de direcciones para iniciar la conversación; business_initiated y user_initiated |
No |
dimensions |
cadena |
Lista de desgloses para aplicar al análisis; phone , country , conversation_type y conversation_reaction |
No |
Solicitud
Respuesta
{
"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
}
]
}
}
Copiar
GET /catalogs
Esta llamada a la API puede listar los catálogos asociados a un WABA específico.
Autenticación
El Payload y Contexto Firmado son requeridos en el encabezado.
Solicitud
Respuesta
{
"ok": 1,
"data": [
{
"id": "1234577510532066",
"name": "test_products"
}
],
"paging": {
"hasPrevious": false,
"hasNext": false
}
}
Copiar
GET /products
Esta llamada a la API puede listar los productos dentro de un catálogo asociado a un WABA específico.
Autenticación
El Payload y Contexto Firmado son requeridos en el encabezado.
Parámetros
Nombre |
Tipo |
Descripción |
Requerido |
catalogId |
cadena |
ID del catálogo |
sí |
Solicitud
Respuesta
{
"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
}
}
Copiar
APIs de Plantillas de Mensajes
GET /whatsapp-message-templates
Esta llamada a la API puede listar las plantillas de mensajes de WhatsApp de un WABA específico con paginación y filtros opcionales.
Parámetros
Nombre |
Tipo |
Descripción |
Requerido |
wabaId |
cadena |
ID del WABA objetivo |
sí |
first |
entero |
Número de plantillas de mensajes; máximo 100 |
sí |
after |
cadena |
Cursor para obtener el resultado de paginación de la página siguiente; se debe especificar "after" o "before" |
no |
before |
cadena |
Cursor para obtener el resultado de paginación de la página anterior; se debe especificar "after" o "before" |
no |
status |
cadena |
Arreglo de estados para filtrar; por defecto: ["APPROVED"] , ["PENDING"] , ["REJECTED"] , ["PENDING_DELETION"] , ["DELETED"] si no se especifica |
no |
category |
cadena |
Categoría de la plantilla de mensaje: ["TRANSACTIONAL"] , ["MARKETING"] o ["OTP"] |
no |
quality_score |
Cadena |
Calificación de calidad de la plantilla: GREEN , YELLOW o RED |
no |
language |
arreglo |
Idioma de la plantilla de mensaje; debe estar en arreglo y usar el código de idioma soportado, como en_US , es . |
no |
name |
cadena |
Búsqueda por nombre de la plantilla de mensaje |
no |
content |
Contenido |
Búsqueda por contenido de la plantilla de mensaje |
no |
name or content |
cadena |
Búsqueda por nombre o contenido de las plantillas de mensaje |
no |
Solicitud
curl --location --request GET '/whatsapp-message-templates?accessToken=${ACCESS_TOKEN}&wabaId=${WABA_ID}&first=10&after=MAZDZD&status=["APPROVED"]'
Copiar
Respuesta
"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
}
}
Copiar
PUT /whatsapp-message-template
Esta llamada a la API puede crear una nueva plantilla de mensaje de WhatsApp.
Cada cuenta de WhatsApp Business puede crear 100 plantillas de mensaje por hora.
Parámetros
Nombre |
Tipo |
Descripción |
Requerido |
wabaId |
cadena |
ID de WABA |
sí |
accessToken |
cadena |
Token de acceso generado desde el canal WhatsApp Cloud |
sí |
name |
cadena |
Nombre de la plantilla de mensaje |
sí |
language |
cadena |
Idioma de la plantilla de mensaje |
sí |
category |
cadena |
Categoría de la plantilla de mensaje: TRANSACTIONAL , MARKETING o OTP |
sí |
components |
arreglo |
Contenido de la plantilla de mensaje. Por favor, consulta aquí para la estructura del componente. |
sí |
Al insertar la URL de la imagen en "example":{"header_handle":["IMAGE_URL"]}
, esta API cargará automáticamente el ejemplo mientras crea la plantilla de mensaje para ti.
Endpoint
Cuerpo de la solicitud
Ejemplo de solicitud (Encabezado de imagen)
{
"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"]}
}
]
}
Copiar
Ejemplo de solicitud (Parámetros, Pie de página y Botones de llamada a la acción)
{
"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/"
}
]
}
]
}
Copiar
Ejemplo de solicitud (Parámetros y botones de respuesta rápida)
{
"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"
}
]
}
]
}
Copiar
Respuesta
{
"ok": 1,
"id": "516723536625510",
"language": "en_US"
}
Copiar
PATCH /whatsapp-message-template
Esta llamada a la API puede editar una plantilla de mensaje existente.
NOTA
Una plantilla de mensaje solo puede ser editada una vez en un período de 24 horas, y hasta 10 veces en un período de 30 días.
Parámetros
Nombre |
Tipo |
Descripción |
Requerido |
wabaId |
cadena |
ID de WABA |
sí |
accessToken |
cadena |
Token de acceso generado desde el canal WhatsApp Cloud |
sí |
messageTemplateName |
cadena |
Nombre de la plantilla de mensaje |
sí |
messageTemplateLanguage |
cadena |
Idioma de la plantilla de mensaje |
sí |
messageTemplateId |
cadena |
ID único de la plantilla de mensaje |
sí |
components |
arreglo |
Contenido para actualizar en la plantilla de mensaje |
sí |
NOTAS
Cada versión de idioma de una plantilla de mensaje tiene su propio ID. Para editar una plantilla con PATCH /whatsapp-message-templates
, deberás especificar la versión del idioma de la plantilla.
Normalmente, la llamada GET /whatsapp-message-templates
solo devuelve el ID del idioma más reciente. Por lo tanto, primero deberías obtener el ID de un idioma particular aplicando el filtro de idioma en GET /whatsapp-message-templates
.
Endpoint
Cuerpo de la solicitud
{
"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!"
}
]
}
Copiar
Respuesta
{
"ok": 1,
"success": true
}
Copiar
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
Cuerpo de la Solicitud
{
"wabaId": "12986521265530",
"accessToken": "ACCESS_TOKEN",
"name": "test_template"
}
Copy
Respuesta
{
"ok": 1,
"success": true
}
Copy
APIs de Fluxo
GET /flow
Esta API serve para recuperar a lista de fluxos.
Autenticação
O Payload & Signed context são necessários no cabeçalho.
Parâmetros
Nome |
Tipo |
Descrição |
Obrigatório |
limit |
inteiro |
Número de fluxos a obter |
sim |
after |
string |
Para obter o próximo lote de threads, pode ser obtido dos paging.cursors na resposta |
não |
before |
string |
Para obter o próximo lote de threads, pode ser obtido dos paging.cursors na resposta |
não |
Requisição
Resposta
{
"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
}
}
Copiar
GET /flow-screen-payload
Esta API serve para recuperar o payload da tela do fluxo.
Autenticação
O Payload & Signed context são necessários no cabeçalho.
Parâmetros
Nome |
Tipo |
Descrição |
Obrigatório |
flowId |
string |
ID único de um fluxo. |
sim |
Requisição
Resposta
{
"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"
}
}
]
}
}
Copiar
GET /flow-preview
Esta API é para recuperar a URL da pré-visualização de um fluxo.
Autenticação
O Payload & Contexto Assinado são necessários no cabeçalho.
Parâmetros
Nome |
Tipo |
Descrição |
Obrigatório |
flowId |
string |
O ID único de um fluxo. |
sim |
Requisição
Resposta
GET /flow-detail
Esta API é para recuperar os detalhes de um fluxo.
Autenticação
O Payload & Signed context são necessários no cabeçalho.
Parâmetros
Nome |
Tipo |
Descrição |
Obrigatório |
flowId |
string |
O ID único de um fluxo. |
sim |
Requisição
Resposta
{
"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"
}
}
Copiar
PUT /create-flow
Esta API é para criar um novo fluxo.
Autenticação
O Payload & Signed context são necessários no cabeçalho.
Parâmetros
Nome |
Tipo |
Descrição |
Obrigatório |
name |
string |
Nome do novo fluxo. |
sim |
categories |
array |
Uma lista de categorias de Fluxo. Múltiplos valores são possíveis, mas pelo menos um é obrigatório: SIGN_UP , SIGN_IN , APPOINTMENT_BOOKING , LEAD_GENERATION , CONTACT_US , CUSTOMER_SUPPORT , SURVEY , OTHER |
sim |
clone_flow_id |
string |
ID do fluxo para ser clonado |
não |
endpoint_url |
string |
A URL do endpoint do fluxo. Não forneça este campo se estiver clonando um Fluxo com versão JSON abaixo da 3.0. |
não |
Endpoint
Corpo da Requisição
Resposta
{
"ok": 1,
"id": "1557286081777970"
}
Copiar
PATCH /flow-json
Esta API é para atualizar o JSON de um fluxo.
Autenticação
O Payload & Signed context são necessários no cabeçalho.
Parâmetros
Nome |
Tipo |
Descrição |
Obrigatório |
name |
string |
Nome do fluxo |
sim |
version |
string |
Versão do JSON do fluxo |
sim |
screens |
JSON |
As telas do fluxo que podem ser inseridas no construtor de fluxo no WhatsApp Manager |
sim |
Endpoint
Corpo da Requisição
{
"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}"
}
}
}
]
}
]
}
}
]
}
}
Copiar
Response
{
"ok": 1,
"success": true,
"validation_errors": []
}
Copiar
DEL /flow
Esta API es para eliminar un flow.
Autenticación
El Payload & Signed context son requeridos en el encabezado.
Parámetros
Nombre |
Tipo |
Descripción |
Requerido |
flowId |
string |
ID del flow a eliminar |
true |
Endpoint
Cuerpo de la Solicitud
{
"flowId": "913687770028833"
}
Copiar
Respuesta
{
"ok": 1,
"success": true
}
Copiar
POST /publish-flow
Esta API es para publicar un flujo.
Autenticación
El Payload & Signed context son requeridos en el encabezado.
Parámetros
Nombre |
Tipo |
Descripción |
Requerido |
flowId |
string |
ID del flujo a publicar |
sí |
Endpoint
Cuerpo de la Solicitud
{
"flowId": "913687770028833"
}
Copiar
Respuesta
{
"ok": 1,
"success": true
}
Copiar
POST /deprecate-flow
Esta API sirve para descontinuar un flujo.
Autenticación
El Payload & Signed context son requeridos en el encabezado.
Parámetros
Nombre |
Tipo |
Descripción |
Requerido |
flowId |
string |
ID del flujo a descontinuar |
sí |
Endpoint
Cuerpo de la Solicitud
{
"flowId": "913687770028833"
}
Copiar
Respuesta
{
"ok": 1,
"success": true
}
Copiar
APIs de Encriptación para Negocios
POST /whatsapp-business-encryption
Esta API sirve para establecer la clave pública del negocio.
Autenticación
El Payload y el contexto firmado son requeridos en la cabecera.
Parámetros
Nombre |
Tipo |
Descripción |
Obligatorio |
publicKey |
string |
Clave pública RSA de 2048 bits generada para el negocio. Por favor, consulta aquí para saber cómo generar la clave pública. |
sí |
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
Esta API es para obtener la clave pública del negocio.
Autenticación
El Payload y contexto firmado son requeridos en el encabezado.
Solicitud
Respuesta
{
"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"
}
]
}
Copiar