Skip to main content
1

Create a workspace

Sign up at buzzkit.dev/signup. Every account starts with a workspace and a default tenant, which is the tenant every call uses when you send no BuzzKit-Tenant header.
2

Connect Apple

In the dashboard, open Settings → Channels and upload the APNs key for your app: the .p8 file, your Team ID, the Key ID and your bundle id.BuzzKit probes the key against both APNs hosts and stores one credential per environment it is valid for, so a key scoped to sandbox, to production or to both needs no choice from you.
Nothing can be sent on a channel with no credential. Topics, subscriptions and sends all answer 400 channel_not_connected until one is connected.
3

Create an API key

Under API keys, create a workspace key. The secret is shown once and stored only as a hash. Give it the scopes your backend needs, subscribers:write, messages:send and events:write to start.Create a client key too. It carries fixed capabilities rather than scopes, is safe to ship inside your app binary, and can only reach /v1/client/*.
4

Register a device

Add the iOS SDK to your app with the client key. On launch it asks for permission, registers the device token and identifies the user by the id your backend already uses.
5

Identify the subscriber from your backend

The same subscriber can be created or updated from your server. This is an idempotent upsert on your own id, so it is safe to call on every login.
6

Send

You get back 202 with a message id (msg_...) and status: "queued". Delivery is asynchronous, so the 202 says the send was accepted, not that a device has it.
7

Check what happened

One delivery per device, each with its status. GET /v1/deliveries/:id/attempts shows every attempt with the provider response and latency.

Next

Authentication

Key kinds, scopes and how to pick a tenant per request.

Topics and preferences

Let people choose what reaches them, with the settings screen rendered from the API.

Segments

Send to everyone who matches conditions instead of a list of ids.

Workflows

React to what a user did, with waits, branches and dry runs.