NPNotify Partners Docs

API Keys

Creating API keys, the psk_live_... format, access levels, Scoped API Keys with project_id isolation

API keys allow programmatic management of Notify Partners via REST API: creating applications, sending pushes, managing schedulers and retrieving analytics. This is the main method of integration with external services and automation.

Creating a Key

  1. Go to API Keys and click "Create".
  2. Enter the key name (for identification in the interface).
  3. Select the access level (scope).
  4. If needed, set a project (for resource isolation).
  5. Click "Create" and immediately copy the key — it is shown only once.

Key Format

All API keys have the format psk_live_..., for example:

psk_live_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6

When making API requests, pass the key in the header:

curl -H "Authorization: Bearer psk_live_..." https://your-domain/api/v3/apps

Access Levels (Scopes)

ScopeWhat is Allowed
readView applications, pushes, schedulers, analytics, devices
writeEverything from read + creating and sending pushes, managing schedulers
adminFull access: deleting resources, managing API keys, changing settings

For most integrations, write level is sufficient. The admin level should only be granted to trusted services.

Key Rotation

For security, you can recreate a key at any time:

  • The old key is deactivated.
  • The new key retains the same settings (scope, project, expiry).

This allows rotation without reconfiguring the entire integration — just replace the key value in your environment.

Scoped API Keys: Resource Isolation

When creating an API key you can specify a project (the "Project (isolation)" field, project_id). This allows isolating resources between different services or teams within the same account.

How Isolation Works

Key TypeWhat it Sees
Key with project_id (e.g., apk-service)Only its project's resources: applications, pushes, push packs, events, schedulers, audience groups and app groups
Key without project_idAll account resources (backward compatibility)
Login/password session (JWT)Always sees all resources

What Is Visible to All Keys Regardless of project_id

  • System push packs (is_system=true, published).
  • System events (install, reg, dep).

Usage Examples

Team separation: team A works only with project project_a, team B — with project_b. One team's resources are inaccessible to the other.

Microservice separation: the mailing service works with key mailing-service, the analytics service — with key analytics-service. Each sees only its own resources.

Product separation: if you have multiple products in one account, each product gets its own project_id and works in isolation.

# Key with isolation — create application only in "my-game" project
curl -X POST /api/v3/apps \
  -H "Authorization: Bearer psk_live_..." \
  -H "Content-Type: application/json" \
  -d '{"name": "My Game Android", "project_id": "my-game"}'

Scoped API Keys are intended for API integration. When working through the dashboard (login/password) you always see all resources.

API

MethodURLDescription
POST/api/v3/api-keysCreate an API key (with project_id for isolation)