Sign inGet Started

Go

Envoyez votre premier e-mail depuis Go en trois étapes : installez le SDK, écrivez un handler qui envoie, et exécutez-le. Ce guide de démarrage rapide utilise le net/http de la bibliothèque standard, aucun framework requis.

1. Installation

Exemple de code
go mod init example.com/bird-quickstart
go get github.com/messagebird/bird-sdk-go
Le SDK nécessite Go 1.24+. Récupérez une clé API depuis Developers > Clés API dans le tableau de bord et exportez-la ; le SDK déduit la région à partir du préfixe bk_us1_ / bk_eu1_ de la clé, aucune autre configuration n'est nécessaire :
Exemple de code
export BIRD_API_KEY="bk_us1_..."

2. Envoi

Créez main.go avec un handler HTTP qui envoie via le domaine d'intégration partagé de Bird, aucune vérification de domaine n'est requise :
Exemple de code
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))
}
Le SDK génère une clé d'idempotence par appel Send et la réutilise lors des nouvelles tentatives après un délai d'attente, une réponse 429 ou une réponse 5xx. Une nouvelle tentative ne crée donc pas un second envoi.

3. Essai

Exemple de code
go run . &
curl -X POST localhost:3000/send
Bird répond avec 202, acceptant l'e-mail pour une livraison asynchrone, et le handler renvoie le message. Les champs *_count suivent les destinataires à travers les états de livraison. Dans la réponse initiale, un destinataire est accepté et aucun n'est livré :
Exemple de code
{
  "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"
}
Comme le destinataire est l'adresse sandbox delivered@messagebird.dev, la livraison est garantie. Récupérez le message par son ID em_ avec client.Email.Get et observez le statut passer à delivered.

Étapes suivantes