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
- Go to API Keys and click "Create".
- Enter the key name (for identification in the interface).
- Select the access level (scope).
- If needed, set a project (for resource isolation).
- 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_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6When making API requests, pass the key in the header:
curl -H "Authorization: Bearer psk_live_..." https://your-domain/api/v3/appsAccess Levels (Scopes)
| Scope | What is Allowed |
|---|---|
read | View applications, pushes, schedulers, analytics, devices |
write | Everything from read + creating and sending pushes, managing schedulers |
admin | Full 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 Type | What 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_id | All 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
| Method | URL | Description |
|---|---|---|
POST | /api/v3/api-keys | Create an API key (with project_id for isolation) |