Go
Envie seu primeiro e-mail com Go em três passos: instale o SDK, escreva um handler que envia e execute. Este quickstart usa o net/http da biblioteca padrão, sem necessidade de framework.
1. Instalar
Exemplo de código
go mod init example.com/bird-quickstart
go get github.com/messagebird/bird-sdk-goO SDK requer Go 1.24+. Obtenha uma chave API em Developers > Chaves API no dashboard e exporte-a; o SDK infere a região a partir do prefixo bk_us1_ / bk_eu1_ da chave, então nada mais precisa ser configurado:
Exemplo de código
export BIRD_API_KEY="bk_us1_..."2. Enviar
Crie main.go com um handler HTTP que envia pelo domínio compartilhado de onboarding do Bird, sem necessidade de verificação de domínio:
Exemplo de código
package main
import (
"encoding/json"
"errors"
"log"
"net/http"
"os"
bird "github.com/messagebird/bird-sdk-go"
"github.com/messagebird/bird-sdk-go/option"
)
func main() {
client, err := bird.NewClient(option.WithAPIKey(os.Getenv("BIRD_API_KEY")))
if err != nil {
log.Fatal(err)
}
http.HandleFunc("POST /send", func(w http.ResponseWriter, r *http.Request) {
msg, err := client.Email.Send(r.Context(), bird.EmailSendParams{
From: "onboarding@messagebird.dev",
To: []string{"delivered@messagebird.dev"},
Subject: "Hello from Bird",
HTML: "<p>My first Bird email.</p>",
})
if err != nil {
var apiErr *bird.APIError
if errors.As(err, &apiErr) {
http.Error(w, apiErr.Error(), apiErr.StatusCode)
return
}
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusAccepted)
_ = json.NewEncoder(w).Encode(msg)
})
log.Fatal(http.ListenAndServe(":3000", nil))
}O SDK gera uma chave de idempotência por chamada Send e a reutiliza ao tentar novamente em timeouts, respostas 429 e respostas 5xx. Portanto, uma nova tentativa não cria um segundo envio.
3. Testar
Exemplo de código
go run . &
curl -X POST localhost:3000/sendBird responde com 202, aceitando o e-mail para entrega assíncrona, e o handler retorna a mensagem. Os campos *_count rastreiam os destinatários pelos estados de entrega. Na resposta inicial, um destinatário é aceito e nenhum foi entregue:
Exemplo de código
{
"id": "em_01ky7ma8y2es1s2akzk53tmjn0",
"status": "accepted",
"category": "marketing",
"from": { "email": "onboarding@messagebird.dev" },
"to": [{ "email": "delivered@messagebird.dev" }],
"subject": "Hello from Bird",
"accepted_count": 1,
"processed_count": 0,
"delivered_count": 0,
"deferred_count": 0,
"bounced_count": 0,
"complained_count": 0,
"rejected_count": 0,
"open_count": 0,
"click_count": 0,
"track_opens": true,
"track_clicks": true,
"created_at": "2026-07-23T13:58:20.866Z"
}Como o destinatário é o endereço sandbox delivered@messagebird.dev, a entrega é garantida. Busque a mensagem pelo ID em_ com client.Email.Get e acompanhe o status mudar para delivered.
Próximos passos
- Referência do Go SDK: todos os métodos, parâmetros e tipos de erro.
- Envie seu primeiro e-mail: o mesmo fluxo com curl e o dashboard.
- Domínios de envio: verifique seu próprio domínio para envio em produção.
- Referência da API de e-mail API: o schema completo de requisição e resposta.
Recursos relacionados
Continue com a documentação, guias e exemplos sobre este tópico. Os recursos estão em inglês.
Assista ao guiaTesting email without spamming anyoneExplore a funcionalidadeTest email deliverySiga o percurso de aprendizagemOperate messaging reliably
Experimente na prática e obtenha um resumo de implementação