Comece por aqui

Bem-vindo(a) à documentação da API da MailGrid.

Esta documentação detalha os endpoints disponíveis na API da mailgrid, permitindo que você integre facilmente os serviços de envio de e-mails em suas aplicações. Aqui, você encontrará informações sobre os parâmetros necessários, formatos de requisição e códigos de resposta, além de exemplos práticos para diversas linguagens, como PHP, Java e Ruby.

URL para a chamada do endpoint

URLhttps://api.mailgrid.net.br/

A partir dessa URL base, você pode acessar diferentes funcionalidades adicionando caminhos específicos, como /check para verificar o status de seu domínio ou /consolidate para obter relatório de dados consolidado.

Requisitos Técnicos

Formato: Envie os dados via POST, codificados em JSON.

Header: Inclua Content-Type: application/json em todas as requisições.

Sandbox

Não oferecemos um ambiente isolado de sandbox. No entanto, cada conta possui até 5000 envios gratuitos para testes na API; Desta forma você pode testar a integração diretamente em nosso ambiente de produção com segurança e sem comprometer seus limites. Recomendamos que faça testes iniciais com um número reduzido de envios para garantir que tudo esteja funcionando perfeitamente.

Códigos HTTP das respostas

Nossa API utiliza códigos de status HTTP padrão para indicar o resultado das requisições. Respostas com status 200 indicam que a requisição foi processada corretamente, mas com diferentes códigos internos para indicar o sucesso ou falha de cada operação. Os códigos 200 podem representar tanto o sucesso quanto falhas, dependendo do código específico retornado. Não há erros 400 ou 500 na nossa API, todos os erros são tratados com diferentes status dentro do código 200.

CódigoDescriçãoSolução
200MSG ENVIADA - A mensagem foi enviada com sucesso.

HTTP 200 – OK

Nenhuma ação necessária.
204ERRO DE ENVIO - Falha na conexão SMTP.

HTTP 502 – Bad Gateway

Verifique as configurações do SMTP e tente novamente.
208FALTAM PARÂMETROS - Um ou mais parâmetros obrigatórios estão ausentes.

HTTP 400 – Bad Request

Verifique se todos os parâmetros obrigatórios foram enviados corretamente.
207ERRO: FALHA DE AUTENTICAÇÃO - Credenciais inválidas.

HTTP 401 – Unauthorized

Verifique usuário e senha SMTP informados.
211ERRO: ENCODING INVÁLIDO - O parâmetro mensagemEncoding foi informado incorretamente.

HTTP 422 – Unprocessable Entity

Utilize base64 ou quoted-printable.
212ERRO: TIPO INVÁLIDO - O parâmetro mensagemTipo foi informado incorretamente.

HTTP 422 – Unprocessable Entity

Utilize html ou text.
215ERRO: TAMANHO EXCEDIDO - O e-mail ou anexo ultrapassou o limite permitido.

HTTP 413 – Payload Too Large

Reduza o tamanho do e-mail ou dos anexos.
221ERRO: LIMITE DE CONTATOS EXCEDIDO - O número de destinatários ultrapassou o máximo permitido.

HTTP 413 – Payload Too Large

Reduza a quantidade de destinatários para até 100.
222ERRO: LIMITE DE CONTATOS EXCEDIDO - O número de contatos no campo emailDestinoCopia ultrapassou o permitido.

HTTP 413 – Payload Too Large

Reduza o número de destinatários no campo CC.
223ERRO: LIMITE DE CONTATOS EXCEDIDO - O número de contatos no campo emailDestinoCopiaOculta ultrapassou o permitido.

HTTP 413 – Payload Too Large

Reduza o número de destinatários no campo BCC.
227ERRO: FORMATO INCORRETO - O campo emailDestino não está no formato correto.

HTTP 400 – Bad Request

Certifique-se de que ele seja um array.
228ERRO: FORMATO INCORRETO - O campo emailDestinoCopia não está no formato correto.

HTTP 400 – Bad Request

Certifique-se de que ele seja um array.
229ERRO: FORMATO INCORRETO - O campo emailDestinoCopiaOculta não está no formato correto.

HTTP 400 – Bad Request

Certifique-se de que ele seja um array.

Exemplo de resposta para HTTP 502:

HTTP/1.1 502 Bad Gateway
Content-Type: application/json
{
 "status": "ERRO DE ENVIO",
 "codigo": "204",
 "criptokey": "f87e7bf77c609d9537e146fb32d88418",
 "to": "seunome@seuemail.com"
}

Limites da API

Nossa API permite até 50 chamadas simultâneas por segundo, por endereço ip. É importante respeitar esse limite para garantir o desempenho ideal e evitar qualquer impacto no funcionamento da API.

Em alguns endpoints, podemos impor limites adicionais para proteger a qualidade do serviço e evitar sobrecarga nos nossos sistemas. Caso o número de requisições ultrapasse o limite permitido, as chamadas podem ser temporariamente restringidas.

Recomendamos que você controle o ritmo de envio das requisições para garantir que tudo funcione corretamente e de forma eficiente.

Importante

Também é possível usar o protocolo HTTP caso prefira. No entanto, é importante garantir que as chamadas da API sejam feitas utilizando o método POST, pois é o método correto para enviar dados e interagir com nossos endpoints.

Autenticação

Para realizar determinadas requisições à nossa API, como envio de emails, é necessário fornecer as credenciais de autenticação no corpo da requisição, utilizando os parâmetros usuario_smtp e senha_smtp. Essas credenciais correspondem ao usuário e senha fornecidos durante a abertura de sua conta e são as mesmas utilizadas para autenticação SMTP.

Para outras requisições, a autenticação é feita com o TOKEN fornecido em sua conta, localizado no painel do cliente.

usuario_smtpNome de usuario fornecido pela mailgrid, utilizado para enviar e-mails também pelo SMTP.
senha_smtpSenha associada ao usuario_smtp, usada para autenticação no servidor SMTP da mailgrid.
token_authToken seguro fornecido no painel de cliente.

É importante garantir que esses dados estejam corretos em todas as requisições, já que qualquer falha de autenticação impedirá o envio de e-mails. Para mais informações sobre a configuração e utilização da API, consulte a documentação completa.

<?php
 // Defina o endpoint para checar o status do domínio
 $url = "https://api.mailgrid.net.br/domain/check/";

 // Seu token de autenticação (substitua pelo real)
 $token = "SEU_TOKEN_AQUI";

 // Domínio a ser consultado
 $data = [
  "dominio" => "seudominio.com.br"
 ];

 // Inicializa o cURL
 $ch = curl_init($url);

 // Configuração dos headers com autenticação Bearer
 curl_setopt($ch, CURLOPT_HTTPHEADER, [
   "Authorization: Bearer $token",
   "Content-Type: application/json"
 ]);

 // Configuração da requisição
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 curl_setopt($ch, CURLOPT_POST, true);
 curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));

 // Executa a requisição
 $response = curl_exec($ch);
 $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
 curl_close($ch);

 // Exibe a resposta
 echo "HTTP Code: " . $httpCode . "\n";
 echo "Resposta:\n";
 echo $response;
?>

Certifique-se de enviar esses dados via método POST, codificados em JSON, e incluir o cabeçalho Content-Type: application/json. Sem credenciais válidas ou um token apropriado, as requisições para os endpoints protegidos serão recusadas.

Envio de emails

Este recurso permite que você integre facilmente seu sistema ao nosso SMTP dedicado, garantindo envios de e-mails rápidos e confiáveis. A seguir, você encontrará tudo o que precisa saber para começar.

Endpoint para envio

URLhttps://api.mailgrid.net.br/sendmail/

Importante: O Endpoint legado, https://api.mailgrid.net.br/send/ permanece ativo e operacional, mas não recebe mais atualizações.

Atenção

Método: Todas as chamadas devem ser feitas via POST.

Protocolo alternativo: Use http:// se preferir (embora HTTPS seja recomendado por segurança).

Porta SMTP: Todos os envios são processados pela porta 587.

Codificação: Parâmetros e conteúdos devem ser enviados em UTF-8.

Parâmetros

Abaixo estão os parâmetros necessários para realizar envios. Os campos marcados como "Obrigatório" devem sempre ser incluídos:

ParâmetroDescriçãoObrigatório
host_smtpEndereço do servidor SMTP fornecido pela mailgridSim
usuario_smtpUsuário para autenticação SMTPSim
senha_smtpSenha para autenticação SMTPSim
emailRemetenteE-mail do remetenteSim
nomeRemetenteNome do remetenteNão
emailReplyE-mail para respostas (Reply-To)Não
emailDestinoArray de e-mails dos destinatários (máx. 100 por chamada)Sim
nomeDestinoNome do destinatárioNão
emailDestinoCopiaArray de e-mails em cópia (CC, máx. 100 por chamada)Não
emailDestinoCopiaOcultaArray de e-mails em cópia oculta (BCC, máx. 100 por chamada)Não
assuntoAssunto do e-mailSim
mensagemConteúdo do e-mail (suporta texto ou HTML)Sim
mensagemAltVersão em texto puro do e-mail (AltBody)Não
mensagemTipoTipo do conteúdo: html ou text (padrão: html se não especificado)Não
mensagemEncodingCodificação: base64 ou quoted-printable (padrão: base64 se omitido)Não
mensagemAnexosArray com anexos codificados em base64Não
variaveisArray com variáveis personalizadas do clienteNão

Enviando anexos

Os arquivos anexos devem ser enviados no formato Base64, garantindo um transporte seguro e compatível com o padrão textual do JSON. Essa codificação segue normas internacionais estabelecidas pelas RFCs 2045 e 4648, que definem as especificações MIME e a codificação Base64. Essa abordagem assegura a integridade do conteúdo durante a transmissão e permite o correto tratamento dos anexos na composição do email final.

name Nome do arquivo (ex.: imagem.jpg)
type Tipo MIME do arquivo (ex.: image/jpeg).
contentConteúdo do arquivo codificado em base64.

Requisitos Técnicos

Formato: Envie os dados via POST, codificados em JSON.

Header: Inclua Content-Type: application/json em todas as requisições.

Limite de Tamanho: O total da mensagem (incluindo anexos e cabeçalhos) não deve exceder 50 MB.

Exemplo de Chamada e Resposta

Exemplo de Requisição

{
 "host_smtp": "smtpxxxxxxxx.mailgrid.net.br",
 "usuario_smtp": "apitestexxxxxx@mailgrid.net.br",
 "senha_smtp": "xxxxxxxxxxxxxxxx",
 "emailRemetente": "teste@mailgrid.net.br",
 "nomeRemetente": "mailgrid",
 "emailDestino": ["teste@mailgrid.net.br", "postmaster@mailgrid.net.br"],
 "assunto": "Teste da API JSON em Produção",
 "mensagemAnexos": [
    {
      "name": "logo.png",
      "type": "image/png",
      "content": "iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAAHUlEQVR4nGP8//8/A7mAiWydo5pHNY9qHtVMFc0AnKADJXYG/XsAAAAASUVORK5CYII="
    },
    {
      "name": "logo2.png",
      "type": "image/png",
      "content": "iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAAHUlEQVR4nGP8//8/A7mAiWydo5pHNY9qHtVMFc0AnKADJXYG/XsAAAAASUVORK5CYII="
    }
  ],
 "mensagem": "Mensagem de teste da API - Testando envio em HTML",
 "mensagemTipo": "html",
 "mensagemEncoding": "base64",
 "mensagemAlt": "Mensagem de teste da API JSON"
}

Exemplo de resposta

Sucesso

[
	{
	 "status": "MSG ENVIADA",
	 "codigo": "200",
	 "id": "1rDPyZ-0006kJ-2N",
	 "criptokey": "67bb60dc8c61c2c807c53a97c781176a",
	 "to": "postmaster@mailgrid.net.br",
	 "cc": "",
	 "cco": ""
	}
]

Erro

[
	{
	 "status": "ERRO DE ENVIO",
	 "codigo": "204",
	 "criptokey": "f87e7bf77c609d9537e146fb32d88418",
	 "to": "seunome@seuemail.com"
	}
]

Observações Finais

Relatórios: Mensagens enviadas com sucesso são registradas automaticamente no painel de relatórios, com atualização aproximadamente, a cada 5 minutos.

Suporte: Em caso de erros persistentes, como falhas de conexão SMTP (código 204), entre em contato com nossa equipe de suporte.

Pronto para começar? Integre agora e aproveite a potência do nosso SMTP dedicado!

Variáveis personalizadas

As variáveis personalizadas permitem que você personalize o conteúdo do e-mail de acordo com as suas necessidades. Você pode enviar um array de variáveis que serão substituídas no corpo da mensagem antes do envio.

Exemplo: {{nome}}, {{idade}}, {{cidade}}, etc.

Você pode passar vários arrays de variáveis personalizadas, e elas serão mescladas no corpo da mensagem, com ordem posicional ao destinatário. Assim, se você enviar uma única mensagem para 100 destinatários, por exemplo, cada destinatário verá suas próprias informações nas variáveis.

Exemplo chamada com múltiplas variáveis

{
 "emailDestino": [
 "mailgridteste@gmail.com",
 "postmaster@mailgrid.net.br"
 ],
 "variaveis": [
	{
		"nome": "João da Silva",
		"pedido": "A123",
		"produto": "Câmera"
	},
	{
		"nome": "Maria Oliveira",
		"pedido": "B456",
		"produto": "Notebook"
	}
 ],
 "assunto": "Olá {{nome}}, seu pedido {{pedido}} foi aprovado",
 "mensagem": "<p>Olá {{nome}},<br>Seu pedido {{pedido}} referente ao produto {{produto}} foi aprovado com sucesso!</p>",
 "mensagemAlt": "Olá {{nome}}, Seu pedido {{pedido}} foi aprovado!",
 "mensagemEncoding": "base64",
 "mensagemTipo": "html",
 "host_smtp": "HOST-SMTP",
 "usuario_smtp": "USUARIO-SMTP",
 "senha_smtp": "SENHA-SMTP",
 "emailRemetente": "EMAIL-REMETENTE",
 "nomeRemetente": "NOME-REMETENTE"
}

Exemplos de código

// Inicializa a sessão cURL
$curl = curl_init();

// Define as opções cURL usando um array associativo
curl_setopt_array($curl, array(
 // URL da API mailgrid para envio de email
 CURLOPT_URL =>'https://api.mailgrid.net.br/sendmail/',

 // Faz com que o cURL retorne a resposta como string
 CURLOPT_RETURNTRANSFER =>true,

 // Define a codificação de resposta para ser aceita
 CURLOPT_ENCODING =>'',

 // Define o número máximo de redirecionamentos
 CURLOPT_MAXREDIRS =>10,

 // Define o tempo máximo de espera da requisição
 CURLOPT_TIMEOUT =>0,

 // Permite o cURL seguir redirecionamentos automaticamente
 CURLOPT_FOLLOWLOCATION =>true,

 // Define a versão do protocolo HTTP a ser usado
 CURLOPT_HTTP_VERSION =>CURL_HTTP_VERSION_1_1,

 // Define o método da requisição como POST
 CURLOPT_CUSTOMREQUEST =>'POST',

 // Define os dados do corpo da requisição em formato JSON
 CURLOPT_POSTFIELDS => '{
    "host_smtp": "HOST-SMTP", // Substitua por seu host SMTP
    "usuario_smtp": "USUARIO-SMTP", // Substitua pelo usuário SMTP
    "senha_smtp": "SENHA-SMTP", // Substitua pela senha SMTP
    "emailRemetente": "EMAIL-REMETENTE", // Email do remetente
    "nomeRemetente": "NOME-REMETENTE", // Nome do remetente
    "emailDestino": ["destinatario1@dominio.com.br", "destinatario2@dominio.com.br"], // Emails dos destinatários
    "assunto": "Teste de envio com anexo via API JSON", // Assunto do email
    "mensagemAnexos": [
	    {
	       "name": "anexoexemplo.pdf", // Nome do arquivo
	       "type": "application/pdf", // Tipo MIME do arquivo
	        "content": "UEAEAAAAAAAAAAAAAAAAAAAAA/..." // Conteúdo do arquivo codificado em base64
	    }
    ],
    "mensagem": "Mensagem de teste da API com anexo. Atenção, o arquivo codificado acima não funciona, é um exemplo."
    "mensagemTipo": "html", // Tipo de mensagem (HTML)
    "mensagemEncoding": "base64", // Codificação do arquivo anexo (base64)
    "mensagemAlt": "Mensagem de teste da API com anexo. Atenção, o arquivo codificado acima não funciona, é um exemplo."
}',

	// Define o cabeçalho da requisição, informando que o corpo está em JSON
	CURLOPT_HTTPHEADER => array(
		'Content-Type: application/json'
	),
));

// Executa a requisição cURL e armazena a resposta
$response = curl_exec($curl);

// Fecha a sessão cURL
curl_close($curl);

// Exibe a resposta recebida da API
echo $response;
import requests
from requests.structures import CaseInsensitiveDict

# URL do endpoint da API para envio de emails
url = "https://api.mailgrid.net.br/sendmail/"

# Criando um dicionário de cabeçalhos para a requisição HTTP
headers = CaseInsensitiveDict()
headers["Content-Type"] = "application/json"  # Definindo o tipo de conteúdo como JSON

# Dados para a requisição POST - Incluindo detalhes do SMTP, remetente, destinatário, anexos e mensagem
data = """
{
	"host_smtp": "HOST-SMTP",
	"usuario_smtp": "USUARIO-SMTP",
	"senha_smtp": "SENHA-SMTP",
	"emailRemetente": "EMAIL-REMETENTE",
	"nomeRemetente": "NOME-REMETENTE",
	"emailDestino": ["dev@mailgrid.net.br", "postmaster@mailgrid.net.br"],
	"assunto": "Teste da API JSON com anexo",
	"mensagemAnexos": [
	{
		"name": "pixel.jpg",
		"type": "image/jpeg",
		"content": "/9j/4AAQSkZJRgABAQEBLAEsAAD/2wBDAAYEBAQFBAYFBQY..."
	},
	{
		"name": "pixel2.jpg",
		"type": "image/jpeg",
		"content": "/9j/4AAQSkZJRgABAQEBLAEsAAD/2wBDAAYEBAQFBAYFBQY..."
		}
	],
	"mensagem": "Mensagem de teste da API com anexos. Testando anexos de html no envio da api",
	"mensagemTipo": "html",
	"mensagemEncoding": "quoted-printable",
	"mensagemAlt": "mensagem de teste da API JSON com anexos"
}
"""

# Fazendo a requisição POST para o endpoint com os cabeçalhos e os dados JSON
resp = requests.post(url, headers=headers, data=data)

# Verificando o status da resposta e exibindo o código de status HTTP
print(resp.status_code)

# Se a resposta for bem-sucedida (status code 200), pode-se processar o conteúdo da resposta
if resp.status_code == 200:
	print("Requisição bem-sucedida!")
	print(resp.json())  # Exibe a resposta JSON da API
else:
	print(f"Erro na requisição: {resp.text}")  # Exibe o erro caso a requisição falhe
# Enviar um e-mail com anexos usando a API mailgrid com cURL

curl --location 'https://api.mailgrid.net.br/sendmail/' \
	--header 'Content-Type: application/json' \
	--data-raw '{
	"host_smtp": "HOST-SMTP",
	"usuario_smtp": "USUARIO-SMTP",
	"senha_smtp": "SENHA-SMTP",
	"emailRemetente": "EMAIL-REMETENTE",
	"nomeRemetente": "NOME-REMETENTE",
	"emailDestino": ["dev@mailgrid.net.br", "postmaster@mailgrid.net.br"],
	"assunto": "Teste da API JSON com anexo",
	"mensagemAnexos": [
		{
			"name": "pixel.jpg",
			"type": "image/jpeg",
			"content": "/9j/4AAQSkZJRgABAQEBLAEsAAD/2wBDAAYEBAQFBAYFBQYJBgUGCQsIBgYICwwKCgsKCgwQDA...."
		},
		{
			"name": "pixel2.jpg",
			"type": "image/jpeg",
			"content": "/9j/4AAQSkZJRgABAQEBLAEsAAD/2wBDAAYEBAQFBAYFBQYJBgUGCQsIBgYICwwKCgsKCgwQDA...."
		}
	],
	"mensagem": "Mensagem de teste da API com anexos. Testando anexos de html no envio da api",
	"mensagemTipo": "html",
	"mensagemEncoding": "quoted-printable",
	"mensagemAlt": "mensagem de teste da API JSON com anexos"
}'
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

class Program

 // URL do endpoint da API
 private static readonly string apiUrl = "https://api.mailgrid.net.br/sendmail/";

  // Método principal assíncrono
	static async Task Main(string[] args)
	{
	// Cria a instância do HttpClient
	using (var client = new HttpClient())
	{
	// Cria a requisição HTTP com o método POST para a URL do endpoint
	var request = new HttpRequestMessage(HttpMethod.Post, apiUrl);

	// Dados do corpo da requisição, incluindo as informações do e-mail e anexos
	var jsonContent = "{\r\n" +
		"    \"host_smtp\": \"HOST-SMTP\",\r\n" +
		"    \"usuario_smtp\": \"USUARIO-SMTP\",\r\n" +
		"    \"senha_smtp\": \"SENHA-SMTP\",\r\n" +
		"    \"emailRemetente\": \"EMAIL-REMETENTE\",\r\n" +
		"    \"nomeRemetente\": \"NOME-REMETENTE\",\r\n" +
		"    \"emailDestino\": [\"dev@mailgrid.net.br\",\"postmaster@mailgrid.net.br\"],\r\n" +
		"    \"assunto\": \"Teste da API JSON com anexo\",\r\n" +
		"    \"mensagemAnexos\": [\r\n" +
		"       {\r\n" +
		"            \"name\": \"pixel.jpg\",\r\n" +
		"            \"type\": \"image/jpeg\",\r\n" +
		"            \"content\": \"/9j/4AAQSkZJRgABAQEBLAEsAAD/2wBDAAYEBAQFBAYFBQYJBgUGCQsIBgYIC...\"\r\n" +
		"       },\r\n" +
		"       {\r\n" +
		"            \"name\": \"pixel2.jpg\",\r\n" +
		"            \"type\": \"image/jpeg\",\r\n" +
		"            \"content\": \"/9j/4AAQSkZJRgABAQEBLAEsAAD/2wBDAAYEBAQFBAYFBQYJBgUGCQsIBgYIC...\"\r\n" +
		"    ],\r\n" +
		"    \"mensagem\": \"Mensagem de teste da API com anexos. Testando anexos de html no envio da api\",\r\n" +
		"    \"mensagemTipo\": \"html\",\r\n" +
		"    \"mensagemEncoding\": \"quoted-printable\",\r\n" +
		"    \"mensagemAlt\": \"mensagem de teste da API JSON com anexos\"\r\n" +
		"    }";

	// Define o conteúdo da requisição como JSON
	var content = new StringContent(jsonContent, Encoding.UTF8, "application/json");

	// Adiciona o conteúdo ao corpo da requisição
	request.Content = content;

	try
	{
	 // Envia a requisição HTTP de forma assíncrona
	 var response = await client.SendAsync(request);

	 // Garante que a resposta tenha sido bem-sucedida (código de status 2xx)
	 response.EnsureSuccessStatusCode();

	 // Exibe o conteúdo da resposta da API
	 Console.WriteLine("Resposta da API:");
	 string responseContent = await response.Content.ReadAsStringAsync();
	 Console.WriteLine(responseContent);
	}
	catch (HttpRequestException ex)
	{
	 Console.WriteLine($"Erro ao fazer a requisição: {ex.Message}");
	}
	catch (Exception ex)
	{
		Console.WriteLine($"Erro inesperado: {ex.Message}");
	 }
    }
  }
}
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;

public class mailgridSendEmail

  public static void main(String[] args) {
  // Definindo a URL do endpoint da API
	String apiUrl = "https://api.mailgrid.net.br/sendmail/";

	// Dados do email a ser enviado em formato JSON
	String data = "{\n" +
		"    \"host_smtp\": \"HOST-SMTP\",\n" +
		"    \"usuario_smtp\": \"USUARIO-SMTP\",\n" +
		"    \"senha_smtp\": \"SENHA-SMTP\",\n" +
		"    \"emailRemetente\": \"EMAIL-REMETENTE\",\n" +
		"    \"nomeRemetente\": \"NOME-REMETENTE\",\n" +
		"    \"emailDestino\": [\"dev@mailgrid.net.br\", \"postmaster@mailgrid.net.br\"],\n" +
		"    \"assunto\": \"Teste da API JSON com anexo\",\n" +
		"    \"mensagemAnexos\": [\n" +
		"        {\n" +
		"            \"name\": \"pixel.jpg\",\n" +
		"            \"type\": \"image/jpeg\",\n" +
		"            \"content\": \"/9j/4AAQSkZJRgABAQEBLAEsAAD/....\"\n" +
		"        },\n" +
		"        {\n" +
		"            \"name\": \"pixel2.jpg\",\n" +
		"            \"type\": \"image/jpeg\",\n" +
		"            \"content\": \"/9j/4AAQSkZJRgABAQEBLAEsAAD/....\"\n" +
		"    ],\n" +
		"    \"mensagem\": \" Mensagem de teste da API com anexos. Testando anexos de html no envio da api\",\n" +
		"    \"mensagemTipo\": \"html\",\n" +
		"    \"mensagemEncoding\": \"quoted-printable\",\n" +
		"    \"mensagemAlt\": \"mensagem de teste da API JSON com anexos\"\n" +
		"}";

	try {
	 URL url = new URL(apiUrl);
	 HttpURLConnection httpConnection = (HttpURLConnection) url.openConnection();

	 httpConnection.setRequestMethod("POST");
	 httpConnection.setDoOutput(true);
	 httpConnection.setRequestProperty("Content-Type", "application/json");

	 byte[] out = data.getBytes(StandardCharsets.UTF_8);
	try (OutputStream os = httpConnection.getOutputStream()) {
		os.write(out);
	}

	int statusCode = httpConnection.getResponseCode();
	System.out.println("Código de Status: " + statusCode);

	 try (BufferedReader in = new BufferedReader(new InputStreamReader(httpConnection.getInputStream()))) {
		String inputLine;
		StringBuilder response = new StringBuilder();
		while ((inputLine = in.readLine()) != null) {
			response.append(inputLine);
		}
		System.out.println("Resposta da API:\n" + response.toString());
	 } catch (IOException e) {
		System.out.println("Erro ao ler a resposta da API: " + e.getMessage());
	 }

	httpConnection.disconnect();

	  } catch (IOException e) {
		System.out.println("Erro na requisição HTTP: " + e.getMessage());
	  }
	}
}
// URL do endpoint da API para envio de e-mail
const url = 'https://api.mailgrid.net.br/sendmail/';

// Definição dos dados que serão enviados na requisição (e-mail, anexos, etc)
const data = JSON.stringify({
 "host_smtp": "HOST-SMTP",
 "usuario_smtp": "USUARIO-SMTP",
 "senha_smtp": "SENHA-SMTP",
 "emailRemetente": "EMAIL-REMETENTE",
 "nomeRemetente": "NOME-REMETENTE",
 "emailDestino": ["dev@mailgrid.net.br", "postmaster@mailgrid.net.br"],
 "assunto": "Teste da API JSON com anexo",
 "mensagemAnexos": [
	{
		"name": "pixel.jpg",
		"type": "image/jpeg",
		"content": "/9j/4AAQSkZJRgABAQEBLAEsAAD..."
	},
	{
		"name": "pixel2.jpg",
		"type": "image/jpeg",
		"content": "/9j/4AAQSkZJRgABAQEBLAEsAAD..."
	}
  ],
	"mensagem": "Mensagem de teste da API com anexos. Testando anexos de html no envio da api",
	"mensagemTipo": "html",
	"mensagemEncoding": "quoted-printable",
	"mensagemAlt": "mensagem de teste da API JSON com anexos"
});

// Função assíncrona para enviar a requisição POST para a API
async function sendEmail() {
 try {
   const response = await fetch(url, {
	 method: 'POST',
	 headers: {
		'Content-Type': 'application/json',
	 },
	body: data,
	});

	if (!response.ok) {
		throw new Error(`Erro na requisição: ${response.status} - ${response.statusText}`);
	}

	const text = await response.text();
	console.log("Resposta da API:", text);
	} catch (error) {
		console.error("Erro ao enviar o e-mail:", error);
	}
}

sendEmail();
# Importa a biblioteca HTTParty para fazer requisições HTTP
require 'httparty'

# Define a URL da API como uma constante para fácil manutenção
API_URL = 'https://api.mailgrid.net.br/sendmail/'

# Define os cabeçalhos da requisição (headers)
headers = {
	'Content-Type' => 'application/json'
}

# Cria o corpo da requisição como um hash Ruby
body = {
	'host_smtp' => 'HOST-SMTP',
	'usuario_smtp' => 'USUARIO-SMTP',
	'senha_smtp' => 'SENHA-SMTP',
	'emailRemetente' => 'EMAIL-REMETENTE',
	'nomeRemetente' => 'NOME-REMETENTE',
	'emailDestino' => [
	'destinatario1@dominio.com.br',
	'destinatario2@dominio.com.br'
	],
	'assunto' => 'Teste de envio com anexo via API JSON',
	'mensagemAnexos' => [
	{
		'name' =>'anexoexemplo.pdf',
		'type' =>'application/pdf',
		'content' =>'UEAEAAAAAAAAAAAAAAAAAAAAA/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAYH/...//Z'
	}
	],
	'mensagem' = 'Mensagem de teste da API com anexo. O arquivo codificado acima não funciona, é um exemplo.',
	'mensagemTipo' => 'html',
	'mensagemEncoding' => 'base64',
	'mensagemAlt' = 'Mensagem de teste da API com anexo. O arquivo codificado acima não funciona, é um exemplo.'
}

# Faz a requisição POST para a API
response = HTTParty.post(
	API_URL,
	headers: headers,
	body: body.to_json,
	timeout: 0,
	follow_redirects: true
)

# Exibe a resposta da API
puts response.body
// Importa a biblioteca axios para fazer requisições HTTP
const axios = require('axios');

// Define a URL da API
const apiUrl = 'https://api.mailgrid.net.br/sendmail/';

// Define os cabeçalhos da requisição
const headers = {
  'Content-Type': 'application/json'
};

// Define o corpo da requisição como um objeto JavaScript
const data = {
  host_smtp: 'HOST-SMTP',
  usuario_smtp: 'USUARIO-SMTP',
  senha_smtp: 'SENHA-SMTP',
  emailRemetente: 'EMAIL-REMETENTE',
  nomeRemetente: 'NOME-REMETENTE',
  emailDestino: [
    'destinatario1@dominio.com.br',
    'destinatario2@dominio.com.br'
  ],
  assunto: 'Teste de envio com anexo via API JSON',
  mensagemAnexos: [
    {
      name: 'anexoexemplo.pdf',
      type: 'application/pdf',
      content: 'UEAEAAAAAAAAAAAAAAAAAAAAA/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAYH/...//Z'
    }
  ],
  mensagem: 'Mensagem de teste da API com anexo. O arquivo codificado acima não funciona, é apenas um exemplo.',
  mensagemTipo: 'html',
  mensagemEncoding: 'base64',
  mensagemAlt: 'Mensagem de teste da API com anexo. O arquivo codificado acima não funciona, é apenas um exemplo.'
};

// Faz a requisição POST usando axios
axios.post(apiUrl, data, {
  headers: headers,
  maxRedirects: 10,
  timeout: 0,
  httpAgent: new (require('http').Agent)({ keepAlive: true }),
})
  .then(response => {
    console.log(response.data);
  })
  .catch(error =>  {
    console.error('Erro na requisição:', error.message);
});

Relatório de emails

É através desta API que você irá integrar seu sistema ao nosso para obter relatórios detalhados e consolidados dos envios realizados através de nosso SMTP dedicado. A seguir, você encontrará tudo o que precisa para começar.

Endpoint para Relatório de Envios

URLhttps://api.mailgrid.net.br/report/

Parâmetros

Abaixo estão os parâmetros aceitos pela API de relatório:

ParâmetroDescriçãoObrigatório
token_authToken de autenticação (localizado no painel do cliente)Não
datainiData de início da consulta (formato: YYYY-MM-DD)Sim
horainiHora de início da consulta (formato: HH:MM)Sim
datafimData de fim da consulta (formato: YYYY-MM-DD)Sim
horafimHora de fim da consulta (formato: HH:MM)Sim
statusStatus dos envios a serem consultados (erro, sucesso, soft (apenas soft bounces) e hard (apenas hard bounces)Não
emaildestinoE-mail para onde a mensagem foi enviada (filtro por destinatário específico)Não
remetenteE-mail utilizado como remetente do envio (filtro por remetente específico)Não
idMensagemID de uma mensagem enviada (filtro por mensagem específica)Não

Requisitos Técnicos

Os dados devem ser enviados via POST, codificados em JSON. Não esqueça de incluir o cabeçalho Content-Type: application/json.

Os relatórios de envios são atualizados aproximadamente a cada 10 minutos. Caso realize um envio e não o veja imediatamente no painel, aguarde a próxima atualização.

Exemplo de Chamada e Resposta

Exemplo de requisição

{
 "token_auth": "INFORME-O-TOKEN-AQUI",
 "dataini": "2025-05-01",
 "horaini": "00:01",
 "datafim": "2025-05-31",
 "horafim": "00:01"
}

Exemplo de resposta

Quando os parâmetros forem passados corretamente, a API retornará os dados detalhados dos envios no período selecionado:

{
 "0": {
 "msgid": "1htNLA-0007eW-SP",
 "email_de": "nfe@seudominio.com.br",
 "email_para": "joao@gmail.com",
 "data": "01/08/2023",
 "hora": "23:30:47",
 "status": "Entregue com sucesso"
  },
 "1": {
 "msgid": "1htKEX-0003Ef-0G",
 "email_de": "nfe@seudominio.com.br",
 "email_para": "roberto@hotmail.com",
 "data": "01/08/2023",
 "hora": "20:11:43",
 "status": "Entregue com sucesso"
  }
}

Exemplos de código

<?php

 // Defina a URL da API do mailgrid para obter relatórios
 $url = "https://api.mailgrid.net.br/report/";

 // Inicializa a sessão cURL com a URL da API
 $curl = curl_init($url);

 curl_setopt($curl, CURLOPT_URL, $url);
 curl_setopt($curl, CURLOPT_POST, true);
 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

 $headers = array(
 "Content-Type: application/json",
 );
 curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);

 $data = '{"token_auth": "INFORME-O-TOKEN-AQUI", "dataini": "2022-09-27", "horaini": "00:01", "datafim": "2022-09-27",
 "horafim": "23:59"}';

 curl_setopt($curl, CURLOPT_POSTFIELDS, $data);

 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

 $resp = curl_exec($curl);
 curl_close($curl);

 var_dump($resp);
?>
import requests
from requests.structures import CaseInsensitiveDict

# URL do endpoint da API mailgrid para consultar relatórios
url = "https://api.mailgrid.net.br/report/"

headers = CaseInsensitiveDict()
headers["Content-Type"] = "application/json"

data = '{"token_auth": "INFORME-O-TOKEN-AQUI, "dataini": "2022-09-27", "horaini": "00:01", "datafim": "2022-09-27",
"horafim": "23:59"}'

resp = requests.post(url, headers=headers, data=data)

print(resp.status_code)

if resp.status_code == 200:
	print("Requisição bem-sucedida!")
	print(resp.json())
else:
	print(f"Erro na requisição: {resp.text}")
#!/bin/bash

API_URL="https://api.mailgrid.net.br/report/"

TOKEN_AUTH="INFORME-O-TOKEN-AQUI"
DATA_INICIO="2022-09-27"
HORA_INICIO="00:01"
DATA_FIM="2022-09-27"
HORA_FIM="23:59"

JSON_DATA=$(cat <<DADOS
{
	"token_auth": "$TOKEN_AUTH,
	"dataini": "$DATA_INICIO",
	"horaini": "$HORA_INICIO",
	"datafim": "$DATA_FIM",
	"horafim": "$HORA_FIM"
}
DADOS
)

curl -X POST "$API_URL" \
	-H "Authorization: Content-Type: application/json" \
	-H "Content-Type: application/json" \
	-d "$JSON_DATA"
using System;
using System.IO;
using System.Net;
using System.Text;

class Program
{
    static void Main()
    {
        var url = "https://api.mailgrid.net.br/report/";

        try
        {
            var httpRequest = (HttpWebRequest)WebRequest.Create(url);
            httpRequest.Method = "POST";

            httpRequest.ContentType = "application/json";

            var data = "{\"token_auth\": \"INFORME-O-TOKEN-AQUI\", " +
                       "\"dataini\": \"2022-09-27\", \"horaini\": \"00:01\", \"datafim\": \"2022-09-27\",
					   \"horafim\": \"23:59\"}";

            using (var streamWriter = new StreamWriter(httpRequest.GetRequestStream(), Encoding.UTF8))
            {
                streamWriter.Write(data);
            }

            using (var httpResponse = (HttpWebResponse)httpRequest.GetResponse())
            {
                if (httpResponse.StatusCode == HttpStatusCode.OK)
                {
                    using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
                    {
                        var result = streamReader.ReadToEnd();
                        Console.WriteLine("Resposta da API:\n" + result);
                    }
                }
                else
                {
                    Console.WriteLine($"Erro na requisição. Código de status HTTP: {httpResponse.StatusCode}");
                }
            }
        }
        catch (WebException webEx)
        {
            using (var streamReader = new StreamReader(webEx.Response.GetResponseStream()))
            {
                var errorResponse = streamReader.ReadToEnd();
                Console.WriteLine($"Erro na requisição: {errorResponse}");
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Erro inesperado: {ex.Message}");
        }
    }
}
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;

public class mailgrid Report {

	public static void main(String[] args) {
		String apiUrl = "https://api.mailgrid.net.br/report/";

		String data = "{\n" +
				"    \"token_auth\": \"INFORME-O-TOKEN-AQUI\",\n" +
				"    \"dataini\": \"2022-09-27\",\n" +
				"    \"horaini\": \"00:01\",\n" +
				"    \"datafim\": \"2022-09-27\",\n" +
				"    \"horafim\": \"23:59\"\n" +
				"}";

		try {
			URL url = new URL(apiUrl);
			HttpURLConnection httpConnection = (HttpURLConnection) url.openConnection();

			httpConnection.setRequestMethod("POST");
			httpConnection.setDoOutput(true);
			httpConnection.setRequestProperty("Authorization", "Bearer YOUR_AUTH_TOKEN");
			httpConnection.setRequestProperty("Content-Type", "application/json");

			byte[] out = data.getBytes(StandardCharsets.UTF_8);

			try (OutputStream os = httpConnection.getOutputStream()) {
				os.write(out);
			}

			int statusCode = httpConnection.getResponseCode();
			System.out.println("Código de Status: " + statusCode);

			StringBuilder response = new StringBuilder();
			try (BufferedReader in =
			new BufferedReader(new InputStreamReader(httpConnection.getInputStream()))) {
				String inputLine;
				while ((inputLine = in.readLine()) != null) {
					response.append(inputLine);
				}
			} catch (IOException e) {
				System.out.println("Erro ao ler a resposta da API: " + e.getMessage());
			}

			if (statusCode == HttpURLConnection.HTTP_OK) {
				System.out.println("Resposta da API:\n" + response.toString());
			} else {
				System.out.println("Erro: " + httpConnection.getResponseMessage());
			}

			httpConnection.disconnect();

		} catch (IOException e) {
			System.out.println("Erro na requisição HTTP: " + e.getMessage());
		}
	}
}
// URL do endpoint da API para gerar relatórios
var url = "https://api.mailgrid.net.br/report/";

var xhr = new XMLHttpRequest();
xhr.open("POST", url);
xhr.setRequestHeader("Content-Type", "application/json");

xhr.onreadystatechange = function () {
	if (xhr.readyState === 4) {
		console.log("Código de status:", xhr.status);
		console.log("Resposta:", xhr.responseText);
		if (xhr.status >= 200 && xhr.status < 300) {
			console.log("Relatório gerado com sucesso!");
		} else {
			console.error("Erro ao gerar o relatório. Código de status:", xhr.status);
		}
	}
};

var data = JSON.stringify({
	"token_auth": "INFORME-O-TOKEN-AQUI,
	"dataini": "2022-09-27",
	"horaini": "00:01",
	"datafim": "2022-09-27",
	"horafim": "23:59"
});

xhr.send(data);
# Importa a biblioteca HTTParty para fazer requisições HTTP
require 'httparty'

API_URL = 'https://api.mailgrid.net.br/report/'

headers = {
	'Content-Type' => 'application/json'
}

body = {
	'token_auth' => 'INFORME-O-TOKEN-AQUI,
	'dataini' => '2022-09-27',
	'horaini' => '00:01',
	'datafim' => '2022-09-27',
	'horafim' => '23:59'
}

response = HTTParty.post(
	API_URL,
	headers: headers,
	body: body.to_json,
	verify: false
)

puts response.body.inspect
// Importa a biblioteca axios para fazer requisições HTTP
const axios = require('axios');

const apiUrl = 'https://api.mailgrid.net.br/report/';

const headers = {
	'Content-Type': 'application/json'
};

const data = {
	token_auth: 'INFORME-O-TOKEN-AQUI',
	dataini: '2022-09-27',
	horaini: '00:01',
	datafim: '2022-09-27',
	horafim: '23:59'
};

axios.post(apiUrl, data, {
	headers: headers,
	httpsAgent: new (require('https').Agent)({
	rejectUnauthorized: false
	})
})
	.then(response => {
	console.log(response.data);
	})
	.catch(error => {
	console.error('Erro na requisição:', error.message);
	});

Relatório de emails consolidado

É através desta API que você irá integrar seu sistema ao nosso para obter o relatório consolidado dos envios realizados através de nosso SMTP dedicado. A seguir, você encontrará tudo o que precisa para consultar os dados consolidados dos seus envios.

URLhttps://api.mailgrid.net.br/consolidate/

Parâmetros

Abaixo estão os parâmetros aceitos pela API de relatório:

ParâmetroDescriçãoObrigatório
token_authToken de autenticação (fornecido no painel do cliente)
Não é obrigatório caso sejam passados os parâmetros usuario_smtp e senha_smtp, para autenticação.
Não
datainiData de início da consulta (formato: YYYY-MM-DD)Sim
horainiHora de início da consulta (formato: HH:MM)Sim
datafimData de fim da consulta (formato: YYYY-MM-DD)Sim
horafimHora de fim da consulta (formato: HH:MM)Sim
statusStatus dos envios a serem consultados (erro ou sucesso - ex.: se passar sucesso, retorna apenas e-mails entregues)Não
emaildestinoE-mail para onde a mensagem foi enviada (filtro por destinatário específico)Não
remetenteE-mail utilizado como remetente do envio (filtro por remetente específico)Não

Requisitos Técnicos

Os dados devem ser enviados via POST, codificados em JSON. Não esqueça de incluir o cabeçalho Content-Type: application/json.

Exemplo de Chamada e Resposta

Exemplo de requisição

{
 "token_auth": "INFORME-O-TOKEN-AQUI,
 "dataini": "2023-02-01",
 "horaini": "00:01",
 "datafim": "2023-08-30",
 "horafim": "00:01"
}

Exemplo de resposta

Quando os parâmetros forem passados corretamente, a API retornará os dados detalhados dos envios no período selecionado:

{
 "0": {
 "msgid": "1htNLA-0007eW-SP",
 "email_de": "nfe@seudominio.com.br",
 "email_para": "joao@gmail.com",
 "data": "01/08/2023",
 "hora": "23:30:47",
 "status": "Entregue com sucesso"
  },
 "1": {
 "msgid": "1htKEX-0003Ef-0G",
 "email_de": "nfe@seudominio.com.br",
 "email_para": "roberto@hotmail.com",
 "data": "01/08/2023",
 "hora": "20:11:43",
 "status": "Entregue com sucesso"
  }
}

Exemplos de código

<?php

$url = "https://api.mailgrid.net.br/consolidate/";

$data = [
    "token_auth" => "INFORME-O-TOKEN-AQUI",
    "dataini" => "2023-02-01",
    "horaini" => "00:01",
    "datafim" => "2023-08-30",
    "horafim" => "23:59"
];

$options = [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => ["Content-Type: application/json"],
    CURLOPT_POSTFIELDS => json_encode($data),
    CURLOPT_TIMEOUT => 30,
    CURLOPT_SSL_VERIFYPEER => false
];

$ch = curl_init();
curl_setopt_array($ch, $options);
$response = curl_exec($ch);
$statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if (curl_errno($ch)) {
    echo "Erro na requisição: " . curl_error($ch);
} elseif ($statusCode !== 200) {
    echo "Erro na requisição. Código de status HTTP: " . $statusCode;
} else {
    echo "Resposta da API:\n";
    echo json_encode(json_decode($response, true), JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
}

curl_close($ch);

?>
import requests
import json

url = "https://api.mailgrid.net.br/consolidate/"

data = {
	"token_auth": "INFORME-O-TOKEN-AQUI",
	"dataini": "2023-02-01",
	"horaini": "00:01",
	"datafim": "2023-08-30",
	"horafim": "23:59"
}

headers = {
	"Content-Type": "application/json"
}

try:
	response = requests.post(url, headers=headers, json=data, timeout=30)

	if response.status_code != 200:
		print(f"Erro na requisição. Código de status HTTP: {response.status_code}")
	else:
		print("Resposta da API:")
		decoded_response = response.json()
		print(json.dumps(decoded_response, indent=4, ensure_ascii=False))

except requests.exceptions.RequestException as e:
	print(f"Erro na requisição: {e}")
URL="https://api.mailgrid.net.br/consolidate/"

TOKEN_AUTH="INFORME-O-TOKEN-AQUI"
DATANAI="2023-02-01"
HORANAI="00:01"
DATAFIM="2023-08-30"
HORAFIM="23:59"

DATA_JSON=$(cat <<DADOS
{
	"token_auth": "$TOKEN_AUTH,
	"dataini": "$DATANAI",
	"horaini": "$HORANAI",
	"datafim": "$DATAFIM",
	"horafim": "$HORAFIM"
}
DADOS
)

curl -X POST "$URL" \
	-H "Content-Type: application/json" \
	-d "$DATA_JSON" \
	--timeout 30 \
	--insecure \
	-v
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;

class Program
{
	private static string url = "https://api.mailgrid.net.br/consolidate/";

	static async Task Main(string[] args)
	{
		var data = new
		{
			token_auth = "INFORME-O-TOKEN-AQUI",
			dataini = "2023-02-01",
			horaini = "00:01",
			datafim = "2023-08-30",
			horafim = "23:59"
		};

		using (var client = new HttpClient())
		{
			client.DefaultRequestHeaders.Add("Content-Type", "application/json");

			var jsonData = JsonConvert.SerializeObject(data);
			var content = new StringContent(jsonData, Encoding.UTF8, "application/json");

			try
			{
				HttpResponseMessage response = await client.PostAsync(url, content);

				int statusCode = (int)response.StatusCode;
				Console.WriteLine($"Código de status: {statusCode}");

				if (response.IsSuccessStatusCode)
				{
					string responseBody = await response.Content.ReadAsStringAsync();
					var decodedResponse = JsonConvert.DeserializeObject(responseBody);
					Console.WriteLine("Resposta da API:");
					string formattedResponse =
					JsonConvert.SerializeObject(decodedResponse, Formatting.Indented);
					Console.WriteLine(formattedResponse);
				}
				else
				{
					Console.WriteLine($"Erro na requisição. Código de status HTTP: {statusCode}");
				}
			}
			catch (Exception ex)
			{
				Console.WriteLine($"Erro ao processar a requisição: {ex.Message}");
			}
		}
	}
}
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;

public class mailgridConsolidate {
	public static void main(String[] args) {
		String url = "https://api.mailgrid.net.br/consolidate/";

		String token_auth = "INFORME-O-TOKEN-AQUI";
		String dataInicio = "2023-02-01";
		String horaInicio = "00:01";
		String dataFim = "2023-08-30";
		String horaFim = "23:59";

		String jsonInputString = "{"
				+ "\"token_auth\": \"" + token_auth + "\","
				+ "\"dataini\": \"" + dataInicio + "\","
				+ "\"horaini\": \"" + horaInicio + "\","
				+ "\"datafim\": \"" + dataFim + "\","
				+ "\"horafim\": \"" + horaFim + "\""
				+ "}";

		try {
			URL urlObj = new URL(url);
			HttpURLConnection connection = (HttpURLConnection) urlObj.openConnection();
			connection.setRequestMethod("POST");

			connection.setRequestProperty("Content-Type", "application/json");
			connection.setDoOutput(true);

			try (OutputStream os = connection.getOutputStream()) {
				byte[] input = jsonInputString.getBytes(StandardCharsets.UTF_8);
				os.write(input, 0, input.length);
			}

			int statusCode = connection.getResponseCode();

			try (BufferedReader br =
			new BufferedReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8))) {
				StringBuilder response = new StringBuilder();
				String line;
				while ((line = br.readLine()) != null) {
					response.append(line);
				}

				if (statusCode == HttpURLConnection.HTTP_OK) {
					System.out.println("Resposta da API: ");
					System.out.println(response.toString());
				} else {
					System.out.println("Erro na requisição. Código de status HTTP: " + statusCode);
				}
			}
		} catch (IOException e) {
			System.out.println("Erro na requisição: " + e.getMessage());
		}
	}
}
// Importa o módulo https nativo do Node.js para realizar requisições HTTPS
const https = require('https');

const url = "https://api.mailgrid.net.br/consolidate/";

const data = JSON.stringify({
	"token_auth": "INFORME-O-TOKEN-AQUI",
	"dataini": "2023-02-01",
	"horaini": "00:01",
	"datafim": "2023-08-30",
	"horafim": "23:59"
});

const options = {
	hostname: 'api.mailgrid.net.br',
	path: '/consolidate/',
	method: 'POST',
	headers: {
		'Content-Type': 'application/json',
		'Content-Length': data.length
	}
};

const req = https.request(options, (res) => {
	let responseData = '';

	res.on('data', (chunk) => {
		responseData += chunk;
	});

	res.on('end', () => {
		try {
			const parsedResponse = JSON.parse(responseData);
			if (res.statusCode === 200) {
				console.log("Resposta da API:");
				console.log(JSON.stringify(parsedResponse, null, 2));
			} else {
				console.log(`Erro na requisição. Código de status HTTP: ${res.statusCode}`);
			}
		} catch (error) {
			console.log("Erro ao processar a resposta JSON:", error.message);
		}
	});
});

req.on('error', (error) => {
	console.error("Erro na requisição:", error.message);
});

req.write(data);
req.end();
require 'net/http'
require 'json'
require 'uri'

url = URI("https://api.mailgrid.net.br/consolidate/")

data = {
	"token_auth" => "INFORME-O-TOKEN-AQUI",
	"dataini" => "2023-02-01",
	"horaini" => "00:01",
	"datafim" => "2023-08-30",
	"horafim" => "23:59"
}

http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url.path, {'Content-Type' => 'application/json'})
request.body = data.to_json

response = http.request(request)

if response.code.to_i != 200
	puts "Erro na requisição. Código de status HTTP: #{response.code}"
else
	begin
	decoded_response = JSON.parse(response.body)
	puts "Resposta da API:"
	puts JSON.pretty_generate(decoded_response)
	rescue JSON::ParserError
	puts "Erro ao processar a resposta JSON."
	end
end
const axios = require('axios');

const url = "https://api.mailgrid.net.br/consolidate/";

const data = {
	"token_auth": "INFORME-O-TOKEN-AQUI",
	"dataini": "2023-02-01",
	"horaini": "00:01",
	"datafim": "2023-08-30",
	"horafim": "23:59"
};

const config = {
	headers: {
		'Content-Type': 'application/json'
	}
};

axios.post(url, data, config)
	.then((response) => {
		console.log("Resposta da API:");
		console.log(JSON.stringify(response.data, null, 2));
	})
	.catch((error) => {
		if (error.response) {
			console.log("Erro na requisição. Código de status HTTP: " + error.response.status);
			console.log("Resposta do servidor:", error.response.data);
		} else if (error.request) {
			console.log("Erro na requisição. Sem resposta do servidor:", error.request);
		} else {
			console.log("Erro ao configurar a requisição:", error.message);
		}
	});

Adicionar domínio

Integre seu sistema à nossa plataforma de maneira eficiente com esta API, projetada para facilitar a adição de novos domínios à sua conta mailgrid. Este recurso permite que você expanda os domínios remetentes associados ao seu plano, garantindo flexibilidade e controle total sobre seus envios de e-mail. Confira abaixo todos os detalhes necessários para começar.

A adição de domínios funciona de maneira assíncrona, executando a inclusão do domínio em uma chamada e retornando um status de sucesso ou erro. Após a inclusão, o endpoint /check pode ser utilizado para consultar os dados de validação, incluindo a chave de segurança, registros SPF e DKIM.

URLhttps://api.mailgrid.net.br/domain/add/

Parâmetros

Os parâmetros a seguir são essenciais para que a API processe corretamente a adição de um domínio. Certifique-se de fornecer informações precisas para evitar erros:

ParâmetroDescriçãoObrigatório
token_auth:Token de autenticação exclusivo, gerado no seu painel de cliente mailgrid, acessível no menu "API". Este token valida sua identidade e autoriza a operação.Sim
dominio:O domínio completo que você deseja adicionar (ex.: "seudominio.com.br"). Este será o domínio remetente utilizado em seus envios de e-mail. Deve incluir o TLD (ex.: .com, .net.br) e seguir padrões válidos de nomenclatura de domínio.Sim

Requisitos Técnicos

Os dados devem ser enviados via POST, codificados em JSON. Não esqueça de incluir o cabeçalho Content-Type: application/json.

Exemplo de Chamada e Resposta

Substitua os valores pelos dados específicos da sua conta:

{
  "token_auth": "SEU_TOKEN_AQUI",
  "dominio": "seudominio.com.br"
}

Exemplo de resposta

Ao enviar os parâmetros corretamente, você receberá uma confirmação como esta:

{
 "0": {
  "status": "DOMÍNIO ADICIONADO COM SUCESSO",
  "codigo": "200"
 }
}

Próximos Passos

Após adicionar o domínio, você receberá um e-mail com instruções detalhadas para validar o cadastro. Siga os passos indicados para ativar seu domínio e começar a utilizá-lo.

Exemplos de código

<?php

$url = "https://api.mailgrid.net.br/domain/add/";

$data = [
	"token_auth" => "SEU_TOKEN_AQUI",
	"dominio" => "dominioaseradicionado.net.br"
];

$options = [
	CURLOPT_URL => $url,
	CURLOPT_RETURNTRANSFER => true,
	CURLOPT_POST => true,
	CURLOPT_HTTPHEADER => ["Content-Type: application/json"],
	CURLOPT_POSTFIELDS => json_encode($data),
	CURLOPT_TIMEOUT => 30,
	CURLOPT_SSL_VERIFYPEER => true
];

$ch = curl_init();
curl_setopt_array($ch, $options);
$response = curl_exec($ch);
$statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if (curl_errno($ch)) {
	echo "Erro na requisição: " . curl_error($ch);
} elseif ($statusCode >= 400) {
	echo "Erro na requisição. Código de status HTTP: " . $statusCode;
} else {
	$decodedResponse = json_decode($response, true);
	if (json_last_error() === JSON_ERROR_NONE) {
		echo "Resposta da API:\n";
		echo json_encode($decodedResponse, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
	} else {
		echo "Erro ao processar a resposta JSON.";
	}
}

curl_close($ch);

?>
import requests
import json

url = "https://api.mailgrid.net.br/domain/add/"

data = {
	"token_auth": "SEU_TOKEN_AQUI",
	"dominio": "dominioaseradicionado.net.br"
}

headers = {
	"Content-Type": "application/json"
}

try:
	response = requests.post(url, headers=headers, json=data, timeout=30)

	if response.status_code >= 400:
		print(f"Erro na requisição. Código de status HTTP: {response.status_code}")
	else:
		try:
			decoded_response = response.json()
			print("Resposta da API:")
			print(json.dumps(decoded_response, indent=4, ensure_ascii=False))
		except json.JSONDecodeError:
			print("Erro ao processar a resposta JSON.")
except requests.exceptions.RequestException as e:
	print(f"Erro na requisição: {e}")
URL="https://api.mailgrid.net.br/domain/add/"

TOKEN_AUTH="SEU_TOKEN_AQUI"
DOMINIO="dominioaseradicionado.net.br"

DATA="{\"token_auth\":\"$TOKEN_AUTH\", \"dominio\":\"$DOMINIO\"}"

curl -X POST "$URL" \
	-H "Content-Type: application/json" \
	-d "$DATA" \
	--timeout 30 \
	--ssl-verify
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;

class Program
{
	private static string url = "https://api.mailgrid.net.br/domain/add/";

	static async Task Main(string[] args)
	{
		var data = new
		{
			token_auth = "SEU_TOKEN_AQUI",
			dominio = "dominioaseradicionado.net.br"
		};

		using (var client = new HttpClient())
		{
			client.DefaultRequestHeaders.Add("Content-Type", "application/json");

			var jsonData = JsonConvert.SerializeObject(data);
			var content = new StringContent(jsonData, Encoding.UTF8, "application/json");

			try
			{
				HttpResponseMessage response = await client.PostAsync(url, content);

				int statusCode = (int)response.StatusCode;
				Console.WriteLine($"Código de status: {statusCode}");

				if (response.IsSuccessStatusCode)
				{
					string responseBody = await response.Content.ReadAsStringAsync();
					var decodedResponse = JsonConvert.DeserializeObject(responseBody);
					Console.WriteLine("Resposta da API:");
					string formattedResponse =
					JsonConvert.SerializeObject(decodedResponse, Formatting.Indented);
					Console.WriteLine(formattedResponse);
				}
				else
				{
					Console.WriteLine($"Erro na requisição. Código de status: {statusCode}");
				}
			}
			catch (Exception ex)
			{
				Console.WriteLine($"Erro ao processar a requisição: {ex.Message}");
			}
		}
	}
}
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;

public class mailgridApiExample {
	public static void main(String[] args) {
		String url = "https://api.mailgrid.net.br/domain/add/";

		String tokenAuth = "SEU_TOKEN_AQUI";
		String dominio = "dominioaseradicionado.net.br";

		String jsonInputString = "{"
				+ "\"token_auth\": \"" + tokenAuth + "\","
				+ "\"dominio\": \"" + dominio + "\""
				+ "}";

		try {
			URL urlObj = new URL(url);
			HttpURLConnection connection = (HttpURLConnection) urlObj.openConnection();
			connection.setRequestMethod("POST");

			connection.setRequestProperty("Content-Type", "application/json");
			connection.setDoOutput(true);

			try (OutputStream os = connection.getOutputStream()) {
				byte[] input = jsonInputString.getBytes(StandardCharsets.UTF_8);
				os.write(input, 0, input.length);
			}

			int statusCode = connection.getResponseCode();

			try (BufferedReader br =
			new BufferedReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8))) {
				StringBuilder response = new StringBuilder();
				String line;
				while ((line = br.readLine()) != null) {
					response.append(line);
				}

				if (statusCode >= 200 && statusCode < 300) {
					System.out.println("Resposta da API: ");
					System.out.println(response.toString());
				} else {
					System.out.println("Erro na requisição. Código de status HTTP: " + statusCode);
				}
			}
		} catch (IOException e) {
			System.out.println("Erro na requisição: " + e.getMessage());
		}
	}
}
const https = require('https');

const url = "https://api.mailgrid.net.br/domain/add/";

const data = JSON.stringify({
	"token_auth": "SEU_TOKEN_AQUI",
	"dominio": "dominioaseradicionado.net.br"
});

const options = {
	hostname: 'api.mailgrid.net.br',
	path: '/domain/add/',
	method: 'POST',
	headers: {
		'Content-Type': 'application/json',
		'Content-Length': data.length
	}
};

const req = https.request(options, (res) => {
	let responseData = '';

	res.on('data', (chunk) => {
		responseData += chunk;
	});

	res.on('end', () => {
		try {
			const parsedResponse = JSON.parse(responseData);
			console.log("Resposta da API:");
			console.log(JSON.stringify(parsedResponse, null, 2));
		} catch (error) {
			console.log("Erro ao processar a resposta JSON:", error.message);
		}
	});
});

req.on('error', (error) => {
	console.error("Erro na requisição:", error.message);
});

req.write(data);
req.end();
require 'net/http'
require 'json'
require 'uri'

url = URI.parse("https://api.mailgrid.net.br/domain/add/")

data = {
	"token_auth" => "SEU_TOKEN_AQUI",
	"dominio" => "dominioaseradicionado.net.br"
}

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url.path, {'Content-Type' => 'application/json'})
request.body = data.to_json

http.read_timeout = 30

begin
	response = http.request(request)

	if response.code.to_i >= 400
	puts "Erro na requisição. Código de status HTTP: #{response.code}"
	else
	parsed_response = JSON.parse(response.body)

	if parsed_response.is_a?(Hash)
		puts "Resposta da API:"
		puts JSON.pretty_generate(parsed_response)
	else
		puts "Erro ao processar a resposta JSON."
	end
	end
rescue StandardError => e
	puts "Erro na requisição: #{e.message}"
end
const axios = require('axios');

const url = "https://api.mailgrid.net.br/domain/add/";

const data = {
	"token_auth": "SEU_TOKEN_AQUI",
	"dominio": "dominioaseradicionado.net.br"
};

const config = {
	headers: {
		'Content-Type': 'application/json'
	}
};

axios.post(url, data, config)
	.then((response) => {
		console.log("Resposta da API:");
		console.log(JSON.stringify(response.data, null, 2));
	})
	.catch((error) => {
		if (error.response) {
			console.log("Erro na requisição. Código de status HTTP: " + error.response.status);
			console.log("Resposta do servidor:", error.response.data);
		} else if (error.request) {
			console.log("Erro na requisição. Sem resposta do servidor:", error.request);
		} else {
			console.log("Erro ao configurar a requisição:", error.message);
		}
	});

Remover domínio

Utilize este endpoint para remover um domínio remetente da sua conta mailgrid. O domínio será marcado para remoção e não poderá mais ser utilizado para envios. Veja abaixo os detalhes necessários para a requisição.

A remoção de domínios exige autenticação válida e o domínio já cadastrado. O processo é assíncrono e retorna status de sucesso ou erro. Certifique-se de que o domínio informado está correto e pertence à sua conta.

URLhttps://api.mailgrid.net.br/domain/remove/

Parâmetros

Os parâmetros a seguir são essenciais para que a API processe corretamente a remoção de um domínio:

ParâmetroDescriçãoObrigatório
token_auth:Token de autenticação exclusivo, gerado no seu painel de cliente mailgrid, acessível no menu "API".Sim
dominio:O domínio completo que você deseja remover (ex.: "seudominio.com.br").Sim

Requisitos Técnicos

Os dados devem ser enviados via POST, codificados em JSON. Não esqueça de incluir o cabeçalho Content-Type: application/json.

Exemplo de Chamada e Resposta

Substitua os valores pelos dados específicos da sua conta:

{
  "token_auth": "SEU_TOKEN_AQUI",
  "dominio": "seudominio.com.br"
}

Exemplo de resposta

Ao enviar os parâmetros corretamente, você receberá uma confirmação como esta:

{
 "0": {
  "status": "DOMINIO REMOVIDO COM SUCESSO",
  "codigo": "200"
 }
}

Possíveis erros

  • 208: ERRO: FALTAM PARAMETROS
  • 207: STATUS: ERRO - FALHA DE AUTENTICACAO
  • 211: ERRO: DOMINIO INVALIDO
  • 214: ERRO: SERVIÇO INATIVO
  • 227: ERRO: DOMINIO NAO LOCALIZADO
  • 216: ERRO AO REMOVER DOMINIO

Exemplos de código

<?php

$url = "https://api.mailgrid.net.br/domain/remove/";

$data = [
	"token_auth" => "SEU_TOKEN_AQUI",
	"dominio" => "dominioaseremovido.net.br"
];

$options = [
	CURLOPT_URL => $url,
	CURLOPT_RETURNTRANSFER => true,
	CURLOPT_POST => true,
	CURLOPT_HTTPHEADER => ["Content-Type: application/json"],
	CURLOPT_POSTFIELDS => json_encode($data),
	CURLOPT_TIMEOUT => 30,
	CURLOPT_SSL_VERIFYPEER => true
];

$ch = curl_init();
curl_setopt_array($ch, $options);
$response = curl_exec($ch);
$statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if (curl_errno($ch)) {
	echo "Erro na requisição: " . curl_error($ch);
} elseif ($statusCode >= 400) {
	echo "Erro na requisição. Código de status HTTP: " . $statusCode;
} else {
	$decodedResponse = json_decode($response, true);
	if (json_last_error() === JSON_ERROR_NONE) {
		echo "Resposta da API:\n";
		echo json_encode($decodedResponse, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
	} else {
		echo "Erro ao processar a resposta JSON.";
	}
}
curl_close($ch);
?>
import requests
import json

url = "https://api.mailgrid.net.br/domain/remove/"

data = {
	"token_auth": "SEU_TOKEN_AQUI",
	"dominio": "dominioaseremovido.net.br"
}

headers = {
	"Content-Type": "application/json"
}

try:
	response = requests.post(url, headers=headers, json=data, timeout=30)
	if response.status_code >= 400:
		print(f"Erro na requisição. Código de status HTTP: {response.status_code}")
	else:
		try:
			decoded_response = response.json()
			print("Resposta da API:")
			print(json.dumps(decoded_response, indent=4, ensure_ascii=False))
		except json.JSONDecodeError:
			print("Erro ao processar a resposta JSON.")
except requests.exceptions.RequestException as e:
	print(f"Erro na requisição: {e}")
URL="https://api.mailgrid.net.br/domain/remove/"

TOKEN_AUTH="SEU_TOKEN_AQUI"
DOMINIO="dominioaseremovido.net.br"

DATA="{\"token_auth\":\"$TOKEN_AUTH\", \"dominio\":\"$DOMINIO\"}"

curl -X POST "$URL" \
	-H "Content-Type: application/json" \
	-d "$DATA" \
	--timeout 30 \
	--ssl-verify

Checar domínio

Integre seu sistema à nossa API para consultar o status de um domínio cadastrado em sua conta de maneira prática e confiável. Essa funcionalidade permite verificar rapidamente se um domínio está validado e pronto para envios.

URLhttps://api.mailgrid.net.br/domain/check/

Parâmetros

Os parâmetros a seguir são essenciais para que a API processe corretamente a consulta do domínio. Certifique-se de fornecer informações precisas para evitar erros:

ParâmetroDescriçãoObrigatório
token_auth:token de autenticação exclusivo, encontrado no painel de cliente, na aba "API".Sim
dominio:O domínio que deseja verificar (exemplo: "seudominio.com.br").Sim

Requisitos Técnicos

Os dados devem ser enviados via POST, codificados em JSON. Não esqueça de incluir o cabeçalho Content-Type: application/json.

Exemplo de Chamada e Resposta

Substitua os valores pelos dados específicos da sua conta:

{
  "token_auth": "SEU_TOKEN_AQUI",
  "dominio": "seudominio.com.br"
}

Exemplo de resposta

Ao enviar os parâmetros corretamente, você receberá uma confirmação como esta:

{
 "dominio": "seudominio.com.br",
 "validado": "não validado",
 "liberado": "não liberado",
 "dkim": [
    {
      "name": "default._domainkey.seudominio.com.br",
      "type": "TXT",
      "value": "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsc54p1a2VXjO1p1RQoyo9h/gPc65L1DWeaWvRR9K3555ddX3TkqFwJZ76H3Oy3fRiOcE7YbXj7tAbUelClnUIiTMq3vqVgJk2QoZAV9exbwIDAQAB;"
    }
  ],
  "spf": [
    {
      "name": "seudominio.com.br",
      "type": "TXT",
      "value": "v=spf1 include:spf-04.mailgrid.net.br -all"
    }
  ],
  "chave": [
    {
      "name": "_mailgrid.seudominio.com.br",
      "type": "TXT",
      "value": "zc4439b93248291145542fa6c58eb498"
    }
  ]
}

Dica Prática

A resposta indicará se o domínio está validado e apto para envios. Se ele ainda não estiver liberado, confira o e-mail com as instruções de validação enviadas anteriormente e siga os passos indicados.

Exemplos de código

<?php

$url = "https://api.mailgrid.net.br/domain/check/";

$data = [
	"token_auth" => "SEU_TOKEN_AQUI",
	"dominio" => "dominioaserchecado.net.br"
];

$options = [
	CURLOPT_URL => $url,
	CURLOPT_RETURNTRANSFER => true,
	CURLOPT_POST => true,
	CURLOPT_HTTPHEADER => ["Content-Type: application/json"],
	CURLOPT_POSTFIELDS => json_encode($data),
	CURLOPT_TIMEOUT => 30,
	CURLOPT_SSL_VERIFYPEER => true
];

$ch = curl_init();
curl_setopt_array($ch, $options);
$response = curl_exec($ch);
$statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if (curl_errno($ch)) {
	echo "Erro na requisição: " . curl_error($ch);
} elseif ($statusCode >= 400) {
	echo "Erro na requisição. Código de status HTTP: " . $statusCode;
} else {
	$decodedResponse = json_decode($response, true);
	if (json_last_error() === JSON_ERROR_NONE) {
		echo "Resposta da API:\n";
		echo json_encode($decodedResponse, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
	} else {
		echo "Erro ao processar a resposta JSON.";
	}
}

curl_close($ch);

?>
import requests
import json

url = "https://api.mailgrid.net.br/domain/check/"

data = {
	"token_auth": "SEU_TOKEN_AQUI",
	"dominio": "dominioaserchecado.net.br"
}

headers = {
	"Content-Type": "application/json"
}

try:
	response = requests.post(url, headers=headers, json=data, timeout=30)

	if response.status_code >= 400:
		print(f"Erro na requisição. Código de status HTTP: {response.status_code}")
	else:
		try:
			decoded_response = response.json()
			print("Resposta da API:")
			print(json.dumps(decoded_response, indent=4, ensure_ascii=False))
		except json.JSONDecodeError:
			print("Erro ao processar a resposta JSON.")
except requests.exceptions.RequestException as e:
	print(f"Erro na requisição: {e}")
URL="https://api.mailgrid.net.br/domain/check/"

TOKEN_AUTH="SEU_TOKEN_AQUI"
DOMINIO="dominioaserchecado.net.br"

DATA="{\"token_auth\":\"$TOKEN_AUTH\", \"dominio\":\"$DOMINIO\"}"

curl -X POST "$URL" \
	-H "Content-Type: application/json" \
	-d "$DATA" \
	--timeout 30 \
	--ssl-verify
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;

class Program
{
	private static string url = "https://api.mailgrid.net.br/domain/check/";

	static async Task Main(string[] args)
	{
		var data = new
		{
			token_auth = "SEU_TOKEN_AQUI",
			dominio = "dominioaserchecado.net.br"
		};

		using (var client = new HttpClient())
		{
			client.DefaultRequestHeaders.Add("Content-Type", "application/json");

			var jsonData = JsonConvert.SerializeObject(data);
			var content = new StringContent(jsonData, Encoding.UTF8, "application/json");

			try
			{
				HttpResponseMessage response = await client.PostAsync(url, content);

				int statusCode = (int)response.StatusCode;
				Console.WriteLine($"Código de status: {statusCode}");

				if (response.IsSuccessStatusCode)
				{
					string responseBody = await response.Content.ReadAsStringAsync();
					var decodedResponse = JsonConvert.DeserializeObject(responseBody);
					Console.WriteLine("Resposta da API:");
					string formattedResponse =
					JsonConvert.SerializeObject(decodedResponse, Formatting.Indented);
					Console.WriteLine(formattedResponse);
				}
				else
				{
					Console.WriteLine($"Erro na requisição. Código de status: {statusCode}");
				}
			}
			catch (Exception ex)
			{
				Console.WriteLine($"Erro ao processar a requisição: {ex.Message}");
			}
		}
	}
}
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;

public class mailgridDomainCheck {
	public static void main(String[] args) {
		String url = "https://api.mailgrid.net.br/domain/check/";

		String tokenAuth = "SEU_TOKEN_AQUI";
		String dominio = "dominioaserchecado.net.br";

		String jsonInputString = "{"
				+ "\"token_auth\": \"" + tokenAuth + "\","
				+ "\"dominio\": \"" + dominio + "\""
				+ "}";

		try {
			URL urlObj = new URL(url);
			HttpURLConnection connection = (HttpURLConnection) urlObj.openConnection();
			connection.setRequestMethod("POST");

			connection.setRequestProperty("Content-Type", "application/json");
			connection.setDoOutput(true);

			try (OutputStream os = connection.getOutputStream()) {
				byte[] input = jsonInputString.getBytes(StandardCharsets.UTF_8);
				os.write(input, 0, input.length);
			}

			int statusCode = connection.getResponseCode();

			try (BufferedReader br =
			new BufferedReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8))) {
				StringBuilder response = new StringBuilder();
				String line;
				while ((line = br.readLine()) != null) {
					response.append(line);
				}

				if (statusCode >= 200 && statusCode < 300) {
					System.out.println("Resposta da API: ");
					System.out.println(response.toString());
				} else {
					System.out.println("Erro na requisição. Código de status HTTP: " + statusCode);
				}
			}
		} catch (IOException e) {
			System.out.println("Erro na requisição: " + e.getMessage());
		}
	}
}
// Importa o módulo https nativo do Node.js para realizar requisições HTTPS
const https = require('https');

const url = "https://api.mailgrid.net.br/domain/check/";

const data = JSON.stringify({
	"token_auth": "SEU_TOKEN_AQUI",
	"dominio": "dominioaserchecado.net.br"
});

const options = {
	hostname: 'api.mailgrid.net.br',
	path: '/domain/check/',
	method: 'POST',
	headers: {
		'Content-Type': 'application/json',
		'Content-Length': data.length
	}
};

const req = https.request(options, (res) => {
	let responseData = '';

	res.on('data', (chunk) => {
		responseData += chunk;
	});

	res.on('end', () => {
		try {
			const parsedResponse = JSON.parse(responseData);
			console.log("Resposta da API:");
			console.log(JSON.stringify(parsedResponse, null, 2));
		} catch (error) {
			console.log("Erro ao processar a resposta JSON:", error.message);
		}
	});
});

req.on('error', (error) => {
	console.error("Erro na requisição:", error.message);
});

req.write(data);
req.end();
require 'net/http'
require 'json'
require 'uri'

url = URI.parse("https://api.mailgrid.net.br/domain/check/")

data = {
	"token_auth" => "SEU_TOKEN_AQUI",
	"dominio" => "dominioaserchecado.net.br"
}

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url.path, {'Content-Type' => 'application/json'})
request.body = data.to_json

http.read_timeout = 30

begin
	response = http.request(request)

	if response.code.to_i >= 400
	puts "Erro na requisição. Código de status HTTP: #{response.code}"
	else
	parsed_response = JSON.parse(response.body)

	if parsed_response.is_a?(Hash)
		puts "Resposta da API:"
		puts JSON.pretty_generate(parsed_response)
	else
		puts "Erro ao processar a resposta JSON."
	end
	end
rescue StandardError => e
	puts "Erro na requisição: #{e.message}"
end
const axios = require('axios');

const url = "https://api.mailgrid.net.br/domain/check/";

const data = {
	"token_auth": "SEU_TOKEN_AQUI",
	"dominio": "dominioaserchecado.net.br"
};

const config = {
	headers: {
		'Content-Type': 'application/json'
	}
};

axios.post(url, data, config)
 .then((response) => {
	console.log("Resposta da API:");
	console.log(JSON.stringify(response.data, null, 2));
 })
 .catch((error) => {
	if (error.response) {
		console.log("Erro na requisição. Código de status HTTP: " + error.response.status);
		console.log("Resposta do servidor:", error.response.data);
	} else if (error.request) {
		console.log("Erro na requisição. Sem resposta do servidor:", error.request);
	} else {
		console.log("Erro ao configurar a requisição:", error.message);
	}
});

Listar domínios

Utilize esta API para integrar seu sistema e obter uma lista completa de todos os domínios associados à sua conta, incluindo seus respectivos status de validação e liberação para envios.

URLhttps://api.mailgrid.net.br/domain/list/

Parâmetros

Os parâmetros a seguir são essenciais para que a API processe corretamente a listagem de um domínio. Certifique-se de fornecer informações precisas para evitar erros:

ParâmetroDescriçãoObrigatório
token_auth:token de autenticação exclusivo, encontrado no painel de cliente, na aba "API".Sim

Requisitos Técnicos

Os dados devem ser enviados via POST, codificados em JSON. Não esqueça de incluir o cabeçalho Content-Type: application/json.

Exemplo de Chamada e Resposta

Substitua os valores pelos dados específicos da sua conta:

{
  "token_auth": "SEU_TOKEN_AQUI"
}

Exemplo de resposta

Ao enviar os parâmetros corretamente, você receberá uma confirmação como esta:

{
 "dominio": "dominioteste1.com.br",
 "validado": "validado",
 "liberado para envios": "liberado para envios",
 "dkim": [
    {
      "name": "default._domainkey.dominioteste1.com.br",
      "type": "TXT",
      "value": "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsc54p1a2VXjO1p1RQoyo9h/gPc65L1DWeaWvRR9K3555ddX3TkqFwJZ76H3Oy3fRiOcE7YbXj7tAbUelClnUIiTMq3vqVgJk2QoZAV9exbwIDAQAB;"
    }
  ],
  "spf": [
    {
      "name": "dominioteste1.com.br",
      "type": "TXT",
      "value": "v=spf1 include:spf-04.mailgrid.net.br -all"
    }
  ],
  "chave": [
    {
      "name": "_mailgrid.dominioteste1.com.br",
      "type": "TXT",
      "value": "zc4439b93248291145542fa6c58eb498"
    }
  ],
 "dominios_adicionais": [
  {
   "dominio": "dominioteste2.net.br",
   "validado": "não validado",
   "liberado para envios": "não liberado",
   "dkim": [
    {
      "name": "default._domainkey.dominioteste2.net.br",
      "type": "TXT",
      "value": "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsc54p1a2VXjO1p1RQoyo9h/gPc65L1DWeaWvRR9K3555ddX3TkqFwJZ76H3Oy3fRiOcE7YbXj7tAbUelClnUIiTMq3vqVgJk2QoZAV9exbwIDAQAB;"
    }
  ],
  "spf": [
    {
      "name": "dominioteste2.net.br",
      "type": "TXT",
      "value": "v=spf1 include:spf-04.mailgrid.net.br -all"
    }
  ],
  "chave": [
    {
      "name": "_mailgrid.dominioteste2.net.br",
      "type": "TXT",
      "value": "zc4439b93248291145542fa6c58eb498"
    }
  ]
  },
  {
   "dominio": "dominioteste3.net.br",
   "validado": "não validado",
   "liberado para envios": "não liberado",
  "dkim": [
    {
      "name": "default._domainkey.dominioteste3.net.br",
      "type": "TXT",
      "value": "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsc54p1a2VXjO1p1RQoyo9h/gPc65L1DWeaWvRR9K3555ddX3TkqFwJZ76H3Oy3fRiOcE7YbXj7tAbUelClnUIiTMq3vqVgJk2QoZAV9exbwIDAQAB;"
    }
  ],
  "spf": [
    {
      "name": "dominioteste3.net.br",
      "type": "TXT",
      "value": "v=spf1 include:spf-04.mailgrid.net.br -all"
    }
  ],
  "chave": [
    {
      "name": "_mailgrid.dominioteste3.net.br",
      "type": "TXT",
      "value": "zc4439b93248291145542fa6c58eb498"
    }
  ]
  }
 ]
}

Exemplos de código

<?php

$url = "https://api.mailgrid.net.br/domain/list/";

$data = [
	"token_auth" => "SEU_TOKEN_AQUI"
];

$options = [
	CURLOPT_URL => $url,
	CURLOPT_RETURNTRANSFER => true,
	CURLOPT_POST => true,
	CURLOPT_HTTPHEADER => ["Content-Type: application/json"],
	CURLOPT_POSTFIELDS => json_encode($data),
	CURLOPT_TIMEOUT => 30,
	CURLOPT_SSL_VERIFYPEER => true
];

$ch = curl_init();
curl_setopt_array($ch, $options);
$response = curl_exec($ch);
$statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if (curl_errno($ch)) {
	echo "Erro na requisição: " . curl_error($ch);
} elseif ($statusCode >= 400) {
	echo "Erro na requisição. Código de status HTTP: " . $statusCode;
} else {
	$decodedResponse = json_decode($response, true);
	if (json_last_error() === JSON_ERROR_NONE) {
		echo "Resposta da API:\n";
		echo json_encode($decodedResponse, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
	} else {
		echo "Erro ao processar a resposta JSON.";
	}
}

curl_close($ch);

?>
import requests
import json

url = "https://api.mailgrid.net.br/domain/list/"

data = {
	"token_auth": "SEU_TOKEN_AQUI"
}

headers = {
	"Content-Type": "application/json"
}

try:
	response = requests.post(url, headers=headers, json=data, timeout=30)

	if response.status_code >= 400:
		print(f"Erro na requisição. Código de status HTTP: {response.status_code}")
	else:
		try:
			decoded_response = response.json()
			print("Resposta da API:")
			print(json.dumps(decoded_response, indent=4, ensure_ascii=False))
		except json.JSONDecodeError:
			print("Erro ao processar a resposta JSON.")
except requests.exceptions.RequestException as e:
	print(f"Erro na requisição: {e}")
URL="https://api.mailgrid.net.br/domain/list/"

TOKEN_AUTH="SEU_TOKEN_AQUI"

DATA="{\"token_auth\":\"$TOKEN_AUTH\"}"

curl -X POST "$URL" \
	-H "Content-Type: application/json" \
	-d "$DATA" \
	--timeout 30 \
	--ssl-verify
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;

class Program
{
	private static string url = "https://api.mailgrid.net.br/domain/list/";

	static async Task Main(string[] args)
	{
		var data = new
		{
			token_auth = "SEU_TOKEN_AQUI"
		};

		using (var client = new HttpClient())
		{
			client.DefaultRequestHeaders.Add("Content-Type", "application/json");

			var jsonData = JsonConvert.SerializeObject(data);
			var content = new StringContent(jsonData, Encoding.UTF8, "application/json");

			try
			{
				HttpResponseMessage response = await client.PostAsync(url, content);

				int statusCode = (int)response.StatusCode;
				Console.WriteLine($"Código de status: {statusCode}");

				if (response.IsSuccessStatusCode)
				{
					string responseBody = await response.Content.ReadAsStringAsync();
					var decodedResponse = JsonConvert.DeserializeObject(responseBody);
					Console.WriteLine("Resposta da API:");
					string formattedResponse =
					JsonConvert.SerializeObject(decodedResponse, Formatting.Indented);
					Console.WriteLine(formattedResponse);
				}
				else
				{
					Console.WriteLine($"Erro na requisição. Código de status HTTP: {statusCode}");
				}
			}
			catch (Exception ex)
			{
				Console.WriteLine($"Erro ao processar a requisição: {ex.Message}");
			}
		}
	}
}
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;

public class mailgridDomainList {
	public static void main(String[] args) {
		String url = "https://api.mailgrid.net.br/domain/list/";

		String tokenAuth = "SEU_TOKEN_AQUI";

		String jsonInputString = "{"
				+ "\"token_auth\": \"" + tokenAuth + "\""
				+ "}";

		try {
			URL urlObj = new URL(url);
			HttpURLConnection connection = (HttpURLConnection) urlObj.openConnection();
			connection.setRequestMethod("POST");

			connection.setRequestProperty("Content-Type", "application/json");
			connection.setDoOutput(true);

			try (OutputStream os = connection.getOutputStream()) {
				byte[] input = jsonInputString.getBytes(StandardCharsets.UTF_8);
				os.write(input, 0, input.length);
			}

			int statusCode = connection.getResponseCode();

			try (BufferedReader br =
			new BufferedReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8))) {
				StringBuilder response = new StringBuilder();
				String line;
				while ((line = br.readLine()) != null) {
					response.append(line);
				}

				if (statusCode >= 200 && statusCode < 300) {
					System.out.println("Resposta da API: ");
					System.out.println(response.toString());
				} else {
					System.out.println("Erro na requisição. Código de status HTTP: " + statusCode);
				}
			}
		} catch (IOException e) {
			System.out.println("Erro na requisição: " + e.getMessage());
		}
	}
}
// Importa o módulo https nativo do Node.js para realizar requisições HTTPS
const https = require('https');

const url = "https://api.mailgrid.net.br/domain/list/";

const data = JSON.stringify({
	"token_auth": "SEU_TOKEN_AQUI"
});

const options = {
	hostname: 'api.mailgrid.net.br',
	path: '/domain/list/',
	method: 'POST',
	headers: {
		'Content-Type': 'application/json',
		'Content-Length': data.length
	}
};

const req = https.request(options, (res) => {
	let responseData = '';

	res.on('data', (chunk) => {
		responseData += chunk;
	});

	res.on('end', () => {
		try {
			const parsedResponse = JSON.parse(responseData);
			console.log("Resposta da API:");
			console.log(JSON.stringify(parsedResponse, null, 2));
		} catch (error) {
			console.log("Erro ao processar a resposta JSON:", error.message);
		}
	});
});

req.on('error', (error) => {
	console.error("Erro na requisição:", error.message);
});

req.write(data);
req.end();
require 'net/http'
require 'json'
require 'uri'

url = URI("https://api.mailgrid.net.br/domain/list/")

data = {
	"token_auth" => "SEU_TOKEN_AQUI"
}

http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url.path, {'Content-Type' => 'application/json'})
request.body = data.to_json

response = http.request(request)

if response.code.to_i >= 400
	puts "Erro na requisição. Código de status HTTP: #{response.code}"
else
	begin
	decoded_response = JSON.parse(response.body)
	puts "Resposta da API:"
	puts JSON.pretty_generate(decoded_response)
	rescue JSON::ParserError
	puts "Erro ao processar a resposta JSON."
	end
end
const axios = require('axios');

const url = "https://api.mailgrid.net.br/domain/list/";

const data = {
	"token_auth": "SEU_TOKEN_AQUI"
};

const config = {
	headers: {
		'Content-Type': 'application/json'
	}
};

axios.post(url, data, config)
	.then((response) => {
		console.log("Resposta da API:");
		console.log(JSON.stringify(response.data, null, 2));
	})
	.catch((error) => {
		if (error.response) {
			console.log("Erro na requisição. Código de status HTTP: " + error.response.status);
			console.log("Resposta do servidor:", error.response.data);
		} else if (error.request) {
			console.log("Erro na requisição. Sem resposta do servidor:", error.request);
		} else {
			console.log("Erro ao configurar a requisição:", error.message);
		}
	});

Adicionar usuário SMTP

Adicione uma nova conta de autenticação SMTP para envio de e-mails. O usuário será criado e receberá uma senha aleatória gerada pelo sistema.

URLhttps://api.mailgrid.net.br/authsmtp/add/

Parâmetros

ParâmetroDescriçãoObrigatório
token_authToken de autenticação do painel do clienteSim
emailE-mail do usuário SMTP a ser criadoSim

Exemplo de chamada

{
  "token_auth": "SEU_TOKEN_AQUI",
  "email": "usuario@seudominio.com.br"
}

Exemplo de resposta

{
	"0": {
		"status": "USUARIO SMTP ADICIONADO COM SUCESSO",
		"codigo": "200",
		"usuario": "usuario@seudominio.com.br",
		"senha": "SENHA_GERADA"
	}
}

Trocar senha do usuário SMTP

Altere a senha de um usuário SMTP já cadastrado. A senha deve seguir os requisitos de segurança informados abaixo.

URLhttps://api.mailgrid.net.br/authsmtp/psswd/

Parâmetros

ParâmetroDescriçãoObrigatório
token_authToken de autenticação do painel do clienteSim
emailE-mail do usuário SMTPSim
nova_senhaNova senha (10-15 caracteres, letras maiúsculas, minúsculas, números e # ou @)Sim

Exemplo de chamada

{
  "token_auth": "SEU_TOKEN_AQUI",
  "email": "usuario@seudominio.com.br",
  "nova_senha": "NovaSenha#2025"
}

Exemplo de resposta

{
	"0": {
		"status": "SENHA ALTERADA COM SUCESSO",
		"codigo": "200",
		"usuario": "usuario@seudominio.com.br"
	}
}

Remover usuário SMTP

Remove uma conta de autenticação SMTP do serviço. O usuário não poderá mais autenticar envios após a remoção.

URLhttps://api.mailgrid.net.br/authsmtp/remove/

Parâmetros

ParâmetroDescriçãoObrigatório
token_authToken de autenticação do painel do clienteSim
emailE-mail do usuário SMTP a ser removidoSim

Exemplo de chamada

{
  "token_auth": "SEU_TOKEN_AQUI",
  "email": "usuario@seudominio.com.br"
}

Exemplo de resposta

{
	"0": {
		"status": "USUARIO SMTP REMOVIDO COM SUCESSO",
		"codigo": "200",
		"usuario": "usuario@seudominio.com.br"
	}
}

Certifique-se de enviar esses dados via método POST, codificados em JSON, e incluir o cabeçalho Content-Type: application/json. Sem credenciais válidas ou um token apropriado, as requisições para os endpoints protegidos serão recusadas.

GitHub

No repositório github.com/mailgridbr, disponível no GitHub, você encontra exemplos práticos e fáceis de entender para usar a API de envio de e-mails da mailgrid. Esses exemplos foram criados para ajudar você ou sua equipe a integrar nosso serviço de envio de e-mails transacionais e de marketing ao seu sistema de forma rápida e sem complicações.

O que você encontra lá?

Temos instruções e códigos simples em várias linguagens populares, como PHP, Python, JavaScript, Ruby, Node.js, C#, Java e até comandos cURL. Cada exemplo mostra passo a passo como enviar e-mails usando nossa API, incluindo mensagens com anexos, como fotos ou documentos, e personalizações como remetente, destinatário, assunto e corpo do e-mail.

Por que isso é útil para você?

  • Fácil de Começar: Os exemplos são projetados para iniciantes e especialistas, com instruções claras que ajudam a configurar tudo rapidamente, mesmo sem muito conhecimento técnico.

  • Flexibilidade: Você pode escolher a linguagem que melhor se adapta ao seu sistema ou ao que sua equipe já usa, garantindo uma integração suave.

  • Economia de Tempo: Com esses modelos prontos, você evita começar do zero, acelerando o processo de implementação e testando envios em poucos minutos.

  • Suporte Completo: Além de enviar e-mails, os exemplos mostram como lidar com relatórios e verificar o status dos envios, ajudando você a acompanhar tudo de perto.

Como usar?

Basta acessar o repositório, escolher o exemplo na linguagem que você prefere, e seguir as instruções básicas. Os códigos vêm com dicas simples para substituir informações como credenciais (usuário e senha do SMTP) e ajustar os detalhes do e-mail para o seu negócio. Se precisar de ajuda, nossa equipe de suporte está pronta para orientar você! Esses exemplos são como um guia amigável para aproveitar ao máximo a API da mailgrid, permitindo que você envie e-mails de forma confiável, rápida e personalizada para seus clientes, sem preocupações. Experimente hoje mesmo e veja como é fácil transformar sua comunicação por e-mail!