Voice sedang ditingkatkan

Voice yang dapat diprogram dalam JSON. Panggilan, IVR, rekaman, TTS.

Voice for developers: 140+ countries with voice coverage, 1,500+ phone-number prefixes, masked calls, virtual numbers. Same API surface as Email and SMS: calls are just another resource.

place-call.ts
201 · 0.4s
import { BirdClient } from "@messagebird/sdk";

const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });

const { data, error } = await bird.voice.calls.create({
  to:   "+15005550010",
  from: "+14155550199",
  flow: [
    { say:    "Your verification code is..." },
    { say:    "4. 2. 9. 1. 7." },
    { gather: { digits: 1, timeout: 5 } },
    { record: { transcribe: true } },
  ],
}).safe();

if (error) throw error;
console.log(data.id);
// → "call_7tQ04Lp2n..."

5 menit dari instalasi ke panggilan pertama

Lakukan panggilan dari bahasa pemrograman yang sudah Anda gunakan.

SDK di setiap runtime utama. Panggilan pertama menuju nomor uji coba yang diotorisasi (+15005550010) sehingga Anda bisa menjalankan CI check sebelum menyediakan nomor asli.

1
2
3
4
5
6
7
8
9
import { BirdClient } from "@messagebird/sdk";

const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });

const { data, error } = await bird.voice.calls.create({
  to:   "+15005550010",
  from: "+14155550199",
  flow: [{ say: "Hello from Node." }],
}).safe();

Sepuluh bagian voice yang lebih baik tidak Anda tulis sendiri.

Carrier routing, call control, and observability primitives, named and audit-able.

  1. 01

    Panggilan keluar dan masuk

    Place and receive calls over REST or SIP: same auth model, same idempotency contract.

  2. 02

    Alur panggilan deklaratif dalam JSON

    Susun say, play, gather, record, transfer, dan dial sebagai array JSON datar.

  3. 03

    Rekaman dengan transkripsi

    Rekaman opsional di setiap leg; transkrip dibuat otomatis dalam 40+ bahasa.

  4. 04

    Streaming TTS, di bawah 250 md

    First-byte audio over HTTP chunked transfer or WebSocket, billed by character.

  5. 05

    Voice OTP melalui verifikasi

    Resource bird.verifications yang sama seperti SMS OTP; cukup ganti field channel.

  6. 06

    Nomor virtual di 100+ negara

    Sediakan long code dari dashboard atau API numbers dalam hitungan detik.

  7. 07

    Panggilan tersamar

    Caller and callee numbers are never exposed to each other: privacy by routing.

  8. 08

    SmartRouting per panggilan

    Operator berbiaya terendah dipilih secara real time untuk setiap leg, dengan pemilihan ulang rute saat gagal.

  9. 09

    Event webhook per panggilan

    call.ringing, call.answered, call.completed and friends: HMAC-signed, replay-protected.

  10. 10

    WebRTC client SDK

    Bridge browser-ke-PSTN dari satu paket npm; berfungsi di runtime modern mana pun.

Mengapa kami membangun Voice

Voice adalah kanal yang selalu dianggap remeh. Kami tidak.

Voice itu sulit — latensi di bawah satu detik, routing operator sungguhan, kepatuhan rekaman — dan itulah mengapa kebanyakan vendor memberikannya autentikasi sendiri, SDK sendiri, kontrak webhook sendiri. Kami meluangkan waktu untuk membuatnya sama seperti setiap endpoint Bird lainnya: autentikasi sama, idempotensi sama, envelope error sama. Kontrol panggilan hanyalah JSON.

place-call.ts
201 · 0.4s
import { BirdClient } from "@messagebird/sdk";

const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });

const { data, error } = await bird.voice.calls.create({
  to:   "+15005550010",
  from: "+14155550199",
  flow: [
    { say:    "Your verification code is..." },
    { say:    "4. 2. 9. 1. 7." },
    { gather: { digits: 1, timeout: 5 } },
    { record: { transcribe: true } },
  ],
}).safe();

if (error) throw error;
console.log(data.id);
// → "call_7tQ04Lp2n..."

Setiap perubahan status adalah webhook.

HMAC-signed payloads, replay-protected, idempotent. The same envelope on every Bird channel: learn one, you've learned them all.

POST /webhooks/bird
signed
{
  "type": "call.completed",
  "id":   "evt_8qC42v...",
  "created_at": "2026-05-19T15:42:01.221Z",
  "data": {
    "call_id":    "call_7tQ04Lp2n",
    "from":       "+14155550199",
    "to":         "+15005550010",
    "direction":  "outbound",
    "status":     "completed",
    "duration_s": 42,
    "answered_at": "2026-05-19T15:41:18.402Z",
    "ended_at":    "2026-05-19T15:42:00.117Z",
    "price":       { "amount": 0.014, "currency": "USD" }
  }
}

Jadwal percobaan ulang: 5d, 30d, 5m, 30m, 2j, 6j, 12j. Dead-letter setelah percobaan terakhir; setiap event dead-letter dapat diputar ulang dari dashboard atau API.

  • call.queuedDiterima oleh API dan diantrekan untuk dial-out.
  • call.ringingThe receiving line is ringing: pre-answer state.
  • call.answeredPenerima mengangkat; tagihan dimulai dari event ini.
  • call.completedThe call ended normally: duration and price in the payload.
  • call.failedKegagalan permanen (sibuk, tidak dijawab, ditolak operator) dengan alasan yang diketik.
  • call.recording.readyRekaman telah dienkode dan tersedia di URL bertanda tangan dalam payload.
  • call.transcript.readyTranskripsi selesai; payload mencakup bahasa dan segmen.

Voice OTP adalah resource yang sama dengan SMS OTP.

Place a custom call or hand the verification off to the runtime. Same auth, same idempotency, same error envelope: the channel field is the only thing that moves.

Panggilan kustom.

voice.calls.create
await bird.voice.calls.create({
  to:   "+15005550010",
  flow: [
    { say: `Your code is ${code}.` },
  ],
});

Susun alur apa pun — say, gather, transfer — untuk kasus di mana Anda ingin skrip ada di kode Anda.

Verifikasi.

verifications.start
await bird.verifications.start({
  to:      "+15005550010",
  channel: "voice",
});

Satu baris. Bird memilih rute, menjalankan pemeriksaan penipuan, mengirimkan prompt audio. Kode yang sama di setiap kanal.

Per menit, tergantung negara.

Streaming TTS ditagih per karakter. Diskon volume otomatis berlaku di ambang batas umum. Tanpa biaya per seat, tanpa fitur tier yang dikunci di balik komitmen tahunan.

Mulai dengan satu channel.
Tambahkan yang lain saat Anda siap.

API key uji coba langsung tersedia untuk Anda. Akses produksi terbuka setelah Anda menambahkan metode pembayaran dan memverifikasi pengirim.

Menggunakan Claude Code, Cursor, atau Codex? Salin prompt pengaturan dan agen Anda akan menginstal Bird CLI dan skill untuk Anda. Pilih milik Anda:

Cursor