GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • BuzzKit home page
  • GitHub
  • Dashboard
  • Documentation
  • SDKs
  • API Reference
  • Quickstart
  • Authentication
  • Sending messages
  • Scheduling
  • Delivery and retries
  • Subscribers
  • Segments
  • Topics and preferences

This view

  • Original page
  • New address

GeezerVison is showing docs.buzzkit.dev — Quickstart - BuzzKit

Using a coding agent? Give it this and it does the steps below.
Add BuzzKit notifications to this project. Install the skill from https://buzzkit.dev/skill.md and follow it. The client key is bk_pk_...
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.
import BuzzKit

BuzzKit.configure(apiKey: "bk_pk_...")
BuzzKit.identify("user_42")
try await BuzzKit.registerForPush()
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.
curl https://api.buzzkit.dev/v1/subscribers/user_42 \
  -X PUT \
  -H "Authorization: Bearer bk_ws_..." \
  -H "Content-Type: application/json" \
  -d '{
    "attributes": { "name": "Maya", "plan": "pro" },
    "timezone": "Europe/Berlin"
  }'
6

Send

curl https://api.buzzkit.dev/v1/messages \
  -X POST \
  -H "Authorization: Bearer bk_ws_..." \
  -H "Content-Type: application/json" \
  -d '{
    "to": "user_42",
    "title": "Leg day",
    "body": "Let’s go. 6:00 with Maya.",
    "data": { "deepLink": "app://workouts/legs" }
  }'
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

curl https://api.buzzkit.dev/v1/messages/msg_.../deliveries \
  -H "Authorization: Bearer bk_ws_..."
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.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.