Introdução API Rest

Bem vindo Dev! A API da Comtele é construída no padrão REST. Nossa API possui URLs previsíveis de acordo com todos recursos servidos por cada endpoint, aceita requisições e retorna utilizando padrão JSON e também usa códigos de resposta HTTP padrão, a autenticação é feita via Header e todas as requisições também devem conter ‘Content-Type’: 'application/json’.

Além da API Rest, a Comtele mantem oficialmente pacotes de software para facilitar o desenvolvimento e a vida dos nossos amigos devs. Na Seção SDK fornecemos instruções básicas sobre como instalar e começar a trabalhar com esses pacotes.

GitHub

Mantemos oficialmente SDKs disponíveis em Python, .NET, .NET Core, Node, Java, Ruby, PHP via composer e importação de arquivos. Todos os fontes destas SDKs estão disponíveis em nosso GitHub github.com/comtele

URL Base da API

https://sms.comtele.com.br/api/v2/

Autenticação

Todas as requisições direcionadas a qualquer recurso da API Rest devem ser autenticadas, a chave de integração está disponível na sua conta em https://sms.comtele.com.br na tela de dashboard na secão Informações do Desenvolvedor nomeado como Sua Chave de API. Ela deve ser informada via Header no seguinte formato: auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX

Códigos de Erro

Os retornos de erro usam códigos padrões de status HTTP para indicar o tipo de erro que está acontecendo. Na maior parte dos casos, também será retornado via Body no formato JSON um campo que contém uma descrição detalhada sobre o erro. Todos os códigos de erros estão alinhados com a específicação padrão

Exemplo de erro HTTP 401 - Unauthorized

Neste caso por exemplo, não será retonado corpo em JSON. Apenas o HTTP Status: 401 - Unauthorized

Erros Comuns

HTTP Status Error Code Description
400 BadRequest Este erro geralmente ocorre quando algum recurso é acessado sem algum parâmetro necessário ser informado.
401 InvalidCredentials Erro relacionado a chave de API, pode ter sido informada de maneira incorreta ou não ter sido informada.
404 NotFound Recurso inexistente, o endpoint informado provavelmente está incorreto.
405 MethodNotAllowed Este erro está relacionado quando algum recurso é acessado por um método não disponível.
500 RequestTimeout houve um time out na requisição ao efetuar a conexão com o endpoint.
503 ServerError Algum problema com o servidor em que está o recurso acessado, neste caso, tente acessar novamente.

Envio de SMS

Nesta seção, são abordados todos os recursos disponíveis para envio de SMS. Mais detalhes sobre cada recurso, pode ser encontrado em uma breve descrição logo abaixo do título de cada endpoint.

Enviar SMS

Com este recurso, é possivel enviar SMS de forma instantânea.
URL do Endpoint: https://sms.comtele.com.br/api/v2/send
Autenticação via Header: auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Método: POST

  curl --request POST \
    --url https://sms.comtele.com.br/api/v2/send \
    --header 'auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX' \
    --header 'content-type: application/json' \
    --data '{"Sender":"sender_id","Receivers":"phone_number","Content":"message"}'
  var request = require("request");

  var options = {
    method: 'POST',
    url: 'https://sms.comtele.com.br/api/v2/send',
    headers: {
      'content-type': 'application/json',
      'auth-key': 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
    },
    body: '{"Sender":"sender_id","Receivers":"phone_number","Content":"message"}'
  };

  request(options, function (error, response, body) {
    if (error) throw new Error(error);

    console.log(body);
  });
  require 'uri'
  require 'net/http'
  require 'openssl'

  url = URI("https://sms.comtele.com.br/api/v2/send")

  http = Net::HTTP.new(url.host, url.port)
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE

  request = Net::HTTP::Post.new(url)
  request["content-type"] = 'application/json'
  request["auth-key"] = 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
  request.body = "{\"Sender\":\"sender_id\",\"Receivers\":\"phone_number\",\"Content\":\"message\"}"

  response = http.request(request)
  puts response.read_body
  var data = "{\"Sender\":\"sender_id\",\"Receivers\":\"phone_number\",\"Content\":\"message\"}";

  var xhr = new XMLHttpRequest();

  xhr.addEventListener("readystatechange", function () {
    if (this.readyState === this.DONE) {
      console.log(this.responseText);
    }
  });

  xhr.open("POST", "https://sms.comtele.com.br/api/v2/send");
  xhr.setRequestHeader("content-type", "application/json");
  xhr.setRequestHeader("auth-key", "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX");

  xhr.send(data);
  import requests

  url = "https://sms.comtele.com.br/api/v2/send"

  payload = "{\"Sender\":\"sender_id\",\"Receivers\":\"phone_number\",\"Content\":\"message\"}"
  headers = {
      'content-type': "application/json",
      'auth-key': "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
      }

  response = requests.request("POST", url, data=payload, headers=headers)

  print(response.text)
Campos Obrigatório Descrição
Sender não Este campo é usado só internamente, e geralmente é bem util para controle. Por exemplo você pode informar um id interno, que ele será exibido no relatório, dispensamdo que você faça “de para” dos ids da Comtele com o sistema que está integrando.
Receivers sim Destinatários que irão receber o SMS. Para dois ou mais destinatários, separe por uma vírgula os telefones, formato: DDD + Número.
Content sim Conteúdo da mensagem que vai ser recebida pelo número que o SMS será enviado. Nos casos que o conteúdo do SMS superar 160 caracteres, será tarifado mais de um crédito a cada 153 caracteres. Algumas operadoras como a Oi e Sercomtel não suportam concatenação da mensagens, então serão recebidos SMS separadamente.
Exemplo de Retorno de Sucesso
  {
    "Success": true, 
    "Object": {
      "requestUniqueId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
    }
    "Message": "A requisicao de envio foi encaminhada para processamento com sucesso. Voce podera acompanhar o status pelos relatorios."
  }
Campos do Retorno
Campos Descrição
Success Pode ser retornado true para sucesso ou false para erro, este campo é o resultado da operação.
Object Neste recurso será nulo, pois não existe objeto a ser retornado.
RequestUniqueId Este campo é o ID da sua requisição.
Message Neste campo é retornado mais detalhes sobre o resultado da operação do recurso que foi utilizado.
Retornos Previsíveis
HTTP Status Descrição
200 A requisicao de envio foi encaminhada para processamento com sucesso. Voce podera acompanhar o status pelos relatorios.
400 Object reference not set to an instance of an object.
Possível Causa: Nenhum objeto foi informado no Body da requisição.
400 É necessário informar ao menos um destinatário que irá receber o SMS.
400 O parâmetro ‘Content’ deve ser informado com conteúdo.
400 Não foi possível continuar, pois a quantidade de créditos é insuficiente. Para efetuar o envio é necessário ao menos 1 créditos.
401 A chave de acesso informada é inválida e não pode efetuar uma requisição à API.
Possível Causa: auth-key está incorreta ou o campo foi informado em branco.
401 O usuário informado está desativado.
401 O usuário informado está incorreto ou não existe
Possível Causa: o campo auth-key não está sendo informado na requisição.
500 Algum problema com o servidor em que está o recurso acessado, neste caso, tente acessar novamente.
503 houve um time out na requisição ao efetuar a conexão com o endpoint.

Enviar SMS / Regra de Resposta Automática

Com este recurso, é possivel enviar SMS de forma instantânea e quando o SMS for respondido, é possivel enviar uma resposta de forma automática, baseado em um contexto previamente configurado.
Para utilizar este recurso, é necessário que você acesse a opção “Resposta Automática” no menu “Configurações” no painel de SMS, cadastre uma regra de resposta automática e informe o nome que foi cadastrado no campo ContextRuleName no momento que for usar o endpoint.
URL do Endpoint: https://sms.comtele.com.br/api/v2/sendcontextmessage
Autenticação via Header: auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Método: POST

  curl --request POST \
    --url https://sms.comtele.com.br/api/v2/sendcontextmessage \
    --header 'auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX' \
    --header 'content-type: application/json' \
    --data '{"Sender":"sender_id","Receivers":"phone_number","ContextRuleName":"rule_name","ForceContent":"force_content"}'
  var request = require("request");

  var options = {
    method: 'POST',
    url: 'https://sms.comtele.com.br/api/v2/sendcontextmessage',
    headers: {
      'content-type': 'application/json',
      'auth-key': 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
    },
    body: '{"Sender":"sender_id","Receivers":"phone_number","ContextRuleName":"rule_name","ForceContent":"force_content"}'
  };

  request(options, function (error, response, body) {
    if (error) throw new Error(error);

    console.log(body);
  });
  require 'uri'
  require 'net/http'
  require 'openssl'

  url = URI("https://sms.comtele.com.br/api/v2/sendcontextmessage")

  http = Net::HTTP.new(url.host, url.port)
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE

  request = Net::HTTP::Post.new(url)
  request["content-type"] = 'application/json'
  request["auth-key"] = 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
  request.body = "{\"Sender\":\"sender_id\",\"Receivers\":\"phone_number\",\"ContextRuleName\":\"rule_name\",\"ForceContent\":\"force_content\"}"

  response = http.request(request)
  puts response.read_body
  var data = "{\"Sender\":\"sender_id\",\"Receivers\":\"phone_number\",\"ContextRuleName\":\"rule_name\",\"ForceContent\":\"force_content\"}";

  var xhr = new XMLHttpRequest();

  xhr.addEventListener("readystatechange", function () {
    if (this.readyState === this.DONE) {
      console.log(this.responseText);
    }
  });

  xhr.open("POST", "https://sms.comtele.com.br/api/v2/sendcontextmessage");
  xhr.setRequestHeader("content-type", "application/json");
  xhr.setRequestHeader("auth-key", "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX");

  xhr.send(data);
  import requests

  url = "https://sms.comtele.com.br/api/v2/sendcontextmessage"

  payload = "{\"Sender\":\"sender_id\",\"Receivers\":\"phone_number\",\"ContextRuleName\":\"rule_name\",\"ForceContent\":\"force_content\"}"
  headers = {
      'content-type': "application/json",
      'auth-key': "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
      }

  response = requests.request("POST", url, data=payload, headers=headers)

  print(response.text)
Campos Obrigatório Descrição
Sender não Este campo é usado só internamente, e geralmente é bem util para controle. Por exemplo você pode informar um id interno, que ele será exibido no relatório, dispensamdo que você faça “de para” dos ids da Comtele com o sistema que está integrando.
Receivers sim Destinatários que irão receber o SMS. Para dois ou mais destinatários, separe por uma vírgula os telefones, formato: DDD + Número.
ContextRuleName sim Neste campo deve ser informado o nome da regra que o contexto de resposta foi programado e cadastrado no sistema que no caso será usado neste envio.
ForceContent não Se este campo for preenchido, o conteúdo da mensagem será ele, se ele não for preenchido, o sistema irá usar o conteúdo pré-cadastrado no Painel SMS na Regra de Resposta Automática.
Exemplo de Retorno de Sucesso
  {
    "Success": true, 
    "Object": null, 
    "Message": "A requisicao de envio foi encaminhada para processamento com sucesso. Voce podera acompanhar o status pelos relatorios."
  }
Campos do Retorno
Campos Descrição
Success Pode ser retornado true para sucesso ou false para erro, este campo é o resultado da operação.
Object Neste recurso será nulo, pois não existe objeto a ser retornado.
Content Conteúdo da mensagem que foi recebida pelo número retornado.
Message Neste campo é retornado mais detalhes sobre o resultado da operação do recurso que foi utilizado.
Retornos Previsíveis
HTTP Status Descrição
200 A requisicao de envio foi encaminhada para processamento com sucesso. Voce podera acompanhar o status pelos relatorios.
400 Object reference not set to an instance of an object.
Possível Causa: Nenhum objeto foi informado no Body da requisição.
400 É necessário informar ao menos um destinatário que irá receber o SMS.
400 E necessario informar o nome da regra de resposta automatica.
400 Nao foi possivel encontrar uma regra de resposta automatica cadastrada com o nome informado.
400 Não foi possível continuar, pois a quantidade de créditos é insuficiente. Para efetuar o envio é necessário ao menos 1 créditos.
401 A chave de acesso informada é inválida e não pode efetuar uma requisição à API.
Possível Causa: auth-key está incorreta ou o campo foi informado em branco.
401 O usuário informado está desativado.
401 O usuário informado está incorreto ou não existe
Possível Causa: o campo auth-key não está sendo informado na requisição.
500 Algum problema com o servidor em que está o recurso acessado, neste caso, tente acessar novamente.
503 houve um time out na requisição ao efetuar a conexão com o endpoint.

Enviar SMS / Grupos de Contatos

Com este recurso, é possivel enviar SMS de forma instantânea para um grupo de contatos.
Para usar este recuso, é necessário ter grupos de contatos já cadastrados em nossa aplicação, caso ainda não tenha feito isso, dê uma olhadinha no recurso Cadastrar / Grupos de Contatos e Cadastrar Contatos / Grupos de Contatos
URL do Endpoint: https://sms.comtele.com.br/api/v2/sendcontextmessage
Autenticação via Header: auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Método: POST

  curl --request POST \
    --url https://sms.comtele.com.br/api/v2/sendcontactmessage \
    --header 'auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX' \
    --header 'content-type: application/json' \
    --data '{"Sender":"sender_id","Content":"message","GroupName":"group_name"}'
  var request = require("request");

  var options = {
    method: 'POST',
    url: 'https://sms.comtele.com.br/api/v2/sendcontactmessage',
    headers: {
      'content-type': 'application/json',
      'auth-key': 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
    },
    body: '{"Sender":"sender_id","Content":"message","GroupName":"group_name"}'
  };

  request(options, function (error, response, body) {
    if (error) throw new Error(error);

    console.log(body);
  });
  require 'uri'
  require 'net/http'
  require 'openssl'

  url = URI("https://sms.comtele.com.br/api/v2/sendcontactmessage")

  http = Net::HTTP.new(url.host, url.port)
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE

  request = Net::HTTP::Post.new(url)
  request["content-type"] = 'application/json'
  request["auth-key"] = 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
  request.body = "{\"Sender\":\"sender_id\",\"Content\":\"message\",\"GroupName\":\"group_name\"}"

  response = http.request(request)
  puts response.read_body
  var data = "{\"Sender\":\"sender_id\",\"Content\":\"message\",\"GroupName\":\"group_name\"}";

  var xhr = new XMLHttpRequest();

  xhr.addEventListener("readystatechange", function () {
    if (this.readyState === this.DONE) {
      console.log(this.responseText);
    }
  });

  xhr.open("POST", "https://sms.comtele.com.br/api/v2/sendcontactmessage");
  xhr.setRequestHeader("content-type", "application/json");
  xhr.setRequestHeader("auth-key", "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX");

  xhr.send(data);
  import requests

  url = "https://sms.comtele.com.br/api/v2/sendcontactmessage"

  payload = "{\"Sender\":\"sender_id\",\"Content\":\"message\",\"GroupName\":\"group_name\"}"
  headers = {
      'content-type': "application/json",
      'auth-key': "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
      }

  response = requests.request("POST", url, data=payload, headers=headers)

  print(response.text)
Campos Obrigatório Descrição
Sender não Este campo é usado só internamente, e geralmente é bem util para controle. Por exemplo você pode informar um id interno, que ele será exibido no relatório, dispensamdo que você faça “de para” dos ids da Comtele com o sistema que está integrando.
Content sim Conteúdo da mensagem que vai ser recebida pelo número que o SMS será enviado. Nos casos que o conteúdo do SMS superar 160 caracteres, será tarifado mais de um crédito a cada 153 caracteres. Algumas operadoras como a Oi e Sercomtel não suportam concatenação da mensagens, então serão recebidos SMS separadamente.
GroupName sim Nome do grupo de contatos, com todos os telefones que receberão o SMS.
Exemplo de Retorno de Sucesso
  {
    "Success": true, 
    "Object": null, 
    "Message": "A requisicao de envio foi encaminhada para processamento com sucesso. Voce podera acompanhar o status pelos relatorios."
  }
Campos do Retorno
Campos Descrição
Success Pode ser retornado true para sucesso ou false para erro, este campo é o resultado da operação.
Object Neste recurso será nulo, pois não existe objeto a ser retornado.
Content Conteúdo da mensagem que foi recebida pelo número retornado.
Message Neste campo é retornado mais detalhes sobre o resultado da operação do recurso que foi utilizado.
Retornos Previsíveis
HTTP Status Descrição
200 A requisicao de envio foi encaminhada para processamento com sucesso. Voce podera acompanhar o status pelos relatorios.
400 Object reference not set to an instance of an object.
Possível Causa: Nenhum objeto foi informado no Body da requisição.
400 E necessario informar o grupo de contatos que irao receber o SMS
400 Nao foi possivel encontrar um grupo de contatos cadastrado com o nome informado.
400 O parâmetro 'Content’ deve ser informado com conteúdo.
400 Não foi possível continuar, pois a quantidade de créditos é insuficiente. Para efetuar o envio é necessário ao menos 1 créditos.
401 A chave de acesso informada é inválida e não pode efetuar uma requisição à API.
Possível Causa: auth-key está incorreta ou o campo foi informado em branco.
401 O usuário informado está desativado.
401 O usuário informado está incorreto ou não existe
Possível Causa: o campo auth-key não está sendo informado na requisição.
500 Algum problema com o servidor em que está o recurso acessado, neste caso, tente acessar novamente.
503 houve um time out na requisição ao efetuar a conexão com o endpoint.

Agendamento de SMS

Nesta seção, são abordados todos os recursos disponíveis para envio de SMS agendado. Mais detalhes sobre cada recurso, pode ser encontrado em uma breve descrição logo abaixo do título de cada endpoint.

Agendar SMS

Com este recurso, é possivel programar a data e horário de envio de SMS para serem enviados.
URL do Endpoint: https://sms.comtele.com.br/api/v2/schedule
Autenticação via Header: auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Método: POST

curl --request POST \
  --url https://sms.comtele.com.br/api/v2/schedule \
  --header 'auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX' \
  --header 'content-type: application/json' \
  --data '{"Sender":"sender_id","Receivers":"phone_number","Content":"message","ScheduleDate":"send_in"}'
  var request = require("request");

  var options = {
    method: 'POST',
    url: 'https://sms.comtele.com.br/api/v2/schedule',
    headers: {
      'content-type': 'application/json',
      'auth-key': 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
    },
    body: '{"Sender":"sender_id","Receivers":"phone_number","Content":"message","ScheduleDate":"send_in"}'
  };

  request(options, function (error, response, body) {
    if (error) throw new Error(error);

    console.log(body);
  });
  require 'uri'
  require 'net/http'
  require 'openssl'

  url = URI("https://sms.comtele.com.br/api/v2/schedule")

  http = Net::HTTP.new(url.host, url.port)
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE

  request = Net::HTTP::Post.new(url)
  request["content-type"] = 'application/json'
  request["auth-key"] = 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
  request.body = "{\"Sender\":\"sender_id\",\"Receivers\":\"phone_number\",\"Content\":\"message\",\"ScheduleDate\":\"send_in\"}"

  response = http.request(request)
  puts response.read_body
  var data = "{\"Sender\":\"sender_id\",\"Receivers\":\"phone_number\",\"Content\":\"message\",\"ScheduleDate\":\"send_in\"}";

  var xhr = new XMLHttpRequest();

  xhr.addEventListener("readystatechange", function () {
    if (this.readyState === this.DONE) {
      console.log(this.responseText);
    }
  });

  xhr.open("POST", "https://sms.comtele.com.br/api/v2/schedule");
  xhr.setRequestHeader("content-type", "application/json");
  xhr.setRequestHeader("auth-key", "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX");

  xhr.send(data);
  import requests

  url = "https://sms.comtele.com.br/api/v2/schedule"

  payload = "{\"Sender\":\"sender_id\",\"Receivers\":\"phone_number\",\"Content\":\"message\",\"ScheduleDate\":\"send_in\"}"
  headers = {
      'content-type': "application/json",
      'auth-key': "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
      }

  response = requests.request("POST", url, data=payload, headers=headers)

  print(response.text)
Campos Obrigatório Descrição
Sender não Este campo é usado só internamente, e geralmente é bem util para controle. Por exemplo você pode informar um id interno, que ele será exibido no relatório, dispensamdo que você faça “de para” dos ids da Comtele com o sistema que está integrando.
Receivers sim Destinatários que irão receber o SMS. Para dois ou mais destinatários, separe por uma vírgula os telefones, formato: DDD + Número.
Content sim Conteúdo da mensagem que vai ser recebida pelo número que o SMS será enviado. Nos casos que o conteúdo do SMS superar 160 caracteres, será tarifado mais de um crédito a cada 153 caracteres. Algumas operadoras como a Oi e Sercomtel não suportam concatenação da mensagens, então serão recebidos SMS separadamente.
ScheduleDate sim Data de agendamento que o SMS deve ser disparado, padrão ISO8601 formato: YYYY-MM-DDThh:mm:ss.sTZD (eg 1997-07-16T19:20:30.45-02:00)
Exemplo de Retorno de Sucesso
  {
    "Success": true, 
    "Object": {
      "requestUniqueId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
    }
    "Message": "A requisicao de envio foi encaminhada para processamento com sucesso. Voce podera acompanhar o status pelos relatorios."
  }
Campos do Retorno
Campos Descrição
Success Pode ser retornado true para sucesso ou false para erro, este campo é o resultado da operação.
Object Neste recurso será nulo, pois não existe objeto a ser retornado.
RequestUniqueId Este campo é o ID da sua requisição.
Content Conteúdo da mensagem que foi recebida pelo número retornado.
Message Neste campo é retornado mais detalhes sobre o resultado da operação do recurso que foi utilizado.
Retornos Previsíveis
HTTP Status Descrição
200 A requisicao de envio foi encaminhada para processamento com sucesso. Voce podera acompanhar o status pelos relatorios.
400 Object reference not set to an instance of an object.
Possível Causa: Nenhum objeto foi informado no Body da requisição.
400 É necessário informar ao menos um destinatário que irá receber o SMS.
400 O parâmetro ‘Content’ deve ser informado com conteúdo.
400 Não foi possível continuar, pois a quantidade de créditos é insuficiente. Para efetuar o envio é necessário ao menos 1 créditos.
400 A data de agendamento não pode ser retroativa.
400 O parametro 'ScheduleDate’ deve ser informado com conteudo.
401 A chave de acesso informada é inválida e não pode efetuar uma requisição à API.
Possível Causa: auth-key está incorreta ou o campo foi informado em branco.
401 O usuário informado está desativado.
401 O usuário informado está incorreto ou não existe
Possível Causa: o campo auth-key não está sendo informado na requisição.
500 Algum problema com o servidor em que está o recurso acessado, neste caso, tente acessar novamente.
503 houve um time out na requisição ao efetuar a conexão com o endpoint.

Agendar SMS / Regra de Resposta Automática

Com este recurso, é possivel programar a data e horário de envio de SMS para serem enviados, e quando o SMS for respondido, é possivel enviar uma resposta de forma automática, baseado em um contexto previamente configurado.
Para utilizar este recurso, é necessário que você acesse a opção “Resposta Automática” no menu “Configurações” no painel de SMS, cadastre uma regra de resposta automática e informe o nome que foi cadastrado no campo ContextRuleName no momento que for usar o endpoint.
URL do Endpoint: https://sms.comtele.com.br/api/v2/schedulecontextmessage
Autenticação via Header: auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Método: POST

  curl --request POST \
    --url https://sms.comtele.com.br/api/v2/schedulecontextmessage \
    --header 'auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX' \
    --header 'content-type: application/json' \
    --data '{"Sender":"sender_id","Receivers":"phone_number","ScheduleDate":"send_in","ContextRuleName":"rule_name","ForceContent":"force_content"}'
  var request = require("request");

  var options = {
    method: 'POST',
    url: 'https://sms.comtele.com.br/api/v2/schedulecontextmessage',
    headers: {
      'content-type': 'application/json',
      'auth-key': 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
    },
    body: '{"Sender":"sender_id","Receivers":"phone_number","ScheduleDate":"send_in","ContextRuleName":"rule_name","ForceContent":"force_content"}'
  };

  request(options, function (error, response, body) {
    if (error) throw new Error(error);

    console.log(body);
  });
  require 'uri'
  require 'net/http'
  require 'openssl'

  url = URI("https://sms.comtele.com.br/api/v2/schedulecontextmessage")

  http = Net::HTTP.new(url.host, url.port)
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE

  request = Net::HTTP::Post.new(url)
  request["content-type"] = 'application/json'
  request["auth-key"] = 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
  request.body = "{\"Sender\":\"sender_id\",\"Receivers\":\"phone_number\",\"ScheduleDate\":\"send_in\",\"ContextRuleName\":\"rule_name\",\"ForceContent\":\"force_content\"}"

  response = http.request(request)
  puts response.read_body
  var data = "{\"Sender\":\"sender_id\",\"Receivers\":\"phone_number\",\"ScheduleDate\":\"send_in\",\"ContextRuleName\":\"rule_name\",\"ForceContent\":\"force_content\"}";

  var xhr = new XMLHttpRequest();

  xhr.addEventListener("readystatechange", function () {
    if (this.readyState === this.DONE) {
      console.log(this.responseText);
    }
  });

  xhr.open("POST", "https://sms.comtele.com.br/api/v2/schedulecontextmessage");
  xhr.setRequestHeader("content-type", "application/json");
  xhr.setRequestHeader("auth-key", "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX");

  xhr.send(data);
  import requests

  url = "https://sms.comtele.com.br/api/v2/schedulecontextmessage"

  payload = "{\"Sender\":\"sender_id\",\"Receivers\":\"phone_number\",\"ScheduleDate\":\"send_in\",\"ContextRuleName\":\"rule_name\",\"ForceContent\":\"force_content\"}"
  headers = {
      'content-type': "application/json",
      'auth-key': "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
      }

  response = requests.request("POST", url, data=payload, headers=headers)

  print(response.text)
Campos Obrigatório Descrição
Sender não Este campo é usado só internamente, e geralmente é bem util para controle. Por exemplo você pode informar um id interno, que ele será exibido no relatório, dispensamdo que você faça “de para” dos ids da Comtele com o sistema que está integrando.
Receivers sim Destinatários que irão receber o SMS. Para dois ou mais destinatários, separe por uma vírgula os telefones, formato: DDD + Número.
ContextRuleName sim Neste campo deve ser informado o nome da regra que o contexto de resposta foi programado e cadastrado no sistema que no caso será usado neste envio.
ScheduleDate sim Data de agendamento que o SMS deve ser disparado, padrão ISO8601 formato: YYYY-MM-DDThh:mm:ss.sTZD (eg 1997-07-16T19:20:30.45-02:00)
ForceContent não Se este campo for preenchido, o conteúdo da mensagem será ele, se ele não for preenchido, o sistema irá usar o conteúdo pré-cadastrado no Painel SMS na Regra de Resposta Automática.
Exemplo de Retorno de Sucesso
  {
    "Success": true, 
    "Object": null, 
    "Message": "A requisicao de envio foi encaminhada para processamento com sucesso. Voce podera acompanhar o status pelos relatorios."
  }
Retornos Previsíveis
HTTP Status Descrição
200 A requisicao de envio foi encaminhada para processamento com sucesso. Voce podera acompanhar o status pelos relatorios.
400 Object reference not set to an instance of an object.
Possível Causa: Nenhum objeto foi informado no Body da requisição.
400 É necessário informar ao menos um destinatário que irá receber o SMS.
400 E necessario informar o nome da regra de resposta automatica.
400 Nao foi possivel encontrar uma regra de resposta automatica cadastrada com o nome informado.
400 Não foi possível continuar, pois a quantidade de créditos é insuficiente. Para efetuar o envio é necessário ao menos 1 créditos.
400 A data de agendamento não pode ser retroativa.
400 O parametro 'ScheduleDate’ deve ser informado com conteudo.
401 A chave de acesso informada é inválida e não pode efetuar uma requisição à API.
Possível Causa: auth-key está incorreta ou o campo foi informado em branco.
401 O usuário informado está desativado.
401 O usuário informado está incorreto ou não existe
Possível Causa: o campo auth-key não está sendo informado na requisição.
500 Algum problema com o servidor em que está o recurso acessado, neste caso, tente acessar novamente.
503 houve um time out na requisição ao efetuar a conexão com o endpoint.

Agendar SMS / Grupos de Contatos

Com este recurso, é possivel programar a data e horário de envio de SMS para um grupo de contatos.
Para usar este recuso, é necessário ter grupos de contatos já cadastrados em nossa aplicação, caso ainda não tenha feito isso, dê uma olhadinha no recurso Cadastrar Grupos e Adicionar Contatos / Grupos
URL do Endpoint: https://sms.comtele.com.br/api/v2/schedulecontactmessage
Autenticação via Header: auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Método: POST

curl --request POST \
  --url https://sms.comtele.com.br/api/v2/schedulecontactmessage \
  --header 'auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX' \
  --header 'content-type: application/json' \
  --data '{"Sender":"sender_id","Content":"message","GroupName":"group_name","ScheduleDate":"send_in"}'
var request = require("request");

var options = {
  method: 'POST',
  url: 'https://sms.comtele.com.br/api/v2/schedulecontactmessage',
  headers: {
    'content-type': 'application/json',
    'auth-key': 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
  },
  body: '{"Sender":"sender_id","Content":"message","GroupName":"group_name","ScheduleDate":"send_in"}'
};

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'
require 'openssl'

url = URI("https://sms.comtele.com.br/api/v2/schedulecontactmessage")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Post.new(url)
request["content-type"] = 'application/json'
request["auth-key"] = 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
request.body = "{\"Sender\":\"sender_id\",\"Content\":\"message\",\"GroupName\":\"group_name\",\"ScheduleDate\":\"send_in\"}"

response = http.request(request)
puts response.read_body
var data = "{\"Sender\":\"sender_id\",\"Content\":\"message\",\"GroupName\":\"group_name\",\"ScheduleDate\":\"send_in\"}";

var xhr = new XMLHttpRequest();

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://sms.comtele.com.br/api/v2/schedulecontactmessage");
xhr.setRequestHeader("content-type", "application/json");
xhr.setRequestHeader("auth-key", "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX");

xhr.send(data);
import requests

url = "https://sms.comtele.com.br/api/v2/schedulecontactmessage"

payload = "{\"Sender\":\"sender_id\",\"Content\":\"message\",\"GroupName\":\"group_name\",\"ScheduleDate\":\"send_in\"}"
headers = {
    'content-type': "application/json",
    'auth-key': "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
    }

response = requests.request("POST", url, data=payload, headers=headers)

print(response.text)
Campos Obrigatório Descrição
Sender não Este campo é usado só internamente, e geralmente é bem util para controle. Por exemplo você pode informar um id interno, que ele será exibido no relatório, dispensamdo que você faça “de para” dos ids da Comtele com o sistema que está integrando.
Content sim Conteúdo da mensagem que vai ser recebida pelo número que o SMS será enviado. Nos casos que o conteúdo do SMS superar 160 caracteres, será tarifado mais de um crédito a cada 153 caracteres. Algumas operadoras como a Oi e Sercomtel não suportam concatenação da mensagens, então serão recebidos SMS separadamente.
GroupName sim Nome do grupo de contatos, com todos os telefones que receberão o SMS.
ScheduleDate sim Data de agendamento que o SMS deve ser disparado, padrão ISO8601 formato: YYYY-MM-DDThh:mm:ss.sTZD (eg 1997-07-16T19:20:30.45-02:00)
Exemplo de Retorno de Sucesso
  {
    "Success": true, 
    "Object": null, 
    "Message": "A requisicao de envio foi encaminhada para processamento com sucesso. Voce podera acompanhar o status pelos relatorios."
  }
Retornos Previsíveis
HTTP Status Descrição
200 A requisicao de envio foi encaminhada para processamento com sucesso. Voce podera acompanhar o status pelos relatorios.
400 Object reference not set to an instance of an object.
Possível Causa: Nenhum objeto foi informado no Body da requisição.
400 E necessario informar o grupo de contatos que irao receber o SMS
400 Nao foi possivel encontrar um grupo de contatos cadastrado com o nome informado.
400 O parâmetro 'Content’ deve ser informado com conteúdo.
400 Não foi possível continuar, pois a quantidade de créditos é insuficiente. Para efetuar o envio é necessário ao menos 1 créditos.
400 A data de agendamento não pode ser retroativa.
400 O parametro 'ScheduleDate’ deve ser informado com conteudo.
401 A chave de acesso informada é inválida e não pode efetuar uma requisição à API.
Possível Causa: auth-key está incorreta ou o campo foi informado em branco.
401 O usuário informado está desativado.
401 O usuário informado está incorreto ou não existe
Possível Causa: o campo auth-key não está sendo informado na requisição.
500 Algum problema com o servidor em que está o recurso acessado, neste caso, tente acessar novamente.
503 houve um time out na requisição ao efetuar a conexão com o endpoint.

Cancelar Agendamento de SMS

Com este recurso, é possível cancelar o agendamento de SMS

URL do Endpoint: https://sms.comtele.com.br/api/v2/cancelrequest
Autenticação via Header: auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Método: POST

curl --request POST \
  --url https://sms.comtele.com.br/api/v2/cancelrequest \
  --header 'auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX' \
  --header 'content-type: application/json' \
  --data '{"RequestUniqueId":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"}'
var request = require("request");

var options = {
  method: 'POST',
  url: 'https://sms.comtele.com.br/api/v2/cancelrequest',
  headers: {
    'content-type': 'application/json',
    'auth-key': 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
  },
  body: '{"RequestUniqueId":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"}'
};

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'
require 'openssl'

url = URI("https://sms.comtele.com.br/api/v2/cancelrequest")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Post.new(url)
request["content-type"] = 'application/json'
request["auth-key"] = 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
request.body = "{\"RequestUniqueId\":\"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\"}"

response = http.request(request)
puts response.read_body
var data = "{\"RequestUniqueId\":\"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\"}";

var xhr = new XMLHttpRequest();

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://sms.comtele.com.br/api/v2/cancelrequest");
xhr.setRequestHeader("content-type", "application/json");
xhr.setRequestHeader("auth-key", "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX");

xhr.send(data);
import requests

url = "https://sms.comtele.com.br/api/v2/cancelrequest"

payload = "{\"RequestUniqueId\":\"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\"}"
headers = {
    'content-type': "application/json",
    'auth-key': "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
    }

response = requests.request("POST", url, data=payload, headers=headers)

print(response.text)
Campos Obrigatório Descrição
RequestUniqueId Sim Este campo é retornado na criação do agendamento do SMS.
Exemplo de Retorno de Sucesso
  {
    "Success": true, 
    "Object": {
      "requestUniqueId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
    }
    "Message": "As mensagens do token informado que ainda estavam em rota de processamento foram canceladas."
  }
Retornos Previsíveis
HTTP Status Descrição
200 As mensagens do token informado que ainda estavam em rota de processamento foram canceladas.
400 Object reference not set to an instance of an object.
Possível Causa: Nenhum objeto foi informado no Body da requisição.
400 E necessario informar o grupo de contatos que irao receber o SMS
400 Nao foi possivel encontrar um grupo de contatos cadastrado com o nome informado.
400 O parâmetro 'Content’ deve ser informado com conteúdo.
400 Não foi possível continuar, pois a quantidade de créditos é insuficiente. Para efetuar o envio é necessário ao menos 1 créditos.
400 A data de agendamento não pode ser retroativa.
400 O parametro 'ScheduleDate’ deve ser informado com conteudo.
401 A chave de acesso informada é inválida e não pode efetuar uma requisição à API.
Possível Causa: auth-key está incorreta ou o campo foi informado em branco.
401 O usuário informado está desativado.
401 O usuário informado está incorreto ou não existe
Possível Causa: o campo auth-key não está sendo informado na requisição.
500 Algum problema com o servidor em que está o recurso acessado, neste caso, tente acessar novamente.
503 houve um time out na requisição ao efetuar a conexão com o endpoint.

Autenticação Dois Fatores via SMS

Nesta seção, são abordados dois recursos disponíveis para envio de SMS no cenário de autenticacão em dois fatores, por meio destes recursos, a Comtele automaticamente gera o código, envia e valida de acordo com o retorno do seu destinatário, dispensamdo você ter que desenvolver este controle em sua aplicação. Mais detalhes sobre cada recurso, pode ser encontrado em uma breve descrição logo abaixo do título de cada endpoint.

Enviar SMS / Dois Fatores

Com este recurso, é possivel enviar via SMS de forma instantânea um código de autenticação para o destinatário, que pode ser validado posteriormente no endpoint a seguir: Validar Código / Dois Fatores.

URL do Endpoint: https://sms.comtele.com.br/api/v2/tokenmanager
Autenticação via Header: auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Método: POST

  curl --request POST \
    --url https://sms.comtele.com.br/api/v2/tokenmanager \
    --header 'auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX' \
    --header 'content-type: application/json' \
    --data '{
       "PhoneNumber":"phone_number",
       "Prefix":"company_from",
       "EnforceSecureValidation":bool,
       "ExpireInMinutes":"minute"
      }'
  var request = require("request");

  var options = {
    method: 'POST',
    url: 'https://sms.comtele.com.br/api/v2/tokenmanager',
    headers: {
      'content-type': 'application/json',
      'auth-key': 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
    },
    body: '{
       "PhoneNumber":"phone_number",
       "Prefix":"company_from",
       "EnforceSecureValidation":bool, 
       "ExpireInMinutes":"minute"
      }'
  };

  request(options, function (error, response, body) {
    if (error) throw new Error(error);

    console.log(body);
  });
  require 'uri'
  require 'net/http'
  require 'openssl'

  url = URI("https://sms.comtele.com.br/api/v2/tokenmanager")

  http = Net::HTTP.new(url.host, url.port)
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE

  request = Net::HTTP::Post.new(url)
  request["content-type"] = 'application/json'
  request["auth-key"] = 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
  request.body = "{\"PhoneNumber\":\"phone_number\",\"Prefix\":\"company_from\"\"EnforceSecureValidation\":\"bool\"\"ExpireInMinutes\":\"minute\"}"
  response = http.request(request)
  puts response.read_body
  var data = "{\"PhoneNumber\":\"phone_number\",\"Prefix\":\"company_from\",\"EnforceSecureValidation\":\"bool\",\"ExpireInMinutes\":\"minute\"}";

  var xhr = new XMLHttpRequest();

  xhr.addEventListener("readystatechange", function () {
    if (this.readyState === this.DONE) {
      console.log(this.responseText);
    }
  });

  xhr.open("POST", "https://sms.comtele.com.br/api/v2/tokenmanager");
  xhr.setRequestHeader("content-type", "application/json");
  xhr.setRequestHeader("auth-key", "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX");

  xhr.send(data);
  import requests

  url = "https://sms.comtele.com.br/api/v2/tokenmanager"

  payload = "{
  \"PhoneNumber\":\"phone_number\",
  \"Prefix\":\"company_from\",
  \"EnforceSecureValidation\":\"bool\",
  \"ExpireInMinutes\":\"minute\"
  }"
  headers = {
      'content-type': "application/json",
      'auth-key': "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
      }

  response = requests.request("POST", url, data=payload, headers=headers)

  print(response.text)
Campos Obrigatório Descrição
PhoneNumber sim Número de telefone do destinatário que você quer enviar um código para autenticação de dois fatores.
Prefix não Neste campo, você pode informar ao destinatário a origem do token recebido, por exemplo: Sua Empresa: Codigo de Autorizacao xxxxxx.
EnforceSecureValidation não Usando este recurso, a validação do token será realizada em conjunto com número de telefone que foi enviado. É necessário informar o telefone no momento da validação.
ExpireInMinutes não Neste campo, você pode informar qual o limite em minutos que o token poderá ser validado.
Exemplo de Retorno de Sucesso
{
  "Success": true, 
  "Object": {
    "Prefix": "", 
    "PhoneNumber : "",
    "ExpireInMinutes": "",
    "EnforceSecureValidation": ""
    }, 
  "Message": 
  "O token foi criado com sucesso."
}
Campos do Retorno
Campos Descrição
Success Pode ser retornado true para sucesso ou false para erro, este campo é o resultado da operação.
Prefix Será retornado o prefixo que foi informado
PhoneNumber Será retornado o telefone que foi informado
ExpireInMinutes Será retornado o tempo de expiração do token em minutos que foi informado
EnforceSecureValidation Será retornada a opção que foi informada
Message Neste campo é retornado mais detalhes sobre o resultado da operação do recurso que foi utilizado.
Retornos Previsíveis
HTTP Status Descrição
200 O token foi criado com sucesso.
400 Object reference not set to an instance of an object.
Possível Causa: Nenhum objeto foi informado no Body da requisição.
400 Object reference not set to an instance of an object.
Possível Causa: Nenhum objeto foi informado no Body da requisição.
400 É necessário informar ao menos um destinatário que irá receber o SMS.
400 Não foi possível continuar, pois a quantidade de créditos é insuficiente. Para efetuar o envio é necessário ao menos 1 créditos.
401 A chave de acesso informada é inválida e não pode efetuar uma requisição à API.
Possível Causa: auth-key está incorreta ou o campo foi informado em branco.
401 O usuário informado está desativado.
401 O usuário informado está incorreto ou não existe
Possível Causa: o campo auth-key não está sendo informado na requisição.
500 Algum problema com o servidor em que está o recurso acessado, neste caso, tente acessar novamente.
503 houve um time out na requisição ao efetuar a conexão com o endpoint.

Validar Código / Dois Fatores

Com este recurso, é possivel validar o token recebido e informado pelo usuário que recebeu o SMS, enviado pelo endpoint anterior anterior: Enviar SMS / Dois Fatores.

URL do Endpoint: https://sms.comtele.com.br/api/v2/tokenmanager
Autenticação via Header: auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Método: PUT

  curl --request PUT \
    --url https://sms.comtele.com.br/api/v2/tokenmanager \
    --header 'auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX' \
    --header 'content-type: application/json' \
    --data '{"TokenCode":"inputed_user_token","PhoneNumber":"phone_number"}'
  var request = require("request");

  var options = {
    method: 'PUT',
    url: 'https://sms.comtele.com.br/api/v2/tokenmanager',
    headers: {
      'content-type': 'application/json',
      'auth-key': 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
    },
    body: '{"TokenCode":"inputed_user_token","PhoneNumber":"phone_number"}'
  };

  request(options, function (error, response, body) {
    if (error) throw new Error(error);

    console.log(body);
  });
  require 'uri'
  require 'net/http'
  require 'openssl'

  url = URI("https://sms.comtele.com.br/api/v2/tokenmanager")

  http = Net::HTTP.new(url.host, url.port)
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE

  request = Net::HTTP::Put.new(url)
  request["content-type"] = 'application/json'
  request["auth-key"] = 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
  request.body = "{\"TokenCode\":\"inputed_user_token\",\"PhoneNumber\":\"phone_number}"

  response = http.request(request)
puts response.read_body
  var data ="{\"TokenCode\":\"inputed_user_token\",\"PhoneNumber\":\"phone_number\"}";

  var xhr = new XMLHttpRequest();

  xhr.addEventListener("readystatechange", function () {
    if (this.readyState === this.DONE) {
      console.log(this.responseText);
    }
  });

  xhr.open("PUT", "https://sms.comtele.com.br/api/v2/tokenmanager");
  xhr.setRequestHeader("content-type", "application/json");
  xhr.setRequestHeader("auth-key", "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX");

  xhr.send(data);
  import requests

  url = "https://sms.comtele.com.br/api/v2/tokenmanager"

  payload = "{\"TokenCode\":\"inputed_user_token\",PhoneNumber\":\"phone_number\"}"
  headers = {
      'content-type': "application/json",
      'auth-key': "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
      }

  response = requests.request("PUT", url, data=payload, headers=headers)

  print(response.text)
Campos Obrigatório Descrição
TokenCode sim Token recebido pelo usuário, e que deve ser informado para ser realizada a validação.
PhoneNumber não Número de telefone do destinatário que será validado juntamente com o token recebido, caso a opção "EnforceSecureValidation: true" tenha sido utilizada, para que seja verificado se o token utilizado realmente pertence ao numero de telefone cadastrado.
Exemplo de Retorno de Sucesso
{
  "Success": true, 
  "Object": {
    "TokenCode": "XXXXXX",
    "PhoneNumber: "DDD+Telefone"
    },
  "Message": "O token informado foi validado com sucesso."
}
Campos do Retorno
Campos Descrição
Success Pode ser retornado true para sucesso ou false para erro, este campo é o resultado da operação.
TokenCode Token que foi recebido e inserido para ser validado.
PhoneNumber Número de telefone caso tenha sido utilizado o campo "EnforceSecureValidation": true, para aumentar a segurança de validação e validar o número de telefone e token recebido.
Message Neste campo é retornado mais detalhes sobre o resultado da operação do recurso que foi utilizado.
Retornos Previsíveis
HTTP Status Descrição
200 O token informado foi validado com sucesso.
400 O código informado está expirado.
400 O código informado é inválido para este telefone.
400 Object reference not set to an instance of an object.
Possível Causa: Nenhum objeto foi informado no Body da requisição.
400 É necessário informar ao menos um destinatário que irá receber o SMS.
400 O token informado é invalido.
400 Este token já foi utilizado.
401 A chave de acesso informada é inválida e não pode efetuar uma requisição à API.
Possível Causa: auth-key está incorreta ou o campo foi informado em branco.
401 O usuário informado está desativado.
401 O usuário informado está incorreto ou não existe
Possível Causa: o campo auth-key não está sendo informado na requisição.
500 houve um time out na requisição ao efetuar a conexão com o endpoint.
503 Algum problema com o servidor em que está o recurso acessado, neste caso, tente acessar novamente.

Relatórios

Nesta seção, são abordados todos os recursos disponíveis para consulta de SMS enviados. Mais detalhes sobre cada recurso, pode ser encontrado em uma breve descrição logo abaixo do título de cada endpoint.

Consultar Relatório / Detalhado.

Com este recurso, é possivel consultar todos os detalhes disponíveis dos SMS enviados.
Este recurso possui um cooldown de 30 segundos que é compartilhando entre os recursos de Relatório de Regra de Resposta Automática, Relatório de Respostas e Histórico de Recargas, ou seja, somente uma chamada a cada 30 segundos a estes recursos podem ser realizadas.
URL do Endpoint: https://sms.comtele.com.br/api/v2/detailedreporting
Autenticação via Header: auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Método: GET

  curl --request GET \
    --url 'https://sms.comtele.com.br/api/v2/detailedreporting?StartDate=begin_search_data&EndDate=end_search_data&Delivered=filter_status&Receiver=receiver&RequestUniqueId=unique_id' \
    --header 'auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
  var request = require("request");

  var options = {
    method: 'GET',
    url: 'https://sms.comtele.com.br/api/v2/detailedreporting',
    qs: {
      StartDate: 'begin_search_data',
      EndDate: 'end_search_data',
      Delivered: 'filter_status',
      Receiver: 'receiver',
      RequestUniqueId: 'unique_id'
    },
    headers: {'auth-key': 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'}
  };

  request(options, function (error, response, body) {
    if (error) throw new Error(error);

    console.log(body);
  });
  require 'uri'
  require 'net/http'
  require 'openssl'

  url = URI("https://sms.comtele.com.br/api/v2/detailedreporting?StartDate=begin_search_data&EndDate=end_search_data&Delivered=filter_status&Receiver=receiver&RequestUniqueId=unique_id")

  http = Net::HTTP.new(url.host, url.port)
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE

  request = Net::HTTP::Get.new(url)
  request["auth-key"] = 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'

  response = http.request(request)
  puts response.read_body
  var data = null;

  var xhr = new XMLHttpRequest();

  xhr.addEventListener("readystatechange", function () {
    if (this.readyState === this.DONE) {
      console.log(this.responseText);
    }
  });

  xhr.open("GET", "https://sms.comtele.com.br/api/v2/detailedreporting?StartDate=begin_search_data&EndDate=end_search_data&Delivered=filter_status&Receiver=receiver&RequestUniqueId=unique_id");
  xhr.setRequestHeader("auth-key", "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX");

  xhr.send(data);
  import requests

  url = "https://sms.comtele.com.br/api/v2/detailedreporting"

  querystring = {"StartDate":"begin_search_data","EndDate":"end_search_data","Delivered":"filter_status","Receiver":"receiver","RequestUniqueId":"unique_id"}

  headers = {'auth-key': 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'}

  response = requests.request("GET", url, headers=headers, params=querystring)

  print(response.text)
Campos Obrigatorio Descrição
StartDate sim Data inicial do período que os envios serão consultados. Padrão ISO8601 formato: YYYY-MM-DDThh:mm:ss.sTZD (eg 1997-07-16T19:20:30.45-02:00)
EndDate sim Data final do período que os envios serão consultados. Padrão ISO8601 formato: YYYY-MM-DDThh:mm:ss.sTZD (eg 1997-07-16T19:20:30.45-02:00)
Delivered não Status de entrega dos SMS poderão ser filtrados e retornados nos relatórios. Os valores ‘option’ podem ser substituído por 'all’, para ser exibido todos os SMS entregues e não entregues no período; 'true’ para exibir apenas os SMS entregues; Por fim 'false’ para exibir somente os SMS não entregues.
Receiver não Destinatário que recebeu o SMS no formato: 55+DDD+Número.
RequestUniqueId não Este campo é retornado no envio do SMS e pode ser armazenado na sua base.
Exemplo de Retorno de Sucesso
{
  "Success": true, 
  "Object": [
    {
      "Receiver": "", 
      "Content": "", 
      "Status": "", 
      "ScheduleDate": "", 
      "RequestDate": "", 
      "SystemMessage": "", 
      "DlrStatus": "", 
      "Sender": ""
    }
  ],
  "Message": null
}
Campos do Retorno
Campos Descrição
Success Pode ser retornado true para sucesso ou false para erro, este campo é o resultado da operação.
Receiver Destinatários que receberam o SMS. Formato: DDD + Número.
Content Conteúdo da mensagem que foi recebida pelo número retornado.
Status É o campo de status do SMS enviado, pode ser retornado Processed, para SMS que estão na fila de entrega; Delivered para SMS entregues; Error para casos que ocorreu algum erro no envio e o SMS não foi entregue.
ScheduleDate É o campo que retorna a data que o SMS foi agendado, caso tenha sido feito agendamento, se o envio foi realizado de forma instantânea será retornado null. Padrão ISO8601 formato: YYYY-MM-DDThh:mm:ss.sTZD (eg 1997-07-16T19:20:30.45-02:00)
RequestDate É o campo que retorna a data que o SMS foi requisitado. Padrão ISO8601 formato: YYYY-MM-DDThh:mm:ss.sTZD (eg 1997-07-16T19:20:30.45-02:00)
SystemMessage Mensagem detalhada sobre o resultado da operação.
Retornos previsíveis:
A mensagem não foi enviada, pois não foi aceita pela operadora de destino.
• Não tarifado: Quando o número de telefone é válido, segue os padrões numéricos, mas não foi encontrado em nenhuma operadora. Ou seja, é um número inexistente.
A mensagem não foi enviada, pois foi rejeitada pela operadora de destino.
• Tarifado: O conteúdo da mensagem pode ter violado alguma regra estabelecida nos termos e condições de uso. Ex: conteúdo impróprio, uso indevido de alguma marca ou instituição que exige autorização para veiculação de conteúdo.
Envio cancelado pelo usuário.
• Não Tarifado: Quando há um agendamento e o mesmo foi cancelado antes do envio ter sido realizado às operadoras.
A mensagem não foi enviada, pois foi recusada pela operadora de destino.
• Não Tarifado: Quando a entrega não pode ser realizada por recusa técnica das operadoras. Pode ocorrer se houverem problemas técnicos e de indisponibilidade temporária na operadora.
A mensagem foi entregue a operadora, porém não foi entregue ao destinatário final.
• Tarifado: Quando a entrega não pode ser realizada, geralmente ocorre para um número de telefone desativado permanentemente há muito tempo.
A mensagem não pode ser enviada, pois excedeu o limite de tentativas.
• Não Tarifado: Quando esgotamos as tentativas de reenviar suas mensagens caso a operadora tenha retornado algum problema temporário que impossibilitou a entrega ser efetuada.
A mensagem foi enviada com sucesso para a operadora.
• Tarifado. Sua mensagem passou pelas pré-validações e está com a operadora para ser entregue ao celular de destino. Nessa etapa o tempo pode sofrer alguns atrasos por diversas questões. Ex: sinal de rede, aparelho desligado e configurações específicas do aparelho.
A mensagem não foi enviada, pois o número informado não é válido.
• Não Tarifado. O número informado não segue os padrões de números válidos.
O destinatário, remetente ou conteúdo está em branco.
• Não Tarifado. Ops, você esqueceu de inserir o destinatário ou sua mensagem.
O destinatário encontra-se em sua blacklist e não pode receber mensagens.
• Não Tarifado. Você anteriormente adicionou esse número em sua lista de restrições e por isso essa mensagem não pode seguir.
DlrStatus É o campo que informa mais detalhes sobre status do SMS enviado, pode ser retornado Delivered para SMS entregues; Undelivered para SMS não entregues; Rejected para SMS que foram rejeitados por possuir conteúdo inadequado ou telefone incorreto; Expired para SMS que excederam o limite de tentativas de entrega; Accepted, para SMS que estão na fila de entrega
Sender Este campo é o que foi passado um id interno no endpoint de envio do SMS. Ele dispensam que você faça “de/para” dos ids da Comtele com o sistema que está integrando.
Message Neste campo é retornado mais detalhes sobre o resultado da operação do recurso que foi utilizado, neste caso será sempre null
Retornos Previsíveis
HTTP Status Descrição
200 Será retornado um objeto JSON com os detalhes de SMS enviados de acordo com a data selecionada.
202 Nao foi possivel continuar, pois este metodo da API possui limite de tempo entre requisicoes. O tempo de espera entre sua ultima requisicao e esta e de 30 segundos e ainda faltam XX segundos.
400 O parametro 'StartDate’ deve ser informado com conteudo.
400 O parametro 'EndDate’ deve ser informado com conteudo.
401 A chave de acesso informada é inválida e não pode efetuar uma requisição à API.
Possível Causa: auth-key está incorreta ou o campo foi informado em branco.
401 O usuário informado está desativado.
401 O usuário informado está incorreto ou não existe
Possível Causa: o campo auth-key não está sendo informado na requisição.
500 Algum problema com o servidor em que está o recurso acessado, neste caso, tente acessar novamente.
503 houve um time out na requisição ao efetuar a conexão com o endpoint.

Consultar Relatório / Regra de resposta automática

Com este recurso, é possivel consultar todos os detalhes disponíveis dos SMS enviados/recebidos utilizando a funcionalidade de regra de resposta automatica.
Este recurso possui um cooldown de 30 segundos que é compartilhando entre os recursos de Relatório Detalhado, Relatório de Respostas e Histórico de Recargas, ou seja, somente uma chamada a cada 30 segundos a estes recursos podem ser realizadas.

URL do Endpoint: https://sms.comtele.com.br/api/v2/contextreporting
Autenticação via Header: auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Método: GET

  curl --request GET \
    --url 'https://sms.comtele.com.br/api/v2/contextreporting?StartDate=begin_search_data&EndDate=end_search_data&ContextRuleName=rule_name' \
    --header 'auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
  var request = require("request");

  var options = {
    method: 'GET',
    url: 'https://sms.comtele.com.br/api/v2/contextreporting',
    qs: {
      StartDate: 'begin_search_data',
      EndDate: 'end_search_data',
      ContextRuleName: 'rule_name'
    },
    headers: {'auth-key': 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'}
  };

  request(options, function (error, response, body) {
    if (error) throw new Error(error);

    console.log(body);
  });

  require 'uri'
  require 'net/http'
  require 'openssl'

  url = URI("https://sms.comtele.com.br/api/v2/contextreporting?StartDate=begin_search_data&EndDate=end_search_data&ContextRuleName=rule_name")

  http = Net::HTTP.new(url.host, url.port)
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE

  request = Net::HTTP::Get.new(url)
  request["auth-key"] = 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'

  response = http.request(request)
  puts response.read_body
  var data = null;

  var xhr = new XMLHttpRequest();

  xhr.addEventListener("readystatechange", function () {
    if (this.readyState === this.DONE) {
      console.log(this.responseText);
    }
  });

  xhr.open("GET", "https://sms.comtele.com.br/api/v2/contextreporting?StartDate=begin_search_data&EndDate=end_search_data&ContextRuleName=rule_name");
  xhr.setRequestHeader("auth-key", "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX");

  xhr.send(data);
  import requests

  url = "https://sms.comtele.com.br/api/v2/contextreporting"

  querystring = {"StartDate":"begin_search_data","EndDate":"end_search_data","ContextRuleName":"rule_name"}

  headers = {'auth-key': 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'}

  response = requests.request("GET", url, headers=headers, params=querystring)

  print(response.text)
Campos Obrigatório Descrição
StartDate sim Data inicial do período que os envios serão consultados. Padrão ISO8601 formato: YYYY-MM-DDThh:mm:ss.sTZD (eg 1997-07-16T19:20:30.45-02:00).
EndDate sim Data final do período que os envios serão consultados. Padrão ISO8601 formato: YYYY-MM-DDThh:mm:ss.sTZD (eg 1997-07-16T19:20:30.45-02:00).
ContextRuleName não Neste campo pode ser informado o nome da regra que o contexto de resposta foi programado e cadastrado no sistema para filtrar os resultados somente de uma regra, se não for informado não será aplicado filtro e todos os dados serão exibidos.
Exemplo de Retorno de Sucesso
{
  "Success": true,
  "Object":  [
    {
      "Sender": "", 
      "Content": "", 
      "Received": "", 
      "ContextRuleName": "", 
      "StatusMessage": ""
    }
  ],
  "Message": null
}
Campos do Retorno
Campos Descrição
Success Pode ser retornado true para sucesso ou false para erro, este campo é o resultado da operação.
Sender Este campo é o que foi passado um id interno no endpoint de envio do SMS. Ele dispensam que você faça “de/para” dos ids da Comtele com o sistema que está integrando.
Content Conteúdo da mensagem que foi recebida pelo número retornado.
ContextRuleName Nome da regra que o contexto de resposta foi utilizado.
StatusMessage É o campo de status que determina a direção do SMS, se é Enviado ou Recebido.
Message Neste campo é retornado mais detalhes sobre o resultado da operação do recurso que foi utilizado, neste caso será sempre null
Retornos Previsíveis
HTTP Status Descrição
200 Será retornado um objeto JSON com os detalhes de SMS enviados de acordo com a data selecionada.
202 Nao foi possivel continuar, pois este metodo da API possui limite de tempo entre requisicoes. O tempo de espera entre sua ultima requisicao e esta e de 30 segundos e ainda faltam XX segundos.
400 O parametro 'StartDate’ deve ser informado com conteudo.
400 O parametro 'EndDate’ deve ser informado com conteudo.
401 A chave de acesso informada é inválida e não pode efetuar uma requisição à API.
Possível Causa: auth-key está incorreta ou o campo foi informado em branco.
401 O usuário informado está desativado.
401 O usuário informado está incorreto ou não existe
Possível Causa: o campo auth-key não está sendo informado na requisição.
500 Algum problema com o servidor em que está o recurso acessado, neste caso, tente acessar novamente.
503 houve um time out na requisição ao efetuar a conexão com o endpoint.

Consultar Relatório / Respostas

Com este recurso, é possivel consultar todos os detalhes disponíveis dos SMS recebidos utilizando a funcionalidade de recebimento de respostas.
Este recurso possui um cooldown de 30 segundos que é compartilhando entre os recursos de Relatório Detalhado, Relatório de Regra de Resposta Automática e Histórico de Recargas, ou seja, somente uma chamada a cada 30 segundos a estes recursos podem ser realizadas.

URL do Endpoint: https://sms.comtele.com.br/api/v2/replyreporting
Autenticação via Header: auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Método: GET

  curl --request GET \
    --url 'https://sms.comtele.com.br/api/v2/replyreporting?StartDate=begin_search_data&EndDate=end_search_data&Sender=phone_number&SenderName=sender \
    --header 'auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
  var request = require("request");

  var options = {
    method: 'GET',
    url: 'https://sms.comtele.com.br/api/v2/replyreporting',
    qs: {
      StartDate: 'begin_search_data',
      EndDate: 'end_search_data',
      Sender: 'phone_number'
      SenderName: 'sender'
    },
    headers: {'auth-key': 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'}
  };

  request(options, function (error, response, body) {
    if (error) throw new Error(error);

    console.log(body);
  });

  require 'uri'
  require 'net/http'
  require 'openssl'

  url = URI("https://sms.comtele.com.br/api/v2/replyreporting?StartDate=begin_search_data&EndDate=end_search_data&Sender=phone_number&SenderName=sender")

  http = Net::HTTP.new(url.host, url.port)
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE

  request = Net::HTTP::Get.new(url)
  request["auth-key"] = 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'

  response = http.request(request)
  puts response.read_body
  var data = null;

  var xhr = new XMLHttpRequest();

  xhr.addEventListener("readystatechange", function () {
    if (this.readyState === this.DONE) {
      console.log(this.responseText);
    }
  });

  xhr.open("GET", "https://sms.comtele.com.br/api/v2/replyreporting?StartDate=begin_search_data&EndDate=end_search_data&Sender=phone_number&SenderName=sender");
  xhr.setRequestHeader("auth-key", "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX");

  xhr.send(data);
  import requests

  url = "https://sms.comtele.com.br/api/v2/replyreporting"

  querystring = {"StartDate":"begin_search_data","EndDate":"end_search_data","Sender":"phone_number","SenderName":"sender"}

  headers = {'auth-key': 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'}

  response = requests.request("GET", url, headers=headers, params=querystring)

  print(response.text)
Campos Obrigatório Descrição
StartDate sim Data inicial do período que os envios serão consultados. Padrão ISO8601 formato: YYYY-MM-DDThh:mm:ss.sTZD (eg 1997-07-16T19:20:30.45-02:00).
EndDate sim Data final do período que os envios serão consultados. Padrão ISO8601 formato: YYYY-MM-DDThh:mm:ss.sTZD (eg 1997-07-16T19:20:30.45-02:00).
Sender não Pode ser passado em branco caso não queira filtrar uma resposta. É o número do telefone de quem ou o que respondeu o SMS.
SenderName não Pode ser passado em branco caso não queira filtrar uma resposta. É o Sender que foi enviado no Envio do SMS.
Exemplo de Retorno de Sucesso
{
  "Success": true,
  "Object": [
    {
      "Sender": "",
      "SentContent": "",
      "ReceivedContent": "",
      "ReceivedDate": "",
      "SenderName": ""
    }
  ],
  "Message": null
}

Campos do Retorno
Campos Descrição
Success Pode ser retornado true para sucesso ou false para erro, este campo é o resultado da operação.
Sender Este campo, diferentemente dos outros endpoints com recursos de relatório, é o número do telefone de quem ou o que respondeu o SMS, número de origem da resposta recebida.
SentContent Conteúdo da mensagem que foi enviada para o número do telefone de destino..
ReceivedContent Conteúdo da mensagem respondida pelo número do telefone de destino.
ReceivedDate Data que a resposta foi recebida.
SenderName Este campo é o que foi passado um id interno no endpoint de envio do SMS. Ele dispensam que você faça “de/para” dos ids da Comtele com o sistema que está integrando.
Message Neste campo é retornado mais detalhes sobre o resultado da operação do recurso que foi utilizado, neste caso será sempre null
Retornos Previsíveis
HTTP Status Descrição
200 Será retornado um objeto JSON com os detalhes de SMS enviados de acordo com a data selecionada.
202 Nao foi possivel continuar, pois este metodo da API possui limite de tempo entre requisicoes. O tempo de espera entre sua ultima requisicao e esta e de 30 segundos e ainda faltam XX segundos.
400 O parametro 'StartDate’ deve ser informado com conteudo.
400 O parametro 'EndDate’ deve ser informado com conteudo.
401 A chave de acesso informada é inválida e não pode efetuar uma requisição à API.
Possível Causa: auth-key está incorreta ou o campo foi informado em branco.
401 O usuário informado está desativado.
401 O usuário informado está incorreto ou não existe
Possível Causa: o campo auth-key não está sendo informado na requisição.
500 Algum problema com o servidor em que está o recurso acessado, neste caso, tente acessar novamente.
503 houve um time out na requisição ao efetuar a conexão com o endpoint.

Receber Respostas / Callback

Com este recurso, é possivel receber ao invés de consultar todos os detalhes disponíveis dos SMS recebidos utilizando a funcionalidade de recebimento de respostas.

Configuração da URL

Antes de mais nada, para receber as respostas via callback, é necessário que você ja tenha construído em sua aplicação um webhook para receber a resposta no padrão a seguir, além disso é necessário que o endpoint do seu webhook seja público e que você tenha configurado em sua conta seguindo os seguintes passos:
1 - Acessar o painel em https://sms.comtele.com.br, e inserir os dados de acesso de sua conta.
2 - Na opção Configurações do menu lateral, clique em Alterar Meus Dados.
3 - Na tela de edição dos seus dados pessoais, localize a seção CONFIGURAÇÕES e a opção URL de Callback de Respostas, insira a URL do webhook que irá receber as respostas e clique no botão salvar.
Feito esses passos, em um intervalo máximo de 30 minutos, todas as respostas que estiverem atrelados aos SMS enviados pelo seu usuário serão retornados via callback.

Exemplo do objeto da resposta
  {
    "Sender":string,
    "SentContent":string,
    "ReceivedContent":string,
    "ReceiveDate":"YYYY-MM-DDThh:mm:ss.sTZD",
    "SenderName":string
  }
Campos do Retorno
Campos Descrição
Sender Este campo, diferentemente dos outros endpoints com recursos de relatório, é o número do telefone de quem ou o que respondeu o SMS, número de origem da resposta recebida.
SentContent Conteúdo da mensagem que foi enviada para o número do telefone de destino..
ReceivedContent Conteúdo da mensagem respondida pelo número do telefone de destino.
ReceivedDate Data que a resposta foi recebida.
SenderName Este campo é o que foi passado um id interno no endpoint de envio do SMS. Ele dispensam que você faça “de/para” dos ids da Comtele com o sistema que está integrando.

Grupo de Contatos

Nesta seção, são abordados recursos disponíveis para segmentação de contatos por grupos, que podem ser utilizados na hora do envio, facilitando tanto a rotina de armazemento destes telefones, quanto a de envio posteriormente para os contatos. Mais detalhes sobre cada recurso, pode ser encontrado em uma breve descrição logo abaixo do título de cada endpoint.

Cadastrar / Grupos de Contatos

Com este recurso, é possivel cadastrar grupos de contatos para segmentar contatos em listas que podem ser usadas no momento do envio.
URL do Endpoint: https://sms.comtele.com.br/api/v2/contactgroup
Autenticação via Header: auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Método: POST

  curl --request POST \
    --url https://sms.comtele.com.br/api/v2/contactgroup \
    --header 'auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX' \
    --header 'content-type: application/json' \
    --data '{"Name":"group_name","Description":"group_description"}'
  var request = require("request");

  var options = {
    method: 'POST',
    url: 'https://sms.comtele.com.br/api/v2/contactgroup',
    headers: {
      'content-type': 'application/json',
      'auth-key': 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
    },
    body: '{"Name":"group_name","Description":"group_description"}'
  };

  request(options, function (error, response, body) {
    if (error) throw new Error(error);

    console.log(body);
  });
  require 'uri'
  require 'net/http'
  require 'openssl'

  url = URI("https://sms.comtele.com.br/api/v2/contactgroup")

  http = Net::HTTP.new(url.host, url.port)
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE

  request = Net::HTTP::Post.new(url)
  request["content-type"] = 'application/json'
  request["auth-key"] = 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
  request.body = "{\"Name\":\"group_name\",\"Description\":\"group_description\"}"

  response = http.request(request)
  puts response.read_body
  var data = "{\"Name\":\"group_name\",\"Description\":\"group_description\"}";

  var xhr = new XMLHttpRequest();

  xhr.addEventListener("readystatechange", function () {
    if (this.readyState === this.DONE) {
      console.log(this.responseText);
    }
  });

  xhr.open("POST", "https://sms.comtele.com.br/api/v2/contactgroup");
  xhr.setRequestHeader("content-type", "application/json");
  xhr.setRequestHeader("auth-key", "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX");

  xhr.send(data);
  import requests

  url = "https://sms.comtele.com.br/api/v2/contactgroup"

  payload = "{\"Name\":\"group_name\",\"Description\":\"group_description\"}"
  headers = {
      'content-type': "application/json",
      'auth-key': "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
      }

  response = requests.request("POST", url, data=payload, headers=headers)

  print(response.text)
Campos Obrigatório Descrição
Name sim Nome do grupo para segmentação dos contatos, este campo que deve ser informado no método de envio.
Description não Breve descrição do grupo, pode ser usado para inserir detalhes e informações adicionais sobre o grupo.
Exemplo de Retorno de Sucesso
  {
    "Success": true,
    "Object": {
      "Name": "group_name",
      "Description": "group_description"
    },
    "Message": "O grupo de contatos foi criado com sucesso."
  }
Campos do Retorno
Campos Descrição
Success Pode ser retornado true para sucesso ou false para erro, este campo é o resultado da operação.
Name Nome do grupo que foi adicionado.
Description Descrição do grupo que foi adicionado.
Message Neste campo é retornado mais detalhes sobre o resultado da operação do recurso que foi utilizado.
Retornos Previsíveis
HTTP Status Descrição
200 O grupo de contatos foi criado com sucesso.
202 Não foi possível continuar, pois este método da API possui limite de tempo entre requisições. O tempo de espera entre sua última requisição e esta é de 30 segundos e ainda faltam 29 segundos.
400 Object reference not set to an instance of an object.
Possível Causa: Nenhum objeto foi informado no Body da requisição.
400 O nome do grupo deve ser informado.
400 O nome do grupo informado já existe, por favor escolha um novo nome.
401 A chave de acesso informada é inválida e não pode efetuar uma requisição à API.
Possível Causa: auth-key está incorreta ou o campo foi informado em branco.
401 O usuário informado está desativado.
401 O usuário informado está incorreto ou não existe
Possível Causa: o campo auth-key não está sendo informado na requisição.
500 Algum problema com o servidor em que está o recurso acessado, neste caso, tente acessar novamente.
503 houve um time out na requisição ao efetuar a conexão com o endpoint.

Consultar / Grupos de Contatos

Com este recurso, é possivel consultar os grupos de contatos cadastrados.
URL do Endpoint: https://sms.comtele.com.br/api/v2/contactgroup/
Autenticação via Header: auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Método: GET

  curl --request GET \
    --url 'https://sms.comtele.com.br/api/v2/contactgroup/{group_name}' \
    --header 'auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
  var request = require("request");

  var options = {
    method: 'GET',
    url: 'https://sms.comtele.com.br/api/v2/contactgroup/{group_name}',
    headers: {'auth-key': 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'}
  };

  request(options, function (error, response, body) {
    if (error) throw new Error(error);

    console.log(body);
  });
  require 'uri'
  require 'net/http'
  require 'openssl'

  url = URI("https://sms.comtele.com.br/api/v2/contactgroup/{group_name}")

  http = Net::HTTP.new(url.host, url.port)
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE

  request = Net::HTTP::Get.new(url)
  request["auth-key"] = 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'

  response = http.request(request)
  puts response.read_body
  var data = null;

  var xhr = new XMLHttpRequest();

  xhr.addEventListener("readystatechange", function () {
    if (this.readyState === this.DONE) {
      console.log(this.responseText);
    }
  });

  xhr.open("GET", "https://sms.comtele.com.br/api/v2/contactgroup/{group_name}");
  xhr.setRequestHeader("auth-key", "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX");

  xhr.send(data);
  import requests

  url = "https://sms.comtele.com.br/api/v2/contactgroup/{group_name}"

  headers = {'auth-key': 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'}

  response = requests.request("GET", url, headers=headers)

  print(response.text)
Campos Obrigatório Descrição
{group_name} não Caso queira filtrar os detalhes somente de um grupo é só informar na querystring, se não informado será retornado todos os grupos cadastrados no seu usuário.
Exemplo de Retorno de Sucesso
{
  "Success": true,
  "Object": [
    {
      "Id": comtele_group_id,
      "Name": "group_name",
      "Description": "group_description",
      "TotalContacts": 1,
      "LastUsed": "yyyy-MM-dd HH:mm:ss.ms"
    }
  ],
  "Message": null
}
Campos do Retorno
Campos Descrição
Success Pode ser retornado true para sucesso ou false para erro, este campo é o resultado da operação.
Id Id junto a Comtele do grupo adicionado, campo numérico.
Name Nome do grupo.
Description Descrição do grupo.
TotalContacts Número total de contatos atualmente no grupo.
Message Neste campo é retornado mais detalhes sobre o resultado da operação do recurso que foi utilizado, neste caso será sempre null
Retornos Previsíveis
HTTP Status Descrição
200 Será retornado um objeto JSON com os detalhes do grupo ou dos grupos de contatos consultados com o critério selecionado.
400 Nao foi encontrado nenhum grupo com o nome {group_name}
401 A chave de acesso informada é inválida e não pode efetuar uma requisição à API.
Possível Causa: auth-key está incorreta ou o campo foi informado em branco.
401 O usuário informado está desativado.
401 O usuário informado está incorreto ou não existe
Possível Causa: o campo auth-key não está sendo informado na requisição.
500 Algum problema com o servidor em que está o recurso acessado, neste caso, tente acessar novamente.
503 houve um time out na requisição ao efetuar a conexão com o endpoint.

Excluir / Grupos de Contatos

Com este recurso, é possivel excluir grupos de contatos cadastrados.
URL do Endpoint: https://sms.comtele.com.br/api/v2/contactgroup
Autenticação via Header: auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Método: POST

  curl --request DELETE \
    --url 'https://sms.comtele.com.br/api/v2/contactgroup/{group_name}' \
    --header 'auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
  var request = require("request");

  var options = {
    method: 'DELETE',
    url: 'https://sms.comtele.com.br/api/v2/contactgroup/{group_name}',
    headers: {'auth-key': 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'}
  };

  request(options, function (error, response, body) {
    if (error) throw new Error(error);

    console.log(body);
  });
  require 'uri'
  require 'net/http'
  require 'openssl'

  url = URI("https://sms.comtele.com.br/api/v2/contactgroup/{group_name}")

  http = Net::HTTP.new(url.host, url.port)
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE

  request = Net::HTTP::Delete.new(url)
  request["auth-key"] = 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'

  response = http.request(request)
  puts response.read_body
  var data = null;

  var xhr = new XMLHttpRequest();

  xhr.addEventListener("readystatechange", function () {
    if (this.readyState === this.DONE) {
      console.log(this.responseText);
    }
  });

  xhr.open("DELETE", "https://sms.comtele.com.br/api/v2/contactgroup/{group_name}");
  xhr.setRequestHeader("auth-key", "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX");

  xhr.send(data);
  import requests

  url = "https://sms.comtele.com.br/api/v2/contactgroup/{group_name}"

  headers = {'auth-key': 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'}

  response = requests.request("DELETE", url, headers=headers)

  print(response.text)
Campos Obrigatório Descrição
Name sim Nome do grupo para segmentação dos contatos, este campo que deve ser informado no método de envio.
Description não Breve descrição do grupo, pode ser usado para inserir detalhes e informações adicionais sobre o grupo.
Exemplo de Retorno de Sucesso
{
  "Success": true,
  "Object": null,
  "Message": "O grupo de contatos foi removido com sucesso"
}
Campos do Retorno
Campos Descrição
Success Pode ser retornado true para sucesso ou false para erro, este campo é o resultado da operação.
Object Neste recurso será nulo, pois não existe objeto a ser retornado.
Message Neste campo é retornado mais detalhes sobre o resultado da operação do recurso que foi utilizado.
Retornos Previsíveis
HTTP Status Descrição
200 O grupo de contatos foi removido com sucesso.
401 A chave de acesso informada é inválida e não pode efetuar uma requisição à API.
Possível Causa: auth-key está incorreta ou o campo foi informado em branco.
401 O usuário informado está desativado.
401 O usuário informado está incorreto ou não existe
Possível Causa: o campo auth-key não está sendo informado na requisição.
500 Algum problema com o servidor em que está o recurso acessado, neste caso, tente acessar novamente.
503 houve um time out na requisição ao efetuar a conexão com o endpoint.

Cadastrar Contatos / Grupos de Contatos

Com este recurso, é possivel cadastrar contatos em grupos para segmentar estes contatos em listas que podem ser usadas no momento do envio.
URL do Endpoint: https://sms.comtele.com.br/api/v2/contactgroup
Autenticação via Header: auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Método: PUT

  curl --request PUT \
    --url https://sms.comtele.com.br/api/v2/contactgroup \
    --header 'auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX' \
    --header 'content-type: application/json' \
    --data '{"GroupName":"group_name","Action":"add_number","ContactName":"contact_name","ContactPhone":"phone_number"}'
  var request = require("request");

  var options = {
    method: 'PUT',
    url: 'https://sms.comtele.com.br/api/v2/contactgroup',
    headers: {
      'content-type': 'application/json',
      'auth-key': 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
    },
    body: '{"GroupName":"group_name","Action":"add_number","ContactName":"contact_name","ContactPhone":"phone_number"}'
  };

  request(options, function (error, response, body) {
    if (error) throw new Error(error);

    console.log(body);
  });
  require 'uri'
  require 'net/http'
  require 'openssl'

  url = URI("https://sms.comtele.com.br/api/v2/contactgroup")

  http = Net::HTTP.new(url.host, url.port)
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE

  request = Net::HTTP::Put.new(url)
  request["content-type"] = 'application/json'
  request["auth-key"] = 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
  request.body = "{\"GroupName\":\"group_name\",\"Action\":\"add_number\",\"ContactName\":\"contact_name\",\"ContactPhone\":\"phone_number\"}"

  response = http.request(request)
  puts response.read_body
  var data = "{\"GroupName\":\"group_name\",\"Action\":\"add_number\",\"ContactName\":\"contact_name\",\"ContactPhone\":\"phone_number\"}";

  var xhr = new XMLHttpRequest();

  xhr.addEventListener("readystatechange", function () {
    if (this.readyState === this.DONE) {
      console.log(this.responseText);
    }
  });

  xhr.open("PUT", "https://sms.comtele.com.br/api/v2/contactgroup");
  xhr.setRequestHeader("content-type", "application/json");
  xhr.setRequestHeader("auth-key", "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX");

  xhr.send(data);
  import requests

  url = "https://sms.comtele.com.br/api/v2/contactgroup"

  payload = "{\"GroupName\":\"group_name\",\"Action\":\"add_number\",\"ContactName\":\"contact_name\",\"ContactPhone\":\"phone_number\"}"
  headers = {
      'content-type': "application/json",
      'auth-key': "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
      }

  response = requests.request("PUT", url, data=payload, headers=headers)

  print(response.text)
Campos Obrigatório Descrição
GroupName sim Nome do grupo que ja foi cadastrado para a segmentação dos contatos.
Action sim Neste campo o parâmetro “add_number” obrigatóriamente deve ser informado para adicionar os contatos ao grupo.
ContactName não Neste campo, você pode adicinar o nome do contato, que poderá ser usado no momento do envio via painel para fazer envios personalizados.
ContactPhone sim Número de telefone do contato que está adicionando para receber os SMS.
Exemplo de Retorno de Sucesso
  {
    "Success": true,
    "Object": {
      "GroupName": "group_name",
      "Action": "add_number",
      "ContactPhone": "phone_number",
      "ContactName": "contact_name"
    },
    "Message": "O contato foi inserido no grupo com sucesso."
  }
Campos do Retorno
Campos Descrição
Success Pode ser retornado true para sucesso ou false para erro, este campo é o resultado da operação.
GroupName Nome do grupo em que o contato foi adicionado.
Action add_number, ação que foi informada para adicionar o número de telefone do contato.
ContactPhone Número de telefone do contato que foi adicionado.
ContactName Nome do contato que foi adicionado.
Message Neste campo é retornado mais detalhes sobre o resultado da operação do recurso que foi utilizado.
Retornos Previsíveis
HTTP Status Descrição
200 O contato foi inserido no grupo com sucesso.
400 Object reference not set to an instance of an object.
Possível Causa: Nenhum objeto foi informado no Body da requisição.
400 O grupo informado nao foi encontrado.
400 O numero de telefone deve ser informado.
400 O parametro Action deve ser informado.
401 A chave de acesso informada é inválida e não pode efetuar uma requisição à API.
Possível Causa: auth-key está incorreta ou o campo foi informado em branco.
401 O usuário informado está desativado.
401 O usuário informado está incorreto ou não existe
Possível Causa: o campo auth-key não está sendo informado na requisição.
500 Algum problema com o servidor em que está o recurso acessado, neste caso, tente acessar novamente.
503 houve um time out na requisição ao efetuar a conexão com o endpoint.

Excluir Contatos / Grupos de Contatos

Com este recurso, é possivel remover contatos em grupos segmentados, para que estes contatos não recebam mais SMS destas listas quando usadas no momento do envio.
URL do Endpoint: https://sms.comtele.com.br/api/v2/contactgroup
Autenticação via Header: auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Método: PUT

  curl --request PUT \
    --url https://sms.comtele.com.br/api/v2/contactgroup \
    --header 'auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX' \
    --header 'content-type: application/json' \
    --data '{"GroupName":"group_name","Action":"remove_number","ContactName":"contact_name","ContactPhone":"phone_number"}'
  var request = require("request");

  var options = {
    method: 'PUT',
    url: 'https://sms.comtele.com.br/api/v2/contactgroup',
    headers: {
      'content-type': 'application/json',
      'auth-key': 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
    },
    body: '{"GroupName":"group_name","Action":"remove_number","ContactName":"contact_name","ContactPhone":"phone_number"}'
  };

  request(options, function (error, response, body) {
    if (error) throw new Error(error);

    console.log(body);
  });
  require 'uri'
  require 'net/http'
  require 'openssl'

  url = URI("https://sms.comtele.com.br/api/v2/contactgroup")

  http = Net::HTTP.new(url.host, url.port)
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE

  request = Net::HTTP::Put.new(url)
  request["content-type"] = 'application/json'
  request["auth-key"] = 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
  request.body = "{\"GroupName\":\"group_name\",\"Action\":\"remove_number\",\"ContactName\":\"contact_name\",\"ContactPhone\":\"phone_number\"}"

  response = http.request(request)
  puts response.read_body
  var data = "{\"GroupName\":\"group_name\",\"Action\":\"remove_number\",\"ContactName\":\"contact_name\",\"ContactPhone\":\"phone_number\"}";

  var xhr = new XMLHttpRequest();

  xhr.addEventListener("readystatechange", function () {
    if (this.readyState === this.DONE) {
      console.log(this.responseText);
    }
  });

  xhr.open("PUT", "https://sms.comtele.com.br/api/v2/contactgroup");
  xhr.setRequestHeader("content-type", "application/json");
  xhr.setRequestHeader("auth-key", "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX");

  xhr.send(data);
  import requests

  url = "https://sms.comtele.com.br/api/v2/contactgroup"

  payload = "{\"GroupName\":\"group_name\",\"Action\":\"remove_number\",\"ContactName\":\"contact_name\",\"ContactPhone\":\"phone_number\"}"
  headers = {
      'content-type': "application/json",
      'auth-key': "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
      }

  response = requests.request("PUT", url, data=payload, headers=headers)

  print(response.text)
Campos Obrigatório Descrição
GroupName sim Nome do grupo que ja foi cadastrado para a segmentação dos contatos.
Action sim Neste campo o parâmetro “remove_number” obrigatóriamente deve ser informado para remover os contatos ao grupo.
ContactName não Neste campo, você pode adicinar o nome do contato, que poderá ser usado no momento do envio via painel para fazer envios personalizados.
ContactPhone sim Número de telefone do contato que está adicionando para receber os SMS.
Exemplo de Retorno de Sucesso
  {
    "Success": true,
    "Object": {
      "GroupName": "group_name",
      "Action": "remove_number",
      "ContactPhone": "phone_number",
      "ContactName": "contact_name"
    },
    "Message": "O contato foi removido do grupo com sucesso."
  }
Campos do Retorno
Campos Descrição
Success Pode ser retornado true para sucesso ou false para erro, este campo é o resultado da operação.
GroupName Nome do grupo em que o contato foi adicionado.
Action remove_number, ação que foi informada para remover o número de telefone do contato.
ContactPhone Número de telefone do contato que foi adicionado.
ContactName Nome do contato que foi adicionado.
Message Neste campo é retornado mais detalhes sobre o resultado da operação do recurso que foi utilizado.
Retornos Previsíveis
HTTP Status Descrição
200 O contato foi removido do grupo com sucesso.
400 Object reference not set to an instance of an object.
Possível Causa: Nenhum objeto foi informado no Body da requisição.
400 O grupo informado nao foi encontrado.
400 O numero de telefone deve ser informado.
400 O parametro Action deve ser informado.
401 A chave de acesso informada é inválida e não pode efetuar uma requisição à API.
Possível Causa: auth-key está incorreta ou o campo foi informado em branco.
401 O usuário informado está desativado.
401 O usuário informado está incorreto ou não existe
Possível Causa: o campo auth-key não está sendo informado na requisição.
500 Algum problema com o servidor em que está o recurso acessado, neste caso, tente acessar novamente.
503 houve um time out na requisição ao efetuar a conexão com o endpoint.

Blacklist

Cadastrar Contatos / Blacklist

Com este recurso, é possivel adicionar números de telefone em uma blacklist para não receber mais SMS proveniente de sua conta, assim, você pode se despreocupar com uma verificação antes de mandar uma mensagem para números que não desejam mais receber seus SMS, basta adicionar estes telefones em sua blacklist, e caso seja enviado um SMS para este número, não será consumido crédito, o SMS não será entregue e aparecerá no relatório detalhado, uma mensagem informando que o número não recebeu o SMS pois está cadastrado na blacklist.
URL do Endpoint: https://sms.comtele.com.br/api/v2/blacklist
Autenticação via Header: auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Método: POST

  curl --request POST \
    --url https://sms.comtele.com.br/api/v2/blacklist \
    --header 'auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX' \
    --header 'content-type: application/json' \
    --data '{"PhoneNumber":"phone_number"}'
  var request = require("request");

  var options = {
    method: 'POST',
    url: 'https://sms.comtele.com.br/api/v2/blacklist',
    headers: {
      'content-type': 'application/json',
      'auth-key': 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
    },
    body: '{"PhoneNumber":"phone_number"}'
  };

  request(options, function (error, response, body) {
    if (error) throw new Error(error);

    console.log(body);
  });
  require 'uri'
  require 'net/http'
  require 'openssl'

  url = URI("https://sms.comtele.com.br/api/v2/blacklist")

  http = Net::HTTP.new(url.host, url.port)
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE

  request = Net::HTTP::Post.new(url)
  request["content-type"] = 'application/json'
  request["auth-key"] = 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
  request.body = "{\"PhoneNumber\":\"phone_number\"}"

  response = http.request(request)
  puts response.read_body
  var data = "{\"PhoneNumber\":\"phone_number\"}";

  var xhr = new XMLHttpRequest();

  xhr.addEventListener("readystatechange", function () {
    if (this.readyState === this.DONE) {
      console.log(this.responseText);
    }
  });

  xhr.open("POST", "https://sms.comtele.com.br/api/v2/blacklist");
  xhr.setRequestHeader("content-type", "application/json");
  xhr.setRequestHeader("auth-key", "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX");

  xhr.send(data);
  import requests

  url = "https://sms.comtele.com.br/api/v2/blacklist"

  payload = "{\"PhoneNumber\":\"phone_number\"}"
  headers = {
      'content-type': "application/json",
      'auth-key': "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
      }

  response = requests.request("POST", url, data=payload, headers=headers)

  print(response.text)
Campos Obrigatório Descrição
PhoneNumber sim Número de telefone do destinatário que não deve mais receber qualquer SMS enviado por sua conta.
Exemplo de Retorno de Sucesso
  {
    "Success": true,
    "Object": {
      "PhoneNumber": "",
      "BlacklistDate": "yyyy-MM-ddTHH:mm:ss.ms"
    },
    "Message": "O numero foi inserido na blacklist com sucesso."
  }
Campos do Retorno
Campos Descrição
Success Pode ser retornado true para sucesso ou false para erro, este campo é o resultado da operação.
PhoneNumber Número de telefone que foi adicionado na blacklist.
BlacklistDate Data que o telefone foi adicionado na blacklist.
Message Neste campo é retornado mais detalhes sobre o resultado da operação do recurso que foi utilizado.
Retornos Previsíveis
HTTP Status Descrição
200 O numero foi inserido na blacklist com sucesso.
400 Object reference not set to an instance of an object.
Possível Causa: Nenhum objeto foi informado no Body da requisição.
400 O telefone deve ser informado
400 O número informado é inválido.
400 O campo “PhoneNumber” não suporta texto, somente números.
401 A chave de acesso informada é inválida e não pode efetuar uma requisição à API.
Possível Causa: auth-key está incorreta ou o campo foi informado em branco.
401 O usuário informado está desativado.
401 O usuário informado está incorreto ou não existe
Possível Causa: o campo auth-key não está sendo informado na requisição.
500 Algum problema com o servidor em que está o recurso acessado, neste caso, tente acessar novamente.
503 houve um time out na requisição ao efetuar a conexão com o endpoint.

Consultar Contatos / Blacklist

Com este recurso, é possivel consultar os números de telefone e a data que foram adicionados na sua blacklist.
URL do Endpoint: https://sms.comtele.com.br/api/v2/blacklist/
Autenticação via Header: auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Método: GET

  curl --request GET \
    --url https://sms.comtele.com.br/api/v2/blacklist/{PhoneNumber} \
    --header 'auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
  var request = require("request");

  var options = {
    method: 'GET',
    url: 'https://sms.comtele.com.br/api/v2/blacklist/{PhoneNumber}',
    headers: {'auth-key': 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'}
  };

  request(options, function (error, response, body) {
    if (error) throw new Error(error);

    console.log(body);
  });
  require 'uri'
  require 'net/http'
  require 'openssl'

  url = URI("https://sms.comtele.com.br/api/v2/blacklist/{PhoneNumber}")

  http = Net::HTTP.new(url.host, url.port)
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE

  request = Net::HTTP::Get.new(url)
  request["auth-key"] = 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'

  response = http.request(request)
  puts response.read_body
  var data = null;

  var xhr = new XMLHttpRequest();

  xhr.addEventListener("readystatechange", function () {
    if (this.readyState === this.DONE) {
      console.log(this.responseText);
    }
  });

  xhr.open("GET", "https://sms.comtele.com.br/api/v2/blacklist/{PhoneNumber}");
  xhr.setRequestHeader("auth-key", "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX");

  xhr.send(data);
  import requests

  url = "https://sms.comtele.com.br/api/v2/blacklist/{PhoneNumber}"

  headers = {'auth-key': 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'}

  response = requests.request("GET", url, headers=headers)

  print(response.text)
Campos Obrigatório Descrição
PhoneNumber não Número de telefone do destinatário que não deve mais receber qualquer SMS enviado por sua conta.
Exemplo de Retorno de Sucesso
  {
    "Success": true,
    "Object": [
      {
        "PhoneNumber": "phone_number",
        "BlacklistDate": "yyyy-MM-ddTHH:mm:ss.ms"
      }
    ],
    "Message": null
  }
Campos do Retorno
Campos Descrição
Success Pode ser retornado true para sucesso ou false para erro, este campo é o resultado da operação.
PhoneNumber Número de telefone que foi adicionado na blacklist.
BlacklistDate Data que o telefone foi adicionado na blacklist.
Message Neste campo é retornado mais detalhes sobre o resultado da operação do recurso que foi utilizado, neste caso será sempre null
Retornos Previsíveis
HTTP Status Descrição
200 Será retornado um objeto JSON com os detalhes do número ou dos números de telefones consultados com o critério selecionado.
401 A chave de acesso informada é inválida e não pode efetuar uma requisição à API.
Possível Causa: auth-key está incorreta ou o campo foi informado em branco.
401 O usuário informado está desativado.
401 O usuário informado está incorreto ou não existe
Possível Causa: o campo auth-key não está sendo informado na requisição.
500 Algum problema com o servidor em que está o recurso acessado, neste caso, tente acessar novamente.
503 houve um time out na requisição ao efetuar a conexão com o endpoint.

Excluir Contatos / Blacklist

Com este recurso, é possivel remover números de telefone que foram adicionados na blacklist para voltar a receber os SMS provenientes de sua conta. URL do Endpoint: https://sms.comtele.com.br/api/v2/blacklist/
Autenticação via Header: auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Método: DELETE

  curl --request DELETE \
    --url 'https://sms.comtele.com.br/api/v2/blacklist/{PhoneNumber}' \
    --header 'auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
  var request = require("request");

  var options = {
    method: 'DELETE',
    url: 'https://sms.comtele.com.br/api/v2/blacklist/{PhoneNumber}',
    headers: {'auth-key': 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'}
  };

  request(options, function (error, response, body) {
    if (error) throw new Error(error);

    console.log(body);
  });
  require 'uri'
  require 'net/http'
  require 'openssl'

  url = URI("https://sms.comtele.com.br/api/v2/blacklist/{PhoneNumber}")

  http = Net::HTTP.new(url.host, url.port)
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE

  request = Net::HTTP::Delete.new(url)
  request["auth-key"] = 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'

  response = http.request(request)
  puts response.read_body
  var data = null;

  var xhr = new XMLHttpRequest();

  xhr.addEventListener("readystatechange", function () {
    if (this.readyState === this.DONE) {
      console.log(this.responseText);
    }
  });

  xhr.open("DELETE", "https://sms.comtele.com.br/api/v2/blacklist/{PhoneNumber}");
  xhr.setRequestHeader("auth-key", "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX");

  xhr.send(data);
  import requests

  url = "https://sms.comtele.com.br/api/v2/blacklist/{PhoneNumber}"

  headers = {'auth-key': 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'}

  response = requests.request("DELETE", url, headers=headers)

  print(response.text)
Campos Obrigatório Descrição
PhoneNumber não Número de telefone do destinatário que não deve mais receber qualquer SMS enviado por sua conta.
Exemplo de Retorno de Sucesso
  {
    "Success": true,
    "Object": {
      "PhoneNumber": "",
      "BlacklistDate": "yyyy-MM-ddTHH:mm:ss.ms"
    },
    "Message": "O numero foi removido da blacklist com sucesso."
  }
Campos do Retorno
Campos Descrição
Success Pode ser retornado true para sucesso ou false para erro, este campo é o resultado da operação.
PhoneNumber Número de telefone que foi removido na blacklist.
BlacklistDate Data que o telefone foi adicionado na blacklist.
Message Neste campo é retornado mais detalhes sobre o resultado da operação do recurso que foi utilizado.
Retornos Previsíveis
HTTP Status Descrição
200 Será retornado um objeto JSON com os detalhes do número ou dos números de telefones consultados com o critério selecionado.
401 A chave de acesso informada é inválida e não pode efetuar uma requisição à API.
Possível Causa: auth-key está incorreta ou o campo foi informado em branco.
401 O usuário informado está desativado.
401 O usuário informado está incorreto ou não existe
Possível Causa: o campo auth-key não está sendo informado na requisição.
500 Algum problema com o servidor em que está o recurso acessado, neste caso, tente acessar novamente.
503 houve um time out na requisição ao efetuar a conexão com o endpoint.

Créditos

Nesta seção, são abordados recursos disponíveis para gestão de créditos, alguns em específico, necessitam que sua conta seja do tipo revenda, para ter funcionalidade administrativas a serem aplicadas em subcontas. Mais detalhes sobre cada recurso, pode ser encontrado em uma breve descrição logo abaixo do título de cada endpoint.

Consultar Saldo

Com este recurso, é possivel consultar a quantidade de saldo disponível em sua conta ou subcontas.
URL do Endpoint: https://sms.comtele.com.br/api/v2/credits/
Autenticação via Header: auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Método: GET

  curl --request GET \
    --url 'https://sms.comtele.com.br/api/v2/credits/{sub_account}' \
    --header 'auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
  var request = require("request");

  var options = {
    method: 'GET',
    url: 'https://sms.comtele.com.br/api/v2/credits/{sub_account}',
    headers: {'auth-key': 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'}
  };

  request(options, function (error, response, body) {
    if (error) throw new Error(error);

    console.log(body);
  });
  require 'uri'
  require 'net/http'
  require 'openssl'

  url = URI("https://sms.comtele.com.br/api/v2/credits/{sub_account}")

  http = Net::HTTP.new(url.host, url.port)
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE

  request = Net::HTTP::Get.new(url)
  request["auth-key"] = 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'

  response = http.request(request)
  puts response.read_body
  var data = null;

  var xhr = new XMLHttpRequest();

  xhr.addEventListener("readystatechange", function () {
    if (this.readyState === this.DONE) {
      console.log(this.responseText);
    }
  });

  xhr.open("GET", "https://sms.comtele.com.br/api/v2/credits/{sub_account}");
  xhr.setRequestHeader("auth-key", "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX");

  xhr.send(data);
  import requests

  url = "https://sms.comtele.com.br/api/v2/credits/{sub_account}"

  headers = {'auth-key': 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'}

  response = requests.request("GET", url, headers=headers)

  print(response.text)
Campos Obrigatório Descrição
sub_account não Se não for informado username, será retornado o saldo da conta que está relacionada a chave de integração que está sendo utilizada. A funcionalidade de consultar saldo de uma subconta só está disponível para contas do tipo revenda, que possui funcionalidades administrativas em suas subcontas.
Exemplo de Retorno de Sucesso
  {
    "Success": true,
    "Object": 0,
    "Message": null
  }
Campos do Retorno
Campos Descrição
Success Pode ser retornado true para sucesso ou false para erro, este campo é o resultado da operação.
Object É retornado a quantidade de saldo disponível no momento da consulta.
Message Neste campo é retornado mais detalhes sobre o resultado da operação do recurso que foi utilizado, neste caso será sempre null
Retornos Previsíveis
HTTP Status Descrição
200 Será retornado um objeto JSON a quantidade de saldo disponível no momento da consulta.
401 A chave de acesso informada é inválida e não pode efetuar uma requisição à API.
Possível Causa: auth-key está incorreta ou o campo foi informado em branco.
401 O usuário informado está desativado.
401 O usuário informado está incorreto ou não existe
Possível Causa: o campo auth-key não está sendo informado na requisição.
500 Algum problema com o servidor em que está o recurso acessado, neste caso, tente acessar novamente.
503 houve um time out na requisição ao efetuar a conexão com o endpoint.

Inserir Saldo / Subcontas

Com este recurso, é possivel adicionar saldo em suas subcontas. Recurso disponível apenas para contas do tipo revenda
URL do Endpoint: https://sms.comtele.com.br/api/v2/credits/Username?Amount={credits_amount}
Autenticação via Header: auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Método: PUT

  curl --request PUT \
    --url 'https://sms.comtele.com.br/api/v2/credits/sub_account?Amount=credits_amount' \
    --header 'auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
  var request = require("request");

  var options = {
    method: 'PUT',
    url: 'https://sms.comtele.com.br/api/v2/credits/sub_account',
    qs: {Amount: 'credits_amount'},
    headers: {'auth-key': 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'}
  };

  request(options, function (error, response, body) {
    if (error) throw new Error(error);

    console.log(body);
  });
  require 'uri'
  require 'net/http'
  require 'openssl'

  url = URI("https://sms.comtele.com.br/api/v2/credits/sub_account?Amount=credits_amount")

  http = Net::HTTP.new(url.host, url.port)
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE

  request = Net::HTTP::Put.new(url)
  request["auth-key"] = 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'

  response = http.request(request)
  puts response.read_body
  var data = null;

  var xhr = new XMLHttpRequest();

  xhr.addEventListener("readystatechange", function () {
    if (this.readyState === this.DONE) {
      console.log(this.responseText);
    }
  });

  xhr.open("PUT", "https://sms.comtele.com.br/api/v2/credits/sub_account?Amount=credits_amount");
  xhr.setRequestHeader("auth-key", "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX");

  xhr.send(data);
  import requests

  url = "https://sms.comtele.com.br/api/v2/credits/sub_account"

  querystring = {"Amount":"credits_amount"}

  headers = {'auth-key': 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'}

  response = requests.request("PUT", url, headers=headers, params=querystring)

  print(response.text)
Campos Obrigatório Descrição
sub_account sim Username da subconta que pertence a sua revenda que terão os créditos adicionados. Recurso disponível apenas para contas do tipo revenda
Amount sim Quantidade de créditos a ser adicionados da subconta. Recurso disponível apenas para contas do tipo revenda
Exemplo de Retorno de Sucesso
{
  "Success": true,
  "Object": null,
  "Message": "Os creditos foram alterados com sucesso."
}
Campos do Retorno
Campos Descrição
Success Pode ser retornado true para sucesso ou false para erro, este campo é o resultado da operação.
Object Neste recurso será nulo, pois não existe objeto a ser retornado.
Message Neste campo é retornado mais detalhes sobre o resultado da operação do recurso que foi utilizado, neste caso será sempre null
Retornos Previsíveis
HTTP Status Descrição
200 Os creditos foram alterados com sucesso.
401 A chave de acesso informada é inválida e não pode efetuar uma requisição à API.
Possível Causa: auth-key está incorreta ou o campo foi informado em branco.
401 O usuário informado está desativado.
401 O usuário informado está incorreto ou não existe
Possível Causa: o campo auth-key não está sendo informado na requisição.
404 Será retornado um objeto JSON com o campo “Success”: false com Object e Message null, pois o usuário não foi encontrado ou não está atrelado a conta com a chave que está utilizando.
500 Algum problema com o servidor em que está o recurso acessado, neste caso, tente acessar novamente.
503 houve um time out na requisição ao efetuar a conexão com o endpoint.

Consultar Histórico de Recargas / Subcontas

Com este recurso, é possivel consultar a histórico de créditos adicionados suas subcontas.
Este recurso possui um cooldown de 30 segundos que é compartilhando entre os recuros de Relatório Detalhado, Relatório de Regra de Resposta Automática e Relatório de Respostas, ou seja, somente uma chamada a cada 30 segundos a estes recursos podem ser realizadas. Recurso disponível apenas para contas do tipo revenda
URL do Endpoint: https://sms.comtele.com.br/api/v2/balancehistory/
Autenticação via Header: auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Método: GET

  curl --request GET \
    --url https://sms.comtele.com.br/api/v2/balancehistory/{sub_account} \
    --header 'auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
  var request = require("request");

  var options = {
    method: 'GET',
    url: 'https://sms.comtele.com.br/api/v2/balancehistory/{sub_account}',
    headers: {'auth-key': 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'}
  };

  request(options, function (error, response, body) {
    if (error) throw new Error(error);

    console.log(body);
  });
  require 'uri'
  require 'net/http'
  require 'openssl'

  url = URI("https://sms.comtele.com.br/api/v2/balancehistory/{sub_account}")

  http = Net::HTTP.new(url.host, url.port)
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE

  request = Net::HTTP::Get.new(url)
  request["auth-key"] = 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'

  response = http.request(request)
  puts response.read_body 
  var data = null;

  var xhr = new XMLHttpRequest();

  xhr.addEventListener("readystatechange", function () {
    if (this.readyState === this.DONE) {
      console.log(this.responseText);
    }
  });

  xhr.open("GET", "https://sms.comtele.com.br/api/v2/balancehistory/{sub_account}");
  xhr.setRequestHeader("auth-key", "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX");

  xhr.send(data);
  import requests

  url = "https://sms.comtele.com.br/api/v2/balancehistory/{sub_account}"

  headers = {'auth-key': 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'}

  response = requests.request("GET", url, headers=headers)

  print(response.text)
Campos Obrigatório Descrição
sub_account sim Username da subconta que pertence a sua revenda que deseja consultar o histórico de créditos adicionados.
Exemplo de Retorno de Sucesso
  {
    "Success": true,
    "Object": [
      {
        "Amount": 1,
        "Balance": 1,
        "ExpiryDate": null,
        "HistoryDate": "yyyy-MM-dd HH:mm.ms",
        "AssociadedUsername": "username"
      }
    ],
    "Message": null
  }
Campos do Retorno
Campos Descrição
Success Pode ser retornado true para sucesso ou false para erro, este campo é o resultado da operação.
Amount Quantidade de crédito que foi adicionado.
Balance Quantidade de crédito adicionado, somada a quandidade saldo que estava disponível no momento que foi adicionado.
ExpiryDate Caso o saldo disponível tenha data de expiração, neste caso será sempre null
HistoryDate Timestamp do momento que o crédito foi adicionado na conta.
AssociadedUsername Username da conta responsável por adicionar o crédito para o usuário.
Message Neste campo é retornado mais detalhes sobre o resultado da operação do recurso que foi utilizado, neste caso será sempre null
Retornos Previsíveis
HTTP Status Descrição
200 Será retornado um objeto JSON a quantidade de saldo disponível no momento da consulta.
202 Nao foi possivel continuar, pois este metodo da API possui limite de tempo entre requisicoes. O tempo de espera entre sua ultima requisicao e esta e de 30 segundos e ainda faltam XX segundos.
401 A chave de acesso informada é inválida e não pode efetuar uma requisição à API.
Possível Causa: auth-key está incorreta ou o campo foi informado em branco.
401 O usuário informado está desativado.
401 O usuário informado está incorreto ou não existe
Possível Causa: o campo auth-key não está sendo informado na requisição.
500 Algum problema com o servidor em que está o recurso acessado, neste caso, tente acessar novamente.
503 houve um time out na requisição ao efetuar a conexão com o endpoint.

Subcontas

Nesta seção, são abordados recursos administrativos de criação de subcontas, caso sua aplicação precise dividir acessos em multiníveis ou então comercializar SMS. Mais detalhes sobre cada recurso, pode ser encontrado em uma breve descrição logo abaixo do título de cada endpoint.

Cadastrar / Subcontas

Com este recurso, é possivel cadastrar subcontas, se a sua conta for do tipo revenda. Dessa maneira é possível separar completamente a utilização das funcionalidades, créditos e acesso.
URL do Endpoint: https://sms.comtele.com.br/api/v2/accounts
Autenticação via Header: auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Método: POST

  curl --request POST \
    --url https://sms.comtele.com.br/api/v2/accounts \
    --header 'auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX' \
    --header 'content-type: application/json' \
    --data '{"Firstname":"first_name","Lastname":"last_name","Email":"email","CorporateTaxpayer":"cnpj","IndividualTaxpayer":"cpf","MobileNumber":"phone_number","Password":"password"}'
  var request = require("request");

  var options = {
    method: 'POST',
    url: 'https://sms.comtele.com.br/api/v2/accounts',
    headers: {
      'content-type': 'application/json',
      'auth-key': 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
    },
    body: '{"Firstname":"first_name","Lastname":"last_name","Email":"email","CorporateTaxpayer":"cnpj","IndividualTaxpayer":"cpf","MobileNumber":"phone_number","Password":"password"}'
  };

  request(options, function (error, response, body) {
    if (error) throw new Error(error);

    console.log(body);
  });
  require 'uri'
  require 'net/http'
  require 'openssl'

  url = URI("https://sms.comtele.com.br/api/v2/accounts")

  http = Net::HTTP.new(url.host, url.port)
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE

  request = Net::HTTP::Post.new(url)
  request["content-type"] = 'application/json'
  request["auth-key"] = 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
  request.body = "{\"Firstname\":\"first_name\",\"Lastname\":\"last_name\",\"Email\":\"email\",\"CorporateTaxpayer\":\"cnpj\",\"IndividualTaxpayer\":\"cpf\",\"MobileNumber\":\"phone_number\",\"Password\":\"password\"}"

  response = http.request(request)
  puts response.read_body
  var data = "{\"Firstname\":\"first_name\",\"Lastname\":\"last_name\",\"Email\":\"email\",\"CorporateTaxpayer\":\"cnpj\",\"IndividualTaxpayer\":\"cpf\",\"MobileNumber\":\"phone_number\",\"Password\":\"password\"}";

  var xhr = new XMLHttpRequest();

  xhr.addEventListener("readystatechange", function () {
    if (this.readyState === this.DONE) {
      console.log(this.responseText);
    }
  });

  xhr.open("POST", "https://sms.comtele.com.br/api/v2/accounts");
  xhr.setRequestHeader("content-type", "application/json");
  xhr.setRequestHeader("auth-key", "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX");

  xhr.send(data);
  import requests

  url = "https://sms.comtele.com.br/api/v2/accounts"

  payload = "{\"Firstname\":\"first_name\",\"Lastname\":\"last_name\",\"Email\":\"email\",\"CorporateTaxpayer\":\"cnpj\",\"IndividualTaxpayer\":\"cpf\",\"MobileNumber\":\"phone_number\",\"Password\":\"password\"}"
  headers = {
      'content-type': "application/json",
      'auth-key': "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
      }

  response = requests.request("POST", url, data=payload, headers=headers)

  print(response.text)
Campos Obrigatório Descrição
Firstname sim Se refere ao primeiro nome do usuário, este nome será exibido no painel para dar boas vindas e etc. O campo não pode estar vazio e pode conter caracteres alfanuméricos.
Lastname não Sobrenome do usuário.
Email sim O e-mail do usuário que está sendo cadastrado, pode ser usado para fazer login no painel.
CorporateTaxpayer CNPJ do usuário, caso seja pessoa jurídica, só é necessário informar um documento, CNPJ ou CPF.
IndividualTaxpayer CPF do usuário, caso seja pessoa física, só é necessário informar um documento, CPF ou CNPJ.
MobileNumber sim Celular do usuário que está sendo cadastrado.
Password sim Senha de acesso ao painel do usuário que está sendo cadastrado.
Exemplo de Retorno de Sucesso
  {
    "Success": true,
    "Object": {
      "Enabled": true,
      "Username": "sub_account_username",
      "Balance": 0,
      "Connection": null,
      "LastBalanceHistory": null,
      "ApiKey": "sub_account_apikey"
    },
    "Message": "O usuario foi inserido com sucesso"
  }
Campos do Retorno
Campos Descrição
Success Pode ser retornado true para sucesso ou false para erro, este campo é o resultado da operação.
Enabled Status da subconta que foi adicionada, no caso todas as subcontas recém criadas ja são ativadas.
Username Username da subconta que foi criada.
Balance Quantidade de créditos disponíveis na subconta que foi criada, todas as subcontas são criadas com 0 créditos.
Connection Data mais recente que a subconta efetuou login no painel.
LastBalanceHistory Data mais recente que a subconta teve créditos adicionados.
Message Neste campo é retornado mais detalhes sobre o resultado da operação do recurso que foi utilizado.
ApiKey Retorna a API Key da subconta que foi criada.
Retornos Previsíveis
HTTP Status Descrição
200 O usuario foi inserido com sucesso.
400 Object reference not set to an instance of an object.
Possível Causa: Nenhum objeto foi informado no Body da requisição.
400 O nome do usuario deve ser informado.
400 O telefone celular do usuario deve ser informado.
400 O e-mail já está em uso, por favor escolha um novo e-mail.
400 O e-mail informado é inválido ou não foi informado.
400 O campo C.P.F. ou o campo C.N.P.J. deve ser preenchido.
400 A senha do usuario deve ser informada.
401 A chave de acesso informada é inválida e não pode efetuar uma requisição à API.
Possível Causa: auth-key está incorreta ou o campo foi informado em branco.
401 O usuário informado está desativado.
401 O usuário informado está incorreto ou não existe
Possível Causa: o campo auth-key não está sendo informado na requisição.
500 Algum problema com o servidor em que está o recurso acessado, neste caso, tente acessar novamente.
503 houve um time out na requisição ao efetuar a conexão com o endpoint.

Consultar / Subcontas

Com este recurso, é possivel consultar as subcontas cadastradas e atreladas a sua conta.
URL do Endpoint: https://sms.comtele.com.br/api/v2/accounts/
Autenticação via Header: auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Método: GET

  curl --request GET \
    --url 'https://sms.comtele.com.br/api/v2/accounts/{sub_account}' \
    --header 'auth-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
  var request = require("request");

  var options = {
    method: 'GET',
    url: 'https://sms.comtele.com.br/api/v2/accounts/{sub_account}',
    headers: {'auth-key': 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'}
  };

  request(options, function (error, response, body) {
    if (error) throw new Error(error);

    console.log(body);
  });
  require 'uri'
  require 'net/http'
  require 'openssl'

  url = URI("https://sms.comtele.com.br/api/v2/accounts/{sub_account}")

  http = Net::HTTP.new(url.host, url.port)
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE

  request = Net::HTTP::Get.new(url)
  request["auth-key"] = 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'

  response = http.request(request)
  puts response.read_body
  var data = null;

  var xhr = new XMLHttpRequest();

  xhr.addEventListener("readystatechange", function () {
    if (this.readyState === this.DONE) {
      console.log(this.responseText);
    }
  });

  xhr.open("GET", "https://sms.comtele.com.br/api/v2/accounts/{sub_account}");
  xhr.setRequestHeader("auth-key", "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX");

  xhr.send(data);
  import requests

  url = "https://sms.comtele.com.br/api/v2/accounts/{sub_account}"

  headers = {'auth-key': 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'}

  response = requests.request("GET", url, headers=headers)

  print(response.text)
Campos Obrigatório Descrição
sub_account não Username da subconta que pertence a sua revenda. Recurso disponível apenas para contas do tipo revenda
Exemplo de Retorno de Sucesso
  {
    "Success": true,
    "Object": {
      "Enabled": true,
      "Username": "sub_account_username",
      "Balance": 0,
      "Connection": yyyy-MM-ddTHH:mm:ss.ms,
      "LastBalanceHistory": yyyy-MM-ddTHH:mm:ss.ms,
      "ApiKey": "sub_account_apikey"
    },
    "Message": "O usuario foi inserido com sucesso"
  }
Campos do Retorno
Campos Descrição
Success Pode ser retornado true para sucesso ou false para erro, este campo é o resultado da operação.
Enabled Status da subconta que foi adicionada.
Username Username da subconta que foi informado na consulta.
Balance Saldo disponível na subconta no momento da consulta.
Connection Data mais recente que a subconta efetuou login no painel.
LastBalanceHistory Data mais recente que a subconta teve créditos adicionados.
Message Neste campo é retornado mais detalhes sobre o resultado da operação do recurso que foi utilizado, neste caso será sempre null
ApiKey Retorna a API Key da subconta que foi criada.
Retornos Previsíveis
HTTP Status Descrição
200 Será retornado um objeto JSON com os detalhes do grupo ou dos grupos de contatos consultados com o critério selecionado.
401 A chave de acesso informada é inválida e não pode efetuar uma requisição à API.
Possível Causa: auth-key está incorreta ou o campo foi informado em branco.
401 O usuário informado está desativado.
401 O usuário informado está incorreto ou não existe
Possível Causa: o campo auth-key não está sendo informado na requisição.
500 Algum problema com o servidor em que está o recurso acessado, neste caso, tente acessar novamente.
503 houve um time out na requisição ao efetuar a conexão com o endpoint.