API
Authenticate with a hashed API key. Never ship keys in the mobile app. Users are addressed by your external ids. Walk the whole path on Harbor Desk — a fake helpdesk that calls this API for real.
Authentication
Authorization: Bearer nfy_live_…
Send a notification
curl -X POST $API_URL/v1/notifications \
-H "Authorization: Bearer API_KEY" \
-H "Content-Type: application/json" \
-d '{
"user": "8472",
"title": "New order",
"body": "Order #18291 received",
"url": "https://example.com/orders/18291"
}'JavaScript
await fetch(`${API}/v1/notifications`, {
method: "POST",
headers: {
Authorization: `Bearer ${API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
user: "8472",
title: "New order",
body: "Order #18291 received",
url: "https://example.com/orders/18291",
}),
});Node.js SDK
import { NotifyClient } from "@notify/sdk";
const buzzy = new NotifyClient(process.env.BUZZY_API_KEY, process.env.BUZZY_API_URL);
await buzzy.sendNotification({
user: "8472",
title: "New order",
body: "Order #18291 received",
url: "https://example.com/orders/18291",
});PHP
$ch = curl_init($api . '/v1/notifications');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $key,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'user' => '8472',
'title' => 'New order',
'body' => 'Order #18291 received',
'url' => 'https://example.com/orders/18291',
]),
]);
curl_exec($ch);Pairing & errors
POST /v1/pairing/sessions with an externalId returns a 12-character joinCode (XXXX-XXXX-XXXX, 24 hours, single use) and buzzy://pair/…. Errors are JSON { error: { code, message, requestId } }. Default 60 req/min and 1000 notifications/month on FREE. Send Idempotency-Key on creates. The notification url is an HTTPS web page for details. App deeplinks are rejected. Buzzy opens that page in a browser view.