Sign inGet Started

Go · Gin

Envoyez votre premier e-mail depuis une application Gin en trois étapes : installez le SDK, ajoutez une route qui envoie, et lancez-le.

1. Installation

Exemple de code
go mod init example.com/bird-gin-quickstart
go get github.com/gin-gonic/gin 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 une route qui envoie via le domaine d'intégration partagé de Bird, sans vérification de domaine nécessaire :
Exemple de code
package main

import (
	"errors"
	"log"
	"net/http"
	"os"

	"github.com/gin-gonic/gin"
	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)
	}

	r := gin.Default()
	r.POST("/send", func(c *gin.Context) {
		msg, err := client.Email.Send(c.Request.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) {
				c.JSON(apiErr.StatusCode, gin.H{"error": apiErr.Error()})
				return
			}
			c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
			return
		}
		c.JSON(http.StatusAccepted, msg)
	})

	log.Fatal(r.Run(":3000"))
}
Le SDK génère une clé d'idempotence par appel Send et la réutilise lors des nouvelles tentatives après des délais d'attente, des réponses 429 et des réponses 5xx. Une nouvelle tentative ne crée donc pas un second envoi.

3. Test

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 la route 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