Push-Benachrichtigungen für iOS, Android und Web.
Token-Management-Abstraktion, gerätespezifisches Opt-in, native Rich-Payloads, Segment-Targeting. Gleiche Authentifizierung, gleiche Idempotenz, gleiche Webhooks wie bei jedem anderen Bird-Kanal – weil dasselbe Engineering-Team sie alle entwickelt hat.
import { BirdClient } from "@bird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
// Send by device token...
const { data, error } = await bird.push.send({
to: "token_aPa91Hb...XzQ",
title: "Your driver is two minutes away",
body: "Tap to see the live map.",
data: { ride_id: "ride_2891" },
}).safe();
// ...or by user_id — we fan out to every opted-in device.
await bird.push.send({
to: { user_id: "usr_4hQ2m" },
title: "Your code is 482917",
body: "Enter it on the login screen.",
data: { kind: "otp" },
});
if (error) throw error;
console.log(data.id);
// → "push_2nQ81oP3..."5 Minuten von npm install bis zum ersten Versand
Senden Sie eine Benachrichtigung in der Sprache, die Sie bereits verwenden.
SDKs für jede gängige Laufzeitumgebung. Registrieren Sie ein Token über Ihren mobilen oder Web-Client; senden Sie per Token oder per user_id von Ihrem Backend.
import { BirdClient } from "@bird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
const { data, error } = await bird.push.send({
to: "token_aPa91Hb",
title: "Hello",
body: "From Bird Push",
data: { kind: "demo" },
}).safe();Zehn Primitive, die APNs und FCM in einen Endpunkt verwandeln.
Echte APNs und FCM unter der Haube – kein Drittanbieter-Push-Aggregator dazwischen. Wir verbergen lediglich die Plattform-Eigenheiten hinter einer einheitlichen Struktur.
- 01
iOS, Android und Web mit einem Aufruf
Ein bird.push.send. Wir verteilen an APNs, FCM und das W3C Push Protocol pro registriertem Gerät.
- 02
Token-Management-Abstraktion
Registrieren Sie ein Token mit bird.push.tokens.register. Wir tracken Plattform, Sprache und letzten Zugriff – damit Sie es nicht müssen.
- 03
Versand per Token oder per user_id
Address a single device, or pass
{ user_id }and we fan out to every opted-in device they own. - 04
Gerätespezifischer Opt-in-Status
Jedes registrierte Token hat seinen eigenen Opt-in-Status. Widerrufen Sie eines, ohne die anderen zu beeinflussen.
- 05
Native Rich-Payloads
Titel, Text, Bild, Action-Buttons, Deep-Link-URL, benutzerdefinierte Daten – korrekt auf APNs-Alert und FCM-Notification gemappt.
- 06
Stille / Hintergrund-Benachrichtigungen
Übergeben Sie content_available: true und wir routen korrekt über APNs-Background und FCM-Data-only – je nach Plattform.
- 07
Segment-Targeting
Taggen Sie Nutzer bei der Registrierung; adressieren Sie per Tag über bird.push.send. Keine Drittanbieter-CDP-Integration erforderlich.
- 08
Zustellungs- und Öffnungsbestätigungen
Events für push.delivered, push.opened, push.dismissed. Derselbe HMAC-Envelope wie bei jedem anderen Kanal.
- 09
Token-Lifecycle automatisch verwaltet
Wenn APNs / FCM ein nicht registriertes Token zurückgibt, markieren wir es als inaktiv und stoppen den Versand. Kein manuelles Aufräumen.
- 10
Gleiche Authentifizierung, gleicher Error-Envelope
Ein API-Key für Push, SMS, Email, WhatsApp, Voice. Ein einheitliches Fehlertyp-Register für alle.
Why we build Push
Weil Push nicht bei einem anderen Anbieter leben sollte als Ihre SMS, Ihre E-Mails und Ihre Verifizierungen.
Jedes Produktteam endet mit demselben Stack: APNs für iOS, FCM für Android, ein Service Worker für Web und eine Datenbanktabelle, die festhält, welcher Nutzer welche Tokens mit welchem Opt-in-Status hat. Wir haben diese Tabelle gebaut, dann noch einmal gebaut und sie dann als bird.push.tokens.register und bird.push.send bereitgestellt. Gleiche Authentifizierung, gleiche Idempotenz, gleicher Error-Envelope wie bei Email und SMS – damit das OTP, das per Push fehlschlägt, im selben Request auf SMS zurückfällt.
import { BirdClient } from "@bird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
// Send by device token...
const { data, error } = await bird.push.send({
to: "token_aPa91Hb...XzQ",
title: "Your driver is two minutes away",
body: "Tap to see the live map.",
data: { ride_id: "ride_2891" },
}).safe();
// ...or by user_id — we fan out to every opted-in device.
await bird.push.send({
to: { user_id: "usr_4hQ2m" },
title: "Your code is 482917",
body: "Enter it on the login screen.",
data: { kind: "otp" },
});
if (error) throw error;
console.log(data.id);
// → "push_2nQ81oP3..."Jede Statusänderung ist ein Webhook.
HMAC-signierte Payloads, Replay-geschützt, idempotent. Derselbe Envelope auf jedem Bird-Kanal – lernen Sie einen, kennen Sie alle.
{
"type": "push.delivered",
"id": "evt_9pT81y...",
"created_at": "2026-05-19T15:42:01.221Z",
"data": {
"push_id": "push_2nQ81oP3",
"user_id": "usr_4hQ2m",
"platform": "ios",
"device": "iPhone15,2",
"latency_ms": 218
}
}Retry-Intervalle: 5s, 30s, 5m, 30m, 2h, 6h, 12h. Dead-Letter nach dem letzten Versuch; jedes Dead-Letter-Event kann über das Dashboard oder die API erneut abgespielt werden.
push.queuedVon der API akzeptiert und zum Versand in die Warteschlange gestellt.push.sentAn APNs / FCM / W3C Push Server übergeben.push.deliveredAnbieter hat Zustellung an das Gerät bestätigt (sofern verfügbar – APNs ist Best-Effort).push.openedNutzer hat auf die Benachrichtigung getippt (wenn Ihre App dies instrumentiert).push.dismissedNutzer hat die Benachrichtigung ohne Öffnen geschlossen (wenn Ihre App dies instrumentiert).push.failedPermanenter Fehler (Token nicht registriert, App entfernt). Das Token wird automatisch deaktiviert.
Wenn Sie SMS integriert haben, haben Sie auch Push integriert.
Gleiche Authentifizierung, gleicher Idempotenz-Vertrag, gleicher Error-Envelope, gleiches Webhook-Format. Der Unterschied ist der Transport – nicht der Aufruf.
Push.
await bird.push.send({
to: { user_id: "usr_4hQ2m" },
title: "Your code",
body: `Code: ${code}`,
});Ein Aufruf. Wir verteilen an jedes Gerät des Nutzers mit Opt-in – über APNs, FCM und Web.
SMS.
await bird.sms.send({
from: "Bird",
to: "+15005550006",
text: `Your code is ${code}.`,
});Gleicher Envelope, gleicher Idempotenz-Vertrag. Fallback, wenn Push fehlschlägt – oder SMS direkt adressieren.