custom_tlvs enviado como lista em vez de objeto, um sender ID que nunca foi aprovado.
Tudo isso falha aqui, onde você vê as palavras do próprio gateway, em vez de no seu código às três
da manhã.

O playground, com a requisição construída na linguagem que você escolher a partir da sua própria base URL e login. A senha vive na aba e em nenhum outro lugar.
Conectando
Escolha um login de API e insira a senha. Ela é verificada contra o gateway antes de qualquer outra coisa ser habilitada, e uma senha errada é recusada nas palavras do próprio gateway, não no palpite do painel.Mantida apenas nesta aba, nunca armazenada, nunca registrada em log. É a mesma senha que seu software usa, então uma senha errada falha aqui, e não no seu código.Só logins HTTP podem usar essa API. Um login SMPP é recusado com uma falha de autenticação que se parece exatamente com uma senha errada.
Os cinco endpoints
Cada campo é rotulado com seu nome no wire, marcado como obrigatório ou opcional com seu padrão, e
tem uma nota de uma linha. Várias dessas notas existem por causa de um erro específico:
to— entre aspas. Um número sem aspas perde os zeros à esquerda.content— informe este ouhex_content, nunca os dois.from— precisa ser um aprovado para sua conta, ou o envio é recusado. O seletor oferece apenas sender IDs aprovados; os pendentes estão deliberadamente ausentes, porque oferecer um que você ainda não pode usar produziria uma recusa que o formulário poderia ter previsto.coding— use 8 para qualquer coisa fora de GSM-7. Isso reduz o comprimento do segmento pela metade.validity_period— minutos inteiros, não uma string de duração.
custom_tlvs tem um editor por linhas, porque o formato JSON é o erro de integração mais comum:
Parâmetros SMPP extras como objeto JSON — {"0x1401": "…"} — não uma lista de pares e não uma
string entre aspas.
O editor também avisa quando duas linhas nomeiam a mesma tag: o gateway recusa a requisição inteira
em vez de escolher uma para você.
Lendo a resposta
O painel de resposta traz o status HTTP, o tempo de ida e volta e (a parte útil) uma explicação em linguagem simples do que o status significa. “Seu saldo pré-pago não cobre a mensagem. Nada foi enviado ou cobrado.” é mais acionável do que um 402 seco. Quando um envio dá certo, o message id é oferecido com um botão de copiar. Esse id vai aparecer no recibo de entrega e na sua lista de mensagens. Ao lado, um painel de Requisição mostra a mesma chamada em curl, Node, PHP ou Python, preenchida com sua própria base URL e login. Copie direto para o seu código. As últimas chamadas ficam em um pequeno histórico que você pode recarregar no formulário. Ele vive na aba e morre com ela.Batches
O endpoint de batch aceita uma lista JSON, e a textarea se recusa a enviar JSON malformado em vez de deixar o gateway rejeitar.A referência ao lado
A referência da API REST na mesma seção documenta cada endpoint, preenchido com os valores da sua conta, além de recibos de entrega, callbacks de batch, a tabela de erros compartilhada e a gramática de custom TLVs. Ela também trata de rotação de credenciais — trocar uma senha ou API key por conta própria, com o novo valor mostrado exatamente uma vez.Depois de rotacionar, o gateway recarrega credenciais em um timer. Por aproximadamente o próximo
meio minuto, sua credencial antiga ainda funciona e a nova ainda não. A página informa quanto
esperar.Onde uma API key funciona também como nome de usuário, rotacioná-la muda o nome de usuário também.
Então as duas metades da sua configuração precisam mudar juntas, e não há período de graça.