canonical: https://jentic.com/apis/pushpad.xyz/pushpad

# Pushpad Xyz Pushpad API

The Pushpad API sends web push notifications to the browsers subscribed to a Pushpad project and reports how many were delivered and opened. A notification can carry a title, body, target_url, images, action buttons, and a send_at time for scheduling, and can be targeted at specific uids or tags. The API also manages the subscriptions, projects, and VAPID senders behind those notifications.

## For AI agents

Send or schedule web push notifications to a Pushpad project, target them by uid or tag, cancel scheduled sends, and manage subscriptions, projects, and senders.

## Scope

Does not handle email, SMS, or native mobile app push. Use for browser web push notifications and their subscriptions only.

## Capabilities

- Send a web push notification to a project with title, body, target_url, image_url, and action buttons
- Schedule a notification for later with send_at and cancel it before it goes out
- Target delivery at specific users or segments with uids and tags
- Read delivery stats such as successfully_sent_count, opened_count, and scheduled_count for a notification
- List, tag, and delete browser subscriptions within a project
- Create projects tied to a sender and manage VAPID senders with their key pairs

## Use cases

### Agent-sent push alerts through Jentic

An operations agent sends a web push alert when something needs attention, such as a price drop or a status change. Through Jentic it calls the Pushpad send operation for one project, the developer's own Jentic One instance injects the bearer token, and a rule pinned to that project id keeps it from touching other projects.

Example prompt: POST `/projects/123/notifications` with body 'Your order has shipped', title 'Order update', and target_url 'https://example.com/orders/987'

### Scheduled campaign notifications

Marketing sends land best at the right hour. The send operation accepts send_at to schedule a notification, the scheduled flag shows it is pending, and DELETE `/notifications/{notification_id}/cancel` withdraws it if plans change.

Example prompt: POST `/projects/123/notifications` with body 'Sale starts now' and send_at '2026-11-20T09:00:00Z', then DELETE `/notifications/{notification_id}/cancel` if the sale is postponed

### Segmented delivery by user and tag

Not every notification is for everyone. Subscriptions carry a uid and tags, and a notification can target uids or tags so only matching browsers receive it, for example a one-to-one alert for a logged-in user or a broadcast to a 'beta' segment.

Example prompt: PATCH `/projects/123/subscriptions/{subscription_id}` to add the tag 'beta', then POST `/projects/123/notifications` with tags ['beta'] and body 'Try the new feature'

### Delivery and engagement reporting

After a send, GET `/notifications/{notification_id}` returns counts including successfully_sent_count and opened_count, so an agent can report how a notification performed or compare recent sends listed for the project.

Example prompt: GET `/projects/123/notifications`, then GET `/notifications/{notification_id}` for each and report successfully_sent_count and opened_count

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/projects/{project_id}/notifications` | Send a new notification |
| GET | `/projects/{project_id}/notifications` | List latest notifications |
| GET | `/notifications/{notification_id}` | Get a notification with stats |
| DELETE | `/notifications/{notification_id}/cancel` | Cancel a scheduled notification |
| GET | `/projects/{project_id}/subscriptions` | List subscriptions |
| PATCH | `/projects/{project_id}/subscriptions/{subscription_id}` | Update a subscription |
| POST | `/projects` | Create a project |

## Key resources

- **Notifications** — Send, schedule, read, list, and cancel web push notifications per project
- **Subscriptions** — Browser push subscriptions with endpoint, uid, and tags per project
- **Projects** — Websites receiving notifications, with default ttl and display options
- **Senders** — VAPID key pairs used to sign push messages

## AI readiness

This API is usable in Jentic One now. Its AI-readiness score against Jentic's framework shows where it stands today and where improvements would make it even easier for agents to use.

- **Score:** 76 / 100
- **Maturity:** AI-Ready
- **Dimensions:**
  - Foundational Compliance: 100 / 100
  - Developer Experience & Jentic Compatibility: 85 / 100
  - AI-Readiness & Agent Experience: 60 / 100
  - Agent Usability: 94 / 100
  - Security: 60 / 100
  - AI Discoverability: 72 / 100
- **View full report:** https://jentic.com/apis/pushpad.xyz/pushpad/scorecard
- **How the score is calculated:** https://docs.jentic.com/reference/api-readiness-framework/overview/
- **More about the dimensions:** https://docs.jentic.com/reference/api-readiness-framework/specification/#dimensional-model-overview

### Score it yourself

Every API in the directory is allowlisted, so you can re-score it with no key required.

- **Score your own API:** https://jentic.com/scorecard.md
- **Scoring CLI agent skill:** https://github.com/jentic/jentic-api-scorecard/blob/main/skills/jentic-api-scorecard/SKILL.md

```sh
npx @jentic/api-scorecard-cli score <openapi-url>
```

## Why Jentic

- **Setup:** Wiring Pushpad by hand means creating an access token, sending it as a bearer header, and tracking project and notification ids across calls yourself. Through Jentic you install once, import Pushpad from the API Directory, store the token once, and your agent calls it.
- **Permission scoping:** Pushpad puts the project id in the URL path (`/projects/{project_id}/notifications`), so a rule can pin your agent to one project: it can send and list notifications for that site and nothing else. You choose the operations it may call, so destructive ones like project deletion or sender deletion are not included unless you add them.
- **Credential handling:** Your Pushpad access token is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'send a web push notification' or 'cancel a scheduled notification', and Jentic returns the matching Pushpad operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Pushover API** — Push notifications to the Pushover mobile and desktop apps
- **ntfy API** — Topic-based push notifications to phones and desktops
- **Knock API** — Cross-channel notification workflow orchestration

## FAQ

### What authentication does the Pushpad API use?

The Pushpad API declares an HTTP bearer scheme (BearerAuth) in its OpenAPI spec: you create an access token in Pushpad's account settings and send it as Authorization: Bearer. Through Jentic, the token is stored encrypted by your own Jentic One instance and injected at execution time.

### Can I schedule a notification with the Pushpad API?

Yes. Include send_at when you POST `/projects/{project_id}/notifications` and the notification is held until that time. While it is pending you can cancel it with DELETE `/notifications/{notification_id}/cancel.`

### What are the rate limits for the Pushpad API?

The OpenAPI spec defines a rate-limit-exceeded error response but does not state the numeric limit. Check the Pushpad documentation at https://pushpad.xyz/docs for current limits.

### How do I send a push notification with the Pushpad API through Jentic?

Install Jentic One, import the Pushpad API from the Jentic API Directory, and store your access token. Your agent searches for 'send a web push notification', Jentic returns POST `/projects/{project_id}/notifications` with its schema, and the agent calls it with a body and optional title and target_url. To run it on your own infrastructure, install Jentic One from its GitHub repo.

### Is there a Pushpad MCP server?

You don't need an MCP server to give your agent Pushpad. Jentic connects it directly from the API Directory: import it, store your credential once, and your agent calls it, discovering operations on demand rather than loading every tool definition into its context.

### Can I limit what my agent is allowed to do with the Pushpad API?

Yes. Write a rule that allows only POST and GET on `/projects/123/notifications` plus GET `/notifications/{notification_id}`, so the agent can send to project 123 and read the results, while deleting projects, senders, or subscriptions stays out of reach. Every call it makes is logged.
