Elk bericht dat iemand naar je geprovisioneerde nummer stuurt, komt binnen als een HMAC-ondertekende webhook. Lees de text, antwoord vanaf hetzelfde nummer, en laat Bird STOP en HELP voor je afhandelen. Bouw conversationele flows en auto-replies op de API waarmee je al verstuurt.
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
const code = generateOtp();
const { data, error } = await bird.sms.send({
from: "Bird",
to: "+15005550006",
text: `Your Bird verification code is ${code}. Reply STOP to opt out.`,
}).safe();
if (error) throw error;
console.log(data.id);
// → "sms_4kT01Lq2m..."Today at 2:14 PM
Inbound is gewoon nog een webhook.
Two-way is onderdeel van de Bird SMS API. Wanneer iemand je nummer sms't, krijg je een sms.received-event op hetzelfde ondertekende, replay-beschermde endpoint dat al je delivery receipts draagt. Er is geen tweede integratie en geen polling — verifieer de signature één keer en schakel op het type.
Luister naar wat terugkomt.
Een inkomend bericht en een opt-out zijn events, net als een delivery receipt. Verifieer één signature, schakel op het type, en handel elk af in de handler die je al schreef.
import { bird } from "@/lib/bird";
export async function POST(req: Request) {
const event = bird.webhooks.unwrap(
await req.text(),
Object.fromEntries(req.headers),
);
switch (event.type) {
case "sms.received":
await handleInbound(event.data.from, event.data.text);
break;
case "sms.opted_out":
await removeFromCampaigns(event.data.from);
break;
}
return new Response(null, { status: 204 });
}De payload is dezelfde envelope op elk Bird-kanaal: een evt_-id, een HMAC-signature, en een replay-beschermde timestamp.
sms.receivedEen inkomend bericht landde op je nummer — draagt de afzender, je nummer en de text.sms.deliveredEen antwoord dat je verstuurde bereikte het toestel (carrier DLR).sms.opted_outDe afzender sms'te STOP — Bird onderdrukte hen en blokkeert toekomstige verzendingen.
Een ondertekend inkomend bericht, volledig.
Zo ziet een sms.received-event er op de lijn uit. De from is wie je sms'te, de to is je geprovisioneerde nummer, en segments en encoding worden op dezelfde manier gerapporteerd als bij een verzending, zodat een lang inkomend antwoord nooit een verrassing is.
{
"id": "evt_7nQ9xLp2aR...",
"type": "sms.received",
"created_at": "2026-06-26T14:03:11Z",
"data": {
"id": "sms_5hV02Mr3n...",
"from": "+15005550006",
"to": "+14155550172",
"text": "YES book me in for Thursday",
"encoding": "GSM-7",
"segments": 1
}
}Antwoord vanaf hetzelfde nummer.
Een antwoord is een verzending met from en to omgewisseld. Zet from op je nummer en to op de oorspronkelijke afzender, en het gesprek blijft op één nummer, zodat de ontvanger een thread ziet in plaats van elke keer een nieuwe afzender. Bouw daarbovenop auto-replies, bevestigingen of een volledige conversationele flow.
async function handleInbound(from: string, text: string) {
if (/^yes\b/i.test(text)) {
const { error } = await bird.sms.send({
from: "+14155550172", // your two-way number
to: from, // reply to the sender
text: "Booked. See you Thursday at 10am.",
}).safe();
if (error) throw error;
}
}STOP, HELP en START handelen we voor je af.
Bird herkent de gereserveerde trefwoorden voordat ze je handler bereiken: STOP zet de afzender op je onderdrukkingslijst en activeert sms.opted_out, HELP stuurt een automatisch hulpantwoord en START schrijft ze weer in. Latere verzendingen naar een onderdrukt nummer worden automatisch geblokkeerd. Je kunt je eigen trefwoorden voor YES, BOOK of wat je flow nodig heeft gewoon behouden. De volledige trefwoord- en opt-outregels staan in opt-outafhandeling.
Twee dingen die je hierna wilt.
Inbound vereist een two-way-capabel nummer — long codes, short codes en toll-free kunnen ontvangen, alfanumerieke sender ID's niet. Voor rijkere heen-en-weer-communicatie op hetzelfde toestel (typing indicators, read receipts, carousels) upgradet RCS het gesprek waar het apparaat het ondersteunt.
Ga dieper in de docs.
Wire webhooks aan voor inbound events, lees de error-referentie voor de fouten die je gaat afhandelen, en bekijk misbruik en compliance voor de keyword- en consentregels.
Two-way SMS FAQ
Hoe bereikt een inkomende SMS mijn app?+
Kan ik op een inkomend bericht antwoorden?+
Wat gebeurt er wanneer iemand STOP sms't?+
Heb ik een speciaal nummer nodig voor two-way?+
De rest van het SMS-platform
Eén API, één set keys. Verken de andere mogelijkheden.
Verstuur en ontvang op één nummer, één API.
Two-way inbound is één mogelijkheid van de Bird SMS API: verzenden, nummers, compliance, routering en analytics komen ermee mee, op infrastructuur die we al tien jaar draaien.