Exemplos de utilização de Simple promotional. A Simple API recebe os destinatários numa única string separada por ponto e vírgula - os grupos da agenda de contactos, os administradores e os canais alternativos só estão disponíveis na Advanced API.
Vários destinatários
number é uma string de números de telefone separados por ponto e vírgula; todos recebem o mesmo texto.
POST/api/1.0/simple/promotionalHTTP/1.1Host: portal.bulkgate.com
Content-Type: application/json
{"application_id": 451,
"application_token": "NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj",
"number": "420777777777;420606606234;420601992992",
"text": "Os saldos de primavera arrancam hoje, até 50 % de desconto."}
Remetente próprio e Unicode
gText envia a campanha a partir de um remetente de texto registado. Ative unicode sempre que o texto contiver caracteres fora do alfabeto de 7 bits - isso reduz a mensagem a 268 caracteres por parte.
country permite indicar números sem o indicativo internacional. schedule aceita ISO 8601 ou unix timestamp.
POST/api/1.0/simple/promotionalHTTP/1.1Host: portal.bulkgate.com
Content-Type: application/json
{"application_id": 451,
"application_token": "NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj",
"number": "777777777;606606234",
"country": "cz",
"text": "Os saldos de primavera arrancam hoje, até 50 % de desconto.",
"schedule": "2026-09-14T09:00:00+02:00"}
Proteção contra duplicados e etiqueta
same_text descarta uma mensagem com texto idêntico para um número que já a recebeu, same_number descarta qualquer outra mensagem para o mesmo número. tag etiqueta a campanha para posterior pesquisa.
POST/api/1.0/simple/promotionalHTTP/1.1Host: portal.bulkgate.com
Content-Type: application/json
{"application_id": 451,
"application_token": "NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj",
"number": "420777777777;420606606234;420601992992",
"text": "Os saldos de primavera arrancam hoje, até 50 % de desconto.",
"duplicates_check": "same_number",
"tag": "spring-sale"}
Abaixo encontra exemplos de implementação da Simple API para enviar mensagens SMS promocionais com um ID do remetente de texto em diferentes linguagens de programação:
# pip install requestsimport requests
response = requests.post('https://portal.bulkgate.com/api/1.0/simple/promotional', json={
'application_id': 451,
'application_token': 'NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj',
'number': '420777777777;420606606234;420601992992',
'text': 'Mensagem',
'sender_id': 'gText',
'sender_id_value': 'BulkGate',
}, timeout=30)
data = response.json()
# Uma resposta de erro tem a forma {type, code, error, detail} — consulte a tabela de tipos de erros.if'error'in data:
raise RuntimeError(f"BulkGate: {data['error']} ({data['type']})")
# Um envio em massa devolve um resultado para cada número separadamente.for message in data['data']['response']:
if message['status'] =='error':
print(message['number'], message['error'])
else:
print(message['number'], message['status'], message['sms_id'])
print('Resumo:', data['data']['total']['status'])
// O Node.js 18+ tem fetch disponível globalmente. O top-level await requer ESM (.mjs ou "type": "module").const response = awaitfetch('https://portal.bulkgate.com/api/1.0/simple/promotional', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
application_id: 451,
application_token: 'NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj',
number: '420777777777;420606606234;420601992992',
text: 'Mensagem',
sender_id: 'gText',
sender_id_value: 'BulkGate',
}),
});
const data = await response.json();
// Uma resposta de erro tem a forma {type, code, error, detail} — consulte a tabela de tipos de erros.if (!response.ok) {
thrownewError(`BulkGate: ${data.error} (${data.type})`);
}
// Um envio em massa devolve um resultado para cada número separadamente.for (const message of data.data.response) {
console.log(message.status === 'error'
? `${message.number}: ${message.error}`
: `${message.number}: ${message.status} (${message.sms_id})`);
}
console.log('Resumo:', data.data.total.status);