cURL
Kirim email pertama Anda hanya dengan curl: ekspor kunci API, kirim pesan dengan POST, lalu ambil kembali dengan GET untuk memantau pengirimannya. Ini adalah alur HTTP mentah; semua yang dilakukan SDK berawal dari sini.
1. Ekspor kunci API Anda
Buat kunci di dashboard pada Platform tools > API keys (Kirim email pertama Anda menjelaskan langkahnya), lalu ekspor kunci tersebut:
export BIRD_API_KEY="bk_us1_..."Prefiks region menentukan host API Anda: kunci bk_us1_ memanggil https://us1.platform.bird.com, dan kunci bk_eu1_ memanggil https://eu1.platform.bird.com. Contoh pengiriman menggunakan us1; ganti host jika kunci Anda berasal dari region lain.
2. Kirim email
Kirim POST ke /v1/email/messages, dari domain onboarding bersama kami ke alamat sandbox delivered@messagebird.dev. Anda tidak memerlukan verifikasi domain atau kotak surat sungguhan. Pilih tab cURL untuk panduan cepat ini.
const msg = await bird.email.send({
from: { email: "onboarding@messagebird.dev", name: "Bird" },
to: ["delivered@messagebird.dev"],
subject: "Hello from Bird",
html: "<p>My first Bird email.</p>",
});
console.log(msg.id, msg.status); // "em_…", "accepted"msg = client.email.send(
from_={"email": "onboarding@messagebird.dev", "name": "Bird"},
to=["delivered@messagebird.dev"],
subject="Hello from Bird",
html="<p>My first Bird email.</p>",
)
print(msg.id, msg.status)package main
import (
"context"
"fmt"
"log"
"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)
}
msg, err := client.Email.Send(context.Background(), 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 {
log.Fatal(err)
}
fmt.Println(msg.Id, *msg.Status)
}$message = $bird->email->send(
from: 'Bird <onboarding@messagebird.dev>',
to: ['delivered@messagebird.dev'],
subject: 'Hello from Bird',
html: '<p>My first Bird email.</p>',
);
echo $message->getId(), ' ', $message->getStatus();bird email send \
--category transactional \
--cc manager@acme.com \
--from 'Acme Support <noreply@acme.com>' \
--header X-Campaign=spring-2026 \
--html '<h1>Hi there 👋</h1>' \
--metadata '{"user_id":"usr_12345"}' \
--reply-to support@acme.com \
--subject 'Welcome aboard' \
--tag category=welcome \
--text 'Hi there' \
--to 'Jane Doe <delivered@messagebird.dev>' \
--track-clicks=falsecurl -X POST https://us1.platform.bird.com/v1/email/messages \
-H "Authorization: Bearer $BIRD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"from": "onboarding@messagebird.dev",
"to": ["delivered@messagebird.dev"],
"subject": "Hello from Bird",
"html": "<p>My first Bird email.</p>"
}'API merespons dengan 202: Bird telah menerima email dan melakukan pengiriman secara asinkron. Kolom *_count melacak penerima melalui status pengiriman. Pada respons awal, satu penerima diterima dan belum ada yang terkirim:
{
"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"
}HTTP mentah tidak memiliki SDK yang membuatkan kunci idempotensi untuk Anda. Agar terlindungi saat mencoba lagi, sertakan kunci pada percobaan pertama dan gunakan kembali kunci yang sama pada setiap percobaan ulang. Lihat Idempotency untuk contoh dan batas pemutaran ulang.
3. Pantau pengirimannya
Ambil pesan dengan GET berdasarkan ID em_ dan pantau statusnya berubah dari accepted melalui processed hingga delivered. Pilih tab cURL lagi:
const msg = await bird.email.get("em_abc123");
msg.status; // "accepted" | "processed" | "delivered" | "bounced" | …
msg.delivered_count;
msg.bounced_count;
console.log(msg.subject, msg.subject_recipient_id);message = client.email.get("em_abc123")
print(message.id, message.status, message.delivered_count)
print(message.subject, message.subject_recipient_id)package main
import (
"context"
"fmt"
"log"
"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)
}
msg, err := client.Email.Get(context.Background(), "em_abc123")
if err != nil {
log.Fatal(err)
}
fmt.Println(*msg.Status, *msg.DeliveredCount)
fmt.Println(msg.Subject)
if msg.SubjectRecipientId != nil {
fmt.Println(*msg.SubjectRecipientId)
}
}$message = $bird->email->get('em_01krdgeqcxet5s7t44vh8rt9mg');
echo $message->getStatus();
echo $message->getSubject(), ' ', $message->getSubjectRecipientId();bird email get <message-id>curl https://us1.platform.bird.com/v1/email/messages/em_01ky7ma8y2es1s2akzk53tmjn0 \
-H "Authorization: Bearer $BIRD_API_KEY"Karena penerimanya adalah alamat sandbox delivered@messagebird.dev, pengiriman dijamin berhasil: pesan melewati pipeline nyata Bird, tetapi tidak pernah masuk ke kotak surat sungguhan.
Langkah berikutnya
- Referensi API email: skema permintaan dan respons lengkap.
- Autentikasi: kunci, cakupan, dan header
Authorization. - Kirim email pertama Anda: alur yang sama melalui dasbor dan SDK.
- Domain pengirim: verifikasi domain Anda sendiri untuk pengiriman produksi.
Sumber daya terkait
Lanjutkan dengan dokumentasi, panduan, dan contoh untuk topik ini.