home / skills / vm0-ai / vm0-skills / pushinator

pushinator skill

/pushinator

This skill sends push notifications via the Pushinator API using curl, enabling alerting and status updates in CI/CD pipelines.

npx playbooks add skill vm0-ai/vm0-skills --skill pushinator

Review the files below or copy the command above to add this skill to your agents.

Files (1)
SKILL.md
4.1 KB
---
name: pushinator
description: Pushinator push notification API via curl. Use this skill to send push notifications to mobile devices.
vm0_secrets:
  - PUSHINATOR_API_KEY
---

# Pushinator API

Use the Pushinator API via direct `curl` calls to **send push notifications** to mobile devices.

> Official docs: `https://pushinator.com/api`

---

## When to Use

Use this skill when you need to:

- **Send push notifications** to mobile devices
- **Alert users** about events, deployments, or updates
- **Integrate notifications** into CI/CD pipelines
- **Notify yourself** when long-running tasks complete

---

## Prerequisites

1. Sign up at [Pushinator](https://pushinator.com/)
2. Download the Pushinator app on your mobile device
3. Create a channel in the [Console](https://console.pushinator.com/)
4. Generate an API token at [Tokens](https://console.pushinator.com/tokens)
5. Store credentials in environment variables

```bash
export PUSHINATOR_API_KEY="your-api-token"
```

### Pricing

- **Free**: 3 devices, 200 notifications/month
- **Pro** ($9.99/mo): 20 devices, 2,000 notifications/month
- **Scale** ($29.99/mo): 50 devices, 20,000 notifications/month

---


> **Important:** When using `$VAR` in a command that pipes to another command, wrap the command containing `$VAR` in `bash -c '...'`. Due to a Claude Code bug, environment variables are silently cleared when pipes are used directly.
> ```bash
> bash -c 'curl -s "https://api.example.com" -H "Authorization: Bearer $API_KEY"'
> ```

## How to Use

Base URL: `https://api.pushinator.com`

**Required headers:**
- `Authorization: Bearer ${PUSHINATOR_API_KEY}`
- `Content-Type: application/json`

---

### 1. Send a Push Notification

Send a notification to all subscribers of a channel.

Write to `/tmp/pushinator_request.json`:

```json
{
  "channel_id": "<your-channel-uuid>",
  "content": "Hello from Pushinator!"
}
```

Replace `<your-channel-uuid>` with your actual channel UUID, then run:

```bash
curl -s -X POST "https://api.pushinator.com/api/v2/notifications/send" \
  --header "Authorization: Bearer ${PUSHINATOR_API_KEY}" \
  --header "Content-Type: application/json" \
  -d @/tmp/pushinator_request.json
```

**Response:**
```json
{
  "success": true,
  "message": "Notification created and being sent to subscribers"
}
```

---

### 2. Send Deployment Notification

Notify when a deployment completes.

Write to `/tmp/pushinator_request.json`:

```json
{
  "channel_id": "<your-channel-uuid>",
  "content": "Deployment complete! Project deployed to production."
}
```

Replace `<your-channel-uuid>` with your actual channel UUID, then run:

```bash
curl -s -X POST "https://api.pushinator.com/api/v2/notifications/send" \
  --header "Authorization: Bearer ${PUSHINATOR_API_KEY}" \
  --header "Content-Type: application/json" \
  -d @/tmp/pushinator_request.json
```

---

### 3. Send Alert with Emoji

Include emojis for visual distinction.

Write to `/tmp/pushinator_request.json`:

```json
{
  "channel_id": "<your-channel-uuid>",
  "content": "Build failed! Check the CI logs."
}
```

Replace `<your-channel-uuid>` with your actual channel UUID, then run:

```bash
curl -s -X POST "https://api.pushinator.com/api/v2/notifications/send" \
  --header "Authorization: Bearer ${PUSHINATOR_API_KEY}" \
  --header "Content-Type: application/json" \
  -d @/tmp/pushinator_request.json
```

---

## Request Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `channel_id` | string | Yes | UUID of the notification channel |
| `content` | string | Yes | Notification message text |

---

## HTTP Status Codes

| Code | Description |
|------|-------------|
| 2xx | Success - notification sent |
| 4xx | Invalid request or missing parameters |
| 5xx | Server error - retry recommended |

---

## Guidelines

1. **Keep messages concise**: Push notifications have limited display space
2. **Use channels for topics**: Create separate channels for different notification types
3. **Rate limiting**: Stay within your plan's monthly notification limit
4. **Include context**: Make notifications actionable with relevant details

Overview

This skill provides concise curl-based examples and guidance for sending push notifications with Pushinator. It focuses on practical steps: preparing a JSON payload, setting the Authorization header with your API token, and posting to the notifications endpoint. Use it to integrate quick alerts into scripts, CI/CD pipelines, or manual workflows.

How this skill works

The skill shows how to build a minimal JSON payload containing channel_id and content, then call the Pushinator API endpoint https://api.pushinator.com/api/v2/notifications/send with the Authorization: Bearer ${PUSHINATOR_API_KEY} and Content-Type: application/json headers. It demonstrates writing the payload to a file and sending it via curl, and explains expected HTTP success and error codes. It also highlights environment variable handling when using pipes in shells.

When to use it

  • Send immediate alerts to mobile devices from scripts or automation
  • Notify teams about deployments, build results, or incidents
  • Integrate lightweight notifications into CI/CD pipelines
  • Get completion or error alerts for long-running jobs
  • Broadcast short updates to a topic-based channel

Best practices

  • Store your API token in an environment variable (PUSHINATOR_API_KEY) and never hard-code it
  • Keep messages concise and actionable to fit push display limits
  • Use separate channels for different notification types to avoid noise
  • Respect your plan’s rate limits and monitor monthly usage
  • Wrap curl commands in bash -c '...' when piping to avoid environment variable loss in some runners

Example use cases

  • Notify QA and ops when a deployment finishes with a short summary
  • Send CI build failure alerts including a link to logs
  • Trigger a personal mobile alert when a scheduled backup or data job completes
  • Broadcast on-call rotation reminders or incident triage prompts to a channel

FAQ

What are the required request fields?

Provide channel_id (channel UUID) and content (message text) in the JSON payload.

Which headers must I include?

Include Authorization: Bearer ${PUSHINATOR_API_KEY} and Content-Type: application/json.

How do I handle failure responses?

4xx indicates client issues (missing params or invalid token) and 5xx indicates server errors; retry with backoff for 5xx and validate request for 4xx.