curl --request POST \
--url https://api.jelou.ai/v1/hsm/file \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"campaignName": "<string>",
"elementName": "<string>",
"botId": "<string>",
"params": [
{
"param": 123,
"column": "<string>"
}
],
"type": "text",
"mediaUrl": "<string>",
"fileUrl": "<string>",
"buttonPayloads": [
{}
],
"actions": {},
"scheduledAt": "2023-11-07T05:31:56Z"
}
'{
"message": [
"<string>"
],
"status": "<string>"
}Envía plantillas de forma masiva a múltiples destinatarios y consulta el estado de tus campañas
curl --request POST \
--url https://api.jelou.ai/v1/hsm/file \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"campaignName": "<string>",
"elementName": "<string>",
"botId": "<string>",
"params": [
{
"param": 123,
"column": "<string>"
}
],
"type": "text",
"mediaUrl": "<string>",
"fileUrl": "<string>",
"buttonPayloads": [
{}
],
"actions": {},
"scheduledAt": "2023-11-07T05:31:56Z"
}
'{
"message": [
"<string>"
],
"status": "<string>"
}.CSV.
!, $, %, &, *, etc.)._) si es necesario.phone_number, customer_name, order_amount
Incorrecto: phone number, customer-name!, order#amount
+ (por ejemplo, para un número en Ecuador, escribe PHONE_NUMBER).
Tu pedido {{1}} por un total de {{2}} está confirmado. La entrega esperada es {{3}}.
| phone_number | param_1 | param_2 | param_3 |
|---|---|---|---|
| PHONE_NUMBER | A12345 | $250.00 | 1 de diciembre |
| PHONE_NUMBER_2 | B67890 | $100.50 | 2 de diciembre |
| PHONE_NUMBER_3 | C22345 | $50.00 | 3 de diciembre |
POST https://api.jelou.ai/v1/hsm/file
multipart/form-data.
| Propiedad | Tipo | Descripción | Requerido |
|---|---|---|---|
| campaignName | string | Nombre asignado a la campaña que se está enviando. | Sí |
| elementName | string | Nombre de la plantilla. Debe tener estado aprobado por WhatsApp. | Sí |
| botId | string | Identificador único del bot que envía la plantilla. | Sí |
| params | array | Arreglo de objetos con el número de parámetro y la columna correspondiente del CSV. Si la plantilla no tiene parámetros, el arreglo debe estar vacío. | Sí |
| type | string | Tipo de plantilla: text, image, document, video. Por defecto es text. | No |
| mediaUrl | string | URL pública del archivo multimedia. Necesario para plantillas de imagen, video o documento. | Condicional |
| fileUrl | string | URL pública del archivo CSV. Requerido si no se sube el archivo directamente. | Condicional |
| file | file | Archivo CSV adjunto. Requerido si no se usa fileUrl. | Condicional |
| buttonPayloads | array | Arreglo de objetos para botones de respuesta rápida con skills. | No |
| actions | object | Acciones relacionadas con la plantilla. | No |
| scheduledAt | date | Fecha y hora en UTC cuando se enviará la campaña. | No |
Envío desde URL pública (JSON)
curl --request POST \
--url https://api.jelou.ai/v1/hsm/file \
--header 'Authorization: Basic {{Base64EncodedUsername:Password}}' \
--header 'Content-Type: application/json' \
--data '{
"campaignName": "campaign_name",
"botId": "BOT_ID",
"elementName": "ELEMENT_NAME",
"params": [
{"param": 1, "column": "customer_name"}
],
"mediaUrl": "https://cdn.ejemplo.com/imagen.png",
"type": "image",
"fileUrl": "https://cdn.ejemplo.com/campana.csv",
"buttonPayloads": [
{"type": "edge", "action": "Yes", "skillId": "1"}
]
}'
Envío con archivo adjunto (multipart/form-data)
curl --request POST \
--url https://api.jelou.ai/v1/hsm/file \
--header 'Authorization: Basic {{Base64EncodedUsername:Password}}' \
--form campaignName=campaign_name \
--form botId=BOT_ID \
--form elementName=ELEMENT_NAME \
--form 'buttonPayloads=[{"type":"edge","action":"Yes","skillId":"1"},{"type":"edge","action":"Reschedule","skillId":"2"},{"type":"edge","action":"Cancel","skillId":"3"}]' \
--form file=@/ruta/local/campana.csv \
--form 'params=[]'
200 - Respuesta exitosa
{
"message": ["Campaign has been created."],
"status": "success"
}
400 - Bad Request
{
"message": ["Invalid CSV format"],
"status": "failed"
}
401 - Unauthorized
{
"message": "Authentication failed"
}
422 - Unprocessable Entity
{
"message": ["Template not found or not approved"],
"status": "failed"
}
params es un objeto que contiene:
[
{"param": 1, "column": "customer_name"},
{"param": 2, "column": "order_amount"}
]
[
{"type": "edge", "action": "Yes", "skillId": "1"},
{"type": "edge", "action": "Reschedule", "skillId": "2"},
{"type": "edge", "action": "Cancel", "skillId": "3"}
]
Basic authentication using Base64 encoded clientId:clientSecret
Was this page helpful?