schedule_push_notification
Create a new scheduled or recurring push notification campaign, edit an existing queued campaign (via update_campaign_id), or cancel a queued campaign before execution (via cancel_campaign_id). Use this tool for delayed, recurring, or editable future broadcasts; do not use it for immediate sending (use send_push_notification instead) or automated RSS feed polling (use configure_rss_autopush instead). Prerequisite: call list_apps to obtain app_id, or call get_campaign_analytics to obtain an existing cmp_sch_xxxx ID for editing or cancellation. Requires PUSHNOTIF_API_KEY; scheduling, editing, or canceling costs 0 credits up front, and 1 credit per delivered device is deducted only when the schedule fires (mutually exclusive modes: pass cancel_campaign_id to delete, update_campaign_id to modify fields in-place, or neither to create a new schedule). Returns JSON { ok, action, scheduled_campaign: { id, app_id, title, body, scheduled_for, recurrence_rule, status } }.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Optional HTTPS destination URL opened when the notification is tapped | |
| body | No | Notification body text (1 to 240 characters; required when creating, optional when editing via update_campaign_id) | |
| title | No | Notification headline (1 to 100 characters; required when creating, optional when editing via update_campaign_id) | |
| app_id | No | Target application ID in format app_xxxx (required when creating a new schedule) | |
| scheduled_for | No | ISO-8601 execution timestamp with timezone offset (e.g., '2026-10-21T08:00:00+07:00') | |
| recurrence_rule | No | Recurrence pattern: 'once' (default), 'daily', 'twice_daily', 'weekly', 'monthly', 'every_30m', 'every_3h', 'every_6h', or a 5-field cron expression | |
| cancel_campaign_id | No | Optional existing scheduled campaign ID (format cmp_sch_xxxx from get_campaign_analytics) to cancel and remove from the queue | |
| update_campaign_id | No | Optional existing scheduled campaign ID (format cmp_sch_xxxx from get_campaign_analytics) to edit in-place with new title, body, url, scheduled_for, or recurrence_rule |