curl --request POST \
--url https://api.jelou.ai/v2/whatsapp/{botId}/hsm \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"elementName": "<string>",
"destinations": [
"<string>"
],
"mediaUrl": "<string>",
"filename": "<string>",
"type": "text",
"language": "en",
"parameters": [
"<string>"
],
"buttonPayloads": [
{}
],
"actions": {},
"headerParameters": [
"<string>"
],
"buttonParameters": [
{
"type": "URL",
"payload": {},
"param": 123
}
],
"ltoParams": {
"expirationTime": 123
},
"cards": [
{
"mediaUrl": "<string>",
"params": [
"<string>"
],
"buttonParameters": [
{
"type": "URL",
"payload": {},
"param": 123
}
]
}
],
"expirationTime": "<string>",
"campaignId": "<string>"
}
'[
{
"id": "<string>",
"destination": "<string>"
}
]Envie mensagens HSM personalizadas para destinatários individuais usando a API WhatsApp
curl --request POST \
--url https://api.jelou.ai/v2/whatsapp/{botId}/hsm \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"elementName": "<string>",
"destinations": [
"<string>"
],
"mediaUrl": "<string>",
"filename": "<string>",
"type": "text",
"language": "en",
"parameters": [
"<string>"
],
"buttonPayloads": [
{}
],
"actions": {},
"headerParameters": [
"<string>"
],
"buttonParameters": [
{
"type": "URL",
"payload": {},
"param": 123
}
],
"ltoParams": {
"expirationTime": 123
},
"cards": [
{
"mediaUrl": "<string>",
"params": [
"<string>"
],
"buttonParameters": [
{
"type": "URL",
"payload": {},
"param": 123
}
]
}
],
"expirationTime": "<string>",
"campaignId": "<string>"
}
'[
{
"id": "<string>",
"destination": "<string>"
}
]POST https://api.jelou.ai/v2/whatsapp/{botId}/hsm
type): Define o tipo de template a ser enviado.| Propriedade | Tipo | Descrição | Obrigatório |
|---|---|---|---|
| mediaUrl | string | URL pública do arquivo de mídia. Obrigatório se o seu template for do tipo vídeo, imagem ou documento. | Condicional |
| filename | string | Nome do arquivo para templates do tipo documento. | Condicional |
| type | string | Tipo de mensagem: text, hsm, image, document, video, catalog, carousel. Padrão é text. | Não |
| language | string | Idioma do template: en, es, pt | Não |
| elementName | string | Nome do template aprovado. | Sim |
| parameters | array | Conjunto de strings que substituem valores no template. | Sim |
| destinations | array | Lista de números de telefone. Formato numérico com código do país, sem + ou espaços. | Sim |
| buttonPayloads | array | Informações para botões de resposta rápida. | Não |
| actions | object | Configuração e ações do template em formato de payload. | Não |
| headerParameters | array | Parâmetro de cabeçalho, máximo 1 parâmetro. | Não |
| thumbnailProduct | string | URL da imagem em miniatura. Obrigatório para templates de catálogo. | Condicional |
| expirationTime | string | Tempo de expiração no formato timestamp (milissegundos). | Não |
| campaignId | string | Identificador único da campanha associada. | Não |
| buttonParameters | array | Configuração para todos os tipos de botão. | Não |
| ltoParams | object | Parâmetros de oferta por tempo limitado (LTO). | Não |
| cards | array | Cartões de conteúdo para templates de carrossel. | Não |
Mensagem de texto
curl --request POST \
--url 'https://api.jelou.ai/v2/whatsapp/BOT_ID/hsm' \
--header 'Authorization: Basic {{Base64EncodedUsername:Password}}' \
--header 'Content-Type: application/json' \
--data '{
"parameters": ["PARAMETER_1", "PARAMETER_2"],
"destinations": ["PHONE_NUMBER"],
"elementName": "ELEMENT_NAME"
}'
Mensagem com imagem
curl --request POST \
--url 'https://api.jelou.ai/v2/whatsapp/BOT_ID/hsm' \
--header 'Authorization: Basic {{Base64EncodedUsername:Password}}' \
--header 'Content-Type: application/json' \
--data '{
"parameters": ["PARAMETER_1", "PARAMETER_2"],
"mediaUrl": "https://cdn.example.com/image.jpeg",
"type": "image",
"destinations": ["PHONE_NUMBER"],
"elementName": "ELEMENT_NAME"
}'
Mensagem com vídeo
curl --request POST \
--url 'https://api.jelou.ai/v2/whatsapp/BOT_ID/hsm' \
--header 'Authorization: Basic {{Base64EncodedUsername:Password}}' \
--header 'Content-Type: application/json' \
--data '{
"parameters": ["PARAMETER_1", "PARAMETER_2"],
"mediaUrl": "https://cdn.example.com/video.mp4",
"type": "video",
"destinations": ["PHONE_NUMBER"],
"elementName": "ELEMENT_NAME"
}'
Mensagem com documento anexado
curl --request POST \
--url 'https://api.jelou.ai/v2/whatsapp/BOT_ID/hsm' \
--header 'Authorization: Basic {{Base64EncodedUsername:Password}}' \
--header 'Content-Type: application/json' \
--data '{
"parameters": ["PARAMETER_1"],
"mediaUrl": "https://cdn.example.com/document.pdf",
"type": "document",
"destinations": ["PHONE_NUMBER"],
"elementName": "ELEMENT_NAME"
}'
Mensagem de texto com botões de ação de URL estática
curl --request POST \
--url 'https://api.jelou.ai/v2/whatsapp/BOT_ID/hsm' \
--header 'Authorization: Basic {{Base64EncodedUsername:Password}}' \
--header 'Content-Type: application/json' \
--data '{
"parameters": ["PARAMETER_1"],
"destinations": ["PHONE_NUMBER"],
"elementName": "ELEMENT_NAME"
}'
Mensagem de texto com botões de ação de URL dinâmica
curl --request POST \
--url 'https://api.jelou.ai/v2/whatsapp/BOT_ID/hsm' \
--header 'Accept-Language: en' \
--header 'Authorization: Basic {{Base64EncodedUsername:Password}}' \
--header 'Content-Type: application/json' \
--data '{
"destinations": ["PHONE_NUMBER"],
"parameters": ["PARAMETER_1"],
"elementName": "ELEMENT_NAME",
"buttonParameters": [
{
"type": "URL",
"payload": {"param": "PARAM_URL"}
}
]
}'
Mensagem de texto com botões de Resposta Rápida
curl --request POST \
--url 'https://api.jelou.ai/v2/whatsapp/BOT_ID/hsm' \
--header 'Authorization: Basic {{Base64EncodedUsername:Password}}' \
--header 'Content-Type: application/json' \
--data '{
"elementName": "ELEMENT_NAME",
"language": "en",
"type": "text",
"parameters": ["param1", "param2"],
"destinations": ["PHONE_NUMBER"],
"buttonParameters": [
{
"type": "QUICK_REPLY",
"payload": {"type": "edge", "action": "BTN1", "skillId": "1"}
},
{
"type": "QUICK_REPLY",
"payload": {"type": "edge", "action": "BTN2", "skillId": "2"}
},
{
"type": "QUICK_REPLY",
"payload": {"type": "edge", "action": "BTN3", "skillId": "3"}
}
]
}'
Mensagem de texto personalizada com parâmetros de cabeçalho
curl --request POST \
--url 'https://api.jelou.ai/v2/whatsapp/BOT_ID/hsm' \
--header 'Authorization: Basic {{Base64EncodedUsername:Password}}' \
--header 'Content-Type: application/json' \
--data '{
"elementName": "ELEMENT_NAME",
"destinations": ["PHONE_NUMBER"],
"parameters": ["PARAMETER_1", "PARAMETER_2"],
"headerParameters": ["PARAMETER_VALUE"]
}'
Catálogo completo
curl --request POST \
--url 'https://api.jelou.ai/v2/whatsapp/BOT_ID/hsm' \
--header 'Authorization: Basic {{Base64EncodedUsername:Password}}' \
--header 'Content-Type: application/json' \
--data '{
"elementName": "ELEMENT_NAME",
"destinations": ["PHONE_NUMBER"],
"parameters": ["PARAMETER_1"],
"type": "catalog",
"buttonParameters": [
{
"type": "CATALOG",
"payload": {"thumbnailProduct": "productId"}
}
]
}'
LTO com botão de copiar código
curl --request POST \
--url 'https://api.jelou.ai/v2/whatsapp/BOT_ID/hsm' \
--header 'Authorization: Basic {{Base64EncodedUsername:Password}}' \
--header 'Content-Type: application/json' \
--data '{
"buttonOptions": {},
"elementName": "ELEMENT_NAME",
"destinations": ["PHONE_NUMBER"],
"parameters": ["PARAMETER_1", "PARAMETER_2"],
"type": "image",
"mediaUrl": "https://cdn.example.com/image.jpeg",
"ltoParams": {"expirationTime": 1733260800000},
"buttonParameters": [
{
"type": "COPY_CODE",
"param": 1,
"payload": {"param": "20OFF"}
}
]
}'
Autenticação
curl --request POST \
--url 'https://api.jelou.ai/v2/whatsapp/BOT_ID/hsm' \
--header 'Authorization: Basic {{Base64EncodedUsername:Password}}' \
--header 'Content-Type: application/json' \
--data '{
"buttonOptions": {},
"elementName": "ELEMENT_NAME",
"destinations": ["PHONE_NUMBER"],
"parameters": ["PARAMETER_1"],
"type": "hsm"
}'
Carrossel com 2 cartões
curl --request POST \
--url 'https://api.jelou.ai/v2/whatsapp/BOT_ID/hsm' \
--header 'Authorization: Basic {{Base64EncodedUsername:Password}}' \
--header 'Content-Type: application/json' \
--data '{
"elementName": "ELEMENT_NAME",
"destinations": ["PHONE_NUMBER"],
"parameters": [],
"type": "carousel",
"cards": [
{
"mediaUrl": "https://cdn.example.com/product1.jpg",
"params": ["PARAMETER_VALUE"],
"buttonParameters": [
{
"type": "QUICK_REPLY",
"payload": {"action": "Button 1", "type": "edge", "skillId": "45515", "cardIndex": 0}
}
]
},
{
"mediaUrl": "https://cdn.example.com/product2.jpg",
"params": ["PARAMETER_VALUE_1", "PARAMETER_VALUE_2"],
"buttonParameters": [
{
"type": "QUICK_REPLY",
"payload": {"action": "Button 2", "type": "edge", "skillId": "10192", "cardIndex": 1}
}
]
}
]
}'
+ deve ser omitido, o código do país deve ser incluído e apenas caracteres numéricos são permitidos. Traços ou espaços não são aceitos.
| ✅ Formato correto | ❌ Formato incorreto | ❌ Formato incorreto |
|---|---|---|
| PHONE_NUMBER | +PHONE_NUMBER | 09XXXXXXXX |
Button Payload
buttonPayloads quando o seu template incluir botões de resposta rápida usando skills; isso permitirá que você ative fluxos adicionais dentro da conversa com base na ação selecionada pelo usuário.[
{"type": "edge", "action": "Yes", "skillId": "1"},
{"type": "edge", "action": "Reschedule", "skillId": "2"},
{"type": "edge", "action": "Cancel", "skillId": "3"}
]
type, action e skillId. A chave action define o texto que aparecerá no botão, enquanto skillId indica o ID da skill que o botão ativará.Actions Payload
{
"actions": {
"setSkill": {"id": 2222}
}
}
{
"actions": {
"setMemoryParams": {
"url": "https://apps.jelou.ai"
}
}
}
setMemoryParams com seus respectivos campos chave-valor.
{
"actions": {
"setMemoryParams": {
"url": "https://apps.jelou.ai"
}
}
}
200 - Resposta bem-sucedida
[
{
"id": "msg-12345-67890-abcde-fghij-klmno",
"destination": "PHONE_NUMBER"
}
]
400 - Requisição Inválida
{
"message": ["Template does not exist"],
"status": "failed",
"_metadata": {
"error": {},
"body": {
"destinations": [{"destination": "PHONE_NUMBER"}],
"parameters": ["John", "example_value"],
"elementName": "sample_template",
"code": "en",
"type": "text",
"botId": "BOT_ID",
"botName": "Your Bot"
}
},
"error": {}
}
401 - Não Autorizado
{
"message": "Authentication failed"
}
404 - Não Encontrado
{
"message": ["The Bot could not be found at the moment."],
"statusMessage": "failed",
"status": 0,
"error": {
"code": "E1019",
"key": "BOT_NOT_FOUND",
"description": "Error to be thrown when trying to get a Bot.",
"developerMessages": {
"es": "El botId no se encuentra en la base de datos o ha sido eliminado.",
"en": "The botId is not found in the database or has been deleted."
},
"clientMessages": {
"es": "El Bot no se pudo encontrar por el momento.",
"en": "The Bot could not be found at the moment."
}
}
}
422 - Entidade não processável
{
"message": ["The values entered are not correct."],
"statusMessage": "failed",
"status": 0,
"error": {
"code": "E0422",
"key": "VALIDATOR_ERROR",
"description": "Error to be thrown when cannot process request because of incoming values",
"developerMessages": {
"es": "Los valores del request no son correctos para ser procesados.",
"en": "The request values are not correct for processing."
},
"clientMessages": {
"es": "Los valores ingresados no son correctos.",
"en": "The values entered are not correct."
}
},
"validationError": {
"parameters": [
{
"en": "The number of parameters is incorrect.",
"es": "El número de parámetros es incorrecto."
}
]
}
}
500 - Erro Interno do Servidor
{
"message": ["We are having trouble processing your request. Please try again later."],
"statusMessage": "failed",
"status": 0,
"error": {
"code": "E0000",
"key": "UNKNOWN_ERROR",
"description": "Error to be thrown when it couldn't be determined the reason of failure",
"developerMessages": {
"es": "Error inesperado occurido, revisar logs.",
"en": "Unexpected error occurred, check logs."
},
"clientMessages": {
"es": "Estamos teniendo problemas procesando la solicitud. Por favor intenta mas tarde.",
"en": "We are having trouble processing your request. Please try again later."
}
}
}
Quantos caracteres são permitidos?
.pdf.mp4.jpg, .jpeg, .pngComo a API é consumida?
curl --request POST \
--url 'https://api.jelou.ai/v2/whatsapp/BOT_ID/hsm' \
--header 'Accept-Language: en' \
--header 'Authorization: Basic {{Base64EncodedUsername:Password}}' \
--header 'Content-Type: application/json' \
--data '{
"destinations": ["PHONE_NUMBER"],
"parameters": [],
"elementName": "your_template_name"
}'
Basic authentication using Base64 encoded clientId:clientSecret
The unique identifier of the bot
Approved template name
Phone numbers with country code, no + sign
Public URL for media (required for image/video/document templates)
Filename for document templates
text, hsm, image, document, video, catalog, carousel en, es, pt Template parameter values
1Mostrar atributos filhos
Mostrar atributos filhos
Mostrar atributos filhos
Expiration timestamp in milliseconds
Esta página foi útil?