PushPilot API (1.0.0)

Download OpenAPI specification:

PushPilot's public API for programmatically managing your push notification campaigns and websites.

Authentication

All API requests require authentication with a Bearer Token. You can generate an API key from your PushPilot dashboard. Go over your account and access to the "API Keys & Webhooks" section to create and manage your keys from a website.

Include your API key in the Authorization header of each request:

Authorization: Bearer YOUR_API_KEY

Rate Limiting

API requests are rate-limited to ensure fair usage. If you exceed the limit, you will receive a 429 Too Many Requests response.

Websites

Management of websites associated with your API Key.

List websites

Retrieve all websites associated with your API key.

Authorizations:
bearer

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Websites for the team",
  • "data": {}
}

Campaigns

Push notification campaign management.

List campaigns

Retrieve all campaigns for your websites.

Authorizations:
bearer
query Parameters
search
string

Search campaigns by name

page
integer >= 1
Default: 1

Page number for pagination

perPage
integer [ 1 .. 100 ]
Default: 20

Number of results per page

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Campaigns found matching your query",
  • "data": {
    }
}

Create a campaign

Create a new push notification campaign.

Authorizations:
bearer
Request Body schema: application/json
required
websiteId
required
string

Website ID to create the campaign for

name
required
string <= 255 characters

Campaign name

description
string <= 255 characters

Campaign description

object (Notification)
frequency
string

Cron expression for recurring campaigns

startAt
string <date-time>

ISO 8601 date (must be today or in the future)

endsAt
string <date-time>

ISO 8601 date (must be after or equal to startAt)

object or null (CampaignOptions)

Responses

Request samples

Content type
application/json
{
  • "websiteId": "web123",
  • "name": "My Campaign",
  • "description": "Optional description",
  • "notification": {},
  • "frequency": "0 9 * * *",
  • "startAt": "2026-01-15T09:00:00.000Z",
  • "endsAt": "2026-02-15T09:00:00.000Z",
  • "options": {
    }
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Campaign created successfully",
  • "data": {
    }
}

Get a campaign

Retrieve a specific campaign by ID.

Authorizations:
bearer
path Parameters
campaignId
required
string

The unique ID of the campaign

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Campaign found successfully",
  • "data": {
    }
}

Update a campaign

Update an existing campaign.

Note: You cannot update campaigns that have already been launched (status standard). Planned campaigns can only be updated if they have not yet started.

Authorizations:
bearer
path Parameters
campaignId
required
string

The unique ID of the campaign

Request Body schema: application/json
required
name
string <= 255 characters

Updated campaign name

description
string <= 255 characters

Updated description

object (Notification)
frequency
string

Updated cron expression

startAt
string <date-time>

Updated start date

endsAt
string <date-time>

Updated end date

object or null (CampaignOptions)

Responses

Request samples

Content type
application/json
{
  • "name": "Updated Campaign Name",
  • "description": "Updated description",
  • "notification": {
    },
  • "frequency": "0 10 * * *",
  • "startAt": "2026-01-20T10:00:00.000Z",
  • "endsAt": "2026-03-01T10:00:00.000Z",
  • "options": {
    }
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Campaign updated successfully",
  • "data": {
    }
}

Delete a campaign

Delete a campaign.

Authorizations:
bearer
path Parameters
campaignId
required
string

The unique ID of the campaign

Responses

Response samples

Content type
application/json
{
  • "success": false,
  • "error": {
    }
}

Launch a campaign

Launch a campaign. This will send push notifications according to the campaign configuration.

Note: The campaign must have a valid notification configured before it can be launched.

Authorizations:
bearer
path Parameters
campaignId
required
string

The unique ID of the campaign

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Campaign launched successfully",
  • "data": {
    }
}

Pause a campaign

Pause a recurring campaign.

Note: Only recurring campaigns can be paused.

Authorizations:
bearer
path Parameters
campaignId
required
string

The unique ID of the campaign

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Campaign set to pause",
  • "data": {
    }
}

Copy a campaign

Duplicate an existing campaign.

Authorizations:
bearer
path Parameters
campaignId
required
string

The unique ID of the campaign

query Parameters
websiteId
string

Website ID for the copied campaign. Defaults to the original campaign's website.

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Campaign copied successfully",
  • "data": {
    }
}