API Call Blasting

Esta API permite criar campanhas de chamadas automáticas em massa.

O que esta API faz

Permite criar campanhas de chamadas automáticas (massivas) em dois modos:

  • STANDARD: áudio pré-gravado (referenciado por audioId)
  • CUSTOM: texto para voz (TTS) por contato (content), utilizando uma voz (voice = "Juan" ou "Maria")

Autenticação

Todas as requisições devem incluir:

  • x-auth: API key fornecida pela Saem.

Diferente da API de SMS, aqui prefix é um campo do body da campanha, não um header nos endpoints de envio do CallB segundo a documentação.


Conceitos principais do payload

Campos utilizados nesta API:

  • subService: "standard" ou "custom"

  • prefix: código do país de origem (exemplo 57)

  • gmt: fuso horário local no formato +/-HH:MM (afeta a janela de execução)

  • nameCampaign: nome da campanha

  • mailbox: true/false (deixar mensagem na caixa postal caso não atenda)

  • configProgramming: lista de programações de execução

    • máximo 5 configurações

    • se mais de uma configuração for enviada, será criada uma campanha separada para cada configuração

    • inclui:

      • dateStart, dateEnd
      • reviews (tentativas)
      • configReview: condições para novas tentativas (máx 5 revisões)
  • numbers:

    • STANDARD: lista de números de telefone (sem símbolos)
    • CUSTOM: array de objetos { number, content }

Condições de reintento (configReview)

Valores permitidos:

buzon, colgo, congestion, fallo, maquina, mcolgo, msatisfactorio, nocontesta, satisfactorio.


Limite de carga

Para serviços em JSON:

  • Máximo 200.000 registros
  • Se exceder → erro CALLB_022

Para Parquet:

  • Máximo 500.000 registros
  • Se exceder → CALLB_022

Fluxo STANDARD: como montar uma campanha

Passo A: Obter ou criar audioId

O campo audioId pode ser obtido:

  • No módulo “Recursos” da plataforma web (cada áudio possui um ID), ou
  • Gerando via API (próximo passo).

Passo B: Gerar áudio via API (opcional)

Recomendado se você automatiza campanhas.

URL: https://apicallb.saem.tel/audio/generate Método: POST Headers: x-auth

Campos do body:

  • text
  • voice
  • resource_name (nome base do arquivo .wav)

Passo C: Criar campanha STANDARD (JSON)

URL: https://apicallb.saem.tel/send/massive Método: POST Headers: x-auth

Body típico

{
  subService: "standard",
  prefix,
  gmt,
  nameCampaign,
  audioId,
  configProgramming: [...],
  numbers: [...]
}

(numbers é uma lista de telefones)


Fluxo CUSTOM: campanha TTS (texto para voz)

Criar campanha CUSTOM (JSON)

URL: https://apicallb.saem.tel/send/massive Método: POST Headers: x-auth

Body típico

{
  subService: "custom",
  voice: "Juan" | "Maria",
  numbers: [{ number, content }, ...],
  prefix,
  gmt,
  configProgramming
}

Templates (CUSTOM)

Tags interpretadas pelo sistema por contato:

  • {I} identificador
  • {N} nome
  • {S} saldo/valor
  • {T} telefone
  • {E} email
  • {C} conta

Campanhas com Parquet

URL: https://apicallb.saem.tel/send/massive/parquet Método: POST Headers: x-auth Body: form-data (arquivo .parquet + parâmetros)

Regras do arquivo

  • STANDARD → Parquet com coluna number
  • CUSTOM → Parquet com colunas number e content

configProgramming deve ser enviado no form-data como string JSON, não como objeto:

[{"dateStart":"...","dateEnd":"...","reviews":2}]

Resposta de criação da campanha

Ao criar uma campanha, retorna um resumo contendo:

  • sends: contagem por operadora (inclui "null" para números inválidos encontrados)

  • summary:

    • total_records
    • total_credits
    • seconds_aprox (segundos totais aproximados)

Erros

Erros de autenticação

CódigoHTTP StatusDescrição
AUTH.TOKEN_MISSING400Header x-auth não enviado
API_KEY_NOT_FOUND400API key inexistente ou inválida
USER_NOT_FOUND404Usuário associado à API key não encontrado
USER_INACTIVE401Usuário inativo e não pode executar campanhas

Erros de configuração

CódigoHTTP StatusDescrição
CALLB_015404Recurso multimídia não encontrado (audioId inválido)
CALLB_016404Não existe configuração para o país/prefixo enviado
CALLB_018400Horário configurado fora do intervalo permitido

Erros de processamento

CódigoHTTP StatusDescrição
CALLB_019400Arquivo Parquet inválido ou mal estruturado
CALLB_021402Créditos insuficientes para executar a campanha
CALLB_022400Número máximo de registros excedido

Erros de geração de áudio

CódigoHTTP StatusDescrição
CALLB_AUD_001400resource_name inválido ou com formato incorreto
CALLB_AUD_002409Recurso de áudio já existe (nome duplicado)

API SMS

Esta API permite enviar mensagens SMS em massa e individualmente.

Guia de Uso da API de Envio de SMS

Abreviações

AbreviaturaDescrição
PARQUETFormato de arquivo projetado para armazenar grandes quantidades de dados de maneira organizada e eficiente.
PDUUnidade de Dados do Protocolo (Protocol Data Unit) que representa a quantidade de fragmentos nos quais um SMS é dividido para o seu envio.
UUIDIdentificador Único Universal (código gerado aleatoriamente) utilizado para msg_id e request_id.

Introdução

A API de Envio de SMS permite realizar envios unitários e em massa de mensagens de texto utilizando os formatos JSON ou Parquet.

Através deste guia você poderá conhecer como se autenticar, quais serviços estão disponíveis e quais estruturas devem ser utilizadas para realizar os envios corretamente, quais métodos estão disponíveis e quais formatos devem ser usados para realizar as solicitações.

1. Autenticação e Segurança

Antes de usar a API de Envios em Massa, é necessário contar com uma chave de acesso segura ("api key"). Essa chave é entregue diretamente pela equipe da Saem Colombia e deve ser incluída em cada solicitação dentro do cabeçalho x-auth.

Sem essa autenticação, o sistema rejeitará a requisição.

Além da api key, deve-se incluir o cabeçalho x-prefix indicando o código do país em todas as solicitações.

Exemplo de aplicação (headers):

KeyValue
x-authapi-key-00000000000000000000000000000000000000
x-prefix57

Serviços Disponíveis na API SMS

Parâmetros de Entrada

Quote

CampoDescrição
fromIdentificador do remetente autorizado a enviar mensagens.
numbersLista de mensagens a enviar. Cada objeto deve incluir to, content e, opcionalmente, msg_id.
msg_idID único da mensagem. Se não for enviado, é gerado automaticamente.
toNúmero de celular do destinatário.
contentTexto da mensagem incluindo o shortname.
flashDefine se o SMS será exibido imediatamente em uma janela pop-up (yes ou no). Este campo é obrigatório para todos os serviços.
unique-numbersSe necessário, utilize este parâmetro para validar e rejeitar números duplicados no envio. Aceita yes ou no. Caso contrário, não é necessário incluí-lo.
x-prefixCódigo do país, deve ser enviado como header.
x-authToken de autenticação, deve ser enviado como header.

2. Envio Unitário

  • URL: https://apisms.saem.tel/v3/send
  • Método: GET
  • Headers: x-auth: api-key-XXX000X00000, x-prefix: 57 Exemplo de Params (query string):
KeyValue
to573999999999
contentPrueba oficial SMS API V3 claro
fromsaemcolombia
flashno

Exemplo de solicitação completa:

GET https://apisms.saem.tel/v3/send?to=573999999999&content=Prueba oficial SMS API V3 claro&from=saemcolombia&flash=no

💡 IMPORTANTE Para todos os nossos serviços em formato JSON poderá ser carregado um máximo de 200.000 registros. Se for enviada uma quantidade superior, o sistema rejeitará a solicitação com o erro: SMS_008.

3. Envio em Massa — Formato JSON

  • URL: https://apisms.saem.tel/v3/send
  • Método: POST
  • Headers: x-auth: api-key-XXX000X00000, x-prefix: 57 Exemplo de Body:
{
  "from": "SaemColombia",
  "coding": 0,
  "dlr": "no",
  "dlr-url": "",
  "dlr-level": "",
  "dlr-method": "",
  "flash": "no",
  "unique-numbers": "yes",
  "numbers": [
    { "to": "3000000000", "content": "Hola Saem, este es tu mensaje de prueba oficial" },
    { "to": "3123457891", "content": "Hola Saem, este es tu mensaje de prueba oficial" },
    { "to": "3999999999", "content": "Hola Saem, este es tu mensaje de prueba oficial" },
    { "to": "3999999999", "content": "Hola Saem, este es tu mensaje de prueba oficial" },
    { "to": "3999999999", "content": "Hola Saem, este es tu mensaje de prueba oficial" }
  ]
}

Para o formato a seguir devemos levar em conta que o corpo da solicitação (body) deve ser enviado no formato form-data, incluindo o arquivo .parquet e os demais parâmetros necessários.

💡 Recomendação: Sugere-se utilizar o formato .Parquet em vez de arquivos JSON, já que ele permite um carregamento muito mais rápido, reduz o tamanho do arquivo e melhora o desempenho geral do processo.

Para este formato poderá ser carregado um máximo de 500.000 registros. Se for enviada uma quantidade superior, o sistema rejeitará a solicitação com o erro SMS_008.

4. Envio em Massa — Formato Parquet

  • URL: https://apisms.saem.tel/v3/send/parquet
  • Método: POST
  • Headers: x-auth: api-key-XXX000X00000, x-prefix: 57 Exemplo de Body (form-data):
KeyTipoValue
fileFilesms_prueba.parquet
fromTextsaemcolombia
codingText0
dlrTextno
dlr-urlText(vazio)
dlr-levelText1
dlr-methodTextPOST
flashText(vazio)

5. Erros Comuns e Respostas

CódigoStatusDescrição
USER_NOT_FOUND404O usuário não é válido.
USER_INACTIVE401O usuário está inativo ou não tem permissões para realizar a ação.
AUTH.TOKEN_MISSING400Falta o token de autenticação.
API_KEY_NOT_FOUND400A chave API não foi encontrada ou foi revogada.
COUNTRY_001400Não foi encontrado um país associado ao prefixo.
SMS_002402Créditos insuficientes para usuários com plano pré-pago.
SMS_008400O número de registros enviados excede o limite permitido.
SMS_009400O arquivo Parquet enviado não é válido ou não cumpre o formato esperado.
DUPLICATED_MSG_ID400Um ou mais identificadores msg_id já existem em uma campanha anterior.
FORBIDDEN_TERMS400O conteúdo contém termos não permitidos.
SHORTNAME_INACTIVE400O shortname não se encontra ativo para o usuário.
SHORTNAME_NOT_FOUND400A mensagem não contém o shortname obrigatório.
CONTENT_TOO_LONG400O conteúdo ultrapassa o limite de comprimento permitido para um SMS.

Parâmetros de Saída

CampoDescrição
request_idID único atribuído à campanha em massa.
total_creditsTotal de créditos consumidos pelo envio.
recordsTotal de mensagens processadas da campanha.
total_pdu_countTotal de PDUs gerados entre todas as mensagens.

PARQUET

Formato de arquivo colunar recomendado para cargas massivas de números e parâmetros de campanha.

PDU

Protocol Data Unit. Unidade de dados que representa os fragmentos nos quais um SMS é dividido para envio.

UUID

Identificador único universal utilizado para msg_id e request_id na API.

SUBSERVICE

Tipo de campanha: standard (áudio pré-gravado) ou custom (texto para fala).

AUDIOID

Identificador do recurso multimídia associado a um áudio pré-gravado no modo STANDARD.

VOICE

Voz utilizada em campanhas CUSTOM para converter texto em áudio. Podem ser usadas vozes como "Juan" ou "Maria".

MAILBOX

Indica se uma mensagem é deixada na caixa postal quando o destinatário não atende.

Registrar PQRSF