Authentication

Your webhook URL has a secret baked in that handles all authentication:

https://pushbird.app/pb_your_secret_here

Anyone who has this URL can push notifications to your device. Keep it safe. You can rotate the secret from the app whenever you want.

Sending notifications

POST with JSON body

curl
PHP
Python
Node.js
Go
curl -X POST https://pushbird.app/pb_your_secret \
  -H 'Content-Type: application/json' \
  -d '{
    "title": "Build Passed",
    "subtitle": "CI/CD",
    "message": "All 42 tests green"
  }'
$ch = curl_init('https://pushbird.app/pb_your_secret');
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
    CURLOPT_POSTFIELDS => json_encode([
        'title' => 'Build Passed',
        'message' => 'All 42 tests green'
    ])
]);
curl_exec($ch);
import requests

requests.post("https://pushbird.app/pb_your_secret", json={
    "title": "Build Passed",
    "subtitle": "CI/CD",
    "message": "All 42 tests green"
})
await fetch("https://pushbird.app/pb_your_secret", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    title: "Build Passed",
    subtitle: "CI/CD",
    message: "All 42 tests green"
  })
});
body := strings.NewReader(`{"title":"Build Passed","subtitle":"CI/CD","message":"All 42 tests green"}`)
req, _ := http.NewRequest("POST",
    "https://pushbird.app/pb_your_secret", body)
req.Header.Set("Content-Type", "application/json")
http.DefaultClient.Do(req)

POST with plain text

The entire body becomes the notification message.

curl
PHP
Python
Node.js
Go
curl -X POST https://pushbird.app/pb_your_secret \
  -d 'Hello from PushBird!'
file_get_contents('https://pushbird.app/pb_your_secret', false,
    stream_context_create(['http' => [
        'method' => 'POST',
        'content' => 'Hello from PushBird!'
    ]]));
requests.post("https://pushbird.app/pb_your_secret",
    data="Hello from PushBird!")
await fetch("https://pushbird.app/pb_your_secret", {
  method: "POST",
  body: "Hello from PushBird!"
});
http.Post("https://pushbird.app/pb_your_secret",
    "text/plain", strings.NewReader("Hello from PushBird!"))

GET with query parameters

Works from a browser, a bookmark, or any tool that can open a URL.

curl
PHP
Python
Node.js
Go
curl 'https://pushbird.app/pb_your_secret?title=Alert&message=Check+the+logs'
file_get_contents('https://pushbird.app/pb_your_secret?title=Alert&message=Check+logs');
requests.get("https://pushbird.app/pb_your_secret",
    params={"title": "Alert", "message": "Check logs"})
await fetch("https://pushbird.app/pb_your_secret?title=Alert&message=Check+logs");
http.Get("https://pushbird.app/pb_your_secret?title=Alert&message=Check+logs")

Parameters

ParameterTypeDescription
titleStringFirst line of the notification
subtitleStringSecond line, shown under the title
messageStringMain body text
open_urlStringOpens this URL when you tap the notification
image_urlStringAttaches an image to the notification
interruption-levelStringpassive, active (default), time-sensitive

Response format

Success (200)

{"ok": true}

Error (4xx / 5xx)

{"error": "message or title is required"}