REST API

REST API

Full programmatic access to your Notirix account. Send pushes, manage subscribers, build audience segments, and pull analytics — all via HTTP.

Authentication

All API requests require an API Key passed as a request header:

http
X-API-Key: notirix_live_xxxxxxxxxxxxxxxxxxxxxxxx

Find your API key in Admin → Settings → API Key.

Base URL
https://push.notirix.com/api
Content type
application/json
💡
Responses use standard HTTP status codes. Errors return { "message": "..." }. Rate limits: 300 req/min per API key.

Messages

Create and send push notification campaigns.

POST/apps/:appId/messages/sendSend message

Create and immediately dispatch a push notification. Target by segment IDs or a single external user ID.

http
POST /api/apps/app_123/messages/send
X-API-Key: notirix_live_xxx
Content-Type: application/json

{
  "title": "Flash sale — 30% off today only",
  "body": "Use code FLASH30 at checkout",
  "url": "https://example.com/sale",
  "image": "https://example.com/sale-banner.jpg",
  "includeSegmentIds": ["seg_abc"],
  "excludeSegmentIds": []
}
POST/apps/:appId/messages/scheduleSchedule message

Same as send but dispatches at a future ISO 8601 datetime.

http
{
  "title": "Your order shipped!",
  "body": "Estimated delivery: tomorrow",
  "scheduledAt": "2025-09-01T10:00:00Z",
  "targetUserId": "user-42"
}
GET/apps/:appId/messagesList messages

Paginated list of all messages with status and delivery counts.

POST/apps/:appId/messages/:id/cancelCancel message

Cancel a scheduled message before it dispatches.

Subscribers

Read and update subscriber data. Subscribers are created automatically when users grant push permission.

GET/apps/:appId/usersList subscribers

Paginated subscriber list. Filter by tag key/value or status.

http
GET /api/apps/app_123/users?page=1&limit=50&tagKey=plan&tagValue=premium
GET/apps/:appId/users/:externalIdGet subscriber

Get a single subscriber by your external ID, including all tags.

POST/apps/:appId/users/:externalId/tagsSet tags

Upsert one or more tags on a subscriber. Existing keys are overwritten.

http
{
  "tags": {
    "plan": "premium",
    "last_purchase_category": "electronics",
    "total_orders": 14
  }
}
DELETE/apps/:appId/users/:externalIdDelete subscriber

Permanently remove a subscriber and all their push subscriptions (GDPR deletion).

Segments

Segments are saved audience filters. Reference them by ID when sending messages.

GET/apps/:appId/segmentsList segments

All saved segments with rule definitions and subscriber count.

POST/apps/:appId/segmentsCreate segment

Create a segment with a rule tree. Supports tag filters, platform, last-seen date.

http
{
  "name": "Premium users — active 30d",
  "rules": {
    "operator": "AND",
    "rules": [
      { "field": "tag",       "key": "plan",      "operator": "eq",       "value": "premium" },
      { "field": "last_seen", "operator": "lt_days", "value": 30 }
    ]
  }
}
DELETE/apps/:appId/segments/:idDelete segment

Delete a segment. Does not affect subscribers.

Journeys

Automated push sequences triggered by events or time delays.

GET/apps/:appId/journeysList journeys

All journeys with status (active / paused / draft) and step count.

POST/apps/:appId/journeys/:id/triggerTrigger journey

Enroll a user into a journey by external ID. Use for event-driven automations (e.g. cart abandonment).

POST/apps/:appId/journeys/:id/pausePause / resume

Pause or resume an active journey. In-flight enrollments finish their current step.

Analytics

Pull delivery and engagement metrics for messages and campaigns.

GET/apps/:appId/messages/:id/statsMessage stats

Delivery funnel for a single message: sent, delivered, clicked, failed.

json
{
  "sent": 12400,
  "delivered": 11870,
  "clicked": 2103,
  "failed": 530,
  "ctr": 17.7
}
GET/apps/:appId/analyticsApp overview

Aggregate stats for a date range: total sends, average CTR, subscriber growth.