Introduction
PushFleet sends push notifications to Apple and Android devices through one API. You connect your Apple key and your Firebase project once, then send to your own user IDs. PushFleet knows every device each user has and delivers to all of them.
Two calls
Section titled “Two calls”Register a device from your app when the operating system hands you a push token:
PushFleet.configure(publishableKey: "pf_pub_test_…")
PushFleet.register(deviceToken: token, userId: "user_8f3k")PushFleet.configure(context, publishableKey = "pf_pub_test_…")
PushFleet.register(fcmToken = token, userId = "user_8f3k")await PushFleet.configure(publishableKey: "pf_pub_test_…");
await PushFleet.register(userId: "user_8f3k");import PushFleet from "@pushfleet/react-native";
PushFleet.configure({ publishableKey: "pf_pub_test_…" });
await PushFleet.register({ userId: "user_8f3k" });Send from your server:
import { PushFleet } from "pushfleet";
const fleet = new PushFleet(process.env.PUSHFLEET_SECRET_KEY);
await fleet.send({
to: "user_8f3k",
title: "Your order shipped",
body: "Arriving Thursday",
});import os
from pushfleet import PushFleet
fleet = PushFleet(os.environ["PUSHFLEET_SECRET_KEY"])
fleet.send(
to="user_8f3k",
title="Your order shipped",
body="Arriving Thursday",
)fleet := pushfleet.New(os.Getenv("PUSHFLEET_SECRET_KEY"))
fleet.Send(ctx, pushfleet.SendParams{
To: "user_8f3k",
Title: "Your order shipped",
Body: "Arriving Thursday",
})let fleet = PushFleet::from_env()?;
fleet
.send()
.to("user_8f3k")
.title("Your order shipped")
.body("Arriving Thursday")
.await?;fleet = PushFleet::Client.new(ENV["PUSHFLEET_SECRET_KEY"])
fleet.push(
to: "user_8f3k",
title: "Your order shipped",
body: "Arriving Thursday"
)curl https://api.pushfleet.com/v1/send \
-H "Authorization: Bearer $PUSHFLEET_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{"to":"user_8f3k","title":"Your order shipped","body":"Arriving Thursday"}'Test and live
Section titled “Test and live”Every project has a test environment and a live environment, each with its own keys, devices and logs. The key you send with decides which one a request goes to, so you build against test and switch the key when you ship. Projects and environments has the details.
Built for agents
Section titled “Built for agents”PushFleet speaks MCP, so a coding agent can upload your keys, wire up your app and send a test push without you opening the dashboard. It only gets the permissions you approve. Start with Quickstart with an agent.
Every code sample in these docs comes in each language; pick one once and every sample follows.
- In your app: Swift, Kotlin, Flutter, React Native
- On your server: TypeScript, Python, Go, Rust, Ruby, or plain HTTP from anything else
Next steps
Section titled “Next steps”- Quickstart: from a new project to a delivered push.
- Quickstart with an agent: let your coding agent do it.
- API keys: publishable, secret and restricted keys.